[ 
https://issues.apache.org/jira/browse/DERBY-4583?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12875593#action_12875593
 ] 

Rick Hillegas commented on DERBY-4583:
--------------------------------------

Hi Knut,

Thanks for taking a look at the patch. The short answer is that the compiler 
merely relies on type information to raise that error. The compiler knows that 
a numeric can never be cast to a BOOLEAN and so can reject the latter query 
early on. In contrast, some strings can be cast to BOOLEAN (e.g., 'TRUE' and 
'FALSE'). Derby waits until execution-time to check this. It's true that the 
compiler could be smart enough to run the execution-time checks on string 
constants. Derby just isn't that smart today.

> TRUE by itself is not accepted in WHERE
> ---------------------------------------
>
>                 Key: DERBY-4583
>                 URL: https://issues.apache.org/jira/browse/DERBY-4583
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.5.3.0
>         Environment: n/a
>            Reporter: Wouter
>            Assignee: Rick Hillegas
>         Attachments: derby-4583-01-ac-booleanLiterals.diff
>
>
> A SELECT query with a literal boolean value in its WHERE clause results in a 
> syntax error.
> How to reproduce:
> CREATE TABLE list (value VARCHAR(10));
> Given this table, the following queries result in a syntax error.
> SELECT * FROM list WHERE TRUE;
> SELECT * FROM list WHERE FALSE;
> SELECT * FROM list WHERE value='A' OR TRUE;
> Why is TRUE/FALSE not a boolean expression?

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