Skip to content

Commit

Permalink
[Snowflake] minor fixes (#4249)
Browse files Browse the repository at this point in the history
* kws as ids

* fmt and cte fix
  • Loading branch information
mlorek authored Sep 19, 2024
1 parent 4ed9403 commit 5e7540f
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 39 deletions.
60 changes: 31 additions & 29 deletions sql/snowflake/SnowflakeLexer.g4
Original file line number Diff line number Diff line change
Expand Up @@ -230,10 +230,10 @@ CSV : 'CSV';
CSV_Q : '\'CSV\'';
CUBE : 'CUBE';
// CUME_DIST: 'CUME_DIST';
CURRENT : 'CURRENT';
CURRENT_DATE : 'CURRENT_DATE';
// CURRENT_TIME: 'CURRENT_TIME';
CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP';
CURRENT : 'CURRENT';
CURRENT_DATE : 'CURRENT_DATE';
CURRENT_TIME : 'CURRENT_TIME';
CURRENT_TIMESTAMP : 'CURRENT_TIMESTAMP';
// CURRENT_USER: 'CURRENT_USER';
// CURSOR: 'CURSOR';
CUSTOM : 'CUSTOM';
Expand All @@ -250,8 +250,8 @@ DATE_FORMAT : 'DATE_FORMAT';
DATE_INPUT_FORMAT : 'DATE_INPUT_FORMAT';
DATE_OUTPUT_FORMAT : 'DATE_OUTPUT_FORMAT';
DATE_PART : 'DATE_PART';
// DAYS: 'DAYS';
DAYS_TO_EXPIRY: 'DAYS_TO_EXPIRY';
DAYS : 'DAYS';
DAYS_TO_EXPIRY : 'DAYS_TO_EXPIRY';
// DECLARE: 'DECLARE';
DEFAULT : 'DEFAULT';
DEFAULT_DDL_COLLATION_ : 'DEFAULT_DDL_COLLATION';
Expand Down Expand Up @@ -405,9 +405,9 @@ HEADER : 'HEADER';
HEADERS : 'HEADERS';
HEX : 'HEX';
// HIERARCHYID: 'HIERARCHYID';
// HIGH: 'HIGH';
HISTORY: 'HISTORY';
// HOURS: 'HOURS';
HIGH : 'HIGH';
HISTORY : 'HISTORY';
HOURS : 'HOURS';
IDENTIFIER : 'IDENTIFIER';
IDENTITY : 'IDENTITY';
IF : 'IF';
Expand Down Expand Up @@ -498,12 +498,12 @@ LOCK_TIMEOUT : 'LOCK_TIMEOUT';
// LOGIN: 'LOGIN';
LOGIN_NAME : 'LOGIN_NAME';
LOOKER : 'LOOKER';
// LOW: 'LOW';
LOWER : 'LOWER';
LTRIM : 'LTRIM';
LZO : 'LZO';
MANAGE : 'MANAGE';
MANAGED : 'MANAGED';
LOW : 'LOW';
LOWER : 'LOWER';
LTRIM : 'LTRIM';
LZO : 'LZO';
MANAGE : 'MANAGE';
MANAGED : 'MANAGED';
// MASK: 'MASK';
// MASKED: 'MASKED';
MASKING: 'MASKING';
Expand Down Expand Up @@ -684,8 +684,8 @@ PREVENT_UNLOAD_TO_INTERNAL_STAGES : 'PREVENT_UNLOAD_TO_INTERNAL_STAGES';
PRE_AUTHORIZED_ROLES_LIST : 'PRE_AUTHORIZED_ROLES_LIST';
PRIMARY : 'PRIMARY';
// PRIMARY_ROLE: 'PRIMARY_ROLE';
PRIOR: 'PRIOR';
// PRIORITY: 'PRIORITY';
PRIOR : 'PRIOR';
PRIORITY : 'PRIORITY';
// PRIORITY_LEVEL: 'PRIORITY_LEVEL';
// PRIVATE: 'PRIVATE';
// PRIVATE_KEY: 'PRIVATE_KEY';
Expand All @@ -699,13 +699,14 @@ PROCEDURE_NAME : 'PROCEDURE_NAME';
PROPERTY : 'PROPERTY';
PROVIDER : 'PROVIDER';
// PROVIDER_KEY_NAME: 'PROVIDER_KEY_NAME';
PUBLIC : 'PUBLIC';
PURGE : 'PURGE';
PUT : 'PUT';
PYTHON : 'PYTHON';
QUALIFY : 'QUALIFY';
QUERIES : 'QUERIES';
// QUERY: 'QUERY';
PUBLIC : 'PUBLIC';
PURGE : 'PURGE';
PUT : 'PUT';
PYTHON : 'PYTHON';
QUALIFY : 'QUALIFY';
QUARTER : 'QUARTER';
QUERIES : 'QUERIES';
QUERY : 'QUERY';
QUERY_ACCELERATION_MAX_SCALE_FACTOR : 'QUERY_ACCELERATION_MAX_SCALE_FACTOR';
QUERY_TAG : 'QUERY_TAG';
QUEUE : 'QUEUE';
Expand Down Expand Up @@ -901,8 +902,8 @@ STANDARD : 'STANDARD';
// STANDBY: 'STANDBY';
START: 'START';
// STARTED: 'STARTED';
STARTS: 'STARTS';
// START_DATE: 'START_DATE';
STARTS : 'STARTS';
START_DATE : 'START_DATE';
START_TIMESTAMP : 'START_TIMESTAMP';
STATE : 'STATE';
STATEMENT : 'STATEMENT';
Expand All @@ -913,7 +914,7 @@ STATEMENT_TIMEOUT_IN_SECONDS : 'STATEMENT_TIMEOUT_IN_SECONDS';
STATS: 'STATS';
// STATS_DATE: 'STATS_DATE';
// STATS_STREAM: 'STATS_STREAM';
// STATUS: 'STATUS';
STATUS: 'STATUS';
// STATUSONLY: 'STATUSONLY';
// STDEV: 'STDEV';
// STDEVP: 'STDEVP';
Expand Down Expand Up @@ -1078,8 +1079,8 @@ VERSION : 'VERSION';
VIEW : 'VIEW';
VIEWS : 'VIEWS';
// VIEW_METADATA: 'VIEW_METADATA';
// VISIBILITY: 'VISIBILITY';
VOLATILE: 'VOLATILE';
VISIBILITY : 'VISIBILITY';
VOLATILE : 'VOLATILE';
// WAIT: 'WAIT';
WAREHOUSE : 'WAREHOUSE';
WAREHOUSES : 'WAREHOUSES';
Expand Down Expand Up @@ -1108,6 +1109,7 @@ XSMALL : 'XSMALL';
XXLARGE : 'XXLARGE';
XXXLARGE : 'XXXLARGE';
YEARLY : 'YEARLY';
YEAR : 'YEAR';
ZSTD : 'ZSTD';

ARRAY : 'ARRAY';
Expand Down
58 changes: 49 additions & 9 deletions sql/snowflake/SnowflakeParser.g4
Original file line number Diff line number Diff line change
Expand Up @@ -2347,7 +2347,7 @@ create_stream
//-- table or view
: CREATE or_replace? STREAM if_not_exists? object_name with_tags? copy_grants? ON (
TABLE
|VIEW
| VIEW
) object_name stream_time? append_only? show_initial_rows? comment_clause?
//-- External table
| CREATE or_replace? STREAM if_not_exists? object_name with_tags? copy_grants? ON EXTERNAL TABLE object_name stream_time? insert_only?
Expand Down Expand Up @@ -2459,8 +2459,8 @@ create_table_clause
: (
column_decl_item_list_paren cluster_by?
| cluster_by? comment_clause? column_decl_item_list_paren
) stage_file_format? (STAGE_COPY_OPTIONS EQ LR_BRACKET copy_options RR_BRACKET)? set_data_retention_params? change_tracking?
default_ddl_collation? copy_grants? comment_clause? with_row_access_policy? with_tags?
) stage_file_format? (STAGE_COPY_OPTIONS EQ LR_BRACKET copy_options RR_BRACKET)? set_data_retention_params? change_tracking? default_ddl_collation
? copy_grants? comment_clause? with_row_access_policy? with_tags?
;

