Trivial form of CASE is not supported in DERBY Parser
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Akiban SQL Parser |
Fix Released
|
Low
|
Mike McMahon |
Bug Description
The following query syntax fails:
SELECT c,
d-e,
CASE a+1 WHEN b THEN 111 WHEN c THEN 222
WHEN d THEN 333 WHEN e THEN 444 ELSE 555 END,
e
FROM t1
WHERE d NOT BETWEEN 110 AND 150
OR c BETWEEN b-2 AND d+2
OR (e>c OR e<d)
ORDER BY 1,5,3,2,4
With the following error:
ERROR: Encountered " <IDENTIFIER> "a "" at line 3, column 13.
Was expecting:
"when" ...
LINE 3: CASE a+1 WHEN b THEN 111 WHEN c THEN 222
When the CASE comparison expression is re-written as 'a+1 = x' it passes:
SELECT c,
d-e,
CASE WHEN a+1 = b THEN 111 WHEN a+1 = c THEN 222
WHEN a+1 = d THEN 333 WHEN a+1 = e THEN 444 ELSE 555 END,
e
FROM t1
WHERE d NOT BETWEEN 110 AND 150
OR c BETWEEN b-2 AND d+2
OR (e>c OR e<d)
ORDER BY 1,5,3,2,4
See also Derby thread from 2011: http://
Related branches
- Mike McMahon: Approve
- Thomas Jones-Low: Needs Fixing
- Nathan Williams: Approve
-
Diff: 513 lines (+323/-64)9 files modifiedpom.xml (+1/-1)
src/main/java/com/akiban/sql/parser/NodeFactoryImpl.java (+18/-15)
src/main/java/com/akiban/sql/parser/NodeNames.java (+17/-15)
src/main/java/com/akiban/sql/parser/NodeTypes.java (+16/-15)
src/main/java/com/akiban/sql/parser/SimpleCaseNode.java (+163/-0)
src/main/java/com/akiban/sql/unparser/NodeToString.java (+19/-0)
src/main/javacc/SQLGrammar.jj (+87/-18)
src/test/resources/com/akiban/sql/unparser/select-16.expected (+1/-0)
src/test/resources/com/akiban/sql/unparser/select-16.sql (+1/-0)
information type: | Proprietary → Public |
affects: | akiban-server → akiban-sql-parser |
description: | updated |
Changed in akiban-sql-parser: | |
status: | New → Fix Committed |
assignee: | nobody → Mike McMahon (mmcm) |
milestone: | none → 1.0.16 |
Changed in akiban-sql-parser: | |
status: | Fix Committed → Won't Fix |
status: | Won't Fix → Fix Released |
Or http:// db.apache. org/derby/ docs/10. 0/manuals/ reference/ sqlj151. html. The simple form is not supported, only the searched form.