db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rick Hillegas (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-4684) Correct the implicit casting of other types to BOOLEAN
Date Wed, 02 Jun 2010 16:17:31 GMT

     [ https://issues.apache.org/jira/browse/DERBY-4684?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Rick Hillegas updated DERBY-4684:

    Attachment: derby-4684-01-ab-implicitCastsToBoolean.diff

Attaching derby-4684-01-ab-implicitCastsToBoolean.diff. This causes Derby to raise an exception
if you try to implicitly cast to or from BOOLEAN in a way which violates the SQL Standard.
Regression tests passed for me with this patch applied.

This patch removes the ability to cast numerics to boolean. It also prevents String values
from being cast to BOOLEAN unless they are the handful of legal values allowed by the Standard.
I believe that most users won't even notice these changes, for the following reasons:

1) Getting Derby to implicitly cast to BOOLEAN involves writing a very contrived query whose
point is to trick Derby into returning an unsupported data type.

2) No existing tests failed with this patch.

Touches the following files:


M      java/engine/org/apache/derby/impl/sql/compile/BooleanTypeCompiler.java

Don't allow numerics to be stored in BOOLEANs.


M      java/engine/org/apache/derby/iapi/types/SQLBoolean.java

Raise an error if, at run time, you try to cast a bad String to BOOLEAN.


M      java/testing/org/apache/derbyTesting/functionTests/tests/lang/BooleanValuesTest.java

Regression test to verify the Standard behavior.

> Correct the implicit casting of other types to BOOLEAN
> ------------------------------------------------------
>                 Key: DERBY-4684
>                 URL: https://issues.apache.org/jira/browse/DERBY-4684
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions:
>            Reporter: Rick Hillegas
>            Assignee: Rick Hillegas
>         Attachments: derby-4684-01-ab-implicitCastsToBoolean.diff
> Via a UNION query, it is possible to implicitly cast non-BOOLEAN types to BOOLEAN today.
These implicit casts do not obey the SQL Standard rules defined in part 2, section 6.12 (<cast
specification>). Derby should support the Standard rules.
> The following query shows how you can implicitly cast a non-BOOLEAN data type to BOOLEAN
> select isindex from sys.sysconglomerates where conglomeratename = 'foo'
> union
> values ( 1 )

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

View raw message