Skip to content

Commit

Permalink
#701 Not being able to create a FK for a table created in another dat…
Browse files Browse the repository at this point in the history
…abase schema
  • Loading branch information
Tapac committed Dec 1, 2019
1 parent 7fd59e1 commit 83c651f
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ data class ForeignKeyConstraint(val fkName: String,
val targetColumn = fromCol.referee!!
val t = TransactionManager.current()
val identifierManager = t.db.identifierManager
val refName = identifierManager.cutIfNecessaryAndQuote("fk_${fromCol.table.tableName}_${fromCol.name}_${targetColumn.name}").inProperCase()
val refName = identifierManager.cutIfNecessaryAndQuote("fk_${fromCol.table.tableNameWithoutScheme}_${fromCol.name}_${targetColumn.name}").inProperCase()
return ForeignKeyConstraint(refName,
t.identity(targetColumn.table), t.identity(targetColumn),
t.identity(fromCol.table), t.identity(fromCol),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,8 @@ class Join (val table: ColumnSet) : ColumnSet() {
open class Table(name: String = ""): ColumnSet(), DdlAware {
open val tableName = if (name.isNotEmpty()) name else this.javaClass.simpleName.removeSuffix("Table")

internal val tableNameWithoutScheme get() = tableName.substringAfter(".")

fun nameInDatabaseCase() = tableName.inProperCase()

private val _columns = ArrayList<Column<*>>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,29 @@ class DDLTests : DatabaseTestsBase() {
uniqueIndex("index2", value2, value1)
}
}

@Test
fun createTableWithForeignKeyToAnotherSchema() {
withDb(excludeSettings = listOf(TestDB.SQLITE)) {
exec("CREATE SCHEMA ONE")
exec("CREATE SCHEMA TWO")
SchemaUtils.create(TableFromSchemeOne, TableFromSchemeTwo)
val idFromOne = TableFromSchemeOne.insertAndGetId { }

TableFromSchemeTwo.insert {
it[reference] = idFromOne
}

assertEquals(1, TableFromSchemeOne.selectAll().count())
assertEquals(1, TableFromSchemeTwo.selectAll().count())
}
}

object TableFromSchemeOne : IntIdTable("one.test")

object TableFromSchemeTwo : IntIdTable("two.test") {
val reference = reference("testOne", TableFromSchemeOne)
}
}


0 comments on commit 83c651f

Please sign in to comment.