diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/SchemaUtils.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/SchemaUtils.kt index ae2ed57add..3a1d9716fc 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/SchemaUtils.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/SchemaUtils.kt @@ -21,9 +21,7 @@ object SchemaUtils { if (tables.isEmpty()) emptyMap() else { tables.associateWith { t -> - t.columns.mapNotNull { c -> - c.referee?.let { it.table to c.columnType.nullable } - }.toMap() + t.foreignKeys.map { it.targetTable } } } } @@ -33,9 +31,7 @@ object SchemaUtils { fun parseTable(table: Table) { if (result.add(table)) { - table.columns.forEach { - it.referee?.table?.let(::parseTable) - } + table.foreignKeys.map { it.targetTable }.forEach(::parseTable) } } tables.forEach(::parseTable) @@ -51,7 +47,7 @@ object SchemaUtils { fun traverse(table: Table) { if (table !in visited) { visited += table - graph.getValue(table).forEach { (t, _) -> + graph.getValue(table).forEach { t -> if (t !in visited) { traverse(t) } @@ -76,7 +72,7 @@ object SchemaUtils { if (table in visited) return false recursion += table visited += table - return if (graph[table]!!.any { traverse(it.key) }) { + return if (graph[table]!!.any { traverse(it) }) { true } else { recursion -= table diff --git a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/CreateMissingTablesAndColumnsTests.kt b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/CreateMissingTablesAndColumnsTests.kt index de07bb558f..e5942a76e1 100644 --- a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/CreateMissingTablesAndColumnsTests.kt +++ b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/ddl/CreateMissingTablesAndColumnsTests.kt @@ -414,7 +414,7 @@ class CreateMissingTablesAndColumnsTests : DatabaseTestsBase() { } @Test fun testCreateTableWithReferenceMultipleTimes() { - withTables(PlayerTable, SessionsTable) { + withTables(SessionsTable, PlayerTable) { SchemaUtils.createMissingTablesAndColumns(PlayerTable, SessionsTable) SchemaUtils.createMissingTablesAndColumns(PlayerTable, SessionsTable) } @@ -494,7 +494,7 @@ class CreateMissingTablesAndColumnsTests : DatabaseTestsBase() { @Test fun testCreateCompositePrimaryKeyTableAndCompositeForeignKeyTableMultipleTimes() { - withTables(CompositePrimaryKeyTable, CompositeForeignKeyTable) { + withTables(CompositeForeignKeyTable, CompositePrimaryKeyTable) { SchemaUtils.createMissingTablesAndColumns(CompositePrimaryKeyTable, CompositeForeignKeyTable) SchemaUtils.createMissingTablesAndColumns(CompositePrimaryKeyTable, CompositeForeignKeyTable) }