Обсуждение: BUG #1661: JDBC DatabaseMetaData.getExportedKeys() returns invalid keys.

Поиск
Список
Период
Сортировка

BUG #1661: JDBC DatabaseMetaData.getExportedKeys() returns invalid keys.

От
"Pavel Krupets"
Дата:
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.

Re: BUG #1661: JDBC DatabaseMetaData.getExportedKeys() returns

От
Kris Jurka
Дата:
On Wed, 11 May 2005, Pavel Krupets wrote:

> Bug reference:      1661
> PostgreSQL version: 8.0.2
> Description:        JDBC DatabaseMetaData.getExportedKeys() returns invalid
> keys.
>
> 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.
>

I guess we consider this a feature, not a bug.  Otherwise there is no way
to retrieve foreign key information for foreign keys to unique
constraints.  If you've got a concrete reason why this is a bad thing
please let us know.  The javadoc does indeed say primary key, but I don't
see why including unique ones as well is a problem.

Kris Jurka