Mercurial > hg > monetdb-java
diff src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java @ 421:163b784aa93b
Added full ordering to correct issues when retrieving columns from fks where a table has multiple fks to the same table.
author | Martin van Dinther <martin.van.dinther@monetdbsolutions.com> |
---|---|
date | Thu, 28 Jan 2021 21:59:38 +0100 (2021-01-28) |
parents | 50e43af49d47 |
children | 95d15f1d750d |
line wrap: on
line diff
--- a/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java +++ b/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java @@ -2696,7 +2696,9 @@ public class MonetDatabaseMetaData } } - query.append(" ORDER BY \"PKTABLE_SCHEM\", \"PKTABLE_NAME\", \"PK_NAME\", \"KEY_SEQ\""); + // Note: the extra \"FKTABLE_SCHEM\", \"FKTABLE_NAME\", \"FK_NAME\" in the ordering is important + // else we do not get the correct column order when multiple fks exist to the same pk in 1 table or query multiple tables. + query.append(" ORDER BY \"PKTABLE_SCHEM\", \"PKTABLE_NAME\", \"PK_NAME\", \"FKTABLE_SCHEM\", \"FKTABLE_NAME\", \"FK_NAME\", \"KEY_SEQ\""); return executeMetaDataQuery(query.toString()); } @@ -2779,7 +2781,9 @@ public class MonetDatabaseMetaData } } - query.append(" ORDER BY \"FKTABLE_SCHEM\", \"FKTABLE_NAME\", \"FK_NAME\", \"KEY_SEQ\""); + // Note: the extra \"PKTABLE_SCHEM\", \"PKTABLE_NAME\", \"PK_NAME\" in the ordering is important + // else we do not get the correct column order when multiple fks exist to the same pk in 1 table or query multiple tables. + query.append(" ORDER BY \"FKTABLE_SCHEM\", \"FKTABLE_NAME\", \"FK_NAME\", \"PKTABLE_SCHEM\", \"PKTABLE_NAME\", \"PK_NAME\", \"KEY_SEQ\""); return executeMetaDataQuery(query.toString()); } @@ -2880,7 +2884,9 @@ public class MonetDatabaseMetaData } } - query.append(" ORDER BY \"FKTABLE_SCHEM\", \"FKTABLE_NAME\", \"FK_NAME\", \"KEY_SEQ\""); + // Note: the extra \"PKTABLE_SCHEM\", \"PKTABLE_NAME\", \"PK_NAME\" in the ordering is important + // else we do not get the correct column order when multiple fks exist to the same pk in 1 table or query multiple tables. + query.append(" ORDER BY \"FKTABLE_SCHEM\", \"FKTABLE_NAME\", \"FK_NAME\", \"PKTABLE_SCHEM\", \"PKTABLE_NAME\", \"PK_NAME\", \"KEY_SEQ\""); return executeMetaDataQuery(query.toString()); }