Skip to content

Commit 51081f9

Browse files
authored
#3787 fix (#3814)
1 parent bee4cab commit 51081f9

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

sql/snowflake/SnowflakeParser.g4

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3722,22 +3722,22 @@ expr
37223722
: object_name DOT NEXTVAL
37233723
| primitive_expression
37243724
| function_call
3725+
| expr LSB expr RSB //array access
3726+
| expr COLON expr //json access
3727+
| expr DOT (VALUE | expr)
37253728
| expr COLLATE string
37263729
| case_expression
37273730
| iff_expr
3728-
| full_column_name
37293731
| bracket_expression
37303732
| op=( PLUS | MINUS ) expr
3731-
| op=NOT expr
37323733
| expr op=(STAR | DIVIDE | MODULE) expr
37333734
| expr op=(PLUS | MINUS | PIPE_PIPE) expr
3734-
| expr op=( AND | OR | NOT ) expr //bool operation
3735-
| expr LSB expr RSB //array access
3735+
| expr comparison_operator expr
3736+
| op=NOT+ expr
3737+
| expr AND expr //bool operation
3738+
| expr OR expr //bool operation
37363739
| arr_literal
37373740
// | expr time_zone
3738-
| expr COLON expr //json access
3739-
| expr DOT VALUE
3740-
| expr DOT expr
37413741
| expr COLON_COLON data_type //cast
37423742
| expr over_clause
37433743
| CAST LR_BRACKET expr AS data_type RR_BRACKET
@@ -3748,7 +3748,6 @@ expr
37483748
| subquery
37493749
| try_cast_expr
37503750
| trim_expression
3751-
| expr comparison_operator expr
37523751
| expr IS null_not_null
37533752
| expr NOT? IN LR_BRACKET (subquery | expr_list) RR_BRACKET
37543753
| expr NOT? ( LIKE | ILIKE ) expr (ESCAPE expr)?
@@ -3815,7 +3814,8 @@ data_type
38153814
primitive_expression
38163815
: DEFAULT //?
38173816
| NULL_
3818-
| id_
3817+
| id_ ('.' id_)* // json field access
3818+
| full_column_name
38193819
| literal
38203820
//| json_literal
38213821
//| arr_literal
@@ -4252,7 +4252,6 @@ subquery
42524252

42534253
predicate
42544254
: EXISTS LR_BRACKET subquery RR_BRACKET
4255-
| expr comparison_operator expr
42564255
| expr comparison_operator (ALL | SOME | ANY) '(' subquery ')'
42574256
| expr NOT? BETWEEN expr AND expr
42584257
| expr NOT? IN '(' (subquery | expr_list) ')'

0 commit comments

Comments
 (0)