Skip to content

Commit e11b8c6

Browse files
committed
fix: corrected slow parsing of nested json (thanks @lvca), issue #10328
1 parent af0c95d commit e11b8c6

3 files changed

Lines changed: 4325 additions & 5861 deletions

File tree

core/src/main/grammar/OrientSQL.jjt

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2171,6 +2171,12 @@ OExpression Expression():
21712171
{Token token; }
21722172
{
21732173
(
2174+
LOOKAHEAD( Rid() )
2175+
jjtThis.rid = Rid() { jjtThis.value = jjtThis.rid; }
2176+
|
2177+
LOOKAHEAD(1, {getToken(1).kind == LBRACE})
2178+
jjtThis.json = Json() {jjtThis.value = jjtThis.json; }
2179+
|
21742180
LOOKAHEAD( ArrayConcatExpression() )
21752181
jjtThis.arrayConcatExpression = ArrayConcatExpression() { jjtThis.value = jjtThis.arrayConcatExpression; }
21762182
|
@@ -2180,14 +2186,7 @@ OExpression Expression():
21802186
|
21812187
<FALSE> { jjtThis.booleanValue = false; jjtThis.value = false; }
21822188
|
2183-
LOOKAHEAD( Rid() )
2184-
jjtThis.rid = Rid() { jjtThis.value = jjtThis.rid; }
2185-
|
2186-
LOOKAHEAD( MathExpression() )
21872189
jjtThis.mathExpression = MathExpression() { jjtThis.value = jjtThis.mathExpression; }
2188-
|
2189-
jjtThis.json = Json() {jjtThis.value = jjtThis.json; }
2190-
21912190
)
21922191
{ return jjtThis; }
21932192
}
@@ -2214,6 +2213,9 @@ OArrayConcatExpressionElement ArrayConcatExpressionElement():
22142213
{Token token; }
22152214
{
22162215
(
2216+
LOOKAHEAD(1, {getToken(1).kind == LBRACE})
2217+
jjtThis.json = Json() {jjtThis.value = jjtThis.json; }
2218+
|
22172219
<NULL> {jjtThis.isNull = true; jjtThis.value = null;}
22182220
|
22192221
<TRUE> { jjtThis.booleanValue = true; jjtThis.value = true; }
@@ -2223,10 +2225,7 @@ OArrayConcatExpressionElement ArrayConcatExpressionElement():
22232225
LOOKAHEAD( Rid() )
22242226
jjtThis.rid = Rid() { jjtThis.value = jjtThis.rid; }
22252227
|
2226-
LOOKAHEAD( MathExpression() )
2227-
jjtThis.mathExpression = MathExpression() { jjtThis.value = jjtThis.mathExpression; }
2228-
|
2229-
jjtThis.json = Json() {jjtThis.value = jjtThis.json; }
2228+
jjtThis.mathExpression = MathExpression() { jjtThis.value = jjtThis.mathExpression; }
22302229

22312230
)
22322231
{ return jjtThis; }

0 commit comments

Comments
 (0)