summaryrefslogtreecommitdiff
path: root/src/interfaces/jdbc/org/postgresql/test
diff options
context:
space:
mode:
authorDave Cramer <davec@fastcrypt.com>2003-12-11 15:50:20 +0000
committerDave Cramer <davec@fastcrypt.com>2003-12-11 15:50:20 +0000
commitfc1dc0cd332aa277856827027aeddc27c34d7cb0 (patch)
treef7f84fcb5c81e2aba01b5c6b6af9d7f974c0a68c /src/interfaces/jdbc/org/postgresql/test
parent6ae740dbd8806fb8339b1056de1ea60bb6d78be0 (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.java71
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