DBZ-6794 Dbz crashed on parsing MySQL DDL statement (SELECT 1 + @sum:=1 AS ss;)

This commit is contained in:
harveyyue 2023-08-12 20:17:37 +08:00 committed by Jiri Pechanec
parent b3098de0fd
commit bb579983ca
2 changed files with 16 additions and 2 deletions

View File

@ -2698,8 +2698,8 @@ predicate
| predicate SOUNDS LIKE predicate #soundsLikePredicate
| predicate NOT? LIKE predicate (ESCAPE STRING_LITERAL)? #likePredicate
| predicate NOT? regex=(REGEXP | RLIKE) predicate #regexpPredicate
| (LOCAL_ID VAR_ASSIGN)? expressionAtom #expressionAtomPredicate
| predicate MEMBER OF '(' predicate ')' #jsonMemberOfPredicate
| expressionAtom #expressionAtomPredicate
;
@ -2712,6 +2712,7 @@ expressionAtom
| mysqlVariable #mysqlVariableExpressionAtom
| unaryOperator expressionAtom #unaryExpressionAtom
| BINARY expressionAtom #binaryExpressionAtom
| LOCAL_ID VAR_ASSIGN expressionAtom #variableAssignExpressionAtom
| '(' expression (',' expression)* ')' #nestedExpressionAtom
| ROW '(' expression (',' expression)+ ')' #nestedRowExpressionAtom
| EXISTS '(' selectStatement ')' #existsExpressionAtom

View File

@ -308,3 +308,16 @@ cte2 AS (
)
SELECT cte1.col1, cte2.col2 FROM cte1 JOIN cte2 ON cte1.id = cte2.id;
#end
SELECT !(1 + @sum:=1) AS ss;
SELECT (@sum:=1 + 1) AS ss;
SELECT 1 + @sum:=1 AS ss;
SELECT 100 >> @sum:=1 AS ss;
SELECT @sum:=1 < 100 AS ss;
SELECT 100 and @sum:=1 AS ss;
SELECT
@sum := @sum + column_name AS running_sum
FROM
your_table,
(SELECT @sum := 0) AS init
ORDER BY
some_order_column;