create_table_as_select
Expand Down Expand Up @@ -3559,9 +3559,10 @@ keyword
//List here keyword (SnowSQL meaning) allowed as object name
// Name of builtin function should be included in specifique section (ie builtin_function)
// please add in alphabetic order for easy reading
// https://docs.snowflake.com/en/sql-reference/reserved-keywords
: ACCOUNT
| ALERT
| ACTION
| ALERT
| AT_KEYWORD
| CLUSTER
| COMMENT
Expand Down Expand Up @@ -3595,6 +3596,7 @@ keyword
| TAG
| TARGET_LAG
| TEMP
| TIMESTAMP
| TYPE
| USER
| VALUE
Expand All @@ -3609,29 +3611,40 @@ non_reserved_words
// please add in alphabetic order for easy reading
: ACCOUNTADMIN
| AES
| ALLOW_OVERLAPPING_EXECUTION
| ARRAY_AGG
| CHECKSUM
| COLLECTION
| COMMENT
| CONFIGURATION
| DATA
| DAYS
| DEFINITION
| DELTA
| DISPLAY_NAME
| DOWNSTREAM
| DYNAMIC
| EDITION
| ENABLED
| EMAIL
| EMPTY_
| ENABLED
| ERROR_INTEGRATION
| EVENT
| EXCHANGE
| EXPIRY_DATE
| EXPR
| FILE
| FILES
| FIRST_NAME
| FIRST_VALUE
| FREQUENCY
| GLOBAL
| HIGH
| HOURS
| IDENTIFIER
| IDENTITY
| INCREMENTAL
| IMPORTED
| INDEX
| INITIALIZE
| INPUT
Expand All @@ -3641,8 +3654,14 @@ non_reserved_words
| LAST_QUERY_ID
| LEAD
| LOCAL
| LOW
| MAX_CONCURRENCY_LEVEL
| MEDIUM
| MODE
| NAME
| NETWORK
| NULLIF
| NVL
| OFFSET
| OLD
| ON_CREATE
Expand All @@ -3651,6 +3670,8 @@ non_reserved_words
| OPTION
| ORGADMIN
| OUTBOUND
| OUTER
| OWNER
| PARTITION
| PASSWORD
| PASSWORD_HISTORY
Expand All @@ -3667,33 +3688,47 @@ non_reserved_words
| PATH_
| PATTERN
| PORT
| PRIORITY
| PROCEDURE_NAME
| PROPERTY
| PROVIDER
| PUBLIC
| QUARTER
| QUERY
| QUERY_TAG
| RANK
| RECURSIVE
| REFERENCES
| REFRESH_MODE
| RESOURCE
| RESOURCES
| RESPECT
| RESTRICT
| RESULT
| ROLE
| ROUNDING_MODE
| ROW_NUMBER
| SCALE
| SCHEDULE
| SECURITYADMIN
| SOURCE
| START_DATE
| STATE
| STATS
| STATUS
| SYSADMIN
| TAG
| TAGS
| TARGET_LAG
| TIMEZONE
| URL
| USERADMIN
| VALUE
| VALUES
| VERSION
| VISIBILITY
| WAREHOUSE_TYPE
| FREQUENCY
| YEAR
;

