The following bug has been logged online:
Bug reference: 1661
Logged by: Pavel Krupets
Email address: pkrupets@yahoo.com
PostgreSQL version: 8.0.2
Operating system: Windows XP
Description: JDBC DatabaseMetaData.getExportedKeys() returns invalid
keys.
Details:
Hello,
I have two tables:
CREATE TABLE bc4jgen_test_04.table_03
(
id NUMBER(10) NOT NULL,
code1 NUMBER(10) NOT NULL,
code2 NUMBER(20) NOT NULL,
name varchar(25) NOT NULL,
CONSTRAINT pk_table_03 PRIMARY KEY (id),
CONSTRAINT uq_codes UNIQUE (code1, code2)
);
and
CREATE TABLE bc4jgen_test_04.table_05
(
id NUMBER(10) NOT NULL,
code1 NUMBER(10) NOT NULL,
code2 NUMBER(20) NOT NULL,
name varchar(25) NOT NULL,
code3 NUMBER(5) NOT NULL,
CONSTRAINT pk_table_05 PRIMARY KEY (id),
CONSTRAINT fk_table_05_2_table_03 FOREIGN KEY (code1, code2) REFERENCES
bc4jgen_test_04.table_03 (code1, code2),
CONSTRAINT uq_table_05 UNIQUE (code1, code2, code3)
);
If I ask getExportedKeys(null, "bc4jgen_test_04", "table_03") to return
exported foreign keys it will return 'fk_table_05_2_table_03' key. But this
key isn't exported. table_05 does not references table_03's primary key,
just a unique one! Please check javadocs excerpts below.
---------------------------------------------------------
JavaDocs:
ResultSet getExportedKeys(String catalog, String schema, String table)
Retrieves a description of the foreign key columns that reference
the given table's primary key columns (the foreign keys exported by a
table)
---------------------------------------------------------
Thank you.