@@ -203,6 +203,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */
203203| <K_INTERVAL:"INTERVAL">
204204| <K_INTO:"INTO">
205205| <K_IS:"IS">
206+ | <K_ISNULL:"ISNULL">
206207| <K_JOIN:"JOIN">
207208| <K_KEEP:"KEEP">
208209| <K_KEY:"KEY">
@@ -300,7 +301,8 @@ TOKEN : /* Operators */
300301 <OP_GREATERTHANEQUALS: ">" (<WHITESPACE>)* "=">
301302| <OP_MINORTHANEQUALS: "<" (<WHITESPACE>)* "=">
302303| <OP_NOTEQUALSSTANDARD: "<" (<WHITESPACE>)* ">">
303- | <OP_NOTEQUALSBANG: "!=">
304+ | <OP_NOTEQUALSBANG: "!" (<WHITESPACE>)* "=">
305+ | <OP_CONCAT: "|" (<WHITESPACE>)* "|">
304306}
305307
306308TOKEN : /* Date/Time with time zones */
@@ -960,7 +962,7 @@ String RelObjectNameWithoutValue() :
960962 | tk=<K_OPEN> | tk=<K_OVER> | tk=<K_PERCENT> | tk=<K_PRIOR>
961963 | tk=<K_SEPARATOR> | tk=<K_NO> | tk=<K_ACTION> | tk=<K_CASCADE> | tk=<K_END>
962964 | tk=<K_TABLE> | tk=<K_DATETIMELITERAL> | tk=<K_COMMIT> | tk=<K_PRECISION>
963- | tk=<K_INSERT> | tk=<K_INDEX> | tk=<K_PRIMARY>
965+ | tk=<K_INSERT> | tk=<K_INDEX> | tk=<K_PRIMARY> | tk=<K_ENABLE>
964966 )
965967
966968 { return tk.image; }
@@ -1473,7 +1475,11 @@ FromItem FromItem():
14731475 LOOKAHEAD(SubJoin())
14741476 fromItem=SubJoin()
14751477 |
1478+ LOOKAHEAD(3)
14761479 fromItem=SubSelect()
1480+ |
1481+ fromItem=FromItem()
1482+ { fromItem = new ParenthesisFromItem(fromItem); }
14771483 )
14781484 ")"
14791485 )
@@ -2044,7 +2050,7 @@ Expression RegularCondition() #RegularCondition:
20442050 | "?" { result = new JsonOperator("?"); }
20452051 | "?|" { result = new JsonOperator("?|"); }
20462052 | "?&" { result = new JsonOperator("?&"); }
2047- | "||" { result = new JsonOperator("||"); }
2053+ | <OP_CONCAT> { result = new JsonOperator("||"); }
20482054 | "-" { result = new JsonOperator("-"); }
20492055 | "-#" { result = new JsonOperator("-#"); }
20502056 )
@@ -2169,9 +2175,11 @@ Expression IsNullExpression():
21692175}
21702176{
21712177 (
2172- <K_NOT> { result.setNot(true); } leftExpression=SimpleExpression() <K_IS> <K_NULL>
2178+ <K_NOT> { result.setNot(true); } leftExpression=SimpleExpression()
2179+ ( <K_ISNULL> { result.setUseIsNull(true); } | <K_IS> <K_NULL> )
21732180 |
2174- leftExpression=SimpleExpression() <K_IS> [<K_NOT> { result.setNot(true); } ] <K_NULL>
2181+ leftExpression=SimpleExpression()
2182+ (<K_ISNULL> { result.setUseIsNull(true); } | <K_IS> [<K_NOT> { result.setNot(true); } ] <K_NULL> )
21752183 )
21762184
21772185 {
@@ -2301,8 +2309,8 @@ Expression ConcatExpression():
23012309}
23022310{
23032311 leftExpression=BitwiseAndOr() { result = leftExpression; }
2304- (LOOKAHEAD(2 )
2305- "||"
2312+ (LOOKAHEAD(3 )
2313+ <OP_CONCAT> /* Oracle allows space between the bars. */
23062314 rightExpression=BitwiseAndOr()
23072315 {
23082316 Concat binExp = new Concat();
0 commit comments