Skip to content

Commit 4388b62

Browse files
authored
[MySql] Fix priority of additive and multiplicative operators (#3804)
1 parent 848be46 commit 4388b62

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

sql/mysql/Positive-Technologies/MySqlParser.g4

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2646,7 +2646,8 @@ expressionAtom
26462646
| '(' selectStatement ')' #subqueryExpressionAtom
26472647
| INTERVAL expression intervalType #intervalExpressionAtom
26482648
| left=expressionAtom bitOperator right=expressionAtom #bitExpressionAtom
2649-
| left=expressionAtom mathOperator right=expressionAtom #mathExpressionAtom
2649+
| left=expressionAtom multOperator right=expressionAtom #mathExpressionAtom
2650+
| left=expressionAtom addOperator right=expressionAtom #mathExpressionAtom
26502651
| left=expressionAtom jsonOperator right=expressionAtom #jsonExpressionAtom
26512652
;
26522653

@@ -2667,8 +2668,12 @@ bitOperator
26672668
: '<' '<' | '>' '>' | '&' | '^' | '|'
26682669
;
26692670

2670-
mathOperator
2671-
: '*' | '/' | '%' | DIV | MOD | '+' | '-'
2671+
multOperator
2672+
: '*' | '/' | '%' | DIV | MOD
2673+
;
2674+
2675+
addOperator
2676+
: '+' | '-'
26722677
;
26732678

26742679
jsonOperator
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#begin
2+
select 1+2*3-4;
3+
select 1+9/3-2;
4+
select 2+9%2-1
5+
#end
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
(root (sqlStatements (sqlStatement (dmlStatement (selectStatement (querySpecification select (selectElements (selectElement (expression (predicate (expressionAtom (expressionAtom (expressionAtom (constant (decimalLiteral 1))) (addOperator +) (expressionAtom (expressionAtom (constant (decimalLiteral 2))) (multOperator *) (expressionAtom (constant (decimalLiteral 3))))) (addOperator -) (expressionAtom (constant (decimalLiteral 4)))))))) fromClause)))) ; (sqlStatement (dmlStatement (selectStatement (querySpecification select (selectElements (selectElement (expression (predicate (expressionAtom (expressionAtom (expressionAtom (constant (decimalLiteral 1))) (addOperator +) (expressionAtom (expressionAtom (constant (decimalLiteral 9))) (multOperator /) (expressionAtom (constant (decimalLiteral 3))))) (addOperator -) (expressionAtom (constant (decimalLiteral 2)))))))) fromClause)))) ; (sqlStatement (dmlStatement (selectStatement (querySpecification select (selectElements (selectElement (expression (predicate (expressionAtom (expressionAtom (expressionAtom (constant (decimalLiteral 2))) (addOperator +) (expressionAtom (expressionAtom (constant (decimalLiteral 9))) (multOperator %) (expressionAtom (constant (decimalLiteral 2))))) (addOperator -) (expressionAtom (fullColumnName (uid (simpleId 1;))))))))) fromClause))))) <EOF>)

0 commit comments

Comments
 (0)