Skip to content

Commit 63ba322

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

3 files changed

Lines changed: 4314 additions & 5835 deletions

File tree

core/src/main/grammar/OrientSQL.jjt

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2171,6 +2171,9 @@ OExpression Expression():
21712171
{Token token; }
21722172
{
21732173
(
2174+
LOOKAHEAD(1, {getToken(1).kind == LBRACE})
2175+
jjtThis.json = Json() {jjtThis.value = jjtThis.json; }
2176+
|
21742177
LOOKAHEAD( ArrayConcatExpression() )
21752178
jjtThis.arrayConcatExpression = ArrayConcatExpression() { jjtThis.value = jjtThis.arrayConcatExpression; }
21762179
|
@@ -2183,11 +2186,7 @@ OExpression Expression():
21832186
LOOKAHEAD( Rid() )
21842187
jjtThis.rid = Rid() { jjtThis.value = jjtThis.rid; }
21852188
|
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)