db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-3182) fifth parameter (boolean isNullable) in DatabaseMetaData.getBestRowIdentifier(.....) has no effect
Date Fri, 09 Nov 2007 14:23:50 GMT

    [ https://issues.apache.org/jira/browse/DERBY-3182?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12541329
] 

Knut Anders Hatlen commented on DERBY-3182:
-------------------------------------------

I think the comment which says that the correct answer is k, is wrong. Since the column k
is not declared as unique, it does not uniquely identify a row. Derby doesn't support the
unique constraint on a nullable column, but it did at some point (although the implementation
was not SQL compliant and therefore was disabled). Could it be that this test was written
before unique on nullable columns was disabled, and it used to declared k as a unique column?
Possibly, the test was updated but the comment wasn't.

> fifth parameter (boolean isNullable) in DatabaseMetaData.getBestRowIdentifier(.....)
 has no effect
> ---------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-3182
>                 URL: https://issues.apache.org/jira/browse/DERBY-3182
>             Project: Derby
>          Issue Type: Bug
>    Affects Versions: 10.0.2.0, 10.0.2.1, 10.1.1.0, 10.1.2.1, 10.1.3.1, 10.2.1.6, 10.2.2.0,
10.3.1.4
>            Reporter: Myrna van Lunteren
>         Attachments: repro.java
>
>
> The fifth parameter in a call to DatabaseMetaData.getBestRowIdentifier(String catalog,
String schema, String table, int scope, boolean nullable) is getting ignored.
> Thus, in the following situation:
>         s.execute("create table a (i int not null, j int not null, k int, unique (i,j))");
>         s.execute("insert into a values (1,1,1)");  
>         DatabaseMetaData dmd = conn.getMetaData(); 
> The call:
>             ResultSet rs = dmd.getBestRowIdentifier(null,"APP","A",0,true);
> gives the same results(columns i & j) as
>             ResultSet rs = dmd.getBestRowIdentifier(null,"APP","A",0,false);
> This has been documented as incorrect in the test bestrowidentifier.sql but I could not
find any bug logged.
> The text in bestrowidentifier was:
> -- REMIND: we aren't handling nullOk flag correctly
> -- we just drop nullable cols, we should skip an answer
> -- that has nullable cols in it instead and look for another one.
> create table t13 (i int not null, j int not null, k int, unique (i,j));
> -- result: columns i, j (WRONG) 
> -- the correct answer is k: the non-null columns of the table
> execute bestrow using 'values(''APP'',''T13'',0,''false'')';

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message