[
https://issues.apache.org/jira/browse/DERBY-6423?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13835773#comment-13835773
]
Knut Anders Hatlen commented on DERBY-6423:
-------------------------------------------
The ELSE clause seems to have the same problem:
{noformat}
ij> values case when true then false else true or false end;
ERROR 42X01: Syntax error: Encountered "or" at line 1, column 44.
Issue the 'help' command for general information on IJ command syntax.
Any unrecognized commands are treated as potential SQL commands and executed
directly.
Consult your DBMS server reference documentation for details of the SQL syntax
supported by your server.
ij> values case when true then false else (true or false) end;
1
-----
false
1 row selected
{noformat}
> The expression syntax in CASE's THEN clause doesn't accept boolean value
> expression
> -----------------------------------------------------------------------------------
>
> Key: DERBY-6423
> URL: https://issues.apache.org/jira/browse/DERBY-6423
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Reporter: Dag H. Wanvik
>
> This syntax gives an error:
> > VALUES CASE WHEN 1=1 THEN (1=2) OR (3!=4) ELSE true END;
> ERROR 42X01: Syntax error: Encountered "OR" at line 1, column 33.
> However, this works:
> > VALUES CASE WHEN 1=1 THEN ((1=2) OR (3!=4)) ELSE true END;
> 1
> -----
> true
> 1 row selected
> According to the standard, the syntax after THEN should be <result>:
> <result> ::=
> <result expression>
> | NULL
> <result expression> ::=
> <value expression>
> which should give us the full value syntax. sqlgrammar.jj uses the
> corresponding production "thenElseExpression" which allows NULL or
> aditiveExpression. I believe it should be orExpression.
--
This message was sent by Atlassian JIRA
(v6.1#6144)