builtin_function
Expand All @@ -3704,6 +3739,7 @@ builtin_function
| MIN
| COUNT
| CURRENT_TIMESTAMP
| CURRENT_TIME
| CURRENT_DATE
| UPPER
| LOWER
Expand Down Expand Up @@ -3831,7 +3867,7 @@ expr
| op = ( PLUS | MINUS) expr
| expr op = (STAR | DIVIDE | MODULE) expr
| expr op = (PLUS | MINUS | PIPE_PIPE) expr
| expr comparison_operator expr
| l = expr comparison_operator r = expr
| op = NOT+ expr
| expr AND expr //bool operation
| expr OR expr //bool operation
Expand Down Expand Up @@ -3926,10 +3962,14 @@ primitive_expression
: DEFAULT //?
| NULL_
| id_ ('.' id_)* // json field access
| id_ '.' STAR
| full_column_name
| literal
| BOTH_Q
| ARRAY_Q
| AUTO_Q
| AZURE_Q
| BOTH_Q
| NONE_Q
| OBJECT_Q
//| json_literal
//| arr_literal
Expand Down Expand Up @@ -4066,7 +4106,7 @@ query_statement
;

with_expression
: WITH common_table_expression (COMMA common_table_expression)*
: WITH RECURSIVE? common_table_expression (COMMA common_table_expression)*
;

common_table_expression
Expand Down
4 changes: 3 additions & 1 deletion sql/snowflake/examples/select.sql
Original file line number Diff line number Diff line change
Expand Up @@ -125,4 +125,6 @@ with a as (
(select * from b)
)
select *
from a;
from a;

select count(t.*) as ca from t9 as t;

0 comments on commit 5e7540f

Please sign in to comment.