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