In addtion to already supported LIMIT/OFFSET variants allow more to be parsed
Legacy:
- LIMIT int
- LIMIT int OFFSET int
Enhancement:
- OFFSET int (no limit)
- LIMIT ALL (no limit)
- LIMIT NULL (no limit)
- LIMIT ALL OFFSET int (no limit, but offset)
- LIMIT NULL OFFSET int (no limit, but offset)
Also ensures negative limits / offsets are set to kNoLimit/kNoOffset
Consolidate LeftOuter/Left and RightOuter/Right as they are
by definition the same.
Similar consolidate FullOuter/Outer/Full ... with Outer (as in the
parser) not part of standard, but "full" missing. Allowing all three.
This commit potentially breaks other programs as kJoinLeftOuter and kJoinRightOuter
are eliminated
- allow multiple WHEN statements
- allow for syntax like `CASE x WHEN 1 THEN 2 WHEN 3 THEN 4 ELSE 5 END`
NOTE: This changes also the way the CASE operator is stored:
- CASE [expr] exprList [ELSE expr2] END
- exprList holds each of the WHEN statements with:
expr := WHEN, expr2 := THEN
Added also tests in test/select_tests.cpp
and adapted the existing one to reflect the new storage