db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "A B (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-2280) DatabaseMetaData.getTypeInfo() UNSIGNED_ATTRIBUTE and AUTO_INCREMENT column returns incorrect information for BLOB & CLOB data type
Date Wed, 02 May 2007 18:35:15 GMT

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

A B commented on DERBY-2280:
----------------------------

Thanks for the updated patch, Saurabh.

I ran jdbcapi/DatabaseMetaDataTest with a clean codeline and it passed for me.  But as you
say, if I run it with your changes applied the test fails when checking NULLABILITY.  The
failure occurs because the nullability of the UNSIGNED_ATTRIBUTE and AUTO_INCREMENT columns
becomes "false" with your changes, wherease it used to be "true".

Without your patch, at least one row in the VALUES clause (actually, two rows--the row for
BLOB and the row for CLOB) has a NULL value for UNSIGNED_ATTRIBUTE and AUTO_INCREMENT:

    ('BLOB',2004,2147483647,CAST (NULL AS CHAR),CAST (NULL AS CHAR),'length', \
        1,FALSE,0,CAST (NULL AS BOOLEAN),FALSE,CAST (NULL AS BOOLEAN), \
        CAST (NULL AS INTEGER),CAST (NULL AS INTEGER),CAST (NULL AS INTEGER)),\
    ('CLOB',2005,2147483647,'''','''','length', \
        1,TRUE,1,CAST (NULL AS BOOLEAN),FALSE,CAST (NULL AS BOOLEAN), \
        CAST (NULL AS INTEGER),CAST (NULL AS INTEGER),CAST (NULL AS INTEGER)), \

Since there is at least one row which is null, the type definition for the corresponding columns
implicitly becomes nullable, and thus we see (before your changes) a NULLABILITY of "true".

But with your patch applied, every row in the VALUES clause used for getTypeInfo() returns
a constant value (TRUE or FALSE) for UNSIGNED_ATTRIBUTE and AUTO_INCREMENT:

         ('BLOB',2004,2147483647,CAST (NULL AS CHAR),CAST (NULL AS CHAR),'length', \
-            1,FALSE,0,CAST (NULL AS BOOLEAN),FALSE,CAST (NULL AS BOOLEAN), \
+            1,FALSE,0,TRUE,FALSE,FALSE, \
             CAST (NULL AS INTEGER),CAST (NULL AS INTEGER),CAST (NULL AS INTEGER)),\
         ('CLOB',2005,2147483647,'''','''','length', \
-            1,TRUE,1,CAST (NULL AS BOOLEAN),FALSE,CAST (NULL AS BOOLEAN), \
+            1,TRUE,1,TRUE,FALSE,FALSE, \
             CAST (NULL AS INTEGER),CAST (NULL AS INTEGER),CAST (NULL AS INTEGER)), \

A constant value that is not null implicitly has a type definition that is not nullable. 
So since _all_ rows now have a constant value for the UNSIGNED_ATTRIBUTE and AUTO_INCREMENT
columns, the type definitions for those two columns become "not nullable", which translates
into a "false" NULLABILITY.

Hence the failure in DatabaseMetaDataTest.

This difference in behavior is, I think, related to the discussion for DERBY-2307.  That issue
talks about how the derived nullability of a column for getTypeInfo() is correct for some
columns (ex. DATA_TYPE) but incorrect for others (ex. TYPE_NAME).  The difference is that
all columns which use an explict CAST operand assume a nullability of "true", while a column
that has all constants with no CASTs assumes a nullability of "false".  

That said, it's not clear to me what the nullability of the AUTO_INCREMENT and UNSIGNED_ATTRIBUTE
columns should be.  I posted a question to DERBY-2307; we'll have to figure that out before
we know how to handle the DatabaseMetaDataTest failure that you are seeing with your patch...

Minor comment on the _v2 patch:

Spacing for the changes to DatabaseMetaDataTest.java are inconsistent.  Some of the new code
uses tabs whereas other pieces use spaces.  Since the surrounding (unchanged) code uses 4-space
indentation, I think it'd be best to use that for the new code, as well...

> DatabaseMetaData.getTypeInfo() UNSIGNED_ATTRIBUTE and AUTO_INCREMENT column returns incorrect
information for BLOB & CLOB data type
> -----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-2280
>                 URL: https://issues.apache.org/jira/browse/DERBY-2280
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>    Affects Versions: 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.0.0
>            Reporter: Saurabh Vyas
>         Assigned To: Saurabh Vyas
>            Priority: Minor
>         Attachments: Derby-2280.diff, Derby-2280.stat, Derby-2280_v2.diff
>
>
> getTypeInfo() method should return FALSE for UNSIGNED_ATTRIBUTE and AUTO_INCREMENT in
case of BLOB & CLOB data type.
> Currently it returns NULL value.

-- 
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