[ 
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: 10.6.1.0
>            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 today:
> 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.

Reply via email to