diff options
| author | Dave Cramer <davec@fastcrypt.com> | 2003-12-11 15:50:20 +0000 |
|---|---|---|
| committer | Dave Cramer <davec@fastcrypt.com> | 2003-12-11 15:50:20 +0000 |
| commit | fc1dc0cd332aa277856827027aeddc27c34d7cb0 (patch) | |
| tree | f7f84fcb5c81e2aba01b5c6b6af9d7f974c0a68c /src/interfaces/jdbc/org/postgresql/test | |
| parent | 6ae740dbd8806fb8339b1056de1ea60bb6d78be0 (diff) | |
patch to deal with unique foreign keys in 7.4 from Kris Jurka
Diffstat (limited to 'src/interfaces/jdbc/org/postgresql/test')
| -rw-r--r-- | src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java | 71 |
1 files changed, 70 insertions, 1 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java b/src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java index cfdab7fe9f4..dc5e44e2524 100644 --- a/src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java +++ b/src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java @@ -9,7 +9,7 @@ import java.sql.*; * * PS: Do you know how difficult it is to type on a train? ;-) * - * $PostgreSQL: pgsql/src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java,v 1.20 2003/11/29 22:41:23 pgsql Exp $ + * $PostgreSQL: pgsql/src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java,v 1.21 2003/12/11 15:50:20 davec Exp $ */ public class DatabaseMetaDataTest extends TestCase @@ -169,6 +169,75 @@ public class DatabaseMetaDataTest extends TestCase } } + public void testForeignKeysToUniqueIndexes() + { + try + { + if (!TestUtil.haveMinimumServerVersion(con,"7.4")) + return; + + Connection con1 = TestUtil.openDB(); + TestUtil.createTable( con1, "pkt", "a int not null, b int not null, CONSTRAINT pkt_pk_a PRIMARY KEY (a), CONSTRAINT pkt_un_b UNIQUE (b)"); + TestUtil.createTable( con1, "fkt", "c int, d int, CONSTRAINT fkt_fk_c FOREIGN KEY (c) REFERENCES pkt(b)"); + + DatabaseMetaData dbmd = con.getMetaData(); + ResultSet rs = dbmd.getImportedKeys("","","fkt"); + int j = 0; + for (; rs.next(); j++) + { + assertTrue("pkt".equals(rs.getString("PKTABLE_NAME"))); + assertTrue("fkt".equals(rs.getString("FKTABLE_NAME"))); + assertTrue("pkt_un_b".equals(rs.getString("PK_NAME"))); + assertTrue("b".equals(rs.getString("PKCOLUMN_NAME"))); + } + assertTrue(j == 1); + + TestUtil.dropTable(con1, "fkt"); + TestUtil.dropTable(con1, "pkt"); + con1.close(); + } + catch (SQLException ex) + { + fail(ex.getMessage()); + } + } + + public void testMultiColumnForeignKeys() + { + try + { + Connection con1 = TestUtil.openDB(); + TestUtil.createTable( con1, "pkt", "a int not null, b int not null, CONSTRAINT pkt_pk PRIMARY KEY (a,b)"); + TestUtil.createTable( con1, "fkt", "c int, d int, CONSTRAINT fkt_fk_pkt FOREIGN KEY (c,d) REFERENCES pkt(b,a)"); + + DatabaseMetaData dbmd = con.getMetaData(); + ResultSet rs = dbmd.getImportedKeys("","","fkt"); + int j = 0; + for (; rs.next(); j++) + { + assertTrue("pkt".equals(rs.getString("PKTABLE_NAME"))); + assertTrue("fkt".equals(rs.getString("FKTABLE_NAME"))); + assertTrue(j+1 == rs.getInt("KEY_SEQ")); + if (j == 0) { + assertTrue("b".equals(rs.getString("PKCOLUMN_NAME"))); + assertTrue("c".equals(rs.getString("FKCOLUMN_NAME"))); + } else { + assertTrue("a".equals(rs.getString("PKCOLUMN_NAME"))); + assertTrue("d".equals(rs.getString("FKCOLUMN_NAME"))); + } + } + assertTrue(j == 2); + + TestUtil.dropTable(con1, "fkt"); + TestUtil.dropTable(con1, "pkt"); + con1.close(); + } + catch (SQLException ex) + { + fail(ex.getMessage()); + } + } + public void testForeignKeys() { try |
