From 02aaca7426361e58df9dd9549ec9100d71ce159e Mon Sep 17 00:00:00 2001 From: Steve Dignam Date: Sat, 29 Nov 2025 22:43:22 -0500 Subject: [PATCH 1/3] parser: upgrade grammar with various fixes --- PLAN.md | 53 +- .../src/generated/syntax_kind.rs | 54 +- crates/squawk_parser/src/grammar.rs | 1408 +-- .../squawk_parser/tests/data/ok/set_role.sql | 2 + .../tests/data/ok/update_pg18.sql | 11 + .../snapshots/tests__alter_aggregate_ok.snap | 72 +- .../snapshots/tests__alter_collation_ok.snap | 58 +- .../snapshots/tests__alter_conversion_ok.snap | 64 +- .../snapshots/tests__alter_database_ok.snap | 244 +- .../tests__alter_default_privileges_ok.snap | 1537 ++- .../snapshots/tests__alter_domain_ok.snap | 7 +- .../tests__alter_event_trigger_ok.snap | 38 +- .../snapshots/tests__alter_extension_ok.snap | 95 +- .../tests__alter_foreign_data_wrapper_ok.snap | 254 +- .../tests__alter_foreign_table_ok.snap | 115 +- .../snapshots/tests__alter_function_ok.snap | 139 +- .../snapshots/tests__alter_group_ok.snap | 44 +- .../snapshots/tests__alter_index_ok.snap | 309 +- .../snapshots/tests__alter_language_ok.snap | 51 +- .../tests__alter_large_object_ok.snap | 7 +- .../tests__alter_materialized_view_ok.snap | 159 +- .../tests__alter_operator_class_ok.snap | 64 +- .../tests__alter_operator_family_ok.snap | 801 +- .../snapshots/tests__alter_operator_ok.snap | 378 +- .../snapshots/tests__alter_policy_ok.snap | 117 +- .../snapshots/tests__alter_procedure_ok.snap | 192 +- .../tests__alter_publication_ok.snap | 78 +- .../tests/snapshots/tests__alter_role_ok.snap | 167 +- .../snapshots/tests__alter_routine_ok.snap | 170 +- .../tests/snapshots/tests__alter_rule_ok.snap | 56 +- .../snapshots/tests__alter_schema_ok.snap | 38 +- .../snapshots/tests__alter_sequence_ok.snap | 51 +- .../snapshots/tests__alter_server_ok.snap | 38 +- .../snapshots/tests__alter_statistics_ok.snap | 51 +- .../tests__alter_subscription_ok.snap | 108 +- .../snapshots/tests__alter_system_ok.snap | 133 +- .../snapshots/tests__alter_table_err.snap | 10 +- .../snapshots/tests__alter_table_ok.snap | 105 +- .../snapshots/tests__alter_tablespace_ok.snap | 171 +- ...s__alter_text_search_configuration_ok.snap | 85 +- ...ests__alter_text_search_dictionary_ok.snap | 56 +- .../tests__alter_text_search_parser_ok.snap | 39 +- .../tests__alter_text_search_template_ok.snap | 26 +- .../snapshots/tests__alter_trigger_ok.snap | 100 +- .../tests/snapshots/tests__alter_type_ok.snap | 124 +- .../tests__alter_user_mapping_ok.snap | 3 +- .../tests/snapshots/tests__alter_user_ok.snap | 178 +- .../tests/snapshots/tests__alter_view_ok.snap | 182 +- .../tests/snapshots/tests__call_ok.snap | 6 +- .../tests/snapshots/tests__close_ok.snap | 2 +- .../tests/snapshots/tests__comment_ok.snap | 45 +- .../tests/snapshots/tests__copy_err.snap | 2 +- .../tests/snapshots/tests__copy_ok.snap | 14 +- .../tests__create_access_method_ok.snap | 32 +- .../snapshots/tests__create_aggregate_ok.snap | 719 +- .../snapshots/tests__create_cast_ok.snap | 101 +- .../snapshots/tests__create_collation_ok.snap | 41 +- .../snapshots/tests__create_database_ok.snap | 253 +- .../snapshots/tests__create_domain_ok.snap | 2 +- .../tests__create_event_trigger_ok.snap | 74 +- ...tests__create_foreign_data_wrapper_ok.snap | 104 +- .../tests__create_foreign_table_ok.snap | 2 +- .../snapshots/tests__create_function_ok.snap | 125 +- .../snapshots/tests__create_group_ok.snap | 59 +- .../snapshots/tests__create_index_ok.snap | 35 +- .../tests__create_materialized_view_ok.snap | 21 +- .../tests__create_operator_class_ok.snap | 438 +- .../snapshots/tests__create_operator_ok.snap | 144 +- .../snapshots/tests__create_policy_ok.snap | 147 +- .../snapshots/tests__create_procedure_ok.snap | 67 +- .../tests__create_publication_ok.snap | 22 +- .../snapshots/tests__create_role_ok.snap | 31 +- .../snapshots/tests__create_rule_ok.snap | 4 +- .../tests__create_statistics_ok.snap | 69 +- .../tests__create_subscription_ok.snap | 65 +- .../snapshots/tests__create_table_as_ok.snap | 5 +- .../snapshots/tests__create_table_err.snap | 16 +- .../snapshots/tests__create_table_ok.snap | 94 +- .../tests__create_tablespace_ok.snap | 23 +- .../tests__create_text_search_config_ok.snap | 26 +- .../tests__create_text_search_dict_ok.snap | 48 +- .../tests__create_text_search_parser_ok.snap | 99 +- ...tests__create_text_search_template_ok.snap | 37 +- .../snapshots/tests__create_transform_ok.snap | 138 +- .../snapshots/tests__create_trigger_ok.snap | 292 +- .../snapshots/tests__create_type_ok.snap | 205 +- .../snapshots/tests__create_user_ok.snap | 41 +- .../snapshots/tests__create_view_ok.snap | 11 +- .../tests/snapshots/tests__deallocate_ok.snap | 2 +- .../tests/snapshots/tests__drop_cast_ok.snap | 101 +- .../snapshots/tests__drop_operator_ok.snap | 504 +- .../tests/snapshots/tests__drop_owned_ok.snap | 36 +- .../snapshots/tests__drop_policy_ok.snap | 43 +- .../tests/snapshots/tests__drop_rule_ok.snap | 43 +- .../snapshots/tests__drop_trigger_ok.snap | 69 +- .../tests__drop_user_mapping_ok.snap | 3 +- .../tests/snapshots/tests__explain_ok.snap | 31 +- .../tests/snapshots/tests__grant_ok.snap | 757 +- .../tests__import_foreign_schema_ok.snap | 178 +- .../tests/snapshots/tests__misc_ok.snap | 71 +- .../tests/snapshots/tests__notify_ok.snap | 4 +- .../tests/snapshots/tests__prepare_err.snap | 57 +- .../tests/snapshots/tests__prepare_ok.snap | 77 +- .../tests/snapshots/tests__reassign_ok.snap | 39 +- .../tests/snapshots/tests__refresh_ok.snap | 18 +- .../tests/snapshots/tests__reset_ok.snap | 2 +- .../tests/snapshots/tests__revoke_ok.snap | 862 +- .../tests/snapshots/tests__schemas_ok.snap | 105 +- .../snapshots/tests__security_label_ok.snap | 54 +- .../tests/snapshots/tests__select_ok.snap | 12 +- .../snapshots/tests__set_constraints_ok.snap | 8 +- .../tests/snapshots/tests__set_role_ok.snap | 13 +- .../snapshots/tests__set_session_auth_ok.snap | 6 +- .../snapshots/tests__transaction_ok.snap | 2 +- .../tests/snapshots/tests__unlisten_ok.snap | 2 +- .../tests/snapshots/tests__update_ok.snap | 2 +- .../snapshots/tests__update_pg18_ok.snap | 196 + crates/squawk_parser/tests/tests.rs | 4 +- .../squawk_syntax/src/ast/generated/nodes.rs | 9945 ++++++++++++----- crates/squawk_syntax/src/ast/node_ext.rs | 301 + crates/squawk_syntax/src/lib.rs | 234 - crates/squawk_syntax/src/postgresql.ungram | 786 +- ...st__alter_aggregate_params_validation.snap | 22 +- ...t__create_aggregate_params_validation.snap | 15 +- crates/squawk_syntax/src/validation.rs | 8 +- 125 files changed, 16853 insertions(+), 9660 deletions(-) create mode 100644 crates/squawk_parser/tests/data/ok/update_pg18.sql create mode 100644 crates/squawk_parser/tests/snapshots/tests__update_pg18_ok.snap diff --git a/PLAN.md b/PLAN.md index 2c272e41..b3402962 100644 --- a/PLAN.md +++ b/PLAN.md @@ -47,11 +47,15 @@ support SQL embedded in other languages parse and warn, helps with copy pasting examples +https://www.enterprisedb.com/blog/psqls-scripting-language-turing-complete-or-fibonacci-psql + ### Other Dialects support Trino, BigQuery, Aurora DSLQ, etc. -### Check `format()` calls +### Validations + +#### Check `format()` calls https://www.postgresql.org/docs/18/functions-string.html#FUNCTIONS-STRING-FORMAT @@ -63,6 +67,47 @@ SELECT format('Hello %s %s', 'World'); -- error ^^ ``` +#### Warn about invalid column notation + +```sql +with t as (select 1 as data) +select (data).id from t; +``` + +postgres says: + +``` +Query 1 ERROR at Line 40: : ERROR: column notation .id applied to type integer, which is not a composite type +LINE 2: select (data).id from t; + ^ +``` + +#### Warn about invalid missing column notation + +```sql +create type f as ( + id integer, + name text +); +with t as (select (1, 'a')::f as data) +select data.id from t; +``` + +postgres says: + +``` +Query 1 ERROR at Line 41: : ERROR: missing FROM-clause entry for table "data" +LINE 2: select data.id from t; + ^ +``` + +we should suggest an autofix to: + +```sql +with t as (select (1, 'a')::f as data) +select (data).id from t; +``` + ### Formatter ```shell @@ -137,6 +182,10 @@ sql for benchmarks maybe? https://github.com/cedardb/DOOMQL +- rrule_plpgsql + + https://github.com/sirrodgepodge/rrule_plpgsql + ### CLI from `deno` @@ -589,7 +638,7 @@ via: https://www.postgresql.org/docs/17/sql-createview.html https://www.postgresql.org/docs/17/sql-dropgroup.html -### Rule: `create table as` to `select into` +### Rule: `select into` to `create table as` ```sql SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01'; diff --git a/crates/squawk_parser/src/generated/syntax_kind.rs b/crates/squawk_parser/src/generated/syntax_kind.rs index eba2388a..2a33fc41 100644 --- a/crates/squawk_parser/src/generated/syntax_kind.rs +++ b/crates/squawk_parser/src/generated/syntax_kind.rs @@ -544,6 +544,7 @@ pub enum SyntaxKind { ADD_COLUMN, ADD_CONSTRAINT, ADD_GENERATED, + ADD_OP_CLASS_OPTIONS, AGGREGATE, ALIAS, ALTER_AGGREGATE, @@ -578,6 +579,7 @@ pub enum SyntaxKind { ALTER_SCHEMA, ALTER_SEQUENCE, ALTER_SERVER, + ALTER_SET_STATISTICS, ALTER_STATISTICS, ALTER_SUBSCRIPTION, ALTER_SYSTEM, @@ -602,6 +604,7 @@ pub enum SyntaxKind { ATTACH_PARTITION, ATTRIBUTE_LIST, ATTRIBUTE_OPTION, + ATTRIBUTE_VALUE, AT_TIME_ZONE, BEGIN, BEGIN_FUNC_OPTION, @@ -613,6 +616,7 @@ pub enum SyntaxKind { CASCADE, CASE_EXPR, CAST_EXPR, + CAST_SIG, CHAR_TYPE, CHECKPOINT, CHECK_CONSTRAINT, @@ -648,6 +652,8 @@ pub enum SyntaxKind { CREATE_COLLATION, CREATE_CONVERSION, CREATE_DATABASE, + CREATE_DATABASE_OPTION, + CREATE_DATABASE_OPTION_LIST, CREATE_DOMAIN, CREATE_EVENT_TRIGGER, CREATE_EXTENSION, @@ -692,6 +698,7 @@ pub enum SyntaxKind { DEFERRABLE_CONSTRAINT_OPTION, DELETE, DELETE_ROWS, + DEPENDS_ON_EXTENSION, DETACH_PARTITION, DISABLE_RLS, DISABLE_RULE, @@ -726,6 +733,9 @@ pub enum SyntaxKind { DROP_OPERATOR, DROP_OPERATOR_CLASS, DROP_OPERATOR_FAMILY, + DROP_OP_CLASS_OPTION, + DROP_OP_CLASS_OPTIONS, + DROP_OP_CLASS_OPTION_LIST, DROP_OWNED, DROP_POLICY, DROP_PROCEDURE, @@ -759,25 +769,34 @@ pub enum SyntaxKind { ENABLE_RULE, ENABLE_TRIGGER, ENFORCED, + EVENT_TRIGGER_WHEN, + EVENT_TRIGGER_WHEN_CLAUSE, + EXCEPT_TABLES, EXCLUDE_CONSTRAINT, EXECUTE, EXPLAIN, EXPR_TYPE, FAT_ARROW, + FDW_OPTION, + FDW_OPTION_LIST, FETCH, FETCH_CLAUSE, FIELD_EXPR, FILTER_CLAUSE, FORCE_RLS, FOREIGN_KEY_CONSTRAINT, + FOR_PROVIDER, FRAME_CLAUSE, FROM_CLAUSE, FROM_ITEM, + FROM_SERVER, + FROM_TABLE, FUNCTION_SIG, FUNCTION_SIG_LIST, FUNC_OPTION_LIST, GENERATED_CONSTRAINT, GRANT, + GRANT_DEFAULT_PRIVILEGES, GROUPING_CUBE, GROUPING_EXPR, GROUPING_ROLLUP, @@ -785,6 +804,7 @@ pub enum SyntaxKind { GROUP_BY_CLAUSE, GROUP_BY_LIST, GTEQ, + HANDLER_CLAUSE, HAVING_CLAUSE, IF_EXISTS, IF_NOT_EXISTS, @@ -798,6 +818,7 @@ pub enum SyntaxKind { INSERT, INTERVAL_TYPE, INTO_CLAUSE, + INTO_SCHEMA, IS_DISTINCT_FROM, IS_JSON, IS_JSON_ARRAY, @@ -848,6 +869,7 @@ pub enum SyntaxKind { LIKE_CLAUSE, LIKE_OPTION, LIMIT_CLAUSE, + LIMIT_TO_TABLES, LISTEN, LITERAL, LOAD, @@ -886,6 +908,7 @@ pub enum SyntaxKind { NOT_SIMILAR_TO, NOT_VALID, NO_ACTION, + NO_DEPENDS_ON_EXTENSION, NO_FORCE_RLS, NO_INHERIT, NO_INHERIT_TABLE, @@ -900,11 +923,16 @@ pub enum SyntaxKind { ON_COMMIT, ON_CONFLICT_CLAUSE, ON_DELETE_ACTION, + ON_TABLE, ON_UPDATE_ACTION, OP, OPERATOR_CALL, + OPERATOR_CLASS_OPTION_LIST, OPTION_ITEM, OPTION_ITEM_LIST, + OP_CLASS_OPTION, + OP_SIG, + OP_SIG_LIST, ORDER_BY_CLAUSE, OR_REPLACE, OVER_CLAUSE, @@ -938,33 +966,45 @@ pub enum SyntaxKind { PREPARE_TRANSACTION, PRESERVE_ROWS, PRIMARY_KEY_CONSTRAINT, + PRIVILEGES, + PRIVILEGE_TARGET, READ_COMMITTED, READ_ONLY, READ_UNCOMMITTED, READ_WRITE, REASSIGN, REFERENCES_CONSTRAINT, + REFERENCING, + REFERENCING_TABLE, REFRESH, + REFRESH_COLLATION_VERSION, + REFRESH_VERSION, REINDEX, RELATION_NAME, RELEASE_SAVEPOINT, RENAME_COLUMN, RENAME_CONSTRAINT, - RENAME_TABLE, RENAME_TO, REPEATABLE_READ, REPLICA_IDENTITY, RESET, + RESET_CONFIG_PARAM, RESET_FUNC_OPTION, RESET_OPTIONS, - RESET_STORAGE_PARAMS, + RESET_SESSION_AUTH, RESTART, RESTRICT, RETURNING_CLAUSE, + RETURNING_OPTION, + RETURNING_OPTION_LIST, RETURN_FUNC_OPTION, RET_TYPE, REVOKE, + REVOKE_COMMAND, + REVOKE_COMMAND_LIST, + REVOKE_DEFAULT_PRIVILEGES, ROLE, + ROLE_LIST, ROLE_OPTION, ROLE_OPTION_LIST, ROLLBACK, @@ -972,6 +1012,7 @@ pub enum SyntaxKind { ROWS_FUNC_OPTION, ROW_LIST, SAVEPOINT, + SCHEMA_AUTHORIZATION, SECURITY_FUNC_OPTION, SECURITY_LABEL, SELECT, @@ -985,6 +1026,7 @@ pub enum SyntaxKind { SET_CLAUSE, SET_COLUMN_LIST, SET_COMPRESSION, + SET_CONFIG_PARAM, SET_CONSTRAINTS, SET_DEFAULT, SET_DEFAULT_COLUMNS, @@ -1007,7 +1049,6 @@ pub enum SyntaxKind { SET_SINGLE_COLUMN, SET_STATISTICS, SET_STORAGE, - SET_STORAGE_PARAMS, SET_TABLESPACE, SET_TRANSACTION, SET_TYPE, @@ -1033,8 +1074,14 @@ pub enum SyntaxKind { TARGET, TARGET_LIST, TIME_TYPE, + TIMING, TRANSACTION_MODE_LIST, + TRANSFORM_FROM_FUNC, TRANSFORM_FUNC_OPTION, + TRANSFORM_TO_FUNC, + TRIGGER_EVENT, + TRIGGER_EVENT_LIST, + TRIGGER_EVENT_UPDATE, TRUNCATE, TUPLE_EXPR, UNICODE_NORMAL_FORM, @@ -1055,6 +1102,7 @@ pub enum SyntaxKind { VOLATILITY_FUNC_OPTION, WHEN_CLAUSE, WHEN_CLAUSE_LIST, + WHEN_CONDITION, WHERE_CLAUSE, WHERE_CURRENT_OF, WINDOW_CLAUSE, diff --git a/crates/squawk_parser/src/grammar.rs b/crates/squawk_parser/src/grammar.rs index 5f725257..9530438f 100644 --- a/crates/squawk_parser/src/grammar.rs +++ b/crates/squawk_parser/src/grammar.rs @@ -3683,7 +3683,7 @@ fn opt_column_constraint(p: &mut Parser<'_>) -> Option { } let m = p.start(); if p.eat(CONSTRAINT_KW) { - name_ref(p); + name(p); } match opt_constraint_inner(p) { Some(kind) => { @@ -3966,10 +3966,12 @@ fn opt_operator(p: &mut Parser<'_>) -> bool { // bar.> // foo.bar.> fn operator(p: &mut Parser<'_>) { + let m = p.start(); opt_path_name_ref(p); if !opt_operator(p) { p.error(format!("expected operator, got {:?}", p.current())); } + m.complete(p, OP); } pub(crate) fn current_operator(p: &Parser<'_>) -> Option { @@ -5178,6 +5180,24 @@ fn opt_with_data(p: &mut Parser<'_>) -> Option { } } +fn rename_to(p: &mut Parser<'_>) -> CompletedMarker { + assert!(p.at(RENAME_KW)); + let m = p.start(); + p.bump(RENAME_KW); + p.expect(TO_KW); + name(p); + m.complete(p, RENAME_TO) +} + +fn owner_to(p: &mut Parser<'_>) -> CompletedMarker { + assert!(p.at(OWNER_KW)); + let m = p.start(); + p.bump(OWNER_KW); + p.expect(TO_KW); + role(p); + m.complete(p, OWNER_TO) +} + fn opt_tablespace(p: &mut Parser<'_>) -> Option { let m = p.start(); // [ TABLESPACE tablespace_name ] @@ -5422,7 +5442,7 @@ fn savepoint(p: &mut Parser<'_>) -> CompletedMarker { assert!(p.at(SAVEPOINT_KW)); let m = p.start(); p.bump(SAVEPOINT_KW); - name_ref(p); + name(p); m.complete(p, SAVEPOINT) } @@ -5705,7 +5725,7 @@ fn stmt(p: &mut Parser, r: &StmtRestrictions) -> Option { (REINDEX_KW, _) => Some(reindex(p)), (RELEASE_KW, _) => Some(release(p)), (RESET_KW, ROLE_KW) => Some(set_role(p)), - (RESET_KW, SESSION_KW) => Some(set_session_auth(p)), + (RESET_KW, SESSION_KW) => Some(reset_session_auth(p)), (RESET_KW, _) => Some(reset(p)), (REVOKE_KW, _) => Some(revoke(p)), (ROLLBACK_KW, _) => Some(rollback(p)), @@ -5757,20 +5777,17 @@ fn alter_statistics(p: &mut Parser<'_>) -> CompletedMarker { path_name_ref(p); match p.current() { OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name_ref(p); + rename_to(p); + } + SET_KW if p.nth_at(1, SCHEMA_KW) => { + set_schema(p); } SET_KW => { p.bump(SET_KW); - if p.eat(SCHEMA_KW) { - name_ref(p); - } else if p.eat(STATISTICS_KW) { + if p.eat(STATISTICS_KW) { if !p.eat(DEFAULT_KW) { if opt_numeric_literal(p).is_none() { p.error("expected numeric literal"); @@ -5799,14 +5816,10 @@ fn alter_server(p: &mut Parser<'_>) -> CompletedMarker { name_ref(p); match p.current() { OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); + rename_to(p); } _ => { let mut found_option = false; @@ -5843,25 +5856,20 @@ fn alter_sequence(p: &mut Parser<'_>) -> CompletedMarker { opt_if_exists(p); path_name_ref(p); match p.current() { + SET_KW if p.nth_at(1, SCHEMA_KW) => { + set_schema(p); + } SET_KW => { p.bump(SET_KW); - if p.eat(SCHEMA_KW) { - name_ref(p); - } else { - if !p.eat(LOGGED_KW) && !p.eat(UNLOGGED_KW) { - p.error("LOGGED or UNLOGGED"); - } + if !p.eat(LOGGED_KW) && !p.eat(UNLOGGED_KW) { + p.error("LOGGED or UNLOGGED"); } } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); + rename_to(p); } _ => { let mut found_option = false; @@ -5889,14 +5897,10 @@ fn alter_schema(p: &mut Parser<'_>) -> CompletedMarker { name_ref(p); match p.current() { RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); + rename_to(p); } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } _ => { p.error("expected RENAME or OWNER"); @@ -5912,11 +5916,8 @@ fn alter_rule(p: &mut Parser<'_>) -> CompletedMarker { p.bump(ALTER_KW); p.bump(RULE_KW); name_ref(p); - p.expect(ON_KW); - path_name_ref(p); - p.expect(RENAME_KW); - p.expect(TO_KW); - name(p); + on_table(p); + rename_to(p); m.complete(p, ALTER_RULE) } @@ -5949,26 +5950,16 @@ fn alter_routine(p: &mut Parser<'_>) -> CompletedMarker { function_sig(p); match p.current() { RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); + rename_to(p); } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } SET_KW if p.nth_at(1, SCHEMA_KW) => { - p.bump(SET_KW); - p.bump(SCHEMA_KW); - name_ref(p); + set_schema(p); } NO_KW | DEPENDS_KW => { - p.eat(NO_KW); - p.expect(DEPENDS_KW); - p.expect(ON_KW); - p.expect(EXTENSION_KW); - path_name_ref(p); + depends_on_extension(p); } _ => { func_option_list(p); @@ -6010,9 +6001,7 @@ fn alter_role(p: &mut Parser<'_>) -> CompletedMarker { } match p.current() { RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); + rename_to(p); } IN_KW | SET_KW | RESET_KW => { if p.eat(IN_KW) { @@ -6057,26 +6046,21 @@ fn alter_publication(p: &mut Parser<'_>) -> CompletedMarker { publication_object(p); } } + SET_KW if p.nth_at(1, L_PAREN) => { + set_options(p); + } SET_KW => { p.bump(SET_KW); - if p.at(L_PAREN) { - attribute_list(p); - } else { + publication_object(p); + while !p.at(EOF) && p.eat(COMMA) { publication_object(p); - while !p.at(EOF) && p.eat(COMMA) { - publication_object(p); - } } } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); + rename_to(p); } _ => { p.error("expected ADD, SET, DROP, OWNER, or RENAME"); @@ -6110,19 +6094,13 @@ fn alter_procedure(p: &mut Parser<'_>) -> CompletedMarker { function_sig(p); match p.current() { RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); + rename_to(p); } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } SET_KW if p.nth_at(1, SCHEMA_KW) => { - p.bump(SET_KW); - p.bump(SCHEMA_KW); - name_ref(p); + set_schema(p); } DEPENDS_KW | NO_KW => { p.eat(NO_KW); @@ -6150,11 +6128,9 @@ fn alter_policy(p: &mut Parser<'_>) -> CompletedMarker { p.bump(ALTER_KW); p.bump(POLICY_KW); name_ref(p); - p.expect(ON_KW); - name_ref(p); - if p.eat(RENAME_KW) { - p.expect(TO_KW); - name(p); + on_table(p); + if p.at(RENAME_KW) { + rename_to(p); } else { if p.eat(TO_KW) { role_list(p); @@ -6179,10 +6155,12 @@ fn alter_policy(p: &mut Parser<'_>) -> CompletedMarker { } fn role_list(p: &mut Parser<'_>) { + let m = p.start(); role(p); while !p.at(EOF) && p.eat(COMMA) { role(p); } + m.complete(p, ROLE_LIST); } // ALTER OPERATOR FAMILY name USING index_method ADD @@ -6216,34 +6194,25 @@ fn alter_operator_family(p: &mut Parser<'_>) -> CompletedMarker { name_ref(p); match p.current() { ADD_KW => { - p.bump_any(); - // TODO: need to add some validators to make this stricter - operator_class_option(p); - while !p.at(EOF) && p.eat(COMMA) { - operator_class_option(p); - } + let m = p.start(); + p.bump(ADD_KW); + operator_class_option_list(p); + m.complete(p, ADD_OP_CLASS_OPTIONS); } DROP_KW => { - p.bump_any(); - operator_drop_class_option(p); - while !p.at(EOF) && p.eat(COMMA) { - operator_drop_class_option(p); - } + let m = p.start(); + p.bump(DROP_KW); + drop_operator_class_option_list(p); + m.complete(p, DROP_OP_CLASS_OPTIONS); } RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); + rename_to(p); } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } SET_KW => { - p.bump(SET_KW); - p.expect(SCHEMA_KW); - name_ref(p); + set_schema(p); } _ => { p.error("expected ADD, DROP, RENAME, OWNER, or SET"); @@ -6252,6 +6221,25 @@ fn alter_operator_family(p: &mut Parser<'_>) -> CompletedMarker { m.complete(p, ALTER_OPERATOR_FAMILY) } +fn drop_operator_class_option_list(p: &mut Parser<'_>) { + let m = p.start(); + operator_drop_class_option(p); + while !p.at(EOF) && p.eat(COMMA) { + operator_drop_class_option(p); + } + m.complete(p, DROP_OP_CLASS_OPTION_LIST); +} + +fn operator_class_option_list(p: &mut Parser<'_>) { + let m = p.start(); + // TODO: need to add some validators to make this stricter + operator_class_option(p); + while !p.at(EOF) && p.eat(COMMA) { + operator_class_option(p); + } + m.complete(p, OPERATOR_CLASS_OPTION_LIST); +} + // ALTER OPERATOR CLASS name USING index_method // RENAME TO new_name // ALTER OPERATOR CLASS name USING index_method @@ -6269,19 +6257,13 @@ fn alter_operator_class(p: &mut Parser<'_>) -> CompletedMarker { name_ref(p); match p.current() { RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name_ref(p); + rename_to(p); } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } SET_KW => { - p.bump(SET_KW); - p.expect(SCHEMA_KW); - name_ref(p); + set_schema(p); } _ => { p.error("expected RENAME, OWNER, or SET"); @@ -6310,17 +6292,13 @@ fn alter_operator(p: &mut Parser<'_>) -> CompletedMarker { operator_sig(p); match p.current() { OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); + } + SET_KW if p.nth_at(1, SCHEMA_KW) => { + set_schema(p); } SET_KW => { - p.bump(SET_KW); - if p.eat(SCHEMA_KW) { - name_ref(p); - } else { - attribute_list(p); - } + set_options(p); } _ => { p.error("expected OWNER or SET"); @@ -6377,28 +6355,23 @@ fn alter_materialized_view(p: &mut Parser<'_>) -> CompletedMarker { opt_if_exists(p); path_name_ref(p); match p.current() { + RENAME_KW if p.nth_at(1, TO_KW) => { + rename_to(p); + } RENAME_KW => { + let m = p.start(); p.bump(RENAME_KW); - if p.eat(TO_KW) { - name(p); - } else { - p.eat(COLUMN_KW); - name_ref(p); - p.expect(TO_KW); - name(p); - } + p.eat(COLUMN_KW); + name_ref(p); + p.expect(TO_KW); + name(p); + m.complete(p, RENAME_COLUMN); } SET_KW if p.nth_at(1, SCHEMA_KW) => { - p.bump(SET_KW); - p.bump(SCHEMA_KW); - name_ref(p); + set_schema(p); } DEPENDS_KW | NO_KW => { - p.eat(NO_KW); - p.expect(DEPENDS_KW); - p.expect(ON_KW); - p.expect(EXTENSION_KW); - name_ref(p); + depends_on_extension(p); } ALTER_KW | CLUSTER_KW | SET_KW | RESET_KW | OWNER_KW => { opt_alter_table_action_list(p); @@ -6411,6 +6384,21 @@ fn alter_materialized_view(p: &mut Parser<'_>) -> CompletedMarker { m.complete(p, ALTER_MATERIALIZED_VIEW) } +fn depends_on_extension(p: &mut Parser<'_>) { + assert!(p.at(NO_KW) || p.at(DEPENDS_KW)); + let m = p.start(); + let kind = if p.eat(NO_KW) { + NO_DEPENDS_ON_EXTENSION + } else { + DEPENDS_ON_EXTENSION + }; + p.expect(DEPENDS_KW); + p.expect(ON_KW); + p.expect(EXTENSION_KW); + name_ref(p); + m.complete(p, kind); +} + fn opt_alter_table_action_list(p: &mut Parser<'_>) { while !p.at(EOF) { if opt_alter_table_action(p).is_none() { @@ -6453,14 +6441,10 @@ fn alter_language(p: &mut Parser<'_>) -> CompletedMarker { name_ref(p); match p.current() { RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); + rename_to(p); } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } _ => { p.error("expected RENAME or OWNER"); @@ -6501,50 +6485,58 @@ fn alter_index(p: &mut Parser<'_>) -> CompletedMarker { path_name_ref(p); match p.current() { RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - path_name_ref(p); + rename_to(p); + } + SET_KW if p.nth_at(1, L_PAREN) => { + set_options(p); } SET_KW => { + let m = p.start(); p.bump(SET_KW); - if p.at(TABLESPACE_KW) { - p.bump(TABLESPACE_KW); - path_name_ref(p); - } else { - attribute_list(p); - } + p.expect(TABLESPACE_KW); + path_name_ref(p); + m.complete(p, SET_TABLESPACE); } ATTACH_KW => { + let m = p.start(); p.bump(ATTACH_KW); p.expect(PARTITION_KW); path_name_ref(p); + m.complete(p, ATTACH_PARTITION); } DEPENDS_KW | NO_KW => { - p.eat(NO_KW); + let m = p.start(); + let kind = if p.eat(NO_KW) { + NO_DEPENDS_ON_EXTENSION + } else { + DEPENDS_ON_EXTENSION + }; p.bump(DEPENDS_KW); p.expect(ON_KW); p.expect(EXTENSION_KW); path_name_ref(p); + m.complete(p, kind); } RESET_KW => { - p.bump(RESET_KW); - attribute_list(p); + reset_options(p); } ALTER_KW => { + let m = p.start(); p.bump(ALTER_KW); p.eat(COLUMN_KW); if opt_numeric_literal(p).is_none() && opt_name_ref(p).is_none() { p.error("expected numeric literal or name"); } - p.expect(SET_KW); - if p.at(L_PAREN) { - attribute_list(p); + if p.at(SET_KW) && p.nth_at(1, L_PAREN) { + set_options(p); } else { + p.expect(SET_KW); p.expect(STATISTICS_KW); if opt_numeric_literal(p).is_none() { p.error("expected numeric literal"); } } + m.complete(p, ALTER_SET_STATISTICS); } _ => { p.error("expected RENAME, SET, ATTACH, DEPENDS, RESET, or ALTER"); @@ -6575,9 +6567,7 @@ fn alter_group(p: &mut Parser<'_>) -> CompletedMarker { name_ref_list(p); } RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); + rename_to(p); } _ => { p.error("expected ADD, DROP, or RENAME"); @@ -6617,19 +6607,13 @@ fn alter_function(p: &mut Parser<'_>) -> CompletedMarker { function_sig(p); match p.current() { RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); + rename_to(p); } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } SET_KW if p.nth_at(1, SCHEMA_KW) => { - p.bump(SET_KW); - p.bump(SCHEMA_KW); - name_ref(p); + set_schema(p); } DEPENDS_KW | NO_KW => { p.eat(NO_KW); @@ -6688,21 +6672,20 @@ fn alter_foreign_table(p: &mut Parser<'_>) -> CompletedMarker { opt_if_exists(p); relation_name(p); match p.current() { + RENAME_KW if p.nth_at(1, TO_KW) => { + rename_to(p); + } RENAME_KW => { + let m = p.start(); p.bump(RENAME_KW); - if p.eat(TO_KW) { - name(p); - } else { - p.eat(COLUMN_KW); - name_ref(p); - p.expect(TO_KW); - name(p); - } + p.eat(COLUMN_KW); + name_ref(p); + p.expect(TO_KW); + name(p); + m.complete(p, RENAME_COLUMN); } SET_KW if p.nth_at(1, SCHEMA_KW) => { - p.bump(SET_KW); - p.bump(SCHEMA_KW); - name_ref(p); + set_schema(p); } _ => { opt_alter_table_action_list(p); @@ -6730,29 +6713,17 @@ fn alter_foreign_data_wrapper(p: &mut Parser<'_>) -> CompletedMarker { p.bump(DATA_KW); p.bump(WRAPPER_KW); name_ref(p); - let mut found_option = false; - match p.current() { + let found_option = match p.current() { OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); - found_option = true; + owner_to(p); + true } RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); - found_option = true; - } - _ => { - while !p.at(EOF) { - if !opt_fdw_option(p) { - break; - } - found_option = true; - } + rename_to(p); + true } - } + _ => opt_fdw_option_list(p).is_some(), + }; if !found_option { p.error("Missing alter foreign data wrapper option or action.") } @@ -6779,14 +6750,10 @@ fn alter_event_trigger(p: &mut Parser<'_>) -> CompletedMarker { let _ = p.eat(REPLICA_KW) || p.eat(ALWAYS_KW); } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); + rename_to(p); } _ => { p.error("expected DISABLE, ENABLE, OWNER, or RENAME"); @@ -6852,9 +6819,7 @@ fn alter_extension(p: &mut Parser<'_>) -> CompletedMarker { } } SET_KW => { - p.bump(SET_KW); - p.expect(SCHEMA_KW); - name_ref(p); + set_schema(p); } ADD_KW | DROP_KW => { p.bump_any(); @@ -6879,7 +6844,7 @@ fn alter_extension(p: &mut Parser<'_>) -> CompletedMarker { } CAST_KW => { p.bump(CAST_KW); - source_type_as_target_type(p); + cast_sig(p); } EVENT_KW => { p.bump(EVENT_KW); @@ -7014,6 +6979,10 @@ fn alter_domain(p: &mut Parser<'_>) -> CompletedMarker { fn alter_domain_action(p: &mut Parser<'_>) -> Option { let m = p.start(); let action = match p.current() { + SET_KW if p.nth_at(1, SCHEMA_KW) => { + m.abandon(p); + return Some(set_schema(p)); + } SET_KW => { p.bump(SET_KW); match p.current() { @@ -7029,11 +6998,6 @@ fn alter_domain_action(p: &mut Parser<'_>) -> Option { p.expect(NULL_KW); SET_NOT_NULL } - SCHEMA_KW => { - p.bump(SCHEMA_KW); - name_ref(p); - SET_SCHEMA - } _ => { p.error("expected DEFAULT, NOT, or SCHEMA"); m.abandon(p); @@ -7073,18 +7037,17 @@ fn alter_domain_action(p: &mut Parser<'_>) -> Option { opt_constraint_option_list(p); ADD_CONSTRAINT } + RENAME_KW if p.nth_at(1, TO_KW) => { + m.abandon(p); + return Some(rename_to(p)); + } RENAME_KW => { p.bump(RENAME_KW); - if p.eat(CONSTRAINT_KW) { - name_ref(p); - p.expect(TO_KW); - name(p); - RENAME_CONSTRAINT - } else { - p.expect(TO_KW); - name(p); - RENAME_TO - } + p.expect(CONSTRAINT_KW); + name_ref(p); + p.expect(TO_KW); + name(p); + RENAME_CONSTRAINT } VALIDATE_KW => { p.bump(VALIDATE_KW); @@ -7093,10 +7056,8 @@ fn alter_domain_action(p: &mut Parser<'_>) -> Option { VALIDATE_CONSTRAINT } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); - OWNER_TO + m.abandon(p); + return Some(owner_to(p)); } _ => { p.error("expected SET, DROP, ADD, RENAME, VALIDATE, or OWNER"); @@ -7211,6 +7172,7 @@ fn alter_default_privileges(p: &mut Parser<'_>) -> CompletedMarker { } match p.current() { GRANT_KW => { + let m = p.start(); p.bump(GRANT_KW); privileges(p); p.expect(ON_KW); @@ -7221,8 +7183,10 @@ fn alter_default_privileges(p: &mut Parser<'_>) -> CompletedMarker { p.expect(GRANT_KW); p.expect(OPTION_KW); } + m.complete(p, GRANT_DEFAULT_PRIVILEGES); } REVOKE_KW => { + let m = p.start(); p.bump(REVOKE_KW); if p.eat(GRANT_KW) { p.eat(OPTION_KW); @@ -7234,6 +7198,7 @@ fn alter_default_privileges(p: &mut Parser<'_>) -> CompletedMarker { p.expect(FROM_KW); role_list(p); opt_cascade_or_restrict(p); + m.complete(p, REVOKE_DEFAULT_PRIVILEGES); } _ => { p.error("expected GRANT or REVOKE"); @@ -7245,11 +7210,15 @@ fn alter_default_privileges(p: &mut Parser<'_>) -> CompletedMarker { fn privilege_target_type(p: &mut Parser<'_>) { match p.current() { LARGE_KW => { + let m = p.start(); p.bump(LARGE_KW); p.expect(OBJECTS_KW); + m.complete(p, PRIVILEGE_TARGET); } TABLES_KW | FUNCTIONS_KW | ROUTINES_KW | SEQUENCES_KW | TYPES_KW | SCHEMAS_KW => { + let m = p.start(); p.bump_any(); + m.complete(p, PRIVILEGE_TARGET); } _ => p.error( "expected privilege target, TABLES, FUNCTIONS, ROUTINES, SEQEUNCES, TYPES, SCHEMAS, LARGE OBJECTS", @@ -7279,46 +7248,59 @@ fn alter_database(p: &mut Parser<'_>) -> CompletedMarker { name_ref(p); match p.current() { RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); + rename_to(p); } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } SET_KW if p.nth_at(1, TABLESPACE_KW) => { - p.bump(SET_KW); - p.bump(TABLESPACE_KW); - name_ref(p); + set_tablespace(p); } SET_KW => { set_configuration_param(p); } RESET_KW => { + let m = p.start(); p.bump(RESET_KW); if !p.eat(ALL_KW) { path_name_ref(p); } + m.complete(p, RESET_CONFIG_PARAM); } REFRESH_KW => { + let m = p.start(); p.bump(REFRESH_KW); p.expect(COLLATION_KW); p.expect(VERSION_KW); + m.complete(p, REFRESH_COLLATION_VERSION); } _ => { - p.eat(WITH_KW); - while !p.at(EOF) { - if !opt_create_database_option(p) { - break; - } - } + opt_create_database_option_list(p); } } m.complete(p, ALTER_DATABASE) } +fn set_tablespace(p: &mut Parser<'_>) { + assert!(p.at(SET_KW) && p.nth_at(1, TABLESPACE_KW)); + let m = p.start(); + p.bump(SET_KW); + p.bump(TABLESPACE_KW); + name_ref(p); + m.complete(p, SET_TABLESPACE); +} + +fn opt_create_database_option_list(p: &mut Parser<'_>) { + let m = p.start(); + p.eat(WITH_KW); + while !p.at(EOF) { + if !opt_create_database_option(p) { + break; + } + } + m.complete(p, CREATE_DATABASE_OPTION_LIST); +} + // ALTER CONVERSION name RENAME TO new_name // ALTER CONVERSION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } // ALTER CONVERSION name SET SCHEMA new_schema @@ -7330,19 +7312,13 @@ fn alter_conversion(p: &mut Parser<'_>) -> CompletedMarker { path_name_ref(p); match p.current() { RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); + rename_to(p); } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } SET_KW => { - p.bump(SET_KW); - p.expect(SCHEMA_KW); - name_ref(p); + set_schema(p); } _ => { p.error("expected RENAME, OWNER, or SET"); @@ -7363,23 +7339,16 @@ fn alter_collation(p: &mut Parser<'_>) -> CompletedMarker { path_name_ref(p); match p.current() { REFRESH_KW => { - p.bump(REFRESH_KW); - p.expect(VERSION_KW); + refresh_version(p); } RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); + rename_to(p); } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } SET_KW => { - p.bump(SET_KW); - p.expect(SCHEMA_KW); - name_ref(p); + set_schema(p); } _ => { p.error("expected REFRESH, RENAME, OWNER, or SET"); @@ -7388,6 +7357,23 @@ fn alter_collation(p: &mut Parser<'_>) -> CompletedMarker { m.complete(p, ALTER_COLLATION) } +fn refresh_version(p: &mut Parser<'_>) { + assert!(p.at(REFRESH_KW)); + let m = p.start(); + p.bump(REFRESH_KW); + p.expect(VERSION_KW); + m.complete(p, REFRESH_VERSION); +} + +fn set_schema(p: &mut Parser<'_>) -> CompletedMarker { + assert!(p.at(SET_KW)); + let m = p.start(); + p.bump(SET_KW); + p.expect(SCHEMA_KW); + name_ref(p); + m.complete(p, SET_SCHEMA) +} + // ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name // ALTER AGGREGATE name ( aggregate_signature ) // OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } @@ -7405,19 +7391,13 @@ fn alter_aggregate(p: &mut Parser<'_>) -> CompletedMarker { aggregate(p); match p.current() { RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - path_name_ref(p); + rename_to(p); } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } SET_KW => { - p.bump(SET_KW); - p.expect(SCHEMA_KW); - path_name_ref(p); + set_schema(p); } _ => { p.error("expected RENAME, OWNER, or SET"); @@ -7449,8 +7429,7 @@ fn alter_subscription(p: &mut Parser<'_>) -> CompletedMarker { string_literal(p); } SET_KW if p.nth_at(1, L_PAREN) => { - p.bump(SET_KW); - attribute_list(p); + set_options(p); } SET_KW | ADD_KW => { p.bump_any(); @@ -7477,14 +7456,10 @@ fn alter_subscription(p: &mut Parser<'_>) -> CompletedMarker { attribute_list(p); } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - name(p); + rename_to(p); } _ => { p.error( @@ -7538,20 +7513,36 @@ fn alter_tablespace(p: &mut Parser<'_>) -> CompletedMarker { p.bump(ALTER_KW); p.bump(TABLESPACE_KW); path_name_ref(p); - if p.eat(RENAME_KW) { - p.expect(TO_KW); - name(p); - } else if p.eat(OWNER_KW) { - p.expect(TO_KW); - role(p); - } else if p.eat(SET_KW) || p.eat(RESET_KW) { - attribute_list(p); + if p.at(RENAME_KW) { + rename_to(p); + } else if p.at(OWNER_KW) { + owner_to(p); + } else if p.at(SET_KW) { + set_options(p); + } else if p.at(RESET_KW) { + reset_options(p); } else { p.error("expected RENAME, OWNER, SET, or RESET after tablespace name"); } m.complete(p, ALTER_TABLESPACE) } +fn reset_options(p: &mut Parser<'_>) -> CompletedMarker { + assert!(p.at(RESET_KW)); + let m = p.start(); + p.bump(RESET_KW); + attribute_list(p); + m.complete(p, RESET_OPTIONS) +} + +fn set_options(p: &mut Parser<'_>) -> CompletedMarker { + assert!(p.at(SET_KW)); + let m = p.start(); + p.bump(SET_KW); + attribute_list(p); + m.complete(p, SET_OPTIONS) +} + // ALTER TEXT SEARCH PARSER name RENAME TO new_name // ALTER TEXT SEARCH PARSER name SET SCHEMA new_schema fn alter_text_search_parser(p: &mut Parser<'_>) -> CompletedMarker { @@ -7564,12 +7555,10 @@ fn alter_text_search_parser(p: &mut Parser<'_>) -> CompletedMarker { p.bump(SEARCH_KW); p.bump(PARSER_KW); path_name_ref(p); - if p.eat(RENAME_KW) { - p.expect(TO_KW); - name_ref(p); - } else if p.eat(SET_KW) { - p.expect(SCHEMA_KW); - name_ref(p); + if p.at(RENAME_KW) { + rename_to(p); + } else if p.at(SET_KW) { + set_schema(p); } else { p.error("expected RENAME TO or SET SCHEMA"); } @@ -7597,15 +7586,12 @@ fn alter_text_search_dict(p: &mut Parser<'_>) -> CompletedMarker { path_name_ref(p); if p.at(L_PAREN) { attribute_list(p); - } else if p.eat(RENAME_KW) { - p.expect(TO_KW); - name(p); - } else if p.eat(OWNER_KW) { - p.expect(TO_KW); - role(p); - } else if p.eat(SET_KW) { - p.expect(SCHEMA_KW); - name(p); + } else if p.at(RENAME_KW) { + rename_to(p); + } else if p.at(OWNER_KW) { + owner_to(p); + } else if p.at(SET_KW) { + set_schema(p); } else { p.error("expected '(', RENAME, OWNER, or SET"); } @@ -7684,19 +7670,13 @@ fn alter_text_search_configuration(p: &mut Parser<'_>) -> CompletedMarker { name_ref_list(p); } RENAME_KW => { - p.bump(RENAME_KW); - p.expect(TO_KW); - path_name_ref(p); + rename_to(p); } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); } SET_KW => { - p.bump(SET_KW); - p.expect(SCHEMA_KW); - path_name_ref(p); + set_schema(p); } _ => { p.error("expected ADD, ALTER, DROP, RENAME, OWNER, or SET"); @@ -7734,12 +7714,10 @@ fn alter_text_search_template(p: &mut Parser<'_>) -> CompletedMarker { p.bump(SEARCH_KW); p.bump(TEMPLATE_KW); path_name_ref(p); - if p.eat(RENAME_KW) { - p.expect(TO_KW); - name(p); - } else if p.eat(SET_KW) { - p.expect(SCHEMA_KW); - name(p); + if p.at(RENAME_KW) { + rename_to(p); + } else if p.at(SET_KW) { + set_schema(p); } else { p.error("expected RENAME TO or SET SCHEMA"); } @@ -7754,17 +7732,11 @@ fn alter_trigger(p: &mut Parser<'_>) -> CompletedMarker { p.bump(ALTER_KW); p.bump(TRIGGER_KW); name_ref(p); - p.expect(ON_KW); - path_name_ref(p); - if p.eat(RENAME_KW) { - p.expect(TO_KW); - name_ref(p); + on_table(p); + if p.at(RENAME_KW) { + rename_to(p); } else { - p.eat(NO_KW); - p.expect(DEPENDS_KW); - p.expect(ON_KW); - p.expect(EXTENSION_KW); - name_ref(p); + depends_on_extension(p); } m.complete(p, ALTER_TRIGGER) } @@ -7822,23 +7794,20 @@ fn alter_type(p: &mut Parser<'_>) -> CompletedMarker { } } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); + } + SET_KW if p.nth_at(1, SCHEMA_KW) => { + set_schema(p); } SET_KW => { - p.bump(SET_KW); - if p.eat(SCHEMA_KW) { - name_ref(p); - } else { - attribute_list(p); - } + set_options(p); + } + RENAME_KW if p.nth_at(1, TO_KW) => { + rename_to(p); } RENAME_KW => { p.bump(RENAME_KW); - if p.eat(TO_KW) { - name(p); - } else if p.eat(ATTRIBUTE_KW) { + if p.eat(ATTRIBUTE_KW) { name_ref(p); p.expect(TO_KW); name(p); @@ -7911,9 +7880,8 @@ fn alter_user(p: &mut Parser<'_>) -> CompletedMarker { return m.complete(p, ALTER_USER); } // RENAME TO new_name - if p.eat(RENAME_KW) { - p.expect(TO_KW); - name_ref(p); + if p.at(RENAME_KW) { + rename_to(p); return m.complete(p, ALTER_USER); } if p.eat(IN_KW) { @@ -8012,32 +7980,26 @@ fn alter_view(p: &mut Parser<'_>) -> CompletedMarker { } } OWNER_KW => { - p.bump(OWNER_KW); - p.expect(TO_KW); - role(p); + owner_to(p); + } + RENAME_KW if p.nth_at(1, TO_KW) => { + rename_to(p); } RENAME_KW => { p.bump(RENAME_KW); - if p.eat(TO_KW) { - name(p); - } else { - p.eat(COLUMN_KW); - name_ref(p); - p.expect(TO_KW); - name(p); - } + p.eat(COLUMN_KW); + name_ref(p); + p.expect(TO_KW); + name(p); + } + SET_KW if p.nth_at(1, SCHEMA_KW) => { + set_schema(p); } SET_KW => { - p.bump(SET_KW); - if p.eat(SCHEMA_KW) { - name_ref(p); - } else { - attribute_list(p); - } + set_options(p); } RESET_KW => { - p.bump(RESET_KW); - attribute_list(p); + reset_options(p); } _ => p.error("expected ALTER, OWNER, RENAME, or SET"), } @@ -8147,7 +8109,7 @@ fn comment(p: &mut Parser<'_>) -> CompletedMarker { } CAST_KW => { p.bump_any(); - source_type_as_target_type(p); + cast_sig(p); } COLLATION_KW | COLUMN_KW | CONVERSION_KW | DATABASE_KW | DOMAIN_KW | EXTENSION_KW | INDEX_KW | LANGUAGE_KW | PUBLICATION_KW | ROLE_KW | SCHEMA_KW | SEQUENCE_KW @@ -8297,9 +8259,15 @@ fn create_access_method(p: &mut Parser<'_>) -> CompletedMarker { if !p.eat(TABLE_KW) && !p.eat(INDEX_KW) { p.error("expected TABLE or INDEX"); } + handler_clause(p); + m.complete(p, CREATE_ACCESS_METHOD) +} + +fn handler_clause(p: &mut Parser<'_>) { + let m = p.start(); p.expect(HANDLER_KW); path_name(p); - m.complete(p, CREATE_ACCESS_METHOD) + m.complete(p, HANDLER_CLAUSE); } // CREATE [ OR REPLACE ] AGGREGATE name ( [ argmode ] [ argname ] arg_data_type [ , ... ] ) ( @@ -8393,7 +8361,7 @@ fn create_cast(p: &mut Parser<'_>) -> CompletedMarker { let m = p.start(); p.bump(CREATE_KW); p.bump(CAST_KW); - source_type_as_target_type(p); + cast_sig(p); if p.eat(WITH_KW) { if !p.eat(INOUT_KW) { p.expect(FUNCTION_KW); @@ -8472,7 +8440,7 @@ fn opt_option_value(p: &mut Parser<'_>) -> bool { } fn opt_create_database_option(p: &mut Parser<'_>) -> bool { - p.eat(WITH_KW); + let m = p.start(); // option name match p.current() { OWNER_KW | TEMPLATE_KW | ENCODING_KW | IDENT | TABLESPACE_KW => { @@ -8482,13 +8450,18 @@ fn opt_create_database_option(p: &mut Parser<'_>) -> bool { p.bump(CONNECTION_KW); p.expect(LIMIT_KW); } - _ => return false, + _ => { + m.abandon(p); + return false; + } } p.eat(EQ); if !opt_option_value(p) { p.error("expected create database option value"); + m.complete(p, CREATE_DATABASE_OPTION); return false; } + m.complete(p, CREATE_DATABASE_OPTION); true } @@ -8516,11 +8489,7 @@ fn create_database(p: &mut Parser<'_>) -> CompletedMarker { p.bump(CREATE_KW); p.bump(DATABASE_KW); name(p); - while !p.at(EOF) { - if !opt_create_database_option(p) { - break; - } - } + opt_create_database_option_list(p); m.complete(p, CREATE_DATABASE) } @@ -8546,6 +8515,7 @@ fn create_domain(p: &mut Parser<'_>) -> CompletedMarker { // filter_variable IN (filter_value [, ... ]) fn event_trigger_when(p: &mut Parser<'_>) { + let m = p.start(); name_ref(p); p.expect(IN_KW); p.expect(L_PAREN); @@ -8554,6 +8524,7 @@ fn event_trigger_when(p: &mut Parser<'_>) { string_literal(p); } p.expect(R_PAREN); + m.complete(p, EVENT_TRIGGER_WHEN); } // CREATE EVENT TRIGGER name @@ -8568,13 +8539,8 @@ fn create_event_trigger(p: &mut Parser<'_>) -> CompletedMarker { p.expect(TRIGGER_KW); name(p); p.expect(ON_KW); - ident(p); - if p.eat(WHEN_KW) { - event_trigger_when(p); - while !p.at(EOF) && p.eat(AND_KW) { - event_trigger_when(p); - } - } + name_ref(p); + opt_event_trigger_when_clause(p); p.expect(EXECUTE_KW); if !p.eat(FUNCTION_KW) && !p.eat(PROCEDURE_KW) { p.error("expected FUNCTION or PROCEDURE"); @@ -8584,6 +8550,18 @@ fn create_event_trigger(p: &mut Parser<'_>) -> CompletedMarker { m.complete(p, CREATE_EVENT_TRIGGER) } +fn opt_event_trigger_when_clause(p: &mut Parser<'_>) { + if p.at(WHEN_KW) { + let m = p.start(); + p.bump(WHEN_KW); + event_trigger_when(p); + while !p.at(EOF) && p.eat(AND_KW) { + event_trigger_when(p); + } + m.complete(p, EVENT_TRIGGER_WHEN_CLAUSE); + } +} + // CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [ // { column_name data_type [ OPTIONS ( option 'value' [, ... ] ) ] [ COLLATE collation ] [ column_constraint [ ... ] ] // | table_constraint } @@ -8672,17 +8650,32 @@ fn create_foreign_data_wrapper(p: &mut Parser<'_>) -> CompletedMarker { p.bump(DATA_KW); p.expect(WRAPPER_KW); name(p); + opt_fdw_option_list(p); + opt_alter_option_list(p); + m.complete(p, CREATE_FOREIGN_DATA_WRAPPER) +} + +fn opt_fdw_option_list(p: &mut Parser<'_>) -> Option { + let m = p.start(); + let mut found = false; while !p.at(EOF) { if !opt_fdw_option(p) { break; + } else { + found = true; } } - opt_alter_option_list(p); - m.complete(p, CREATE_FOREIGN_DATA_WRAPPER) + if found { + Some(m.complete(p, FDW_OPTION_LIST)) + } else { + m.abandon(p); + None + } } fn opt_fdw_option(p: &mut Parser<'_>) -> bool { - match p.current() { + let m = p.start(); + let ret = match p.current() { OPTIONS_KW => { if !opt_alter_option_list(p) { p.error("expected options"); @@ -8701,8 +8694,13 @@ fn opt_fdw_option(p: &mut Parser<'_>) -> bool { } true } - _ => false, - } + _ => { + m.abandon(p); + return false; + } + }; + m.complete(p, FDW_OPTION); + ret } // CREATE GROUP name [ [ WITH ] option [ ... ] ] @@ -8789,10 +8787,7 @@ fn create_materialized_view(p: &mut Parser<'_>) -> CompletedMarker { p.error("expected SELECT, TABLE, or VALUES statement"); } } - if p.eat(WITH_KW) { - p.eat(NO_KW); - p.expect(DATA_KW); - } + opt_with_data(p); m.complete(p, CREATE_MATERIALIZED_VIEW) } @@ -8836,10 +8831,7 @@ fn create_operator_class(p: &mut Parser<'_>) -> CompletedMarker { path_name_ref(p); } p.expect(AS_KW); - operator_class_option(p); - while !p.at(EOF) && p.eat(COMMA) { - operator_class_option(p); - } + operator_class_option_list(p); m.complete(p, CREATE_OPERATOR_CLASS) } @@ -8847,6 +8839,7 @@ fn create_operator_class(p: &mut Parser<'_>) -> CompletedMarker { // | FUNCTION support_number [ ( op_type [ , op_type ] ) ] function_name ( argument_type [, ...] ) // | STORAGE storage_type fn operator_class_option(p: &mut Parser<'_>) { + let m = p.start(); match p.current() { OPERATOR_KW => { p.bump(OPERATOR_KW); @@ -8870,20 +8863,26 @@ fn operator_class_option(p: &mut Parser<'_>) { p.error("expected SEARCH or ORDER BY"); } } + m.complete(p, OP_CLASS_OPTION); } FUNCTION_KW => { p.bump(FUNCTION_KW); if opt_numeric_literal(p).is_none() { p.error("expected number"); } - opt_type_name_list(p); + opt_param_list(p, ParamKind::TypeOnly); function_sig(p); + m.complete(p, OP_CLASS_OPTION); } STORAGE_KW => { p.bump(STORAGE_KW); type_name(p); + m.complete(p, OP_CLASS_OPTION); + } + _ => { + p.error("expected OPERATOR, FUNCTION, or STORAGE"); + m.abandon(p); } - _ => p.error("expected OPERATOR, FUNCTION, or STORAGE"), } } @@ -8892,11 +8891,13 @@ fn operator_class_option(p: &mut Parser<'_>) { fn operator_drop_class_option(p: &mut Parser<'_>) { match p.current() { OPERATOR_KW | FUNCTION_KW => { + let m = p.start(); p.bump_any(); if opt_numeric_literal(p).is_none() { p.error("expected number"); } - opt_type_name_list(p); + opt_param_list(p, ParamKind::TypeOnly); + m.complete(p, DROP_OP_CLASS_OPTION); } _ => p.error("expected OPERATOR, or FUNCTION"), } @@ -8927,8 +8928,7 @@ fn create_policy(p: &mut Parser<'_>) -> CompletedMarker { p.bump(CREATE_KW); p.bump(POLICY_KW); name(p); - p.expect(ON_KW); - path_name_ref(p); + on_table(p); if p.eat(AS_KW) { ident(p); } @@ -8977,7 +8977,7 @@ fn create_procedure(p: &mut Parser<'_>) -> CompletedMarker { opt_or_replace(p); p.expect(PROCEDURE_KW); path_name(p); - param_list(p); + param_list(p, ParamKind::All); func_option_list(p); m.complete(p, CREATE_PROCEDURE) } @@ -9207,8 +9207,7 @@ fn create_statistics(p: &mut Parser<'_>) -> CompletedMarker { p.error("expected expression") } } - p.expect(FROM_KW); - path_name_ref(p); + from_table(p); m.complete(p, CREATE_STATISTICS) } @@ -9292,7 +9291,7 @@ fn create_text_search_dict(p: &mut Parser<'_>) -> CompletedMarker { p.bump(DICTIONARY_KW); path_name(p); attribute_list(p); - m.complete(p, CREATE_TEXT_SEARCH_PARSER) + m.complete(p, CREATE_TEXT_SEARCH_DICTIONARY) } // CREATE TEXT SEARCH CONFIGURATION name ( @@ -9308,7 +9307,7 @@ fn create_text_search_config(p: &mut Parser<'_>) -> CompletedMarker { p.bump(CONFIGURATION_KW); path_name(p); attribute_list(p); - m.complete(p, CREATE_TEXT_SEARCH_PARSER) + m.complete(p, CREATE_TEXT_SEARCH_CONFIGURATION) } // CREATE TEXT SEARCH TEMPLATE name ( @@ -9324,7 +9323,7 @@ fn create_text_search_template(p: &mut Parser<'_>) -> CompletedMarker { p.bump(TEMPLATE_KW); path_name(p); attribute_list(p); - m.complete(p, CREATE_TEXT_SEARCH_PARSER) + m.complete(p, CREATE_TEXT_SEARCH_TEMPLATE) } // CREATE [ OR REPLACE ] TRANSFORM FOR type_name LANGUAGE lang_name ( @@ -9342,19 +9341,31 @@ fn create_transform(p: &mut Parser<'_>) -> CompletedMarker { p.expect(LANGUAGE_KW); name_ref(p); p.expect(L_PAREN); - p.expect(FROM_KW); + transform_from_func(p); + p.expect(COMMA); + transform_to_func(p); + p.expect(R_PAREN); + m.complete(p, CREATE_TRANSFORM) +} + +fn transform_to_func(p: &mut Parser<'_>) { + let m = p.start(); + p.expect(TO_KW); p.expect(SQL_KW); p.expect(WITH_KW); p.expect(FUNCTION_KW); function_sig(p); - p.expect(COMMA); - p.expect(TO_KW); + m.complete(p, TRANSFORM_TO_FUNC); +} + +fn transform_from_func(p: &mut Parser<'_>) { + let m = p.start(); + p.expect(FROM_KW); p.expect(SQL_KW); p.expect(WITH_KW); p.expect(FUNCTION_KW); function_sig(p); - p.expect(R_PAREN); - m.complete(p, CREATE_TRANSFORM) + m.complete(p, TRANSFORM_FROM_FUNC); } // CREATE USER MAPPING [ IF NOT EXISTS ] FOR { user_name | USER | CURRENT_ROLE | CURRENT_USER | PUBLIC } @@ -9548,7 +9559,7 @@ fn drop_function(p: &mut Parser<'_>) -> CompletedMarker { fn function_sig(p: &mut Parser<'_>) { let m = p.start(); path_name_ref(p); - opt_param_list(p); + opt_param_list(p, ParamKind::All); m.complete(p, FUNCTION_SIG); } @@ -9630,12 +9641,14 @@ fn drop_aggregate(p: &mut Parser<'_>) -> CompletedMarker { m.complete(p, DROP_AGGREGATE) } -fn source_type_as_target_type(p: &mut Parser<'_>) { +fn cast_sig(p: &mut Parser<'_>) { + let m = p.start(); p.expect(L_PAREN); type_name(p); p.expect(AS_KW); type_name(p); p.expect(R_PAREN); + m.complete(p, CAST_SIG); } // DROP CAST [ IF EXISTS ] (source_type AS target_type) [ CASCADE | RESTRICT ] @@ -9645,7 +9658,7 @@ fn drop_cast(p: &mut Parser<'_>) -> CompletedMarker { p.bump(DROP_KW); p.bump(CAST_KW); opt_if_exists(p); - source_type_as_target_type(p); + cast_sig(p); opt_cascade_or_restrict(p); m.complete(p, DROP_CAST) } @@ -9746,16 +9759,23 @@ fn drop_operator(p: &mut Parser<'_>) -> CompletedMarker { p.bump(DROP_KW); p.bump(OPERATOR_KW); opt_if_exists(p); + op_sig_list(p); + opt_cascade_or_restrict(p); + m.complete(p, DROP_OPERATOR) +} + +fn op_sig_list(p: &mut Parser<'_>) { + let m = p.start(); operator_sig(p); while !p.at(EOF) && p.eat(COMMA) { operator_sig(p); } - opt_cascade_or_restrict(p); - m.complete(p, DROP_OPERATOR) + m.complete(p, OP_SIG_LIST); } // name ( { left_type | NONE } , right_type ) fn operator_sig(p: &mut Parser<'_>) { + let m = p.start(); operator(p); p.expect(L_PAREN); if !p.eat(NONE_KW) { @@ -9764,6 +9784,7 @@ fn operator_sig(p: &mut Parser<'_>) { p.expect(COMMA); type_name(p); p.expect(R_PAREN); + m.complete(p, OP_SIG); } // DROP OPERATOR CLASS [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ] @@ -9801,8 +9822,7 @@ fn drop_policy(p: &mut Parser<'_>) -> CompletedMarker { p.bump(POLICY_KW); opt_if_exists(p); name_ref(p); - p.expect(ON_KW); - path_name_ref(p); + on_table(p); opt_cascade_or_restrict(p); m.complete(p, DROP_POLICY) } @@ -9864,8 +9884,7 @@ fn drop_rule(p: &mut Parser<'_>) -> CompletedMarker { p.bump(RULE_KW); opt_if_exists(p); name_ref(p); - p.expect(ON_KW); - path_name_ref(p); + on_table(p); opt_cascade_or_restrict(p); m.complete(p, DROP_RULE) } @@ -10183,25 +10202,41 @@ fn import_foreign_schema(p: &mut Parser<'_>) -> CompletedMarker { name_ref(p); // [ { LIMIT TO | EXCEPT } ( table_name [, ...] ) ] if p.at(LIMIT_KW) || p.at(EXCEPT_KW) { - if p.eat(LIMIT_KW) { + let m = p.start(); + let kind = if p.eat(LIMIT_KW) { p.expect(TO_KW); + LIMIT_TO_TABLES } else { p.bump(EXCEPT_KW); - } + EXCEPT_TABLES + }; // ( table_name [, ...] ) p.expect(L_PAREN); name_ref_list(p); p.expect(R_PAREN); + m.complete(p, kind); } - // FROM SERVER server_name - p.expect(FROM_KW); - p.expect(SERVER_KW); - name_ref(p); + from_server(p); + into_schema(p); + opt_alter_option_list(p); + m.complete(p, IMPORT_FOREIGN_SCHEMA) +} + +fn into_schema(p: &mut Parser<'_>) { + let m = p.start(); // INTO local_schema p.expect(INTO_KW); name_ref(p); - opt_alter_option_list(p); - m.complete(p, IMPORT_FOREIGN_SCHEMA) + m.complete(p, INTO_SCHEMA); +} + +// FROM SERVER server_name +fn from_server(p: &mut Parser<'_>) { + let m = p.start(); + p.expect(FROM_KW); + p.expect(SERVER_KW); + name_ref(p); + m.complete(p, FROM_SERVER); } // LOCK [ TABLE ] [ ONLY ] name [ * ] [, ...] [ IN lockmode MODE ] [ NOWAIT ] @@ -10451,10 +10486,7 @@ fn refresh(p: &mut Parser<'_>) -> CompletedMarker { p.expect(VIEW_KW); p.eat(CONCURRENTLY_KW); path_name_ref(p); - if p.eat(WITH_KW) { - p.eat(NO_KW); - p.expect(DATA_KW); - } + opt_with_data(p); m.complete(p, REFRESH) } @@ -10482,10 +10514,7 @@ fn grant(p: &mut Parser<'_>) -> CompletedMarker { p.eat(PRIVILEGES_KW); opt_column_list(p); } else if !p.at(TO_KW) { - revoke_command(p); - while !p.at(EOF) && p.eat(COMMA) { - revoke_command(p); - } + revoke_command_list(p); } // ON { [ TABLE ] table_name [, ...] // | ALL TABLES IN SCHEMA schema_name [, ...] } @@ -10512,6 +10541,15 @@ fn grant(p: &mut Parser<'_>) -> CompletedMarker { m.complete(p, GRANT) } +fn revoke_command_list(p: &mut Parser<'_>) { + let m = p.start(); + revoke_command(p); + while !p.at(EOF) && p.eat(COMMA) { + revoke_command(p); + } + m.complete(p, REVOKE_COMMAND_LIST); +} + fn grant_role_option_list(p: &mut Parser<'_>) { if p.eat(GRANT_KW) { p.expect(OPTION_KW); @@ -10667,17 +10705,16 @@ fn revoke(p: &mut Parser<'_>) -> CompletedMarker { // { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN } // [, ...] | ALL [ PRIVILEGES ] } fn privileges(p: &mut Parser<'_>) { + let m = p.start(); // ALL [ PRIVILEGES ] if p.eat(ALL_KW) { p.eat(PRIVILEGES_KW); } else if !p.at(FROM_KW) { - revoke_command(p); - while !p.at(EOF) && p.eat(COMMA) { - revoke_command(p); - } + revoke_command_list(p); } // [ ( column_name [, ...] ) ] opt_column_list(p); + m.complete(p, PRIVILEGES); } const REVOKE_COMMAND_FIRST: TokenSet = TokenSet::new(&[ @@ -10698,6 +10735,7 @@ const REVOKE_COMMAND_FIRST: TokenSet = TokenSet::new(&[ ]); fn revoke_command(p: &mut Parser<'_>) { + let m = p.start(); if !opt_role(p) { if p.eat(ALTER_KW) { p.expect(SYSTEM_KW); @@ -10709,6 +10747,7 @@ fn revoke_command(p: &mut Parser<'_>) { } // [ ( column_name [, ...] ) ] opt_column_list(p); + m.complete(p, REVOKE_COMMAND); } // where role_specification can be: @@ -10724,18 +10763,11 @@ fn role(p: &mut Parser<'_>) { } fn opt_role(p: &mut Parser<'_>) -> bool { + let m = p.start(); match p.current() { GROUP_KW => { - p.bump(GROUP_KW); - if p.at_ts(NON_RESERVED_WORD) - || p.at(CURRENT_ROLE_KW) - || p.at(CURRENT_USER_KW) - || p.at(SESSION_USER_KW) - { - p.bump_any(); - } else { - p.error(format!("expected role_name, got {:?}", p.current())) - } + p.bump(GROUP_KW); + name_ref(p); } CURRENT_ROLE_KW | CURRENT_USER_KW | SESSION_USER_KW => { p.bump_any(); @@ -10744,14 +10776,19 @@ fn opt_role(p: &mut Parser<'_>) -> bool { if !p.nth_at(1, SYSTEM_KW) { p.bump_any(); } else { + m.abandon(p); return false; } } _ if p.at_ts(NON_RESERVED_WORD) => { - p.bump_any(); + name_ref(p); + } + _ => { + m.abandon(p); + return false; } - _ => return false, } + m.complete(p, ROLE); true } @@ -10789,35 +10826,29 @@ fn security_label(p: &mut Parser<'_>) -> CompletedMarker { let m = p.start(); p.bump(SECURITY_KW); p.bump(LABEL_KW); - if p.eat(FOR_KW) { - if p.at_ts(NON_RESERVED_WORD) { - p.bump_any(); - } else { - string_literal(p); - } - } + opt_for_provider(p); p.expect(ON_KW); match p.current() { TABLE_KW | COLUMN_KW | DATABASE_KW | DOMAIN_KW | PUBLICATION_KW | ROLE_KW | SCHEMA_KW | SEQUENCE_KW | SUBSCRIPTION_KW | TABLESPACE_KW | TYPE_KW | VIEW_KW => { p.bump_any(); - path_name(p); + path_name_ref(p); } EVENT_KW => { p.bump(EVENT_KW); p.expect(TRIGGER_KW); - path_name(p); + path_name_ref(p); } FOREIGN_KW => { p.bump(FOREIGN_KW); p.expect(TABLE_KW); - path_name(p); + path_name_ref(p); } // [ PROCEDURAL ] LANGUAGE object_name PROCEDURAL_KW | LANGUAGE_KW => { p.eat(PROCEDURAL_KW); p.expect(LANGUAGE_KW); - path_name(p); + path_name_ref(p); } // LARGE OBJECT large_object_oid LARGE_KW => { @@ -10830,7 +10861,7 @@ fn security_label(p: &mut Parser<'_>) -> CompletedMarker { MATERIALIZED_KW => { p.bump(MATERIALIZED_KW); p.expect(VIEW_KW); - path_name(p); + path_name_ref(p); } FUNCTION_KW | PROCEDURE_KW | ROUTINE_KW => { p.bump_any(); @@ -10849,6 +10880,19 @@ fn security_label(p: &mut Parser<'_>) -> CompletedMarker { m.complete(p, SECURITY_LABEL) } +fn opt_for_provider(p: &mut Parser<'_>) { + if p.at(FOR_KW) { + let m = p.start(); + p.bump(FOR_KW); + if p.at_ts(STRING_FIRST) { + string_literal(p); + } else { + name_ref(p); + } + m.complete(p, FOR_PROVIDER); + } +} + fn agg_args(p: &mut Parser<'_>) { match p.current() { STAR => { @@ -10859,20 +10903,20 @@ fn agg_args(p: &mut Parser<'_>) { p.bump(ORDER_KW); p.expect(BY_KW); // TODO: generalize - param(p); + param(p, ParamKind::All); while !p.at(EOF) { if p.eat(COMMA) { - param(p); + param(p, ParamKind::All); } else { break; } } } _ => { - param(p); + param(p, ParamKind::All); while !p.at(EOF) { if p.eat(COMMA) { - param(p); + param(p, ParamKind::All); } else { break; } @@ -10881,10 +10925,10 @@ fn agg_args(p: &mut Parser<'_>) { if p.eat(ORDER_KW) { p.expect(BY_KW); // TODO: generalize - param(p); + param(p, ParamKind::All); while !p.at(EOF) { if p.eat(COMMA) { - param(p); + param(p, ParamKind::All); } else { break; } @@ -10909,7 +10953,7 @@ fn set_constraints(p: &mut Parser<'_>) -> CompletedMarker { p.bump(SET_KW); p.bump(CONSTRAINTS_KW); if !p.eat(ALL_KW) { - path_name_list(p); + path_name_ref_list(p); } if !p.eat(DEFERRED_KW) && !p.eat(IMMEDIATE_KW) { p.error("expected DEFERRED or IMMEDIATE"); @@ -10917,17 +10961,6 @@ fn set_constraints(p: &mut Parser<'_>) -> CompletedMarker { m.complete(p, SET_CONSTRAINTS) } -fn path_name_list(p: &mut Parser<'_>) { - path_name(p); - while !p.at(EOF) { - if p.eat(COMMA) { - path_name(p); - } else { - break; - } - } -} - // SET [ SESSION | LOCAL ] ROLE role_name // SET [ SESSION | LOCAL ] ROLE NONE // RESET ROLE @@ -10940,8 +10973,8 @@ fn set_role(p: &mut Parser<'_>) -> CompletedMarker { p.bump(SET_KW); let _ = p.eat(SESSION_KW) || p.eat(LOCAL_KW); p.expect(ROLE_KW); - if !p.eat(NONE_KW) && !opt_ident(p) && opt_string_literal(p).is_none() { - p.error("expected NONE or role_name"); + if !p.eat(NONE_KW) && opt_string_literal(p).is_none() { + role(p); } } m.complete(p, SET_ROLE) @@ -10949,29 +10982,29 @@ fn set_role(p: &mut Parser<'_>) -> CompletedMarker { // SET [ SESSION | LOCAL ] SESSION AUTHORIZATION user_name // SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT -// RESET SESSION AUTHORIZATION fn set_session_auth(p: &mut Parser<'_>) -> CompletedMarker { - assert!(p.at(SET_KW) || p.at(RESET_KW)); + assert!(p.at(SET_KW)); let m = p.start(); - if p.at(RESET_KW) { - p.bump(RESET_KW); - p.expect(SESSION_KW); - p.expect(AUTHORIZATION_KW); - } else { - p.bump(SET_KW); - p.eat(LOCAL_KW); - p.expect(SESSION_KW); - p.eat(SESSION_KW); - p.expect(AUTHORIZATION_KW); - if p.at_ts(NON_RESERVED_WORD) || p.at(DEFAULT_KW) { - p.bump_any(); - } else if opt_string_literal(p).is_none() { - p.error("expected user_name or DEFAULT"); - } + p.bump(SET_KW); + p.eat(LOCAL_KW); + p.expect(SESSION_KW); + p.eat(SESSION_KW); + p.expect(AUTHORIZATION_KW); + if !p.eat(DEFAULT_KW) && opt_string_literal(p).is_none() { + role(p); } m.complete(p, SET_SESSION_AUTH) } +// RESET SESSION AUTHORIZATION +fn reset_session_auth(p: &mut Parser<'_>) -> CompletedMarker { + assert!(p.at(RESET_KW)); + let m = p.start(); + p.bump(RESET_KW); + p.expect(SESSION_KW); + p.expect(AUTHORIZATION_KW); + m.complete(p, RESET_SESSION_AUTH) +} fn opt_transaction_mode_list(p: &mut Parser<'_>) -> Option { // TODO: generalize // transaction_mode [, ...] @@ -11192,27 +11225,13 @@ fn execute(p: &mut Parser<'_>) -> CompletedMarker { m.complete(p, EXECUTE) } -fn opt_type_name_list(p: &mut Parser<'_>) { - if p.at(L_PAREN) { - delimited( - p, - L_PAREN, - R_PAREN, - COMMA, - || "unexpected comma".to_string(), - NAME_REF_FIRST, - opt_type_name, - ); - } -} - // PREPARE name [ ( data_type [, ...] ) ] AS statement fn prepare(p: &mut Parser<'_>) -> CompletedMarker { assert!(p.at(PREPARE_KW)); let m = p.start(); p.bump(PREPARE_KW); name(p); - opt_type_name_list(p); + opt_param_list(p, ParamKind::TypeOnly); p.expect(AS_KW); preparable_stmt(p); m.complete(p, PREPARE) @@ -11224,7 +11243,7 @@ fn unlisten(p: &mut Parser<'_>) -> CompletedMarker { let m = p.start(); p.bump(UNLISTEN_KW); if !p.eat(STAR) { - name(p); + name_ref(p); } m.complete(p, UNLISTEN) } @@ -11244,7 +11263,7 @@ fn deallocate(p: &mut Parser<'_>) -> CompletedMarker { p.bump(DEALLOCATE_KW); p.eat(PREPARE_KW); if !p.eat(ALL_KW) { - name(p); + name_ref(p); } m.complete(p, DEALLOCATE) } @@ -11272,7 +11291,7 @@ fn notify(p: &mut Parser<'_>) -> CompletedMarker { assert!(p.at(NOTIFY_KW)); let m = p.start(); p.bump(NOTIFY_KW); - name(p); + name_ref(p); // [ , payload ] if p.eat(COMMA) { string_literal(p); @@ -11469,7 +11488,7 @@ fn close(p: &mut Parser<'_>) -> CompletedMarker { let m = p.start(); p.bump(CLOSE_KW); if !p.eat(ALL_KW) { - name(p); + name_ref(p); } m.complete(p, CLOSE) } @@ -11776,7 +11795,7 @@ fn copy(p: &mut Parser<'_>) -> CompletedMarker { } else { p.eat(BINARY_KW); // table_name - path_name(p); + path_name_ref(p); // [ ( column_name [, ...] ) ] opt_column_list(p); } @@ -11814,7 +11833,7 @@ fn preparable_stmt(p: &mut Parser<'_>) { // select | insert | update | delete | merge Some( SELECT | SELECT_INTO | COMPOUND_SELECT | TABLE | VALUES | INSERT | UPDATE | DELETE - | MERGE, + | MERGE | PAREN_SELECT, ) => (), Some(kind) => { p.error(format!( @@ -11833,7 +11852,7 @@ fn call(p: &mut Parser<'_>) -> CompletedMarker { assert!(p.at(CALL_KW)); let m = p.start(); p.bump(CALL_KW); - path_name(p); + path_name_ref(p); if p.at(L_PAREN) { arg_list(p); } else { @@ -11866,43 +11885,12 @@ fn create_trigger(p: &mut Parser<'_>) -> CompletedMarker { // TRIGGER name p.expect(TRIGGER_KW); name(p); - // { BEFORE | AFTER | INSTEAD OF } - if p.eat(INSTEAD_KW) { - p.expect(OF_KW); - } else if !p.eat(BEFORE_KW) && !p.eat(AFTER_KW) { - p.error("expected BEFORE, AFTER, or INSTEAD OF"); - } - // { event [ OR ... ] } - while !p.at(EOF) { - if p.eat(UPDATE_KW) { - // [ OF column_name [, ... ] ] - if p.eat(OF_KW) { - name_ref_list(p); - } - } else if !(p.eat(INSERT_KW) || p.eat(DELETE_KW) || p.eat(TRUNCATE_KW)) { - p.error("expected INSERT, UPDATE, DELETE, or TRUNCATE"); - } - if !p.eat(OR_KW) { - break; - } - } - // ON table_name - p.expect(ON_KW); - path_name_ref(p); - // [ FROM referenced_table_name ] - if p.eat(FROM_KW) { - path_name_ref(p); - } - // [ NOT DEFERRABLE | [ DEFERRABLE ] [ INITIALLY IMMEDIATE | INITIALLY DEFERRED ] ] + timing(p); + trigger_event_list(p); + on_table(p); + opt_from_table(p); opt_constraint_option_list(p); - // [ REFERENCING { { OLD | NEW } TABLE [ AS ] transition_relation_name } [ ... ] ] - if p.eat(REFERENCING_KW) { - while !p.at(EOF) { - if !opt_referencing_table(p) { - break; - } - } - } + opt_referencing_clause(p); // [ FOR [ EACH ] { ROW | STATEMENT } ] if p.eat(FOR_KW) { p.eat(EACH_KW); @@ -11912,6 +11900,19 @@ fn create_trigger(p: &mut Parser<'_>) -> CompletedMarker { p.error("expected ROW or STATEMENT"); } } + opt_when_condition(p); + // EXECUTE { FUNCTION | PROCEDURE } function_name ( arguments ) + p.expect(EXECUTE_KW); + if !p.eat(FUNCTION_KW) && !p.eat(PROCEDURE_KW) { + p.error("expected FUNCTION or PROCEDURE"); + } + // function_name ( arguments ) + call_expr(p); + m.complete(p, CREATE_TRIGGER) +} + +fn opt_when_condition(p: &mut Parser<'_>) { + let m = p.start(); // [ WHEN ( condition ) ] if p.eat(WHEN_KW) { p.expect(L_PAREN); @@ -11919,15 +11920,82 @@ fn create_trigger(p: &mut Parser<'_>) -> CompletedMarker { p.error("expected expression"); } p.expect(R_PAREN); + m.complete(p, WHEN_CONDITION); + } else { + m.abandon(p); } - // EXECUTE { FUNCTION | PROCEDURE } function_name ( arguments ) - p.expect(EXECUTE_KW); - if !p.eat(FUNCTION_KW) && !p.eat(PROCEDURE_KW) { - p.error("expected FUNCTION or PROCEDURE"); +} + +fn opt_referencing_clause(p: &mut Parser<'_>) { + let m = p.start(); + // [ REFERENCING { { OLD | NEW } TABLE [ AS ] transition_relation_name } [ ... ] ] + if p.eat(REFERENCING_KW) { + while !p.at(EOF) { + if !opt_referencing_table(p) { + break; + } + } + m.complete(p, REFERENCING); + } else { + m.abandon(p); } - // function_name ( arguments ) - call_expr(p); - m.complete(p, CREATE_TRIGGER) +} + +fn opt_from_table(p: &mut Parser<'_>) -> Option { + if p.at(FROM_KW) { + let m = p.start(); + // [ FROM referenced_table_name ] + p.bump(FROM_KW); + path_name_ref(p); + Some(m.complete(p, FROM_TABLE)) + } else { + None + } +} + +fn from_table(p: &mut Parser<'_>) { + if opt_from_table(p).is_none() { + p.error("expected from table"); + } +} + +fn trigger_event_list(p: &mut Parser<'_>) { + let m = p.start(); + // { event [ OR ... ] } + while !p.at(EOF) { + trigger_event(p); + if !p.eat(OR_KW) { + break; + } + } + m.complete(p, TRIGGER_EVENT_LIST); +} + +fn trigger_event(p: &mut Parser<'_>) { + let m = p.start(); + if p.at(UPDATE_KW) { + let m = p.start(); + p.bump(UPDATE_KW); + // [ OF column_name [, ... ] ] + if p.eat(OF_KW) { + name_ref_list(p); + } + m.complete(p, TRIGGER_EVENT_UPDATE); + } else if !(p.eat(INSERT_KW) || p.eat(DELETE_KW) || p.eat(TRUNCATE_KW)) { + p.error("expected INSERT, UPDATE, DELETE, or TRUNCATE"); + } + m.complete(p, TRIGGER_EVENT); +} + +fn timing(p: &mut Parser<'_>) { + let m = p.start(); + // { BEFORE | AFTER | INSTEAD OF } + if p.eat(INSTEAD_KW) { + p.expect(OF_KW); + } else if !p.eat(BEFORE_KW) && !p.eat(AFTER_KW) { + p.error("expected BEFORE, AFTER, or INSTEAD OF"); + } + m.complete(p, TIMING); } fn call_expr(p: &mut Parser<'_>) { @@ -11942,11 +12010,13 @@ fn opt_referencing_table(p: &mut Parser<'_>) -> bool { if !(p.at(OLD_KW) || p.at(NEW_KW)) { return false; } + let m = p.start(); p.bump_any(); p.expect(TABLE_KW); p.eat(AS_KW); // transition_relation_name name_ref(p); + m.complete(p, REFERENCING_TABLE); true } @@ -11958,16 +12028,19 @@ fn drop_schema(p: &mut Parser<'_>) -> CompletedMarker { p.bump(DROP_KW); p.bump(SCHEMA_KW); opt_if_exists(p); - name_list(p); + name_ref_list(p); opt_cascade_or_restrict(p); m.complete(p, DROP_SCHEMA) } fn opt_schema_auth(p: &mut Parser<'_>) -> bool { + let m = p.start(); if p.eat(AUTHORIZATION_KW) { role(p); + m.complete(p, SCHEMA_AUTHORIZATION); return true; } + m.abandon(p); false } @@ -12462,7 +12535,9 @@ fn opt_returning_clause(p: &mut Parser<'_>) { } fn opt_returning_option_list(p: &mut Parser<'_>) { - if p.eat(WITH_KW) { + if p.at(WITH_KW) { + let m = p.start(); + p.bump(WITH_KW); delimited( p, L_PAREN, @@ -12472,6 +12547,7 @@ fn opt_returning_option_list(p: &mut Parser<'_>) { RETURNING_OPTION_FIRST, opt_returning_option, ); + m.complete(p, RETURNING_OPTION_LIST); } } @@ -12481,10 +12557,12 @@ fn opt_returning_option(p: &mut Parser<'_>) -> bool { if !p.at_ts(RETURNING_OPTION_FIRST) { return false; } + let m = p.start(); // OLD | NEW p.bump_any(); p.expect(AS_KW); name(p); + m.complete(p, RETURNING_OPTION); true } @@ -12512,11 +12590,19 @@ fn drop_trigger(p: &mut Parser<'_>) -> CompletedMarker { opt_if_exists(p); // name path_name_ref(p); + on_table(p); + opt_cascade_or_restrict(p); + m.complete(p, DROP_TRIGGER) +} + +// avoids us having to manually implement accessors for the two Paths at the +// same AST level +fn on_table(p: &mut Parser<'_>) { + let m = p.start(); p.expect(ON_KW); // table_name path_name_ref(p); - opt_cascade_or_restrict(p); - m.complete(p, DROP_TRIGGER) + m.complete(p, ON_TABLE); } // DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ] @@ -12730,11 +12816,11 @@ const TYPE_FUNC_NAME_KEYWORDS: TokenSet = TokenSet::new(&[ const PARAM_FIRST: TokenSet = PARAM_MODE_FIRST.union(NAME_FIRST).union(TYPE_NAME_FIRST); -fn opt_param(p: &mut Parser<'_>) -> bool { +fn opt_param(p: &mut Parser<'_>, kind: ParamKind) -> bool { if !p.at_ts(PARAM_FIRST) { return false; } - param(p); + param(p, kind); true } @@ -12746,47 +12832,54 @@ fn opt_param(p: &mut Parser<'_>) -> bool { // | name mode type // | name type // | type -fn param(p: &mut Parser<'_>) { - let m = p.start(); - // [ argmode ] - let param_mode_seen = opt_param_mode(p).is_some(); - // [ argname ] - let maybe_name = - p.at(IDENT) || p.at_ts(UNRESERVED_KEYWORDS) || p.at_ts(TYPE_FUNC_NAME_KEYWORDS); - if maybe_name { - // Could have either parsed a name or a type, we know if it it's a type if: - let at_type = match p.nth(1) { - // foo.bar%type - // ^ - DOT => true, - // foo(8) - // ^ - L_PAREN => true, - // text[] - // ^ - L_BRACK => true, - // float8 order by - // ^ - ORDER_KW => true, - // we're at the end of the param, must be a type - R_PAREN | EQ | DEFAULT_KW | COMMA => true, - _ => false, - }; - if at_type { - type_name(p); - } else { - name(p); - if !param_mode_seen { - opt_param_mode(p); +fn param(p: &mut Parser<'_>, kind: ParamKind) { + let m = p.start(); + match kind { + ParamKind::All => { + // [ argmode ] + let param_mode_seen = opt_param_mode(p).is_some(); + // [ argname ] + let maybe_name = + p.at(IDENT) || p.at_ts(UNRESERVED_KEYWORDS) || p.at_ts(TYPE_FUNC_NAME_KEYWORDS); + if maybe_name { + // Could have either parsed a name or a type, we know if it it's a type if: + let at_type = match p.nth(1) { + // foo.bar%type + // ^ + DOT => true, + // foo(8) + // ^ + L_PAREN => true, + // text[] + // ^ + L_BRACK => true, + // float8 order by + // ^ + ORDER_KW => true, + // we're at the end of the param, must be a type + R_PAREN | EQ | DEFAULT_KW | COMMA => true, + _ => false, + }; + if at_type { + type_name(p); + } else { + name(p); + if !param_mode_seen { + opt_param_mode(p); + } + // argtype + type_name(p); + } + } else { + // argtype + type_name(p); } - // argtype + opt_param_default(p); + } + ParamKind::TypeOnly => { type_name(p); } - } else { - // argtype - type_name(p); } - opt_param_default(p); m.complete(p, PARAM); } @@ -12986,6 +13079,7 @@ fn opt_function_option(p: &mut Parser<'_>) -> bool { // SET configuration_parameter FROM CURRENT fn set_configuration_param(p: &mut Parser<'_>) { assert!(p.at(SET_KW)); + let m = p.start(); p.bump(SET_KW); // configuration_parameter path_name_ref(p); @@ -12995,6 +13089,7 @@ fn set_configuration_param(p: &mut Parser<'_>) { } else if (p.eat(TO_KW) || p.expect(EQ)) && !config_value(p) { p.error(format!("expected config value, got {:?}", p.current())); } + m.complete(p, SET_CONFIG_PARAM); } fn opt_ret_type(p: &mut Parser<'_>) { @@ -13052,15 +13147,21 @@ fn func_option_list(p: &mut Parser<'_>) { } // [ ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] ) ] -fn opt_param_list(p: &mut Parser<'_>) -> bool { +fn opt_param_list(p: &mut Parser<'_>, kind: ParamKind) -> bool { if !p.at(L_PAREN) { return false; } - param_list(p); + param_list(p, kind); true } -fn param_list(p: &mut Parser<'_>) { +#[derive(PartialEq, Clone, Copy)] +enum ParamKind { + All, + TypeOnly, +} + +fn param_list(p: &mut Parser<'_>, kind: ParamKind) { if !p.at(L_PAREN) { p.error("expected param list"); return; @@ -13074,7 +13175,7 @@ fn param_list(p: &mut Parser<'_>) { COMMA, || "unexpected comma".to_string(), PARAM_FIRST, - opt_param, + |p| opt_param(p, kind), ); m.complete(p, PARAM_LIST); } @@ -13109,7 +13210,7 @@ fn create_function(p: &mut Parser<'_>) -> CompletedMarker { p.expect(FUNCTION_KW); // name path_name(p); - param_list(p); + param_list(p, ParamKind::All); opt_ret_type(p); func_option_list(p); m.complete(p, CREATE_FUNCTION) @@ -13684,13 +13785,7 @@ fn opt_alter_table_action(p: &mut Parser<'_>) -> Option { m.complete(p, CLUSTER_ON) } // OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } - OWNER_KW => { - let m = p.start(); - p.bump(OWNER_KW); - p.bump(TO_KW); - role(p); - m.complete(p, OWNER_TO) - } + OWNER_KW => owner_to(p), DETACH_KW => { let m = p.start(); p.bump(DETACH_KW); @@ -13778,22 +13873,19 @@ fn opt_alter_table_action(p: &mut Parser<'_>) -> Option { m.complete(p, ATTACH_PARTITION) } // SET SCHEMA new_schema + SET_KW if p.nth_at(1, SCHEMA_KW) => set_schema(p), + // SET ( storage_parameter [= value] [, ... ] ) + SET_KW if p.nth_at(1, L_PAREN) => set_options(p), // SET TABLESPACE new_tablespace [ NOWAIT ] // SET WITHOUT CLUSTER // SET WITHOUT OIDS // SET ACCESS METHOD { new_access_method | DEFAULT } // SET { LOGGED | UNLOGGED } - // SET ( storage_parameter [= value] [, ... ] ) SET_KW => { let m = p.start(); p.expect(SET_KW); - // SET SCHEMA new_schema - let kind = if p.eat(SCHEMA_KW) { - // name - name_ref(p); - SET_SCHEMA // SET TABLESPACE new_tablespace [ NOWAIT ] - } else if p.eat(TABLESPACE_KW) { + let kind = if p.eat(TABLESPACE_KW) { // name name_ref(p); p.eat(NOWAIT_KW); @@ -13819,40 +13911,28 @@ fn opt_alter_table_action(p: &mut Parser<'_>) -> Option { // SET { LOGGED | UNLOGGED } } else if p.eat(LOGGED_KW) { SET_LOGGED - } else if p.eat(UNLOGGED_KW) { - SET_UNLOGGED - // SET ( storage_parameter [= value] [, ... ] ) } else { - attribute_list(p); - SET_STORAGE_PARAMS + p.expect(UNLOGGED_KW); + SET_UNLOGGED }; m.complete(p, kind) } - RESET_KW => { - let m = p.start(); - p.bump(RESET_KW); - attribute_list(p); - m.complete(p, RESET_STORAGE_PARAMS) - } + RESET_KW => reset_options(p), + // RENAME TO new_name + RENAME_KW if p.nth_at(1, TO_KW) => rename_to(p), // RENAME CONSTRAINT constraint_name TO new_constraint_name // RENAME [ COLUMN ] column_name TO new_column_name - // RENAME TO new_name RENAME_KW => { let m = p.start(); p.expect(RENAME_KW); // TO new_name - let kind = if p.eat(TO_KW) { - // name - name_ref(p); - RENAME_TABLE - // CONSTRAINT - } else if p.eat(CONSTRAINT_KW) { + let kind = if p.eat(CONSTRAINT_KW) { // name name_ref(p); // TO p.expect(TO_KW); // name - name_ref(p); + name(p); RENAME_CONSTRAINT // [ COLUMN ] } else { @@ -13862,7 +13942,7 @@ fn opt_alter_table_action(p: &mut Parser<'_>) -> Option { // TO p.expect(TO_KW); // name - name_ref(p); + name(p); RENAME_COLUMN }; m.complete(p, kind) @@ -13897,13 +13977,7 @@ fn opt_alter_table_action(p: &mut Parser<'_>) -> Option { } else { p.error("expected column_name"); } - let m = p.start(); - if let Some(alter_kind) = alter_column_option(p) { - m.complete(p, alter_kind); - } else { - p.error("expected alter column option"); - m.abandon(p); - } + alter_column_option(p); ALTER_COLUMN }; m.complete(p, kind) @@ -13976,25 +14050,24 @@ fn opt_attribute_option(p: &mut Parser<'_>) -> bool { // qual_all_Op: // | all_Op // | OPERATOR '(' any_operator ')' -fn def_arg(p: &mut Parser<'_>) -> bool { +fn def_arg(p: &mut Parser<'_>) { + let m = p.start(); if opt_bool_literal(p) || opt_string_literal(p).is_some() || opt_numeric_literal(p).is_some() || opt_operator(p) || p.eat(NONE_KW) { - true } else if p.at_ts(RESERVED_KEYWORDS) { p.bump_any(); - true } else if p.eat(OPERATOR_KW) { p.expect(L_PAREN); operator(p); p.expect(R_PAREN); - true } else { - opt_type_name(p) + opt_type_name(p); } + m.complete(p, ATTRIBUTE_VALUE); } fn generated_options(p: &mut Parser<'_>) { @@ -14048,7 +14121,8 @@ fn generated_options(p: &mut Parser<'_>) { // [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } // [ COLUMN ] column_name SET COMPRESSION compression_method // [ COLUMN ] column_name OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ]) -fn alter_column_option(p: &mut Parser<'_>) -> Option { +fn alter_column_option(p: &mut Parser<'_>) { + let m = p.start(); // DROP NOT NULL // DROP DEFAULT // DROP EXPRESSION [ IF EXISTS ] @@ -14095,9 +14169,9 @@ fn alter_column_option(p: &mut Parser<'_>) -> Option { } // RESET ( attribute_option [, ... ] ) RESET_KW => { - p.bump(RESET_KW); - attribute_list(p); - RESET_OPTIONS + m.abandon(p); + reset_options(p); + return; } // TYPE data_type [ COLLATE collation ] [ USING expression ] TYPE_KW => { @@ -14204,9 +14278,13 @@ fn alter_column_option(p: &mut Parser<'_>) -> Option { p.expect(NULL_KW); SET_NOT_NULL } - _ => return None, + _ => { + p.error("expected alter column option"); + m.abandon(p); + return; + } }; - Some(kind) + m.complete(p, kind); } fn attribute_list(p: &mut Parser<'_>) { diff --git a/crates/squawk_parser/tests/data/ok/set_role.sql b/crates/squawk_parser/tests/data/ok/set_role.sql index 8254898e..7574e387 100644 --- a/crates/squawk_parser/tests/data/ok/set_role.sql +++ b/crates/squawk_parser/tests/data/ok/set_role.sql @@ -7,5 +7,7 @@ SET LOCAL ROLE NONE; SET SESSION ROLE foo; +set role 'fooo'; + RESET ROLE; diff --git a/crates/squawk_parser/tests/data/ok/update_pg18.sql b/crates/squawk_parser/tests/data/ok/update_pg18.sql new file mode 100644 index 00000000..458896ae --- /dev/null +++ b/crates/squawk_parser/tests/data/ok/update_pg18.sql @@ -0,0 +1,11 @@ +-- returning_with_old_new +UPDATE inventory +SET quantity = quantity - 5 +WHERE product_id = 456 +RETURNING WITH (OLD AS before, NEW AS after) + before.quantity AS previous_quantity, + after.quantity AS current_quantity, + after.quantity - before.quantity AS change; + +update t set x = 1 +returning with (old as o, new as n) o.*, n.*; diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_aggregate_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_aggregate_ok.snap index a2941d32..4adab716 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_aggregate_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_aggregate_ok.snap @@ -21,14 +21,13 @@ SOURCE_FILE STAR "*" R_PAREN ")" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "b" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "b" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- simple_args" @@ -54,14 +53,13 @@ SOURCE_FILE IDENT "t" R_PAREN ")" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- complex_args" @@ -104,11 +102,13 @@ SOURCE_FILE NUMERIC_KW "numeric" R_PAREN ")" WHITESPACE " \n " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- with_order_by" @@ -145,14 +145,13 @@ SOURCE_FILE IDENT "y" R_PAREN ")" WHITESPACE " \n " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "b" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "b" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- qualified_names" @@ -194,13 +193,12 @@ SOURCE_FILE IDENT "u" R_PAREN ")" WHITESPACE " \n " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "new_schema" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "new_schema" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_collation_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_collation_ok.snap index 790219e9..a1dfec95 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_collation_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_collation_ok.snap @@ -15,9 +15,10 @@ SOURCE_FILE NAME_REF IDENT "c" WHITESPACE "\n " - REFRESH_KW "refresh" - WHITESPACE " " - VERSION_KW "version" + REFRESH_VERSION + REFRESH_KW "refresh" + WHITESPACE " " + VERSION_KW "version" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- rename" @@ -32,12 +33,13 @@ SOURCE_FILE NAME_REF IDENT "c" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "d" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "d" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner" @@ -52,11 +54,14 @@ SOURCE_FILE NAME_REF IDENT "c" WHITESPACE "\n " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n" ALTER_COLLATION @@ -74,11 +79,13 @@ SOURCE_FILE NAME_REF IDENT "c" WHITESPACE "\n " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_ROLE_KW "current_role" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_ROLE_KW "current_role" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_schema" @@ -93,11 +100,12 @@ SOURCE_FILE NAME_REF IDENT "c" WHITESPACE "\n " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_conversion_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_conversion_ok.snap index b4a43c21..2a962afc 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_conversion_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_conversion_ok.snap @@ -15,12 +15,13 @@ SOURCE_FILE NAME_REF IDENT "c" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "n" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner" @@ -35,11 +36,14 @@ SOURCE_FILE NAME_REF IDENT "c" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n" ALTER_CONVERSION @@ -52,11 +56,13 @@ SOURCE_FILE NAME_REF IDENT "c" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_schema" @@ -71,12 +77,13 @@ SOURCE_FILE NAME_REF IDENT "c" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- qualified_name" @@ -96,11 +103,12 @@ SOURCE_FILE NAME_REF IDENT "c" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_database_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_database_ok.snap index deae8326..eb3a24e2 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_database_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_database_ok.snap @@ -13,12 +13,13 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "n" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner" @@ -31,11 +32,14 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n" ALTER_DATABASE @@ -46,11 +50,13 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- tablespace" @@ -63,12 +69,13 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - TABLESPACE_KW "tablespace" - WHITESPACE " " - NAME_REF - IDENT "t" + SET_TABLESPACE + SET_KW "set" + WHITESPACE " " + TABLESPACE_KW "tablespace" + WHITESPACE " " + NAME_REF + IDENT "t" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- refresh" @@ -81,11 +88,12 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - REFRESH_KW "refresh" - WHITESPACE " " - COLLATION_KW "collation" - WHITESPACE " " - VERSION_KW "version" + REFRESH_COLLATION_VERSION + REFRESH_KW "refresh" + WHITESPACE " " + COLLATION_KW "collation" + WHITESPACE " " + VERSION_KW "version" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_param" @@ -98,16 +106,17 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "v" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + IDENT "v" SEMICOLON ";" WHITESPACE "\n" ALTER_DATABASE @@ -118,16 +127,17 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" - WHITESPACE " " - EQ "=" - WHITESPACE " " - IDENT "v" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" + WHITESPACE " " + EQ "=" + WHITESPACE " " + IDENT "v" SEMICOLON ";" WHITESPACE "\n" ALTER_DATABASE @@ -138,16 +148,17 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" - WHITESPACE " " - EQ "=" - WHITESPACE " " - DEFAULT_KW "default" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" + WHITESPACE " " + EQ "=" + WHITESPACE " " + DEFAULT_KW "default" SEMICOLON ";" WHITESPACE "\n" ALTER_DATABASE @@ -158,16 +169,17 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" - WHITESPACE " " - FROM_KW "from" - WHITESPACE " " - CURRENT_KW "current" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" + WHITESPACE " " + FROM_KW "from" + WHITESPACE " " + CURRENT_KW "current" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- reset" @@ -180,12 +192,13 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - RESET_KW "reset" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" + RESET_CONFIG_PARAM + RESET_KW "reset" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" SEMICOLON ";" WHITESPACE "\n" ALTER_DATABASE @@ -196,9 +209,10 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - RESET_KW "reset" - WHITESPACE " " - ALL_KW "all" + RESET_CONFIG_PARAM + RESET_KW "reset" + WHITESPACE " " + ALL_KW "all" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- with_option" @@ -211,12 +225,14 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - WITH_KW "with" - WHITESPACE " " - IDENT "allow_connections" - WHITESPACE " " - LITERAL - TRUE_KW "true" + CREATE_DATABASE_OPTION_LIST + WITH_KW "with" + WHITESPACE " " + CREATE_DATABASE_OPTION + IDENT "allow_connections" + WHITESPACE " " + LITERAL + TRUE_KW "true" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- option_connection_limit" @@ -229,12 +245,14 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - CONNECTION_KW "connection" - WHITESPACE " " - LIMIT_KW "limit" - WHITESPACE " " - LITERAL - INT_NUMBER "10" + CREATE_DATABASE_OPTION_LIST + CREATE_DATABASE_OPTION + CONNECTION_KW "connection" + WHITESPACE " " + LIMIT_KW "limit" + WHITESPACE " " + LITERAL + INT_NUMBER "10" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- option_is_template" @@ -247,10 +265,12 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - IDENT "is_template" - WHITESPACE " " - LITERAL - FALSE_KW "false" + CREATE_DATABASE_OPTION_LIST + CREATE_DATABASE_OPTION + IDENT "is_template" + WHITESPACE " " + LITERAL + FALSE_KW "false" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- with_multiple_options" @@ -263,23 +283,27 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - WITH_KW "with" - WHITESPACE " " - IDENT "allow_connections" - WHITESPACE " " - LITERAL - TRUE_KW "true" - WHITESPACE " " - CONNECTION_KW "connection" - WHITESPACE " " - LIMIT_KW "limit" - WHITESPACE " " - LITERAL - INT_NUMBER "10" - WHITESPACE " " - IDENT "is_template" - WHITESPACE " " - LITERAL - FALSE_KW "false" + CREATE_DATABASE_OPTION_LIST + WITH_KW "with" + WHITESPACE " " + CREATE_DATABASE_OPTION + IDENT "allow_connections" + WHITESPACE " " + LITERAL + TRUE_KW "true" + WHITESPACE " " + CREATE_DATABASE_OPTION + CONNECTION_KW "connection" + WHITESPACE " " + LIMIT_KW "limit" + WHITESPACE " " + LITERAL + INT_NUMBER "10" + WHITESPACE " " + CREATE_DATABASE_OPTION + IDENT "is_template" + WHITESPACE " " + LITERAL + FALSE_KW "false" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_default_privileges_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_default_privileges_ok.snap index ee147491..628b427f 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_default_privileges_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_default_privileges_ok.snap @@ -12,17 +12,25 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - SELECT_KW "select" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TABLES_KW "tables" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TABLES_KW "tables" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- full" @@ -38,10 +46,14 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "role" WHITESPACE " " - IDENT "r" - COMMA "," - WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + COMMA "," + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" WHITESPACE "\n " IN_KW "in" WHITESPACE " " @@ -58,17 +70,25 @@ SOURCE_FILE NAME_REF IDENT "s3" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - SELECT_KW "select" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TABLES_KW "tables" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TABLES_KW "tables" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -82,7 +102,9 @@ SOURCE_FILE WHITESPACE " " USER_KW "user" WHITESPACE " " - SESSION_USER_KW "session_user" + ROLE_LIST + ROLE + SESSION_USER_KW "session_user" WHITESPACE "\n " IN_KW "in" WHITESPACE " " @@ -91,17 +113,25 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - SELECT_KW "select" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TABLES_KW "tables" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TABLES_KW "tables" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- grant_tables" @@ -113,19 +143,27 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - SELECT_KW "select" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TABLES_KW "tables" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - GROUP_KW "group" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TABLES_KW "tables" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + GROUP_KW "group" + WHITESPACE " " + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -135,19 +173,29 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - INSERT_KW "insert" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TABLES_KW "tables" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - GROUP_KW "group" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + INSERT_KW "insert" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TABLES_KW "tables" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + GROUP_KW "group" + WHITESPACE " " + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -157,31 +205,44 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - UPDATE_KW "update" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TABLES_KW "tables" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "public" - COMMA "," - WHITESPACE " " - CURRENT_USER_KW "current_user" - COMMA "," - WHITESPACE " " - GROUP_KW "group" - WHITESPACE " " - SESSION_USER_KW "session_user" - WHITESPACE "\n " - WITH_KW "with" - WHITESPACE " " - GRANT_KW "grant" - WHITESPACE " " - OPTION_KW "option" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + UPDATE_KW "update" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TABLES_KW "tables" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "public" + COMMA "," + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" + COMMA "," + WHITESPACE " " + ROLE + GROUP_KW "group" + WHITESPACE " " + NAME_REF + SESSION_USER_KW "session_user" + WHITESPACE "\n " + WITH_KW "with" + WHITESPACE " " + GRANT_KW "grant" + WHITESPACE " " + OPTION_KW "option" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -191,17 +252,27 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - DELETE_KW "delete" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TABLES_KW "tables" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + DELETE_KW "delete" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TABLES_KW "tables" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -211,17 +282,27 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - TRUNCATE_KW "truncate" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TABLES_KW "tables" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + TRUNCATE_KW "truncate" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TABLES_KW "tables" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -231,17 +312,25 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - REFERENCES_KW "references" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TABLES_KW "tables" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + REFERENCES_KW "references" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TABLES_KW "tables" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -251,17 +340,27 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - TRIGGER_KW "trigger" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TABLES_KW "tables" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + TRIGGER_KW "trigger" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TABLES_KW "tables" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -271,17 +370,27 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - IDENT "maintain" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TABLES_KW "tables" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "maintain" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TABLES_KW "tables" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -291,38 +400,65 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - SELECT_KW "select" - COMMA "," - WHITESPACE " " - INSERT_KW "insert" - COMMA "," - WHITESPACE " " - UPDATE_KW "update" - COMMA "," - WHITESPACE " " - DELETE_KW "delete" - COMMA "," - WHITESPACE " " - TRUNCATE_KW "truncate" - COMMA "," - WHITESPACE " " - REFERENCES_KW "references" - COMMA "," - WHITESPACE " " - TRIGGER_KW "trigger" - COMMA "," - WHITESPACE " " - IDENT "maintain" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TABLES_KW "tables" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + INSERT_KW "insert" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + UPDATE_KW "update" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + DELETE_KW "delete" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + TRUNCATE_KW "truncate" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + REFERENCES_KW "references" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + TRIGGER_KW "trigger" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "maintain" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TABLES_KW "tables" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -332,17 +468,23 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - ALL_KW "all" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TABLES_KW "tables" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + ALL_KW "all" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TABLES_KW "tables" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -352,19 +494,25 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TABLES_KW "tables" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TABLES_KW "tables" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- grant_sequences" @@ -376,44 +524,64 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - IDENT "usage" - COMMA "," - WHITESPACE " " - SELECT_KW "select" - COMMA "," - WHITESPACE " " - UPDATE_KW "update" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - SEQUENCES_KW "sequences" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "u" - COMMA "," - WHITESPACE " " - GROUP_KW "group" - WHITESPACE " " - CURRENT_USER_KW "current_user" - COMMA "," - WHITESPACE " " - GROUP_KW "group" - WHITESPACE " " - SESSION_USER_KW "session_user" - COMMA "," - WHITESPACE " " - GROUP_KW "group" - WHITESPACE " " - CURRENT_ROLE_KW "current_role" - WHITESPACE "\n " - WITH_KW "with" - WHITESPACE " " - GRANT_KW "grant" - WHITESPACE " " - OPTION_KW "option" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + SELECT_KW "select" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + UPDATE_KW "update" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + SEQUENCES_KW "sequences" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "u" + COMMA "," + WHITESPACE " " + ROLE + GROUP_KW "group" + WHITESPACE " " + NAME_REF + CURRENT_USER_KW "current_user" + COMMA "," + WHITESPACE " " + ROLE + GROUP_KW "group" + WHITESPACE " " + NAME_REF + SESSION_USER_KW "session_user" + COMMA "," + WHITESPACE " " + ROLE + GROUP_KW "group" + WHITESPACE " " + NAME_REF + CURRENT_ROLE_KW "current_role" + WHITESPACE "\n " + WITH_KW "with" + WHITESPACE " " + GRANT_KW "grant" + WHITESPACE " " + OPTION_KW "option" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -423,17 +591,27 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - IDENT "usage" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - SEQUENCES_KW "sequences" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + SEQUENCES_KW "sequences" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- grant_functions" @@ -445,17 +623,27 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - EXECUTE_KW "execute" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - FUNCTIONS_KW "functions" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "u" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + EXECUTE_KW "execute" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + FUNCTIONS_KW "functions" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -465,17 +653,23 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - ALL_KW "all" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - ROUTINES_KW "routines" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + ALL_KW "all" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + ROUTINES_KW "routines" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -485,25 +679,31 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - ROUTINES_KW "routines" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" - WHITESPACE "\n " - WITH_KW "with" - WHITESPACE " " - GRANT_KW "grant" - WHITESPACE " " - OPTION_KW "option" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + ROUTINES_KW "routines" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + WHITESPACE "\n " + WITH_KW "with" + WHITESPACE " " + GRANT_KW "grant" + WHITESPACE " " + OPTION_KW "option" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- grant_types" @@ -515,17 +715,27 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - IDENT "usage" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TYPES_KW "types" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TYPES_KW "types" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -535,33 +745,43 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TYPES_KW "types" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" - COMMA "," - WHITESPACE " " - GROUP_KW "group" - WHITESPACE " " - IDENT "u" - COMMA "," - WHITESPACE " " - IDENT "public" - WHITESPACE "\n " - WITH_KW "with" - WHITESPACE " " - GRANT_KW "grant" - WHITESPACE " " - OPTION_KW "option" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TYPES_KW "types" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + COMMA "," + WHITESPACE " " + ROLE + GROUP_KW "group" + WHITESPACE " " + NAME_REF + IDENT "u" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "public" + WHITESPACE "\n " + WITH_KW "with" + WHITESPACE " " + GRANT_KW "grant" + WHITESPACE " " + OPTION_KW "option" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- grant_schemas" @@ -573,20 +793,31 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - IDENT "usage" - COMMA "," - WHITESPACE " " - CREATE_KW "create" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - SCHEMAS_KW "schemas" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + CREATE_KW "create" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + SCHEMAS_KW "schemas" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -596,33 +827,43 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - GRANT_KW "grant" - WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - SCHEMAS_KW "schemas" - WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - IDENT "r" - COMMA "," - WHITESPACE " " - GROUP_KW "group" - WHITESPACE " " - IDENT "u" - COMMA "," - WHITESPACE " " - IDENT "public" - WHITESPACE "\n " - WITH_KW "with" - WHITESPACE " " - GRANT_KW "grant" - WHITESPACE " " - OPTION_KW "option" + GRANT_DEFAULT_PRIVILEGES + GRANT_KW "grant" + WHITESPACE " " + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + SCHEMAS_KW "schemas" + WHITESPACE "\n " + TO_KW "to" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + COMMA "," + WHITESPACE " " + ROLE + GROUP_KW "group" + WHITESPACE " " + NAME_REF + IDENT "u" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "public" + WHITESPACE "\n " + WITH_KW "with" + WHITESPACE " " + GRANT_KW "grant" + WHITESPACE " " + OPTION_KW "option" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- revoke_tables" @@ -634,51 +875,80 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - REVOKE_KW "revoke" - WHITESPACE " " - GRANT_KW "grant" - WHITESPACE " " - OPTION_KW "option" - WHITESPACE " " - FOR_KW "for" - WHITESPACE "\n " - SELECT_KW "select" - COMMA "," - WHITESPACE " " - INSERT_KW "insert" - COMMA "," - WHITESPACE " " - UPDATE_KW "update" - COMMA "," - WHITESPACE " " - DELETE_KW "delete" - COMMA "," - WHITESPACE " " - TRUNCATE_KW "truncate" - COMMA "," - WHITESPACE " " - REFERENCES_KW "references" - COMMA "," - WHITESPACE " " - TRIGGER_KW "trigger" - COMMA "," - WHITESPACE " " - IDENT "maintain" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TABLES_KW "tables" - WHITESPACE "\n " - FROM_KW "from" - WHITESPACE " " - IDENT "r" - COMMA "," - WHITESPACE " " - GROUP_KW "group" - WHITESPACE " " - CURRENT_USER_KW "current_user" - WHITESPACE "\n " - CASCADE_KW "cascade" + REVOKE_DEFAULT_PRIVILEGES + REVOKE_KW "revoke" + WHITESPACE " " + GRANT_KW "grant" + WHITESPACE " " + OPTION_KW "option" + WHITESPACE " " + FOR_KW "for" + WHITESPACE "\n " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + INSERT_KW "insert" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + UPDATE_KW "update" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + DELETE_KW "delete" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + TRUNCATE_KW "truncate" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + REFERENCES_KW "references" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + TRIGGER_KW "trigger" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "maintain" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TABLES_KW "tables" + WHITESPACE "\n " + FROM_KW "from" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + COMMA "," + WHITESPACE " " + ROLE + GROUP_KW "group" + WHITESPACE " " + NAME_REF + CURRENT_USER_KW "current_user" + WHITESPACE "\n " + CASCADE_KW "cascade" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -688,19 +958,27 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - REVOKE_KW "revoke" - WHITESPACE " " - SELECT_KW "select" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TABLES_KW "tables" - WHITESPACE "\n " - FROM_KW "from" - WHITESPACE " " - IDENT "r" - WHITESPACE "\n " - RESTRICT_KW "restrict" + REVOKE_DEFAULT_PRIVILEGES + REVOKE_KW "revoke" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TABLES_KW "tables" + WHITESPACE "\n " + FROM_KW "from" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + WHITESPACE "\n " + RESTRICT_KW "restrict" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- revoke_sequences" @@ -712,36 +990,52 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - REVOKE_KW "revoke" - WHITESPACE " " - GRANT_KW "grant" - WHITESPACE " " - OPTION_KW "option" - WHITESPACE " " - FOR_KW "for" - WHITESPACE "\n " - IDENT "usage" - COMMA "," - WHITESPACE " " - SELECT_KW "select" - COMMA "," - WHITESPACE " " - UPDATE_KW "update" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - SEQUENCES_KW "sequences" - WHITESPACE "\n " - FROM_KW "from" - WHITESPACE " " - IDENT "r" - COMMA "," - WHITESPACE " " - GROUP_KW "group" - WHITESPACE " " - CURRENT_USER_KW "current_user" - WHITESPACE "\n " - CASCADE_KW "cascade" + REVOKE_DEFAULT_PRIVILEGES + REVOKE_KW "revoke" + WHITESPACE " " + GRANT_KW "grant" + WHITESPACE " " + OPTION_KW "option" + WHITESPACE " " + FOR_KW "for" + WHITESPACE "\n " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + SELECT_KW "select" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + UPDATE_KW "update" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + SEQUENCES_KW "sequences" + WHITESPACE "\n " + FROM_KW "from" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + COMMA "," + WHITESPACE " " + ROLE + GROUP_KW "group" + WHITESPACE " " + NAME_REF + CURRENT_USER_KW "current_user" + WHITESPACE "\n " + CASCADE_KW "cascade" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -751,19 +1045,27 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - REVOKE_KW "revoke" - WHITESPACE " " - SELECT_KW "select" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - SEQUENCES_KW "sequences" - WHITESPACE "\n " - FROM_KW "from" - WHITESPACE " " - IDENT "r" - WHITESPACE "\n " - RESTRICT_KW "restrict" + REVOKE_DEFAULT_PRIVILEGES + REVOKE_KW "revoke" + WHITESPACE " " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + SEQUENCES_KW "sequences" + WHITESPACE "\n " + FROM_KW "from" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + WHITESPACE "\n " + RESTRICT_KW "restrict" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- revoke_functions" @@ -775,30 +1077,42 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - REVOKE_KW "revoke" - WHITESPACE " " - GRANT_KW "grant" - WHITESPACE " " - OPTION_KW "option" - WHITESPACE " " - FOR_KW "for" - WHITESPACE "\n " - EXECUTE_KW "execute" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - FUNCTIONS_KW "functions" - WHITESPACE "\n " - FROM_KW "from" - WHITESPACE " " - IDENT "r" - COMMA "," - WHITESPACE " " - GROUP_KW "group" - WHITESPACE " " - CURRENT_USER_KW "current_user" - WHITESPACE "\n " - CASCADE_KW "cascade" + REVOKE_DEFAULT_PRIVILEGES + REVOKE_KW "revoke" + WHITESPACE " " + GRANT_KW "grant" + WHITESPACE " " + OPTION_KW "option" + WHITESPACE " " + FOR_KW "for" + WHITESPACE "\n " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + EXECUTE_KW "execute" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + FUNCTIONS_KW "functions" + WHITESPACE "\n " + FROM_KW "from" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + COMMA "," + WHITESPACE " " + ROLE + GROUP_KW "group" + WHITESPACE " " + NAME_REF + CURRENT_USER_KW "current_user" + WHITESPACE "\n " + CASCADE_KW "cascade" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -808,21 +1122,27 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - REVOKE_KW "revoke" - WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - ROUTINES_KW "routines" - WHITESPACE "\n " - FROM_KW "from" - WHITESPACE " " - IDENT "r" - WHITESPACE "\n " - RESTRICT_KW "restrict" + REVOKE_DEFAULT_PRIVILEGES + REVOKE_KW "revoke" + WHITESPACE " " + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + ROUTINES_KW "routines" + WHITESPACE "\n " + FROM_KW "from" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + WHITESPACE "\n " + RESTRICT_KW "restrict" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- revoke_types" @@ -834,30 +1154,42 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - REVOKE_KW "revoke" - WHITESPACE " " - GRANT_KW "grant" - WHITESPACE " " - OPTION_KW "option" - WHITESPACE " " - FOR_KW "for" - WHITESPACE "\n " - IDENT "usage" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TYPES_KW "types" - WHITESPACE "\n " - FROM_KW "from" - WHITESPACE " " - IDENT "r" - COMMA "," - WHITESPACE " " - GROUP_KW "group" - WHITESPACE " " - CURRENT_USER_KW "current_user" - WHITESPACE "\n " - CASCADE_KW "cascade" + REVOKE_DEFAULT_PRIVILEGES + REVOKE_KW "revoke" + WHITESPACE " " + GRANT_KW "grant" + WHITESPACE " " + OPTION_KW "option" + WHITESPACE " " + FOR_KW "for" + WHITESPACE "\n " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TYPES_KW "types" + WHITESPACE "\n " + FROM_KW "from" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + COMMA "," + WHITESPACE " " + ROLE + GROUP_KW "group" + WHITESPACE " " + NAME_REF + CURRENT_USER_KW "current_user" + WHITESPACE "\n " + CASCADE_KW "cascade" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -867,21 +1199,27 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - REVOKE_KW "revoke" - WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - TYPES_KW "types" - WHITESPACE "\n " - FROM_KW "from" - WHITESPACE " " - IDENT "r" - WHITESPACE "\n " - RESTRICT_KW "restrict" + REVOKE_DEFAULT_PRIVILEGES + REVOKE_KW "revoke" + WHITESPACE " " + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + TYPES_KW "types" + WHITESPACE "\n " + FROM_KW "from" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + WHITESPACE "\n " + RESTRICT_KW "restrict" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- revoke_schemas" @@ -893,33 +1231,46 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - REVOKE_KW "revoke" - WHITESPACE " " - GRANT_KW "grant" - WHITESPACE " " - OPTION_KW "option" - WHITESPACE " " - FOR_KW "for" - WHITESPACE "\n " - IDENT "usage" - COMMA "," - WHITESPACE " " - CREATE_KW "create" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - SCHEMAS_KW "schemas" - WHITESPACE "\n " - FROM_KW "from" - WHITESPACE " " - IDENT "r" - COMMA "," - WHITESPACE " " - GROUP_KW "group" - WHITESPACE " " - CURRENT_USER_KW "current_user" - WHITESPACE "\n " - CASCADE_KW "cascade" + REVOKE_DEFAULT_PRIVILEGES + REVOKE_KW "revoke" + WHITESPACE " " + GRANT_KW "grant" + WHITESPACE " " + OPTION_KW "option" + WHITESPACE " " + FOR_KW "for" + WHITESPACE "\n " + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + CREATE_KW "create" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + SCHEMAS_KW "schemas" + WHITESPACE "\n " + FROM_KW "from" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + COMMA "," + WHITESPACE " " + ROLE + GROUP_KW "group" + WHITESPACE " " + NAME_REF + CURRENT_USER_KW "current_user" + WHITESPACE "\n " + CASCADE_KW "cascade" SEMICOLON ";" WHITESPACE "\n\n" ALTER_DEFAULT_PRIVILEGES @@ -929,20 +1280,26 @@ SOURCE_FILE WHITESPACE " " PRIVILEGES_KW "privileges" WHITESPACE "\n " - REVOKE_KW "revoke" - WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" - WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - SCHEMAS_KW "schemas" - WHITESPACE "\n " - FROM_KW "from" - WHITESPACE " " - IDENT "r" - WHITESPACE "\n " - RESTRICT_KW "restrict" + REVOKE_DEFAULT_PRIVILEGES + REVOKE_KW "revoke" + WHITESPACE " " + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" + WHITESPACE "\n " + ON_KW "on" + WHITESPACE " " + PRIVILEGE_TARGET + SCHEMAS_KW "schemas" + WHITESPACE "\n " + FROM_KW "from" + WHITESPACE " " + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + WHITESPACE "\n " + RESTRICT_KW "restrict" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_domain_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_domain_ok.snap index 3c4fff1e..023d7214 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_domain_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_domain_ok.snap @@ -301,7 +301,9 @@ SOURCE_FILE WHITESPACE " " TO_KW "to" WHITESPACE " " - IDENT "u" + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n" ALTER_DOMAIN @@ -319,7 +321,8 @@ SOURCE_FILE WHITESPACE " " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- rename_to" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_event_trigger_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_event_trigger_ok.snap index fa72f8f6..aba60edf 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_event_trigger_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_event_trigger_ok.snap @@ -79,11 +79,14 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner_current_role" @@ -98,11 +101,13 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_ROLE_KW "current_role" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_ROLE_KW "current_role" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- rename" @@ -117,11 +122,12 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "u" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_extension_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_extension_ok.snap index e6857382..fcd59da3 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_extension_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_extension_ok.snap @@ -57,12 +57,13 @@ SOURCE_FILE NAME_REF IDENT "e" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- add_drop_access_method" @@ -199,21 +200,22 @@ SOURCE_FILE WHITESPACE " " CAST_KW "cast" WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - BIGINT_KW "bigint" - WHITESPACE " " - AS_KW "as" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - TEXT_KW "text" - R_PAREN ")" + CAST_SIG + L_PAREN "(" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + BIGINT_KW "bigint" + WHITESPACE " " + AS_KW "as" + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" ALTER_EXTENSION @@ -228,24 +230,25 @@ SOURCE_FILE WHITESPACE " " CAST_KW "cast" WHITESPACE " " - L_PAREN "(" - CHAR_TYPE - VARCHAR_KW "varchar" - ARG_LIST - L_PAREN "(" - ARG - LITERAL - INT_NUMBER "100" - R_PAREN ")" - WHITESPACE " " - AS_KW "as" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - SMALLINT_KW "smallint" - R_PAREN ")" + CAST_SIG + L_PAREN "(" + CHAR_TYPE + VARCHAR_KW "varchar" + ARG_LIST + L_PAREN "(" + ARG + LITERAL + INT_NUMBER "100" + R_PAREN ")" + WHITESPACE " " + AS_KW "as" + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + SMALLINT_KW "smallint" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- add_drop_collation" @@ -871,9 +874,10 @@ SOURCE_FILE WHITESPACE " " OPERATOR_KW "operator" WHITESPACE " " - CUSTOM_OP - L_ANGLE "<" - L_ANGLE "<" + OP + CUSTOM_OP + L_ANGLE "<" + L_ANGLE "<" WHITESPACE " " L_PAREN "(" PATH_TYPE @@ -906,9 +910,10 @@ SOURCE_FILE WHITESPACE " " OPERATOR_KW "operator" WHITESPACE " " - CUSTOM_OP - R_ANGLE ">" - R_ANGLE ">" + OP + CUSTOM_OP + R_ANGLE ">" + R_ANGLE ">" WHITESPACE " " L_PAREN "(" PATH_TYPE diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_foreign_data_wrapper_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_foreign_data_wrapper_ok.snap index a3e26ed9..8c5722bd 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_foreign_data_wrapper_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_foreign_data_wrapper_ok.snap @@ -17,12 +17,14 @@ SOURCE_FILE NAME_REF IDENT "w" WHITESPACE "\n " - HANDLER_KW "handler" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "h" + FDW_OPTION_LIST + FDW_OPTION + HANDLER_KW "handler" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "h" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- no_handler" @@ -39,9 +41,11 @@ SOURCE_FILE NAME_REF IDENT "w" WHITESPACE "\n " - NO_KW "no" - WHITESPACE " " - HANDLER_KW "handler" + FDW_OPTION_LIST + FDW_OPTION + NO_KW "no" + WHITESPACE " " + HANDLER_KW "handler" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- validator" @@ -58,12 +62,14 @@ SOURCE_FILE NAME_REF IDENT "w" WHITESPACE "\n " - VALIDATOR_KW "validator" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "v" + FDW_OPTION_LIST + FDW_OPTION + VALIDATOR_KW "validator" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "v" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- no_validator" @@ -80,9 +86,11 @@ SOURCE_FILE NAME_REF IDENT "w" WHITESPACE "\n " - NO_KW "no" - WHITESPACE " " - VALIDATOR_KW "validator" + FDW_OPTION_LIST + FDW_OPTION + NO_KW "no" + WHITESPACE " " + VALIDATOR_KW "validator" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- options" @@ -99,36 +107,38 @@ SOURCE_FILE NAME_REF IDENT "w" WHITESPACE "\n " - ALTER_OPTION_LIST - OPTIONS_KW "options" - WHITESPACE " " - L_PAREN "(" - ALTER_OPTION - ADD_KW "add" - WHITESPACE " " - NAME - IDENT "o" - WHITESPACE " " - LITERAL - STRING "'v'" - COMMA "," - WHITESPACE " " - ALTER_OPTION - SET_KW "set" - WHITESPACE " " - NAME - IDENT "o" - WHITESPACE " " - LITERAL - STRING "'v'" - COMMA "," - WHITESPACE " " - ALTER_OPTION - DROP_KW "drop" - WHITESPACE " " - NAME - IDENT "o" - R_PAREN ")" + FDW_OPTION_LIST + FDW_OPTION + ALTER_OPTION_LIST + OPTIONS_KW "options" + WHITESPACE " " + L_PAREN "(" + ALTER_OPTION + ADD_KW "add" + WHITESPACE " " + NAME + IDENT "o" + WHITESPACE " " + LITERAL + STRING "'v'" + COMMA "," + WHITESPACE " " + ALTER_OPTION + SET_KW "set" + WHITESPACE " " + NAME + IDENT "o" + WHITESPACE " " + LITERAL + STRING "'v'" + COMMA "," + WHITESPACE " " + ALTER_OPTION + DROP_KW "drop" + WHITESPACE " " + NAME + IDENT "o" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- multiple" @@ -145,68 +155,74 @@ SOURCE_FILE NAME_REF IDENT "w" WHITESPACE "\n " - HANDLER_KW "handler" - WHITESPACE " " - PATH - PATH - PATH_SEGMENT - NAME_REF - IDENT "s" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "h" - WHITESPACE "\n " - NO_KW "no" - WHITESPACE " " - HANDLER_KW "handler" - WHITESPACE "\n " - VALIDATOR_KW "validator" - WHITESPACE " " - PATH - PATH - PATH_SEGMENT - NAME_REF - IDENT "s" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "v" - WHITESPACE "\n " - NO_KW "no" - WHITESPACE " " - VALIDATOR_KW "validator" - WHITESPACE "\n " - ALTER_OPTION_LIST - OPTIONS_KW "options" - WHITESPACE " " - L_PAREN "(" - ALTER_OPTION - ADD_KW "add" + FDW_OPTION_LIST + FDW_OPTION + HANDLER_KW "handler" WHITESPACE " " - NAME - IDENT "o" + PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "s" + DOT "." + PATH_SEGMENT + NAME_REF + IDENT "h" + WHITESPACE "\n " + FDW_OPTION + NO_KW "no" WHITESPACE " " - LITERAL - STRING "'v'" - COMMA "," - WHITESPACE " " - ALTER_OPTION - SET_KW "set" + HANDLER_KW "handler" + WHITESPACE "\n " + FDW_OPTION + VALIDATOR_KW "validator" WHITESPACE " " - NAME - IDENT "o" - WHITESPACE " " - LITERAL - STRING "''" - COMMA "," - WHITESPACE " " - ALTER_OPTION - DROP_KW "drop" + PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "s" + DOT "." + PATH_SEGMENT + NAME_REF + IDENT "v" + WHITESPACE "\n " + FDW_OPTION + NO_KW "no" WHITESPACE " " - NAME - IDENT "d" - R_PAREN ")" + VALIDATOR_KW "validator" + WHITESPACE "\n " + FDW_OPTION + ALTER_OPTION_LIST + OPTIONS_KW "options" + WHITESPACE " " + L_PAREN "(" + ALTER_OPTION + ADD_KW "add" + WHITESPACE " " + NAME + IDENT "o" + WHITESPACE " " + LITERAL + STRING "'v'" + COMMA "," + WHITESPACE " " + ALTER_OPTION + SET_KW "set" + WHITESPACE " " + NAME + IDENT "o" + WHITESPACE " " + LITERAL + STRING "''" + COMMA "," + WHITESPACE " " + ALTER_OPTION + DROP_KW "drop" + WHITESPACE " " + NAME + IDENT "d" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner" @@ -223,11 +239,14 @@ SOURCE_FILE NAME_REF IDENT "w" WHITESPACE "\n " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- rename" @@ -244,11 +263,12 @@ SOURCE_FILE NAME_REF IDENT "w" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "n" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_foreign_table_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_foreign_table_ok.snap index 76cfe0e6..576ad611 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_foreign_table_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_foreign_table_ok.snap @@ -18,12 +18,13 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "u" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- only_and_asterisk" @@ -43,12 +44,13 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "u" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" ALTER_FOREIGN_TABLE @@ -66,12 +68,13 @@ SOURCE_FILE WHITESPACE " " STAR "*" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "u" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- rename_column" @@ -89,17 +92,18 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - COLUMN_KW "column" - WHITESPACE " " - NAME_REF - IDENT "c" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "d" + RENAME_COLUMN + RENAME_KW "rename" + WHITESPACE " " + COLUMN_KW "column" + WHITESPACE " " + NAME_REF + IDENT "c" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "d" SEMICOLON ";" WHITESPACE "\n\n" ALTER_FOREIGN_TABLE @@ -115,15 +119,16 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - NAME_REF - IDENT "c" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "d" + RENAME_COLUMN + RENAME_KW "rename" + WHITESPACE " " + NAME_REF + IDENT "c" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "d" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_schema" @@ -146,12 +151,13 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE "\n " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- action_add_column" @@ -678,8 +684,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -718,8 +725,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -1463,7 +1471,9 @@ SOURCE_FILE WHITESPACE " " TO_KW "to" WHITESPACE " " - IDENT "u" + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" ALTER_FOREIGN_TABLE @@ -1484,7 +1494,8 @@ SOURCE_FILE WHITESPACE " " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- multiple_actions" @@ -1569,6 +1580,8 @@ SOURCE_FILE WHITESPACE " " TO_KW "to" WHITESPACE " " - IDENT "u" + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_function_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_function_ok.snap index 02b022ed..697cfe73 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_function_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_function_ok.snap @@ -34,12 +34,13 @@ SOURCE_FILE NAME_REF IDENT "f" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "g" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "g" SEMICOLON ";" WHITESPACE "\n" ALTER_FUNCTION @@ -58,12 +59,13 @@ SOURCE_FILE NAME_REF IDENT "f" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "g" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "g" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- action_with_params" @@ -114,11 +116,13 @@ SOURCE_FILE NAME_REF IDENT "f" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- schema" @@ -134,12 +138,13 @@ SOURCE_FILE NAME_REF IDENT "f" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- multiple_actions" @@ -256,54 +261,58 @@ SOURCE_FILE IDENT "f" WHITESPACE "\n " SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "c" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - LITERAL - INT_NUMBER "1" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "c" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + LITERAL + INT_NUMBER "1" WHITESPACE "\n " SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "c" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - INT_NUMBER "1" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "c" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + INT_NUMBER "1" WHITESPACE "\n " SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "c" - WHITESPACE " " - EQ "=" - WHITESPACE " " - DEFAULT_KW "default" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "c" + WHITESPACE " " + EQ "=" + WHITESPACE " " + DEFAULT_KW "default" WHITESPACE "\n " SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "c" - WHITESPACE " " - FROM_KW "from" - WHITESPACE " " - CURRENT_KW "current" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "c" + WHITESPACE " " + FROM_KW "from" + WHITESPACE " " + CURRENT_KW "current" WHITESPACE "\n " RESET_FUNC_OPTION RESET_KW "reset" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_group_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_group_ok.snap index 163458cd..7f8dec17 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_group_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_group_ok.snap @@ -10,7 +10,9 @@ SOURCE_FILE WHITESPACE " " GROUP_KW "group" WHITESPACE " " - IDENT "g" + ROLE + NAME_REF + IDENT "g" WHITESPACE " " ADD_KW "add" WHITESPACE " " @@ -27,7 +29,9 @@ SOURCE_FILE WHITESPACE " " GROUP_KW "group" WHITESPACE " " - IDENT "g" + ROLE + NAME_REF + IDENT "g" WHITESPACE " " ADD_KW "add" WHITESPACE " " @@ -52,7 +56,9 @@ SOURCE_FILE WHITESPACE " " GROUP_KW "group" WHITESPACE " " - IDENT "g" + ROLE + NAME_REF + IDENT "g" WHITESPACE " " DROP_KW "drop" WHITESPACE " " @@ -69,7 +75,9 @@ SOURCE_FILE WHITESPACE " " GROUP_KW "group" WHITESPACE " " - IDENT "g" + ROLE + NAME_REF + IDENT "g" WHITESPACE " " DROP_KW "drop" WHITESPACE " " @@ -94,14 +102,17 @@ SOURCE_FILE WHITESPACE " " GROUP_KW "group" WHITESPACE " " - IDENT "g" - WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "n" + ROLE + NAME_REF + IDENT "g" + WHITESPACE " " + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- current_role" @@ -111,7 +122,8 @@ SOURCE_FILE WHITESPACE " " GROUP_KW "group" WHITESPACE " " - CURRENT_ROLE_KW "current_role" + ROLE + CURRENT_ROLE_KW "current_role" WHITESPACE " " ADD_KW "add" WHITESPACE " " @@ -128,7 +140,8 @@ SOURCE_FILE WHITESPACE " " GROUP_KW "group" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE + CURRENT_USER_KW "current_user" WHITESPACE " " DROP_KW "drop" WHITESPACE " " @@ -145,7 +158,8 @@ SOURCE_FILE WHITESPACE " " GROUP_KW "group" WHITESPACE " " - SESSION_USER_KW "session_user" + ROLE + SESSION_USER_KW "session_user" WHITESPACE " " ADD_KW "add" WHITESPACE " " diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_index_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_index_ok.snap index 88442ab1..e01862d2 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_index_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_index_ok.snap @@ -15,14 +15,13 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "j" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "j" SEMICOLON ";" WHITESPACE "\n" ALTER_INDEX @@ -45,14 +44,13 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "j" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "j" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_tablespace" @@ -67,14 +65,15 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - TABLESPACE_KW "tablespace" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + SET_TABLESPACE + SET_KW "set" + WHITESPACE " " + TABLESPACE_KW "tablespace" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" SEMICOLON ";" WHITESPACE "\n" ALTER_INDEX @@ -97,14 +96,15 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - TABLESPACE_KW "tablespace" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + SET_TABLESPACE + SET_KW "set" + WHITESPACE " " + TABLESPACE_KW "tablespace" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_params" @@ -119,14 +119,15 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - ATTRIBUTE_LIST - L_PAREN "(" - ATTRIBUTE_OPTION - NAME - IDENT "a" - R_PAREN ")" + SET_OPTIONS + SET_KW "set" + WHITESPACE " " + ATTRIBUTE_LIST + L_PAREN "(" + ATTRIBUTE_OPTION + NAME + IDENT "a" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" ALTER_INDEX @@ -149,25 +150,28 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - ATTRIBUTE_LIST - L_PAREN "(" - ATTRIBUTE_OPTION - NAME - IDENT "a" - EQ "=" - LITERAL - INT_NUMBER "1" - COMMA "," + SET_OPTIONS + SET_KW "set" WHITESPACE " " - ATTRIBUTE_OPTION - NAME - IDENT "b" - EQ "=" - LITERAL - STRING "'v'" - R_PAREN ")" + ATTRIBUTE_LIST + L_PAREN "(" + ATTRIBUTE_OPTION + NAME + IDENT "a" + EQ "=" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1" + COMMA "," + WHITESPACE " " + ATTRIBUTE_OPTION + NAME + IDENT "b" + EQ "=" + ATTRIBUTE_VALUE + LITERAL + STRING "'v'" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- reset_params" @@ -182,14 +186,15 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - RESET_KW "reset" - WHITESPACE " " - ATTRIBUTE_LIST - L_PAREN "(" - ATTRIBUTE_OPTION - NAME - IDENT "a" - R_PAREN ")" + RESET_OPTIONS + RESET_KW "reset" + WHITESPACE " " + ATTRIBUTE_LIST + L_PAREN "(" + ATTRIBUTE_OPTION + NAME + IDENT "a" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" ALTER_INDEX @@ -212,19 +217,20 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - RESET_KW "reset" - WHITESPACE " " - ATTRIBUTE_LIST - L_PAREN "(" - ATTRIBUTE_OPTION - NAME - IDENT "a" - COMMA "," + RESET_OPTIONS + RESET_KW "reset" WHITESPACE " " - ATTRIBUTE_OPTION - NAME - IDENT "b" - R_PAREN ")" + ATTRIBUTE_LIST + L_PAREN "(" + ATTRIBUTE_OPTION + NAME + IDENT "a" + COMMA "," + WHITESPACE " " + ATTRIBUTE_OPTION + NAME + IDENT "b" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- attach" @@ -239,14 +245,15 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - ATTACH_KW "attach" - WHITESPACE " " - PARTITION_KW "partition" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" + ATTACH_PARTITION + ATTACH_KW "attach" + WHITESPACE " " + PARTITION_KW "partition" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" SEMICOLON ";" WHITESPACE "\n" ALTER_INDEX @@ -264,19 +271,20 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - ATTACH_KW "attach" - WHITESPACE " " - PARTITION_KW "partition" - WHITESPACE " " - PATH + ATTACH_PARTITION + ATTACH_KW "attach" + WHITESPACE " " + PARTITION_KW "partition" + WHITESPACE " " PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "s" + DOT "." PATH_SEGMENT NAME_REF - IDENT "s" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "p" + IDENT "p" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- depends" @@ -291,18 +299,19 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - NO_KW "no" - WHITESPACE " " - DEPENDS_KW "depends" - WHITESPACE " " - ON_KW "on" - WHITESPACE " " - EXTENSION_KW "extension" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "e" + NO_DEPENDS_ON_EXTENSION + NO_KW "no" + WHITESPACE " " + DEPENDS_KW "depends" + WHITESPACE " " + ON_KW "on" + WHITESPACE " " + EXTENSION_KW "extension" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "e" SEMICOLON ";" WHITESPACE "\n" ALTER_INDEX @@ -320,16 +329,17 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - DEPENDS_KW "depends" - WHITESPACE " " - ON_KW "on" - WHITESPACE " " - EXTENSION_KW "extension" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "e" + DEPENDS_ON_EXTENSION + DEPENDS_KW "depends" + WHITESPACE " " + ON_KW "on" + WHITESPACE " " + EXTENSION_KW "extension" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "e" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- alter_column" @@ -344,17 +354,18 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - ALTER_KW "alter" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - SET_KW "set" - WHITESPACE " " - STATISTICS_KW "statistics" - WHITESPACE " " - LITERAL - INT_NUMBER "100" + ALTER_SET_STATISTICS + ALTER_KW "alter" + WHITESPACE " " + LITERAL + INT_NUMBER "1" + WHITESPACE " " + SET_KW "set" + WHITESPACE " " + STATISTICS_KW "statistics" + WHITESPACE " " + LITERAL + INT_NUMBER "100" SEMICOLON ";" WHITESPACE "\n" ALTER_INDEX @@ -377,19 +388,20 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - ALTER_KW "alter" - WHITESPACE " " - COLUMN_KW "column" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - SET_KW "set" - WHITESPACE " " - STATISTICS_KW "statistics" - WHITESPACE " " - LITERAL - INT_NUMBER "100" + ALTER_SET_STATISTICS + ALTER_KW "alter" + WHITESPACE " " + COLUMN_KW "column" + WHITESPACE " " + LITERAL + INT_NUMBER "1" + WHITESPACE " " + SET_KW "set" + WHITESPACE " " + STATISTICS_KW "statistics" + WHITESPACE " " + LITERAL + INT_NUMBER "100" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- all_tablespace" @@ -438,10 +450,15 @@ SOURCE_FILE WHITESPACE " " BY_KW "by" WHITESPACE " " - IDENT "r" - COMMA "," - WHITESPACE " " - IDENT "s" + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "s" WHITESPACE "\n " SET_KW "set" WHITESPACE " " diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_language_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_language_ok.snap index 5f09dc90..86afc795 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_language_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_language_ok.snap @@ -13,12 +13,13 @@ SOURCE_FILE NAME_REF IDENT "x" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "y" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "y" SEMICOLON ";" WHITESPACE "\n" ALTER_LANGUAGE @@ -31,12 +32,13 @@ SOURCE_FILE NAME_REF IDENT "x" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "y" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "y" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner" @@ -49,11 +51,14 @@ SOURCE_FILE NAME_REF IDENT "x" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n" ALTER_LANGUAGE @@ -66,10 +71,12 @@ SOURCE_FILE NAME_REF IDENT "x" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_large_object_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_large_object_ok.snap index db8d4792..0b70cc04 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_large_object_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_large_object_ok.snap @@ -19,7 +19,9 @@ SOURCE_FILE WHITESPACE " " TO_KW "to" WHITESPACE " " - IDENT "u" + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- current_role" @@ -38,6 +40,7 @@ SOURCE_FILE WHITESPACE " " TO_KW "to" WHITESPACE " " - CURRENT_ROLE_KW "current_role" + ROLE + CURRENT_ROLE_KW "current_role" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_materialized_view_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_materialized_view_ok.snap index c81b87f0..fd62763f 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_materialized_view_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_materialized_view_ok.snap @@ -17,12 +17,13 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "n" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n" ALTER_MATERIALIZED_VIEW @@ -47,12 +48,13 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "n" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- rename_column" @@ -69,15 +71,16 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - NAME_REF - IDENT "c" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "n" + RENAME_COLUMN + RENAME_KW "rename" + WHITESPACE " " + NAME_REF + IDENT "c" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n" ALTER_MATERIALIZED_VIEW @@ -102,17 +105,18 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE " \n " - RENAME_KW "rename" - WHITESPACE " " - COLUMN_KW "column" - WHITESPACE " " - NAME_REF - IDENT "c" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "n" + RENAME_COLUMN + RENAME_KW "rename" + WHITESPACE " " + COLUMN_KW "column" + WHITESPACE " " + NAME_REF + IDENT "c" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_schema" @@ -129,12 +133,13 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n" ALTER_MATERIALIZED_VIEW @@ -154,12 +159,13 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- depends_extension" @@ -176,14 +182,15 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE " " - DEPENDS_KW "depends" - WHITESPACE " " - ON_KW "on" - WHITESPACE " " - EXTENSION_KW "extension" - WHITESPACE " " - NAME_REF - IDENT "e" + DEPENDS_ON_EXTENSION + DEPENDS_KW "depends" + WHITESPACE " " + ON_KW "on" + WHITESPACE " " + EXTENSION_KW "extension" + WHITESPACE " " + NAME_REF + IDENT "e" SEMICOLON ";" WHITESPACE "\n" ALTER_MATERIALIZED_VIEW @@ -198,16 +205,17 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE " " - NO_KW "no" - WHITESPACE " " - DEPENDS_KW "depends" - WHITESPACE " " - ON_KW "on" - WHITESPACE " " - EXTENSION_KW "extension" - WHITESPACE " " - NAME_REF - IDENT "e" + NO_DEPENDS_ON_EXTENSION + NO_KW "no" + WHITESPACE " " + DEPENDS_KW "depends" + WHITESPACE " " + ON_KW "on" + WHITESPACE " " + EXTENSION_KW "extension" + WHITESPACE " " + NAME_REF + IDENT "e" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_tablespace" @@ -256,10 +264,14 @@ SOURCE_FILE WHITESPACE " " BY_KW "by" WHITESPACE " " - CURRENT_USER_KW "current_user" - COMMA "," - WHITESPACE " " - IDENT "u" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" WHITESPACE "\n " SET_KW "set" WHITESPACE " " @@ -392,8 +404,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - FLOAT_NUMBER "1.0" + ATTRIBUTE_VALUE + LITERAL + FLOAT_NUMBER "1.0" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -426,8 +439,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - TRUE_KW "true" + ATTRIBUTE_VALUE + LITERAL + TRUE_KW "true" COMMA "," WHITESPACE " " ATTRIBUTE_OPTION @@ -436,8 +450,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_operator_class_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_operator_class_ok.snap index a12b27e4..c6c5f1c5 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_operator_class_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_operator_class_ok.snap @@ -22,12 +22,13 @@ SOURCE_FILE NAME_REF IDENT "m" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME_REF - IDENT "n" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" ALTER_OPERATOR_CLASS @@ -52,12 +53,13 @@ SOURCE_FILE NAME_REF IDENT "m" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME_REF - IDENT "n" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner" @@ -79,11 +81,14 @@ SOURCE_FILE NAME_REF IDENT "m" WHITESPACE "\n " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" ALTER_OPERATOR_CLASS @@ -103,11 +108,13 @@ SOURCE_FILE NAME_REF IDENT "m" WHITESPACE "\n " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- schema" @@ -129,11 +136,12 @@ SOURCE_FILE NAME_REF IDENT "m" WHITESPACE "\n " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_operator_family_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_operator_family_ok.snap index 9a8cf33b..94f02777 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_operator_family_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_operator_family_ok.snap @@ -22,29 +22,33 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - ADD_KW "add" - WHITESPACE "\n " - OPERATOR_KW "operator" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - L_ANGLE "<" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "u" - R_PAREN ")" + ADD_OP_CLASS_OPTIONS + ADD_KW "add" + WHITESPACE "\n " + OPERATOR_CLASS_OPTION_LIST + OP_CLASS_OPTION + OPERATOR_KW "operator" + WHITESPACE " " + LITERAL + INT_NUMBER "1" + WHITESPACE " " + OP + L_ANGLE "<" + WHITESPACE " " + L_PAREN "(" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + COMMA "," + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "u" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- multi" @@ -66,108 +70,120 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - ADD_KW "add" - WHITESPACE "\n " - OPERATOR_KW "operator" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - CUSTOM_OP - AMP "&" - AMP "&" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "u" - R_PAREN ")" - COMMA "," - WHITESPACE "\n " - FUNCTION_KW "function" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - FUNCTION_SIG - PATH - PATH_SEGMENT - NAME_REF - IDENT "f" - COMMA "," - WHITESPACE "\n " - FUNCTION_KW "function" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - R_PAREN ")" - WHITESPACE " " - FUNCTION_SIG - PATH - PATH_SEGMENT - NAME_REF - IDENT "f" - PARAM_LIST - L_PAREN "(" - PARAM - PARAM_IN - IN_KW "in" + ADD_OP_CLASS_OPTIONS + ADD_KW "add" + WHITESPACE "\n " + OPERATOR_CLASS_OPTION_LIST + OP_CLASS_OPTION + OPERATOR_KW "operator" + WHITESPACE " " + LITERAL + INT_NUMBER "1" WHITESPACE " " - NAME - IDENT "a" + OP + CUSTOM_OP + AMP "&" + AMP "&" WHITESPACE " " + L_PAREN "(" PATH_TYPE PATH PATH_SEGMENT NAME_REF - TEXT_KW "text" - R_PAREN ")" - COMMA "," - WHITESPACE "\n " - FUNCTION_KW "function" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - COMMA "," - WHITESPACE " " - CHAR_TYPE - VARCHAR_KW "varchar" - ARG_LIST - L_PAREN "(" - ARG + IDENT "t" + COMMA "," + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "u" + R_PAREN ")" + COMMA "," + WHITESPACE "\n " + OP_CLASS_OPTION + FUNCTION_KW "function" + WHITESPACE " " LITERAL - INT_NUMBER "100" - R_PAREN ")" - R_PAREN ")" - WHITESPACE " " - FUNCTION_SIG - PATH - PATH_SEGMENT - NAME_REF - IDENT "f" + INT_NUMBER "1" + WHITESPACE " " + FUNCTION_SIG + PATH + PATH_SEGMENT + NAME_REF + IDENT "f" + COMMA "," + WHITESPACE "\n " + OP_CLASS_OPTION + FUNCTION_KW "function" + WHITESPACE " " + LITERAL + INT_NUMBER "1" + WHITESPACE " " + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + R_PAREN ")" + WHITESPACE " " + FUNCTION_SIG + PATH + PATH_SEGMENT + NAME_REF + IDENT "f" + PARAM_LIST + L_PAREN "(" + PARAM + PARAM_IN + IN_KW "in" + WHITESPACE " " + NAME + IDENT "a" + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" + R_PAREN ")" + COMMA "," + WHITESPACE "\n " + OP_CLASS_OPTION + FUNCTION_KW "function" + WHITESPACE " " + LITERAL + INT_NUMBER "1" + WHITESPACE " " + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + COMMA "," + WHITESPACE " " + PARAM + CHAR_TYPE + VARCHAR_KW "varchar" + ARG_LIST + L_PAREN "(" + ARG + LITERAL + INT_NUMBER "100" + R_PAREN ")" + R_PAREN ")" + WHITESPACE " " + FUNCTION_SIG + PATH + PATH_SEGMENT + NAME_REF + IDENT "f" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- add_op_for_search" @@ -189,33 +205,37 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - ADD_KW "add" - WHITESPACE "\n " - OPERATOR_KW "operator" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - R_ANGLE ">" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "u" - R_PAREN ")" - WHITESPACE " " - FOR_KW "for" - WHITESPACE " " - SEARCH_KW "search" + ADD_OP_CLASS_OPTIONS + ADD_KW "add" + WHITESPACE "\n " + OPERATOR_CLASS_OPTION_LIST + OP_CLASS_OPTION + OPERATOR_KW "operator" + WHITESPACE " " + LITERAL + INT_NUMBER "1" + WHITESPACE " " + OP + R_ANGLE ">" + WHITESPACE " " + L_PAREN "(" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + COMMA "," + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "u" + R_PAREN ")" + WHITESPACE " " + FOR_KW "for" + WHITESPACE " " + SEARCH_KW "search" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- add_op_for_order" @@ -237,40 +257,44 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - ADD_KW "add" - WHITESPACE "\n " - OPERATOR_KW "operator" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - R_ANGLE ">" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "u" - R_PAREN ")" - WHITESPACE " " - FOR_KW "for" - WHITESPACE " " - ORDER_KW "order" - WHITESPACE " " - BY_KW "by" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "s" + ADD_OP_CLASS_OPTIONS + ADD_KW "add" + WHITESPACE "\n " + OPERATOR_CLASS_OPTION_LIST + OP_CLASS_OPTION + OPERATOR_KW "operator" + WHITESPACE " " + LITERAL + INT_NUMBER "1" + WHITESPACE " " + OP + R_ANGLE ">" + WHITESPACE " " + L_PAREN "(" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + COMMA "," + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "u" + R_PAREN ")" + WHITESPACE " " + FOR_KW "for" + WHITESPACE " " + ORDER_KW "order" + WHITESPACE " " + BY_KW "by" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- add_func" @@ -292,27 +316,30 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - ADD_KW "add" - WHITESPACE "\n " - FUNCTION_KW "function" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - FUNCTION_SIG - PATH - PATH_SEGMENT - NAME_REF - IDENT "f" - PARAM_LIST - L_PAREN "(" - PARAM - PATH_TYPE + ADD_OP_CLASS_OPTIONS + ADD_KW "add" + WHITESPACE "\n " + OPERATOR_CLASS_OPTION_LIST + OP_CLASS_OPTION + FUNCTION_KW "function" + WHITESPACE " " + LITERAL + INT_NUMBER "1" + WHITESPACE " " + FUNCTION_SIG PATH PATH_SEGMENT NAME_REF - IDENT "t" - R_PAREN ")" + IDENT "f" + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- add_func_with_params" @@ -334,50 +361,56 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - ADD_KW "add" - WHITESPACE "\n " - FUNCTION_KW "function" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "u" - R_PAREN ")" - WHITESPACE " " - FUNCTION_SIG - PATH - PATH_SEGMENT - NAME_REF - IDENT "f" - PARAM_LIST - L_PAREN "(" - PARAM - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "a" - COMMA "," - WHITESPACE " " - PARAM - PATH_TYPE + ADD_OP_CLASS_OPTIONS + ADD_KW "add" + WHITESPACE "\n " + OPERATOR_CLASS_OPTION_LIST + OP_CLASS_OPTION + FUNCTION_KW "function" + WHITESPACE " " + LITERAL + INT_NUMBER "1" + WHITESPACE " " + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + COMMA "," + WHITESPACE " " + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "u" + R_PAREN ")" + WHITESPACE " " + FUNCTION_SIG PATH PATH_SEGMENT NAME_REF - IDENT "b" - R_PAREN ")" + IDENT "f" + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "a" + COMMA "," + WHITESPACE " " + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "b" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- drop_op" @@ -399,27 +432,33 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - DROP_KW "drop" - WHITESPACE "\n " - OPERATOR_KW "operator" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "u" - R_PAREN ")" + DROP_OP_CLASS_OPTIONS + DROP_KW "drop" + WHITESPACE "\n " + DROP_OP_CLASS_OPTION_LIST + DROP_OP_CLASS_OPTION + OPERATOR_KW "operator" + WHITESPACE " " + LITERAL + INT_NUMBER "1" + WHITESPACE " " + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + COMMA "," + WHITESPACE " " + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "u" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- drop_op_single_param" @@ -441,20 +480,25 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - DROP_KW "drop" - WHITESPACE "\n " - OPERATOR_KW "operator" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - R_PAREN ")" + DROP_OP_CLASS_OPTIONS + DROP_KW "drop" + WHITESPACE "\n " + DROP_OP_CLASS_OPTION_LIST + DROP_OP_CLASS_OPTION + OPERATOR_KW "operator" + WHITESPACE " " + LITERAL + INT_NUMBER "1" + WHITESPACE " " + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- drop_func" @@ -476,27 +520,33 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - DROP_KW "drop" - WHITESPACE "\n " - FUNCTION_KW "function" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "u" - R_PAREN ")" + DROP_OP_CLASS_OPTIONS + DROP_KW "drop" + WHITESPACE "\n " + DROP_OP_CLASS_OPTION_LIST + DROP_OP_CLASS_OPTION + FUNCTION_KW "function" + WHITESPACE " " + LITERAL + INT_NUMBER "1" + WHITESPACE " " + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + COMMA "," + WHITESPACE " " + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "u" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- drop_func_single_param" @@ -518,20 +568,25 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - DROP_KW "drop" - WHITESPACE "\n " - FUNCTION_KW "function" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - R_PAREN ")" + DROP_OP_CLASS_OPTIONS + DROP_KW "drop" + WHITESPACE "\n " + DROP_OP_CLASS_OPTION_LIST + DROP_OP_CLASS_OPTION + FUNCTION_KW "function" + WHITESPACE " " + LITERAL + INT_NUMBER "1" + WHITESPACE " " + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- drop_multiple" @@ -553,41 +608,50 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE " " - DROP_KW "drop" - WHITESPACE "\n " - OPERATOR_KW "operator" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "u" - R_PAREN ")" - COMMA "," - WHITESPACE "\n " - FUNCTION_KW "function" - WHITESPACE " " - LITERAL - INT_NUMBER "2" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - R_PAREN ")" + DROP_OP_CLASS_OPTIONS + DROP_KW "drop" + WHITESPACE "\n " + DROP_OP_CLASS_OPTION_LIST + DROP_OP_CLASS_OPTION + OPERATOR_KW "operator" + WHITESPACE " " + LITERAL + INT_NUMBER "1" + WHITESPACE " " + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + COMMA "," + WHITESPACE " " + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "u" + R_PAREN ")" + COMMA "," + WHITESPACE "\n " + DROP_OP_CLASS_OPTION + FUNCTION_KW "function" + WHITESPACE " " + LITERAL + INT_NUMBER "2" + WHITESPACE " " + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- rename" @@ -609,12 +673,13 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "n" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner" @@ -636,11 +701,14 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE "\n " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n" ALTER_OPERATOR_FAMILY @@ -660,11 +728,13 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE "\n " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- schema" @@ -691,11 +761,12 @@ SOURCE_FILE NAME_REF IDENT "i" WHITESPACE "\n " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_operator_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_operator_ok.snap index 547731c8..7f2c86ca 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_operator_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_operator_ok.snap @@ -10,35 +10,40 @@ SOURCE_FILE WHITESPACE " " OPERATOR_KW "operator" WHITESPACE " " - PATH - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" - DOT "." - PATH_SEGMENT - PLUS "+" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "int4" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "int4" - R_PAREN ")" + OP_SIG + OP + PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" + DOT "." + PATH_SEGMENT + PLUS "+" + WHITESPACE " " + L_PAREN "(" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "int4" + COMMA "," + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "int4" + R_PAREN ")" WHITESPACE " \n " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- schema" @@ -48,25 +53,28 @@ SOURCE_FILE WHITESPACE " " OPERATOR_KW "operator" WHITESPACE " " - PLUS "+" - WHITESPACE " " - L_PAREN "(" - NONE_KW "none" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - TEXT_KW "text" - R_PAREN ")" + OP_SIG + OP + PLUS "+" + WHITESPACE " " + L_PAREN "(" + NONE_KW "none" + COMMA "," + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" + R_PAREN ")" WHITESPACE " \n " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- options" @@ -76,107 +84,116 @@ SOURCE_FILE WHITESPACE " " OPERATOR_KW "operator" WHITESPACE " " - CUSTOM_OP - AMP "&" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "bool" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "bool" - R_PAREN ")" - WHITESPACE " \n " - SET_KW "set" - WHITESPACE " " - ATTRIBUTE_LIST + OP_SIG + OP + CUSTOM_OP + AMP "&" + WHITESPACE " " L_PAREN "(" - WHITESPACE "\n " - ATTRIBUTE_OPTION - NAME - RESTRICT_KW "restrict" - WHITESPACE " " - EQ "=" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "r" - COMMA "," - WHITESPACE "\n " - ATTRIBUTE_OPTION - NAME - JOIN_KW "join" - WHITESPACE " " - EQ "=" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "j" - COMMA "," - WHITESPACE "\n " - ATTRIBUTE_OPTION - NAME - IDENT "commutator" - WHITESPACE " " - EQ "=" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "c" - COMMA "," - WHITESPACE "\n " - ATTRIBUTE_OPTION - NAME - IDENT "negator" - WHITESPACE " " - EQ "=" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "n" - COMMA "," - WHITESPACE "\n " - ATTRIBUTE_OPTION - NAME - IDENT "hashes" - WHITESPACE " " - EQ "=" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "enabled" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "bool" COMMA "," - WHITESPACE "\n " - ATTRIBUTE_OPTION - NAME - IDENT "merges" - WHITESPACE " " - EQ "=" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "enabled" - WHITESPACE "\n " + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "bool" R_PAREN ")" + WHITESPACE " \n " + SET_OPTIONS + SET_KW "set" + WHITESPACE " " + ATTRIBUTE_LIST + L_PAREN "(" + WHITESPACE "\n " + ATTRIBUTE_OPTION + NAME + RESTRICT_KW "restrict" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "r" + COMMA "," + WHITESPACE "\n " + ATTRIBUTE_OPTION + NAME + JOIN_KW "join" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "j" + COMMA "," + WHITESPACE "\n " + ATTRIBUTE_OPTION + NAME + IDENT "commutator" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "c" + COMMA "," + WHITESPACE "\n " + ATTRIBUTE_OPTION + NAME + IDENT "negator" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "n" + COMMA "," + WHITESPACE "\n " + ATTRIBUTE_OPTION + NAME + IDENT "hashes" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "enabled" + COMMA "," + WHITESPACE "\n " + ATTRIBUTE_OPTION + NAME + IDENT "merges" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "enabled" + WHITESPACE "\n " + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- none_options" @@ -186,43 +203,48 @@ SOURCE_FILE WHITESPACE " " OPERATOR_KW "operator" WHITESPACE " " - PERCENT "%" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INT_KW "int" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INT_KW "int" - R_PAREN ")" - WHITESPACE " \n " - SET_KW "set" - WHITESPACE " " - ATTRIBUTE_LIST + OP_SIG + OP + PERCENT "%" + WHITESPACE " " L_PAREN "(" - ATTRIBUTE_OPTION - NAME - RESTRICT_KW "restrict" - WHITESPACE " " - EQ "=" - WHITESPACE " " - NONE_KW "none" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INT_KW "int" COMMA "," WHITESPACE " " - ATTRIBUTE_OPTION - NAME - JOIN_KW "join" - WHITESPACE " " - EQ "=" - WHITESPACE " " - NONE_KW "none" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INT_KW "int" R_PAREN ")" + WHITESPACE " \n " + SET_OPTIONS + SET_KW "set" + WHITESPACE " " + ATTRIBUTE_LIST + L_PAREN "(" + ATTRIBUTE_OPTION + NAME + RESTRICT_KW "restrict" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + NONE_KW "none" + COMMA "," + WHITESPACE " " + ATTRIBUTE_OPTION + NAME + JOIN_KW "join" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + NONE_KW "none" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_policy_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_policy_ok.snap index 69019a15..ef31d396 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_policy_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_policy_ok.snap @@ -13,17 +13,21 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "q" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "q" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- to_role" @@ -36,14 +40,20 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE "\n " TO_KW "to" WHITESPACE " " - IDENT "r" + ROLE_LIST + ROLE + NAME_REF + IDENT "r" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- to_multiple_roles" @@ -56,20 +66,29 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE "\n " TO_KW "to" WHITESPACE " " - IDENT "r" - COMMA "," - WHITESPACE " " - IDENT "public" - COMMA "," - WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "public" + COMMA "," + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- using_expr" @@ -82,10 +101,13 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE "\n " USING_KW "using" WHITESPACE " " @@ -111,10 +133,13 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE "\n " WITH_KW "with" WHITESPACE " " @@ -142,17 +167,25 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE "\n " TO_KW "to" WHITESPACE " " - IDENT "r" - COMMA "," - WHITESPACE " " - IDENT "s" + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "s" WHITESPACE "\n " USING_KW "using" WHITESPACE " " diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_procedure_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_procedure_ok.snap index 0c758d99..4d019e9c 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_procedure_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_procedure_ok.snap @@ -16,12 +16,13 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "q" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "q" SEMICOLON ";" WHITESPACE "\n" ALTER_PROCEDURE @@ -57,12 +58,13 @@ SOURCE_FILE TEXT_KW "text" R_PAREN ")" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "q" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "q" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner" @@ -78,11 +80,14 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE "\n " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n" ALTER_PROCEDURE @@ -96,11 +101,13 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE "\n " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_schema" @@ -116,12 +123,13 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE "\n " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- security" @@ -185,29 +193,31 @@ SOURCE_FILE INVOKER_KW "invoker" WHITESPACE "\n " SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "c" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - INT_NUMBER "1" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "c" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + INT_NUMBER "1" WHITESPACE "\n " SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "d" - WHITESPACE " " - FROM_KW "from" - WHITESPACE " " - CURRENT_KW "current" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "d" + WHITESPACE " " + FROM_KW "from" + WHITESPACE " " + CURRENT_KW "current" WHITESPACE "\n " RESET_FUNC_OPTION RESET_KW "reset" @@ -240,16 +250,17 @@ SOURCE_FILE WHITESPACE "\n " FUNC_OPTION_LIST SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "c" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "v" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "c" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + IDENT "v" SEMICOLON ";" WHITESPACE "\n" ALTER_PROCEDURE @@ -265,16 +276,17 @@ SOURCE_FILE WHITESPACE "\n " FUNC_OPTION_LIST SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "c" - WHITESPACE " " - EQ "=" - WHITESPACE " " - IDENT "v" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "c" + WHITESPACE " " + EQ "=" + WHITESPACE " " + IDENT "v" SEMICOLON ";" WHITESPACE "\n" ALTER_PROCEDURE @@ -290,16 +302,17 @@ SOURCE_FILE WHITESPACE "\n " FUNC_OPTION_LIST SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "c" - WHITESPACE " " - EQ "=" - WHITESPACE " " - DEFAULT_KW "default" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "c" + WHITESPACE " " + EQ "=" + WHITESPACE " " + DEFAULT_KW "default" SEMICOLON ";" WHITESPACE "\n" ALTER_PROCEDURE @@ -315,16 +328,17 @@ SOURCE_FILE WHITESPACE "\n " FUNC_OPTION_LIST SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "c" - WHITESPACE " " - FROM_KW "from" - WHITESPACE " " - CURRENT_KW "current" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "c" + WHITESPACE " " + FROM_KW "from" + WHITESPACE " " + CURRENT_KW "current" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- reset_param" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_publication_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_publication_ok.snap index 08ffbd05..96d8e4e0 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_publication_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_publication_ok.snap @@ -232,27 +232,29 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - ATTRIBUTE_LIST - L_PAREN "(" - ATTRIBUTE_OPTION - NAME - IDENT "param1" - COMMA "," + SET_OPTIONS + SET_KW "set" WHITESPACE " " - ATTRIBUTE_OPTION - NAME - IDENT "param2" - WHITESPACE " " - EQ "=" + ATTRIBUTE_LIST + L_PAREN "(" + ATTRIBUTE_OPTION + NAME + IDENT "param1" + COMMA "," WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - VALUE_KW "value" - R_PAREN ")" + ATTRIBUTE_OPTION + NAME + IDENT "param2" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + VALUE_KW "value" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- drop_table" @@ -354,11 +356,14 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n" ALTER_PUBLICATION @@ -369,11 +374,13 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- rename" @@ -386,11 +393,12 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "q" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "q" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_role_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_role_ok.snap index 076075db..e49f9e20 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_role_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_role_ok.snap @@ -10,7 +10,9 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "role" WHITESPACE " " - IDENT "r" + ROLE + NAME_REF + IDENT "r" WHITESPACE " " ROLE_OPTION_LIST WITH_KW "with" @@ -26,7 +28,9 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "role" WHITESPACE " " - IDENT "r" + ROLE + NAME_REF + IDENT "r" WHITESPACE "\n " ROLE_OPTION_LIST WITH_KW "with" @@ -119,14 +123,17 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "role" WHITESPACE " " - IDENT "r" + ROLE + NAME_REF + IDENT "r" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "newname" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "newname" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_config" @@ -136,19 +143,22 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "role" WHITESPACE " " - IDENT "r" - WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "param" - WHITESPACE " " - EQ "=" + ROLE + NAME_REF + IDENT "r" WHITESPACE " " - LITERAL - STRING "'value'" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "param" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + STRING "'value'" SEMICOLON ";" WHITESPACE "\n" ALTER_ROLE @@ -156,19 +166,22 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "role" WHITESPACE " " - IDENT "r" + ROLE + NAME_REF + IDENT "r" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "param" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - LITERAL - STRING "'value'" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "param" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + LITERAL + STRING "'value'" SEMICOLON ";" WHITESPACE "\n" ALTER_ROLE @@ -176,18 +189,21 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "role" WHITESPACE " " - IDENT "r" - WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "param" - WHITESPACE " " - TO_KW "to" + ROLE + NAME_REF + IDENT "r" WHITESPACE " " - DEFAULT_KW "default" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "param" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + DEFAULT_KW "default" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_config_from_current" @@ -197,18 +213,21 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "role" WHITESPACE " " - IDENT "r" - WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "param" - WHITESPACE " " - FROM_KW "from" + ROLE + NAME_REF + IDENT "r" WHITESPACE " " - CURRENT_KW "current" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "param" + WHITESPACE " " + FROM_KW "from" + WHITESPACE " " + CURRENT_KW "current" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- reset_config" @@ -218,7 +237,9 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "role" WHITESPACE " " - IDENT "r" + ROLE + NAME_REF + IDENT "r" WHITESPACE " " RESET_KW "reset" WHITESPACE " " @@ -235,7 +256,9 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "role" WHITESPACE " " - IDENT "r" + ROLE + NAME_REF + IDENT "r" WHITESPACE " " RESET_KW "reset" WHITESPACE " " @@ -249,7 +272,9 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "role" WHITESPACE " " - IDENT "r" + ROLE + NAME_REF + IDENT "r" WHITESPACE " " IN_KW "in" WHITESPACE " " @@ -258,17 +283,18 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "param" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - LITERAL - STRING "'value'" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "param" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + LITERAL + STRING "'value'" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- using_current_user" @@ -278,7 +304,8 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "role" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE + CURRENT_USER_KW "current_user" WHITESPACE " " ROLE_OPTION_LIST WITH_KW "with" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_routine_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_routine_ok.snap index d8113dc9..6bb818d5 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_routine_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_routine_ok.snap @@ -34,12 +34,13 @@ SOURCE_FILE NAME_REF IDENT "r" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "n" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner" @@ -55,11 +56,13 @@ SOURCE_FILE NAME_REF IDENT "r" WHITESPACE "\n " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- schema" @@ -75,12 +78,13 @@ SOURCE_FILE NAME_REF IDENT "r" WHITESPACE "\n " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- depends" @@ -96,16 +100,15 @@ SOURCE_FILE NAME_REF IDENT "r" WHITESPACE "\n " - DEPENDS_KW "depends" - WHITESPACE " " - ON_KW "on" - WHITESPACE " " - EXTENSION_KW "extension" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "e" + DEPENDS_ON_EXTENSION + DEPENDS_KW "depends" + WHITESPACE " " + ON_KW "on" + WHITESPACE " " + EXTENSION_KW "extension" + WHITESPACE " " + NAME_REF + IDENT "e" SEMICOLON ";" WHITESPACE "\n\n" ALTER_ROUTINE @@ -119,18 +122,17 @@ SOURCE_FILE NAME_REF IDENT "r" WHITESPACE "\n " - NO_KW "no" - WHITESPACE " " - DEPENDS_KW "depends" - WHITESPACE " " - ON_KW "on" - WHITESPACE " " - EXTENSION_KW "extension" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "e" + NO_DEPENDS_ON_EXTENSION + NO_KW "no" + WHITESPACE " " + DEPENDS_KW "depends" + WHITESPACE " " + ON_KW "on" + WHITESPACE " " + EXTENSION_KW "extension" + WHITESPACE " " + NAME_REF + IDENT "e" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- no_depends" @@ -146,18 +148,17 @@ SOURCE_FILE NAME_REF IDENT "r" WHITESPACE "\n " - NO_KW "no" - WHITESPACE " " - DEPENDS_KW "depends" - WHITESPACE " " - ON_KW "on" - WHITESPACE " " - EXTENSION_KW "extension" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "e" + NO_DEPENDS_ON_EXTENSION + NO_KW "no" + WHITESPACE " " + DEPENDS_KW "depends" + WHITESPACE " " + ON_KW "on" + WHITESPACE " " + EXTENSION_KW "extension" + WHITESPACE " " + NAME_REF + IDENT "e" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- with_params" @@ -292,42 +293,45 @@ SOURCE_FILE INT_NUMBER "10" WHITESPACE "\n " SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "c" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - INT_NUMBER "1" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "c" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + INT_NUMBER "1" WHITESPACE "\n " SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "c" - WHITESPACE " " - EQ "=" - WHITESPACE " " - DEFAULT_KW "default" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "c" + WHITESPACE " " + EQ "=" + WHITESPACE " " + DEFAULT_KW "default" WHITESPACE "\n " SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "c" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - LITERAL - TRUE_KW "true" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "c" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + LITERAL + TRUE_KW "true" WHITESPACE "\n " RESET_FUNC_OPTION RESET_KW "reset" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_rule_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_rule_ok.snap index 73843531..10c3c04f 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_rule_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_rule_ok.snap @@ -13,19 +13,21 @@ SOURCE_FILE NAME_REF IDENT "r" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE " " - NAME - IDENT "n" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- with_schema" @@ -38,23 +40,25 @@ SOURCE_FILE NAME_REF IDENT "r" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH + ON_TABLE + ON_KW "on" + WHITESPACE " " PATH + PATH + PATH_SEGMENT + NAME_REF + SCHEMA_KW "schema" + DOT "." PATH_SEGMENT NAME_REF - SCHEMA_KW "schema" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "t" - WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" + IDENT "t" WHITESPACE " " - NAME - IDENT "n" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_schema_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_schema_ok.snap index a6a4a22d..ff32fa81 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_schema_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_schema_ok.snap @@ -13,12 +13,13 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "n" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner" @@ -31,11 +32,14 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n" ALTER_SCHEMA @@ -46,10 +50,12 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_sequence_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_sequence_ok.snap index bb4ad69b..289a1f03 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_sequence_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_sequence_ok.snap @@ -179,11 +179,14 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE "\n " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" ALTER_SEQUENCE @@ -196,11 +199,13 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE "\n " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- rename" @@ -215,12 +220,13 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "t" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "t" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- schema" @@ -235,11 +241,12 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE "\n " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "x" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "x" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_server_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_server_ok.snap index b56cfc9b..8d0fc93c 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_server_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_server_ok.snap @@ -66,11 +66,14 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE "\n " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n" ALTER_SERVER @@ -81,11 +84,13 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE "\n " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- rename" @@ -98,11 +103,12 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE "\n " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "t" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "t" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_statistics_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_statistics_ok.snap index 6c14a650..6b345e9e 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_statistics_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_statistics_ok.snap @@ -15,11 +15,14 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n" ALTER_STATISTICS @@ -37,11 +40,13 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- rename" @@ -56,12 +61,13 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME_REF - IDENT "n" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- schema" @@ -76,12 +82,13 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "n" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- statistics_value" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_subscription_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_subscription_ok.snap index af1d7435..e8085104 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_subscription_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_subscription_ok.snap @@ -75,8 +75,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - TRUE_KW "true" + ATTRIBUTE_VALUE + LITERAL + TRUE_KW "true" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -136,8 +137,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -197,8 +199,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -226,8 +229,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - FALSE_KW "false" + ATTRIBUTE_VALUE + LITERAL + FALSE_KW "false" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -267,29 +271,32 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - ATTRIBUTE_LIST - L_PAREN "(" - ATTRIBUTE_OPTION - NAME - IDENT "slot_name" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - STRING "'new_slot'" - COMMA "," + SET_OPTIONS + SET_KW "set" WHITESPACE " " - ATTRIBUTE_OPTION - NAME - IDENT "synchronous_commit" - WHITESPACE " " - EQ "=" + ATTRIBUTE_LIST + L_PAREN "(" + ATTRIBUTE_OPTION + NAME + IDENT "slot_name" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + LITERAL + STRING "'new_slot'" + COMMA "," WHITESPACE " " - LITERAL - STRING "'off'" - R_PAREN ")" + ATTRIBUTE_OPTION + NAME + IDENT "synchronous_commit" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + LITERAL + STRING "'off'" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- skip" @@ -312,8 +319,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'0/12345678'" + ATTRIBUTE_VALUE + LITERAL + STRING "'0/12345678'" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -327,11 +335,14 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n" ALTER_SUBSCRIPTION @@ -342,11 +353,13 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- rename" @@ -359,11 +372,12 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "t" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "t" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_system_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_system_ok.snap index 3a9b24a5..9d414175 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_system_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_system_ok.snap @@ -10,17 +10,18 @@ SOURCE_FILE WHITESPACE " " SYSTEM_KW "system" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - LITERAL - STRING "'v'" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + LITERAL + STRING "'v'" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_equals" @@ -30,17 +31,18 @@ SOURCE_FILE WHITESPACE " " SYSTEM_KW "system" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - STRING "'v'" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + STRING "'v'" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- schema" @@ -50,22 +52,23 @@ SOURCE_FILE WHITESPACE " " SYSTEM_KW "system" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "p" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - STRING "'v'" + IDENT "p" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + STRING "'v'" SEMICOLON ";" WHITESPACE "\n" ALTER_SYSTEM @@ -93,25 +96,26 @@ SOURCE_FILE WHITESPACE " " SYSTEM_KW "system" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - LITERAL - STRING "'v1'" - COMMA "," - WHITESPACE " " - LITERAL - STRING "'v2'" - COMMA "," - WHITESPACE " " - LITERAL - STRING "'v3'" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + LITERAL + STRING "'v1'" + COMMA "," + WHITESPACE " " + LITERAL + STRING "'v2'" + COMMA "," + WHITESPACE " " + LITERAL + STRING "'v3'" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_default" @@ -121,16 +125,17 @@ SOURCE_FILE WHITESPACE " " SYSTEM_KW "system" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - DEFAULT_KW "default" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + DEFAULT_KW "default" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- reset_param" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_table_err.snap b/crates/squawk_parser/tests/snapshots/tests__alter_table_err.snap index ae3394bd..5fa220d2 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_table_err.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_table_err.snap @@ -157,8 +157,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -202,8 +203,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_table_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_table_ok.snap index d966096e..4de6e680 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_table_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_table_ok.snap @@ -786,11 +786,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "bar" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "bar" COMMA "," WHITESPACE " " ATTRIBUTE_OPTION @@ -799,11 +800,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "b" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "b" WHITESPACE " " R_PAREN ")" SEMICOLON ";" @@ -920,16 +922,17 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH + ATTRIBUTE_VALUE + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "a" + DOT "." PATH_SEGMENT NAME_REF - IDENT "a" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "b" + IDENT "b" COMMA "," WHITESPACE " " ATTRIBUTE_OPTION @@ -938,8 +941,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'foo'" + ATTRIBUTE_VALUE + LITERAL + STRING "'foo'" COMMA "," WHITESPACE " " ATTRIBUTE_OPTION @@ -948,8 +952,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "10" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "10" COMMA "," WHITESPACE " " ATTRIBUTE_OPTION @@ -958,7 +963,8 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - CONSTRAINT_KW "constraint" + ATTRIBUTE_VALUE + CONSTRAINT_KW "constraint" WHITESPACE " " R_PAREN ")" SEMICOLON ";" @@ -2308,8 +2314,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - FALSE_KW "false" + ATTRIBUTE_VALUE + LITERAL + FALSE_KW "false" COMMA "," WHITESPACE " " ATTRIBUTE_OPTION @@ -2318,8 +2325,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - TRUE_KW "true" + ATTRIBUTE_VALUE + LITERAL + TRUE_KW "true" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -2407,8 +2415,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1" R_PAREN ")" WHITESPACE " \n " CONSTRAINT_INDEX_TABLESPACE @@ -2448,7 +2457,8 @@ SOURCE_FILE WHITESPACE " " WITH_KW "with" WHITESPACE " " - EQ "=" + OP + EQ "=" COMMA "," WHITESPACE "\n " CONSTRAINT_EXCLUSION @@ -2467,9 +2477,10 @@ SOURCE_FILE WHITESPACE " " WITH_KW "with" WHITESPACE " " - CUSTOM_OP - AMP "&" - AMP "&" + OP + CUSTOM_OP + AMP "&" + AMP "&" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -2506,7 +2517,8 @@ SOURCE_FILE WHITESPACE " " WITH_KW "with" WHITESPACE " " - EQ "=" + OP + EQ "=" COMMA "," WHITESPACE "\n " CONSTRAINT_EXCLUSION @@ -2525,9 +2537,10 @@ SOURCE_FILE WHITESPACE " " WITH_KW "with" WHITESPACE " " - CUSTOM_OP - AMP "&" - AMP "&" + OP + CUSTOM_OP + AMP "&" + AMP "&" WHITESPACE "\n" R_PAREN ")" WHITESPACE " " @@ -3295,7 +3308,7 @@ SOURCE_FILE WHITESPACE " " TO_KW "to" WHITESPACE " " - NAME_REF + NAME IDENT "product_number" SEMICOLON ";" WHITESPACE "\n\n" @@ -3327,7 +3340,7 @@ SOURCE_FILE WHITESPACE " " TO_KW "to" WHITESPACE " " - NAME_REF + NAME IDENT "d" SEMICOLON ";" WHITESPACE "\n\n" @@ -3354,7 +3367,7 @@ SOURCE_FILE WHITESPACE " " TO_KW "to" WHITESPACE " " - NAME_REF + NAME IDENT "d" SEMICOLON ";" WHITESPACE "\n\n" @@ -3371,12 +3384,12 @@ SOURCE_FILE NAME_REF IDENT "products" WHITESPACE " " - RENAME_TABLE + RENAME_TO RENAME_KW "rename" WHITESPACE " " TO_KW "to" WHITESPACE " " - NAME_REF + NAME IDENT "items" SEMICOLON ";" WHITESPACE "\n\n" @@ -3395,12 +3408,12 @@ SOURCE_FILE IDENT "a" R_PAREN ")" WHITESPACE " " - RENAME_TABLE + RENAME_TO RENAME_KW "rename" WHITESPACE " " TO_KW "to" WHITESPACE " " - NAME_REF + NAME IDENT "b" SEMICOLON ";" WHITESPACE "\n\n" @@ -3427,7 +3440,7 @@ SOURCE_FILE WHITESPACE " " TO_KW "to" WHITESPACE " " - NAME_REF + NAME IDENT "b" SEMICOLON ";" WHITESPACE "\n\n" @@ -3599,7 +3612,9 @@ SOURCE_FILE WHITESPACE " " TO_KW "to" WHITESPACE " " - IDENT "new_owner" + ROLE + NAME_REF + IDENT "new_owner" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- default" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_tablespace_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_tablespace_ok.snap index 9d115c4c..c3ef3f53 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_tablespace_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_tablespace_ok.snap @@ -15,12 +15,13 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "u" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner" @@ -35,11 +36,14 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n" ALTER_TABLESPACE @@ -52,11 +56,13 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_option" @@ -71,22 +77,24 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - ATTRIBUTE_LIST - L_PAREN "(" - ATTRIBUTE_OPTION - NAME - IDENT "o" - WHITESPACE " " - EQ "=" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "v" - R_PAREN ")" + SET_OPTIONS + SET_KW "set" + WHITESPACE " " + ATTRIBUTE_LIST + L_PAREN "(" + ATTRIBUTE_OPTION + NAME + IDENT "o" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "v" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_multiple_options" @@ -101,35 +109,38 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - ATTRIBUTE_LIST - L_PAREN "(" - ATTRIBUTE_OPTION - NAME - IDENT "o1" - WHITESPACE " " - EQ "=" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "v1" - COMMA "," + SET_OPTIONS + SET_KW "set" WHITESPACE " " - ATTRIBUTE_OPTION - NAME - IDENT "o2" - WHITESPACE " " - EQ "=" + ATTRIBUTE_LIST + L_PAREN "(" + ATTRIBUTE_OPTION + NAME + IDENT "o1" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "v1" + COMMA "," WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "v2" - R_PAREN ")" + ATTRIBUTE_OPTION + NAME + IDENT "o2" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "v2" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- reset_option" @@ -144,14 +155,15 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - RESET_KW "reset" - WHITESPACE " " - ATTRIBUTE_LIST - L_PAREN "(" - ATTRIBUTE_OPTION - NAME - IDENT "o" - R_PAREN ")" + RESET_OPTIONS + RESET_KW "reset" + WHITESPACE " " + ATTRIBUTE_LIST + L_PAREN "(" + ATTRIBUTE_OPTION + NAME + IDENT "o" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- reset_multiple_options" @@ -166,18 +178,19 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - RESET_KW "reset" - WHITESPACE " " - ATTRIBUTE_LIST - L_PAREN "(" - ATTRIBUTE_OPTION - NAME - IDENT "o1" - COMMA "," + RESET_OPTIONS + RESET_KW "reset" WHITESPACE " " - ATTRIBUTE_OPTION - NAME - IDENT "o2" - R_PAREN ")" + ATTRIBUTE_LIST + L_PAREN "(" + ATTRIBUTE_OPTION + NAME + IDENT "o1" + COMMA "," + WHITESPACE " " + ATTRIBUTE_OPTION + NAME + IDENT "o2" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_text_search_configuration_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_text_search_configuration_ok.snap index 5f35c387..06cdeffe 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_text_search_configuration_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_text_search_configuration_ok.snap @@ -422,14 +422,13 @@ SOURCE_FILE NAME_REF IDENT "n" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "m" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "m" SEMICOLON ";" WHITESPACE "\n\n" ALTER_TEXT_SEARCH_CONFIGURATION @@ -451,14 +450,13 @@ SOURCE_FILE NAME_REF IDENT "n" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "m" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "m" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner_to" @@ -477,11 +475,14 @@ SOURCE_FILE NAME_REF IDENT "n" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" ALTER_TEXT_SEARCH_CONFIGURATION @@ -503,11 +504,13 @@ SOURCE_FILE NAME_REF IDENT "n" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_schema" @@ -526,14 +529,13 @@ SOURCE_FILE NAME_REF IDENT "n" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" ALTER_TEXT_SEARCH_CONFIGURATION @@ -555,13 +557,12 @@ SOURCE_FILE NAME_REF IDENT "n" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_text_search_dictionary_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_text_search_dictionary_ok.snap index dc8670a8..b23b752d 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_text_search_dictionary_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_text_search_dictionary_ok.snap @@ -33,8 +33,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -60,12 +61,13 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "n" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner" @@ -84,11 +86,14 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n" ALTER_TEXT_SEARCH_DICTIONARY @@ -105,11 +110,13 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- schema" @@ -128,11 +135,12 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_text_search_parser_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_text_search_parser_ok.snap index c1e49690..865b2f39 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_text_search_parser_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_text_search_parser_ok.snap @@ -19,12 +19,13 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME_REF - IDENT "q" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "q" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_schema" @@ -43,12 +44,13 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" ALTER_TEXT_SEARCH_PARSER @@ -70,11 +72,12 @@ SOURCE_FILE NAME_REF IDENT "p" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_text_search_template_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_text_search_template_ok.snap index 8dfc99da..014cc9a7 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_text_search_template_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_text_search_template_ok.snap @@ -19,12 +19,13 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "u" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_schema" @@ -48,11 +49,12 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_trigger_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_trigger_ok.snap index 3230c414..d02eb55c 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_trigger_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_trigger_ok.snap @@ -13,19 +13,21 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "x" - WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME_REF - IDENT "u" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "x" + WHITESPACE " " + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- depends_on" @@ -38,21 +40,23 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "x" - WHITESPACE " " - DEPENDS_KW "depends" - WHITESPACE " " - ON_KW "on" - WHITESPACE " " - EXTENSION_KW "extension" - WHITESPACE " " - NAME_REF - IDENT "e" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "x" + WHITESPACE " " + DEPENDS_ON_EXTENSION + DEPENDS_KW "depends" + WHITESPACE " " + ON_KW "on" + WHITESPACE " " + EXTENSION_KW "extension" + WHITESPACE " " + NAME_REF + IDENT "e" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- full" @@ -65,27 +69,29 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH + ON_TABLE + ON_KW "on" + WHITESPACE " " PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "s" + DOT "." PATH_SEGMENT NAME_REF - IDENT "s" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "t" - WHITESPACE " " - NO_KW "no" - WHITESPACE " " - DEPENDS_KW "depends" - WHITESPACE " " - ON_KW "on" - WHITESPACE " " - EXTENSION_KW "extension" - WHITESPACE " " - NAME_REF - IDENT "e" + IDENT "t" + WHITESPACE " " + NO_DEPENDS_ON_EXTENSION + NO_KW "no" + WHITESPACE " " + DEPENDS_KW "depends" + WHITESPACE " " + ON_KW "on" + WHITESPACE " " + EXTENSION_KW "extension" + WHITESPACE " " + NAME_REF + IDENT "e" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_type_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_type_ok.snap index 71dd723a..417935e6 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_type_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_type_ok.snap @@ -15,11 +15,14 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n" ALTER_TYPE @@ -32,11 +35,13 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- rename" @@ -51,12 +56,13 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "u" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- schema" @@ -71,12 +77,13 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- rename_attribute" @@ -295,19 +302,21 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - ATTRIBUTE_LIST - L_PAREN "(" - ATTRIBUTE_OPTION - NAME - IDENT "p" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - STRING "'v'" - R_PAREN ")" + SET_OPTIONS + SET_KW "set" + WHITESPACE " " + ATTRIBUTE_LIST + L_PAREN "(" + ATTRIBUTE_OPTION + NAME + IDENT "p" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + LITERAL + STRING "'v'" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" ALTER_TYPE @@ -320,29 +329,32 @@ SOURCE_FILE NAME_REF IDENT "t" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - ATTRIBUTE_LIST - L_PAREN "(" - ATTRIBUTE_OPTION - NAME - IDENT "p" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - STRING "'v'" - COMMA "," + SET_OPTIONS + SET_KW "set" WHITESPACE " " - ATTRIBUTE_OPTION - NAME - IDENT "q" - WHITESPACE " " - EQ "=" + ATTRIBUTE_LIST + L_PAREN "(" + ATTRIBUTE_OPTION + NAME + IDENT "p" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + LITERAL + STRING "'v'" + COMMA "," WHITESPACE " " - LITERAL - STRING "'w'" - R_PAREN ")" + ATTRIBUTE_OPTION + NAME + IDENT "q" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + LITERAL + STRING "'w'" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- add_attribute" diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_user_mapping_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_user_mapping_ok.snap index 86babab0..7dad2c8a 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_user_mapping_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_user_mapping_ok.snap @@ -14,7 +14,8 @@ SOURCE_FILE WHITESPACE " " FOR_KW "for" WHITESPACE " " - CURRENT_ROLE_KW "current_role" + ROLE + CURRENT_ROLE_KW "current_role" WHITESPACE "\n " SERVER_KW "server" WHITESPACE " " diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_user_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_user_ok.snap index 340a8352..8219ef10 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_user_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_user_ok.snap @@ -10,7 +10,9 @@ SOURCE_FILE WHITESPACE " " USER_KW "user" WHITESPACE " " - IDENT "u" + ROLE + NAME_REF + IDENT "u" WHITESPACE " " ROLE_OPTION_LIST ROLE_OPTION @@ -24,7 +26,9 @@ SOURCE_FILE WHITESPACE " " USER_KW "user" WHITESPACE " " - IDENT "u" + ROLE + NAME_REF + IDENT "u" WHITESPACE " " ROLE_OPTION_LIST WITH_KW "with" @@ -114,14 +118,17 @@ SOURCE_FILE WHITESPACE " " USER_KW "user" WHITESPACE " " - IDENT "u" - WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME_REF - IDENT "v" + ROLE + NAME_REF + IDENT "u" + WHITESPACE " " + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "v" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set" @@ -131,19 +138,22 @@ SOURCE_FILE WHITESPACE " " USER_KW "user" WHITESPACE " " - IDENT "u" - WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - STRING "'value'" + ROLE + NAME_REF + IDENT "u" + WHITESPACE " " + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + STRING "'value'" SEMICOLON ";" WHITESPACE "\n" ALTER_USER @@ -151,19 +161,22 @@ SOURCE_FILE WHITESPACE " " USER_KW "user" WHITESPACE " " - IDENT "u" - WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - LITERAL - STRING "'value'" + ROLE + NAME_REF + IDENT "u" + WHITESPACE " " + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + LITERAL + STRING "'value'" SEMICOLON ";" WHITESPACE "\n" ALTER_USER @@ -171,18 +184,21 @@ SOURCE_FILE WHITESPACE " " USER_KW "user" WHITESPACE " " - IDENT "u" - WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - DEFAULT_KW "default" + ROLE + NAME_REF + IDENT "u" + WHITESPACE " " + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + DEFAULT_KW "default" SEMICOLON ";" WHITESPACE "\n\n" ALTER_USER @@ -190,7 +206,9 @@ SOURCE_FILE WHITESPACE " " USER_KW "user" WHITESPACE " " - IDENT "u" + ROLE + NAME_REF + IDENT "u" WHITESPACE " " IN_KW "in" WHITESPACE " " @@ -199,17 +217,18 @@ SOURCE_FILE NAME_REF IDENT "d" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - LITERAL - STRING "'value'" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + LITERAL + STRING "'value'" SEMICOLON ";" WHITESPACE "\n" ALTER_USER @@ -217,18 +236,21 @@ SOURCE_FILE WHITESPACE " " USER_KW "user" WHITESPACE " " - IDENT "u" - WHITESPACE " " - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" - WHITESPACE " " - FROM_KW "from" - WHITESPACE " " - CURRENT_KW "current" + ROLE + NAME_REF + IDENT "u" + WHITESPACE " " + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" + WHITESPACE " " + FROM_KW "from" + WHITESPACE " " + CURRENT_KW "current" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- reset" @@ -238,7 +260,9 @@ SOURCE_FILE WHITESPACE " " USER_KW "user" WHITESPACE " " - IDENT "u" + ROLE + NAME_REF + IDENT "u" WHITESPACE " " RESET_KW "reset" WHITESPACE " " @@ -251,7 +275,9 @@ SOURCE_FILE WHITESPACE " " USER_KW "user" WHITESPACE " " - IDENT "u" + ROLE + NAME_REF + IDENT "u" WHITESPACE " " RESET_KW "reset" WHITESPACE " " @@ -263,7 +289,9 @@ SOURCE_FILE WHITESPACE " " USER_KW "user" WHITESPACE " " - IDENT "u" + ROLE + NAME_REF + IDENT "u" WHITESPACE " " IN_KW "in" WHITESPACE " " diff --git a/crates/squawk_parser/tests/snapshots/tests__alter_view_ok.snap b/crates/squawk_parser/tests/snapshots/tests__alter_view_ok.snap index d768c394..846a789c 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_view_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_view_ok.snap @@ -94,11 +94,14 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - IDENT "u" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + NAME_REF + IDENT "u" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner_to_current_role" @@ -123,11 +126,13 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_ROLE_KW "current_role" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_ROLE_KW "current_role" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner_to_current_user" @@ -142,11 +147,13 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - CURRENT_USER_KW "current_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- owner_to_session_user" @@ -161,11 +168,13 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - SESSION_USER_KW "session_user" + OWNER_TO + OWNER_KW "owner" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + ROLE + SESSION_USER_KW "session_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- rename_to" @@ -180,12 +189,13 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE " " - RENAME_KW "rename" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - NAME - IDENT "n" + RENAME_TO + RENAME_KW "rename" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + NAME + IDENT "n" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- rename_column" @@ -246,12 +256,13 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - SCHEMA_KW "schema" - WHITESPACE " " - NAME_REF - IDENT "s" + SET_SCHEMA + SET_KW "set" + WHITESPACE " " + SCHEMA_KW "schema" + WHITESPACE " " + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- set_options" @@ -266,44 +277,48 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE " " - SET_KW "set" - WHITESPACE " " - ATTRIBUTE_LIST - L_PAREN "(" - ATTRIBUTE_OPTION - NAME - IDENT "a" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - STRING "'x'" - COMMA "," + SET_OPTIONS + SET_KW "set" WHITESPACE " " - ATTRIBUTE_OPTION - NAME - IDENT "b" + ATTRIBUTE_LIST + L_PAREN "(" + ATTRIBUTE_OPTION + NAME + IDENT "a" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + LITERAL + STRING "'x'" + COMMA "," WHITESPACE " " - EQ "=" + ATTRIBUTE_OPTION + NAME + IDENT "b" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "100" + COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "100" - COMMA "," - WHITESPACE " " - ATTRIBUTE_OPTION - NAME - IDENT "c" - COMMA "," - WHITESPACE " " - ATTRIBUTE_OPTION - NAME - IDENT "d" + ATTRIBUTE_OPTION + NAME + IDENT "c" + COMMA "," WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - TRUE_KW "true" - R_PAREN ")" + ATTRIBUTE_OPTION + NAME + IDENT "d" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ATTRIBUTE_VALUE + LITERAL + TRUE_KW "true" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- reset_options" @@ -318,23 +333,24 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE " " - RESET_KW "reset" - WHITESPACE " " - ATTRIBUTE_LIST - L_PAREN "(" - ATTRIBUTE_OPTION - NAME - IDENT "a" - COMMA "," - WHITESPACE " " - ATTRIBUTE_OPTION - NAME - IDENT "b" - COMMA "," + RESET_OPTIONS + RESET_KW "reset" WHITESPACE " " - ATTRIBUTE_OPTION - NAME - IDENT "c" - R_PAREN ")" + ATTRIBUTE_LIST + L_PAREN "(" + ATTRIBUTE_OPTION + NAME + IDENT "a" + COMMA "," + WHITESPACE " " + ATTRIBUTE_OPTION + NAME + IDENT "b" + COMMA "," + WHITESPACE " " + ATTRIBUTE_OPTION + NAME + IDENT "c" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__call_ok.snap b/crates/squawk_parser/tests/snapshots/tests__call_ok.snap index 605025f7..e1eaa3d2 100644 --- a/crates/squawk_parser/tests/snapshots/tests__call_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__call_ok.snap @@ -10,7 +10,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "do_db_maintenance" ARG_LIST L_PAREN "(" @@ -29,7 +29,7 @@ SOURCE_FILE IDENT "partman" DOT "." PATH_SEGMENT - NAME + NAME_REF IDENT "partition_data_proc" ARG_LIST L_PAREN "(" @@ -45,7 +45,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "do_db_maintenance" ARG_LIST L_PAREN "(" diff --git a/crates/squawk_parser/tests/snapshots/tests__close_ok.snap b/crates/squawk_parser/tests/snapshots/tests__close_ok.snap index 9bd292da..ede3740a 100644 --- a/crates/squawk_parser/tests/snapshots/tests__close_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__close_ok.snap @@ -8,7 +8,7 @@ SOURCE_FILE CLOSE CLOSE_KW "close" WHITESPACE " " - NAME + NAME_REF IDENT "foo" SEMICOLON ";" WHITESPACE "\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__comment_ok.snap b/crates/squawk_parser/tests/snapshots/tests__comment_ok.snap index 075eab13..1b1f95fb 100644 --- a/crates/squawk_parser/tests/snapshots/tests__comment_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__comment_ok.snap @@ -178,21 +178,22 @@ SOURCE_FILE WHITESPACE " " CAST_KW "cast" WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "s" - WHITESPACE " " - AS_KW "as" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - R_PAREN ")" + CAST_SIG + L_PAREN "(" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "s" + WHITESPACE " " + AS_KW "as" + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + R_PAREN ")" WHITESPACE " " IS_KW "is" WHITESPACE " " @@ -595,9 +596,10 @@ SOURCE_FILE WHITESPACE " " OPERATOR_KW "operator" WHITESPACE " " - CUSTOM_OP - AT "@" - R_ANGLE ">" + OP + CUSTOM_OP + AT "@" + R_ANGLE ">" L_PAREN "(" PATH_TYPE PATH @@ -626,9 +628,10 @@ SOURCE_FILE WHITESPACE " " OPERATOR_KW "operator" WHITESPACE " " - CUSTOM_OP - AT "@" - R_ANGLE ">" + OP + CUSTOM_OP + AT "@" + R_ANGLE ">" L_PAREN "(" CHAR_TYPE VARCHAR_KW "varchar" diff --git a/crates/squawk_parser/tests/snapshots/tests__copy_err.snap b/crates/squawk_parser/tests/snapshots/tests__copy_err.snap index 00f1f502..d3af7acb 100644 --- a/crates/squawk_parser/tests/snapshots/tests__copy_err.snap +++ b/crates/squawk_parser/tests/snapshots/tests__copy_err.snap @@ -10,7 +10,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "x" WHITESPACE " " COLUMN_LIST diff --git a/crates/squawk_parser/tests/snapshots/tests__copy_ok.snap b/crates/squawk_parser/tests/snapshots/tests__copy_ok.snap index d6edb1ef..05260e91 100644 --- a/crates/squawk_parser/tests/snapshots/tests__copy_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__copy_ok.snap @@ -10,7 +10,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "copytest" WHITESPACE " " FROM_KW "from" @@ -26,7 +26,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "country" WHITESPACE " " TO_KW "TO" @@ -49,7 +49,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "country" WHITESPACE " " FROM_KW "FROM" @@ -105,7 +105,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "country" WHITESPACE " " TO_KW "TO" @@ -123,7 +123,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "x" WHITESPACE " " COLUMN_LIST @@ -166,7 +166,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "copytest" WHITESPACE " " FROM_KW "from" @@ -191,7 +191,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "t" WHITESPACE " " FROM_KW "from" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_access_method_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_access_method_ok.snap index 84d4bd77..9c261db3 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_access_method_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_access_method_ok.snap @@ -21,12 +21,13 @@ SOURCE_FILE WHITESPACE " " TABLE_KW "table" WHITESPACE "\n " - HANDLER_KW "handler" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME - IDENT "f" + HANDLER_CLAUSE + HANDLER_KW "handler" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME + IDENT "f" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- full" @@ -47,16 +48,17 @@ SOURCE_FILE WHITESPACE " " INDEX_KW "index" WHITESPACE "\n " - HANDLER_KW "handler" - WHITESPACE " " - PATH + HANDLER_CLAUSE + HANDLER_KW "handler" + WHITESPACE " " PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "bar" + DOT "." PATH_SEGMENT - NAME_REF - IDENT "bar" - DOT "." - PATH_SEGMENT - NAME - IDENT "f" + NAME + IDENT "f" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_aggregate_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_aggregate_ok.snap index 5f8559c2..6a86f8f8 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_aggregate_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_aggregate_ok.snap @@ -24,11 +24,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -37,11 +38,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "f" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "f" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -50,11 +52,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "u" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "u" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -90,16 +93,17 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH + ATTRIBUTE_VALUE + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "input_type" + IDENT "input_type" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -108,16 +112,17 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH + ATTRIBUTE_VALUE + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "state_function" + IDENT "state_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -126,16 +131,17 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH + ATTRIBUTE_VALUE + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "state_type" + IDENT "state_type" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -144,8 +150,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1024" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1024" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -154,16 +161,17 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH + ATTRIBUTE_VALUE + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "final_function" + IDENT "final_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -172,8 +180,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - TRUE_KW "true" + ATTRIBUTE_VALUE + LITERAL + TRUE_KW "true" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -182,11 +191,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "read_only" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "read_only" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -195,16 +205,17 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH + ATTRIBUTE_VALUE + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "combine_function" + IDENT "combine_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -213,16 +224,17 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH + ATTRIBUTE_VALUE + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "serial_function" + IDENT "serial_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -231,16 +243,17 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH + ATTRIBUTE_VALUE + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "deserial_function" + IDENT "deserial_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -249,8 +262,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'0'" + ATTRIBUTE_VALUE + LITERAL + STRING "'0'" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -259,16 +273,17 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH + ATTRIBUTE_VALUE + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "moving_state_function" + IDENT "moving_state_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -277,16 +292,17 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH + ATTRIBUTE_VALUE + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "moving_inverse_function" + IDENT "moving_inverse_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -295,16 +311,17 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH + ATTRIBUTE_VALUE + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "moving_state_type" + IDENT "moving_state_type" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -313,8 +330,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "2048" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "2048" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -323,16 +341,17 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH + ATTRIBUTE_VALUE + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "moving_final_function" + IDENT "moving_final_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -341,8 +360,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - TRUE_KW "true" + ATTRIBUTE_VALUE + LITERAL + TRUE_KW "true" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -351,11 +371,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "shareable" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "shareable" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -364,8 +385,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'{\"initial\":\"value\"}'" + ATTRIBUTE_VALUE + LITERAL + STRING "'{\"initial\":\"value\"}'" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -374,7 +396,8 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - L_ANGLE "<" + ATTRIBUTE_VALUE + L_ANGLE "<" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -409,11 +432,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "f" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "f" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -422,11 +446,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -493,11 +518,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "f" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "f" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -506,11 +532,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -519,8 +546,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1024" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1024" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -529,11 +557,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "ff" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "ff" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -547,11 +576,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "read_only" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "read_only" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -560,11 +590,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "cf" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "cf" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -573,11 +604,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "sf" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "sf" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -586,11 +618,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "df" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "df" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -599,8 +632,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'0'" + ATTRIBUTE_VALUE + LITERAL + STRING "'0'" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -609,11 +643,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "msf" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "msf" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -622,11 +657,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "mif" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "mif" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -635,11 +671,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "mt" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "mt" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -648,8 +685,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "2048" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "2048" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -658,11 +696,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "mff" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "mff" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -676,11 +715,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "shareable" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "shareable" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -689,8 +729,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'{\"initial\":\"value\"}'" + ATTRIBUTE_VALUE + LITERAL + STRING "'{\"initial\":\"value\"}'" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -699,7 +740,8 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - L_ANGLE "<" + ATTRIBUTE_VALUE + L_ANGLE "<" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -708,11 +750,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "safe" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "safe" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -795,11 +838,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "percentile_disc_transition" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "percentile_disc_transition" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -808,11 +852,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "internal" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "internal" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -821,8 +866,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1024" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1024" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -831,11 +877,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "percentile_disc_final" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "percentile_disc_final" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -849,11 +896,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "read_only" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "read_only" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -862,8 +910,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'0.5'" + ATTRIBUTE_VALUE + LITERAL + STRING "'0.5'" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -872,11 +921,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "safe" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "safe" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -917,11 +967,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "array_append" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "array_append" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -930,11 +981,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "anycompatiblearray" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "anycompatiblearray" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -943,8 +995,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'{}'" + ATTRIBUTE_VALUE + LITERAL + STRING "'{}'" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -980,11 +1033,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "array_agg_transfn" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "array_agg_transfn" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -993,11 +1047,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "internal" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "internal" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1006,11 +1061,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "array_agg_finalfn" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "array_agg_finalfn" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1062,11 +1118,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "ordered_set_transition" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "ordered_set_transition" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1075,11 +1132,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "internal" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "internal" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1088,11 +1146,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "percentile_disc_final" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "percentile_disc_final" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1133,11 +1192,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "complex_add" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "complex_add" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1146,11 +1206,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "complex" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "complex" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1159,8 +1220,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'(0,0)'" + ATTRIBUTE_VALUE + LITERAL + STRING "'(0,0)'" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1169,11 +1231,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "complex_add" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "complex_add" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1182,11 +1245,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "complex_sub" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "complex_sub" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1195,11 +1259,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "complex" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "complex" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1208,8 +1273,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'(0,0)'" + ATTRIBUTE_VALUE + LITERAL + STRING "'(0,0)'" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -1245,11 +1311,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "float8" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "float8" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1258,11 +1325,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "float8pl" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "float8pl" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1271,11 +1339,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "float8" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "float8" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1284,11 +1353,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "float8pl" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "float8pl" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1297,11 +1367,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "float8mi" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "float8mi" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_cast_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_cast_ok.snap index a04b745e..e1166dc6 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_cast_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_cast_ok.snap @@ -10,21 +10,22 @@ SOURCE_FILE WHITESPACE " " CAST_KW "cast" WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - WHITESPACE " " - AS_KW "as" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "u" - R_PAREN ")" + CAST_SIG + L_PAREN "(" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + WHITESPACE " " + AS_KW "as" + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "u" + R_PAREN ")" WHITESPACE "\n " WITHOUT_KW "without" WHITESPACE " " @@ -38,21 +39,22 @@ SOURCE_FILE WHITESPACE " " CAST_KW "cast" WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" - WHITESPACE " " - AS_KW "as" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "u" - R_PAREN ")" + CAST_SIG + L_PAREN "(" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + WHITESPACE " " + AS_KW "as" + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "u" + R_PAREN ")" WHITESPACE "\n " WITH_KW "with" WHITESPACE " " @@ -70,31 +72,32 @@ SOURCE_FILE WHITESPACE " " CAST_KW "cast" WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH + CAST_SIG + L_PAREN "(" + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "t" - WHITESPACE " " - AS_KW "as" - WHITESPACE " " - PATH_TYPE - PATH + IDENT "t" + WHITESPACE " " + AS_KW "as" + WHITESPACE " " + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "bar" + DOT "." PATH_SEGMENT NAME_REF - IDENT "bar" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "u" - R_PAREN ")" + IDENT "u" + R_PAREN ")" WHITESPACE "\n " WITH_KW "with" WHITESPACE " " diff --git a/crates/squawk_parser/tests/snapshots/tests__create_collation_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_collation_ok.snap index 1c2c4eb2..ddd00ad0 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_collation_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_collation_ok.snap @@ -93,8 +93,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'foo'" + ATTRIBUTE_VALUE + LITERAL + STRING "'foo'" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -103,8 +104,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -113,8 +115,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - FALSE_KW "false" + ATTRIBUTE_VALUE + LITERAL + FALSE_KW "false" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -123,8 +126,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'foo'" + ATTRIBUTE_VALUE + LITERAL + STRING "'foo'" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -133,8 +137,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - FALSE_KW "false" + ATTRIBUTE_VALUE + LITERAL + FALSE_KW "false" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -143,11 +148,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "r" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "r" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -156,8 +162,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'100'" + ATTRIBUTE_VALUE + LITERAL + STRING "'100'" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_database_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_database_ok.snap index c551dac9..2eebeb32 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_database_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_database_ok.snap @@ -12,6 +12,7 @@ SOURCE_FILE WHITESPACE " " NAME IDENT "d" + CREATE_DATABASE_OPTION_LIST SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- full" @@ -24,122 +25,140 @@ SOURCE_FILE NAME IDENT "d" WHITESPACE "\n " - WITH_KW "with" - WHITESPACE " " - OWNER_KW "owner" - WHITESPACE " " - LITERAL - STRING "'foo'" - WHITESPACE "\n " - TEMPLATE_KW "template" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - STRING "'foo'" - WHITESPACE "\n " - ENCODING_KW "encoding" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - STRING "'utf-8'" - WHITESPACE "\n " - IDENT "strategy" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - INT_NUMBER "10" - WHITESPACE "\n " - IDENT "locale" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - STRING "'fr_FR'" - WHITESPACE "\n " - IDENT "lc_collate" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - STRING "'fr_FR'" - WHITESPACE "\n " - IDENT "lc_ctyep" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - INT_NUMBER "10" - WHITESPACE "\n " - IDENT "builtin_locale" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - STRING "'en'" - WHITESPACE "\n " - IDENT "icu_locale" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - STRING "'en'" - WHITESPACE "\n " - IDENT "icu_rules" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - STRING "''" - WHITESPACE "\n " - IDENT "locale_provider" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - STRING "'./foo/bar'" - WHITESPACE "\n " - IDENT "collation_version" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - INT_NUMBER "10" - WHITESPACE "\n " - TABLESPACE_KW "tablespace" - WHITESPACE " " - EQ "=" - WHITESPACE " " - FULL_KW "full" - WHITESPACE "\n " - IDENT "allow_connections" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - FALSE_KW "false" - WHITESPACE "\n " - CONNECTION_KW "connection" - WHITESPACE " " - LIMIT_KW "limit" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - INT_NUMBER "1000" - WHITESPACE "\n " - IDENT "is_template" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - FALSE_KW "false" - WHITESPACE "\n " - IDENT "oid" - WHITESPACE " " - LITERAL - INT_NUMBER "1010" + CREATE_DATABASE_OPTION_LIST + WITH_KW "with" + WHITESPACE " " + CREATE_DATABASE_OPTION + OWNER_KW "owner" + WHITESPACE " " + LITERAL + STRING "'foo'" + WHITESPACE "\n " + CREATE_DATABASE_OPTION + TEMPLATE_KW "template" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + STRING "'foo'" + WHITESPACE "\n " + CREATE_DATABASE_OPTION + ENCODING_KW "encoding" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + STRING "'utf-8'" + WHITESPACE "\n " + CREATE_DATABASE_OPTION + IDENT "strategy" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + INT_NUMBER "10" + WHITESPACE "\n " + CREATE_DATABASE_OPTION + IDENT "locale" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + STRING "'fr_FR'" + WHITESPACE "\n " + CREATE_DATABASE_OPTION + IDENT "lc_collate" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + STRING "'fr_FR'" + WHITESPACE "\n " + CREATE_DATABASE_OPTION + IDENT "lc_ctyep" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + INT_NUMBER "10" + WHITESPACE "\n " + CREATE_DATABASE_OPTION + IDENT "builtin_locale" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + STRING "'en'" + WHITESPACE "\n " + CREATE_DATABASE_OPTION + IDENT "icu_locale" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + STRING "'en'" + WHITESPACE "\n " + CREATE_DATABASE_OPTION + IDENT "icu_rules" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + STRING "''" + WHITESPACE "\n " + CREATE_DATABASE_OPTION + IDENT "locale_provider" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + STRING "'./foo/bar'" + WHITESPACE "\n " + CREATE_DATABASE_OPTION + IDENT "collation_version" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + INT_NUMBER "10" + WHITESPACE "\n " + CREATE_DATABASE_OPTION + TABLESPACE_KW "tablespace" + WHITESPACE " " + EQ "=" + WHITESPACE " " + FULL_KW "full" + WHITESPACE "\n " + CREATE_DATABASE_OPTION + IDENT "allow_connections" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + FALSE_KW "false" + WHITESPACE "\n " + CREATE_DATABASE_OPTION + CONNECTION_KW "connection" + WHITESPACE " " + LIMIT_KW "limit" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + INT_NUMBER "1000" + WHITESPACE "\n " + CREATE_DATABASE_OPTION + IDENT "is_template" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + FALSE_KW "false" + WHITESPACE "\n " + CREATE_DATABASE_OPTION + IDENT "oid" + WHITESPACE " " + LITERAL + INT_NUMBER "1010" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_domain_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_domain_ok.snap index 804b4948..01de4547 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_domain_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_domain_ok.snap @@ -62,7 +62,7 @@ SOURCE_FILE CHECK_CONSTRAINT CONSTRAINT_KW "constraint" WHITESPACE " " - NAME_REF + NAME IDENT "c" WHITESPACE " " CHECK_KW "check" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_event_trigger_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_event_trigger_ok.snap index 309a5081..a23bb5aa 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_event_trigger_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_event_trigger_ok.snap @@ -17,7 +17,8 @@ SOURCE_FILE WHITESPACE " " ON_KW "on" WHITESPACE " " - IDENT "e" + NAME_REF + IDENT "e" WHITESPACE "\n " EXECUTE_KW "execute" WHITESPACE " " @@ -45,39 +46,43 @@ SOURCE_FILE WHITESPACE " " ON_KW "on" WHITESPACE " " - IDENT "e" - WHITESPACE "\n " - WHEN_KW "when" - WHITESPACE " " - NAME_REF - IDENT "x" - WHITESPACE " " - IN_KW "in" - WHITESPACE " " - L_PAREN "(" - LITERAL - STRING "'foo'" - COMMA "," - WHITESPACE " " - LITERAL - STRING "'bar'" - COMMA "," - WHITESPACE " " - LITERAL - STRING "'buzz'" - R_PAREN ")" - WHITESPACE "\n " - AND_KW "and" - WHITESPACE " " NAME_REF - REAL_KW "real" - WHITESPACE " " - IN_KW "in" - WHITESPACE " " - L_PAREN "(" - LITERAL - STRING "'a'" - R_PAREN ")" + IDENT "e" + WHITESPACE "\n " + EVENT_TRIGGER_WHEN_CLAUSE + WHEN_KW "when" + WHITESPACE " " + EVENT_TRIGGER_WHEN + NAME_REF + IDENT "x" + WHITESPACE " " + IN_KW "in" + WHITESPACE " " + L_PAREN "(" + LITERAL + STRING "'foo'" + COMMA "," + WHITESPACE " " + LITERAL + STRING "'bar'" + COMMA "," + WHITESPACE " " + LITERAL + STRING "'buzz'" + R_PAREN ")" + WHITESPACE "\n " + AND_KW "and" + WHITESPACE " " + EVENT_TRIGGER_WHEN + NAME_REF + REAL_KW "real" + WHITESPACE " " + IN_KW "in" + WHITESPACE " " + L_PAREN "(" + LITERAL + STRING "'a'" + R_PAREN ")" WHITESPACE "\n " EXECUTE_KW "execute" WHITESPACE " " @@ -109,7 +114,8 @@ SOURCE_FILE WHITESPACE " " ON_KW "ON" WHITESPACE " " - IDENT "ddl_command_start" + NAME_REF + IDENT "ddl_command_start" WHITESPACE "\n " EXECUTE_KW "EXECUTE" WHITESPACE " " diff --git a/crates/squawk_parser/tests/snapshots/tests__create_foreign_data_wrapper_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_foreign_data_wrapper_ok.snap index b1c8b369..c7de3fc2 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_foreign_data_wrapper_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_foreign_data_wrapper_ok.snap @@ -32,56 +32,62 @@ SOURCE_FILE NAME IDENT "w" WHITESPACE "\n " - HANDLER_KW "handler" - WHITESPACE " " - PATH - PATH - PATH_SEGMENT - NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "bar" - WHITESPACE "\n " - NO_KW "no" - WHITESPACE " " - HANDLER_KW "handler" - WHITESPACE "\n " - VALIDATOR_KW "validator" - WHITESPACE " " - PATH - PATH - PATH_SEGMENT - NAME_REF - IDENT "f" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "bar" - WHITESPACE "\n " - NO_KW "no" - WHITESPACE " " - VALIDATOR_KW "validator" - WHITESPACE "\n " - ALTER_OPTION_LIST - OPTIONS_KW "options" - WHITESPACE " " - L_PAREN "(" - ALTER_OPTION - NAME - IDENT "a" + FDW_OPTION_LIST + FDW_OPTION + HANDLER_KW "handler" + WHITESPACE " " + PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." + PATH_SEGMENT + NAME_REF + IDENT "bar" + WHITESPACE "\n " + FDW_OPTION + NO_KW "no" + WHITESPACE " " + HANDLER_KW "handler" + WHITESPACE "\n " + FDW_OPTION + VALIDATOR_KW "validator" WHITESPACE " " - LITERAL - STRING "'foo'" - COMMA "," - WHITESPACE " " - ALTER_OPTION - NAME - IDENT "b" + PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "f" + DOT "." + PATH_SEGMENT + NAME_REF + IDENT "bar" + WHITESPACE "\n " + FDW_OPTION + NO_KW "no" WHITESPACE " " - LITERAL - STRING "'bar'" - R_PAREN ")" + VALIDATOR_KW "validator" + WHITESPACE "\n " + FDW_OPTION + ALTER_OPTION_LIST + OPTIONS_KW "options" + WHITESPACE " " + L_PAREN "(" + ALTER_OPTION + NAME + IDENT "a" + WHITESPACE " " + LITERAL + STRING "'foo'" + COMMA "," + WHITESPACE " " + ALTER_OPTION + NAME + IDENT "b" + WHITESPACE " " + LITERAL + STRING "'bar'" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_foreign_table_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_foreign_table_ok.snap index b697133b..3249b5d0 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_foreign_table_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_foreign_table_ok.snap @@ -106,7 +106,7 @@ SOURCE_FILE NOT_NULL_CONSTRAINT CONSTRAINT_KW "constraint" WHITESPACE " " - NAME_REF + NAME IDENT "c" WHITESPACE "\n " NOT_KW "not" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_function_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_function_ok.snap index decbdfdc..bf71d3a7 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_function_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_function_ok.snap @@ -132,19 +132,20 @@ SOURCE_FILE COMMENT "-- Set a secure search_path: trusted schema(s), then 'pg_temp'." WHITESPACE "\n " SET_FUNC_OPTION - SET_KW "SET" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "search_path" - WHITESPACE " " - EQ "=" - WHITESPACE " " - ADMIN_KW "admin" - COMMA "," - WHITESPACE " " - IDENT "pg_temp" + SET_CONFIG_PARAM + SET_KW "SET" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "search_path" + WHITESPACE " " + EQ "=" + WHITESPACE " " + ADMIN_KW "admin" + COMMA "," + WHITESPACE " " + IDENT "pg_temp" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- create_function_with_percent_type" @@ -1501,21 +1502,22 @@ SOURCE_FILE WHITESPACE "\n" FUNC_OPTION_LIST SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "bar" - WHITESPACE " " - FROM_KW "from" - WHITESPACE " " - CURRENT_KW "current" + IDENT "bar" + WHITESPACE " " + FROM_KW "from" + WHITESPACE " " + CURRENT_KW "current" WHITESPACE "\n" AS_FUNC_OPTION AS_KW "as" @@ -1553,17 +1555,18 @@ SOURCE_FILE WHITESPACE "\n" FUNC_OPTION_LIST SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "bar" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - LITERAL - STRING "'foo'" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "bar" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + LITERAL + STRING "'foo'" WHITESPACE "\n" AS_FUNC_OPTION AS_KW "as" @@ -1601,17 +1604,18 @@ SOURCE_FILE WHITESPACE "\n" FUNC_OPTION_LIST SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "bar" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - INT_NUMBER "1" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "bar" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + INT_NUMBER "1" WHITESPACE "\n" AS_FUNC_OPTION AS_KW "as" @@ -2015,22 +2019,23 @@ SOURCE_FILE IDENT "bar" WHITESPACE "\n " SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "a" + DOT "." PATH_SEGMENT NAME_REF - IDENT "a" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "b" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - INT_NUMBER "10" + IDENT "b" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + INT_NUMBER "10" WHITESPACE "\n " AS_FUNC_OPTION AS_KW "as" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_group_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_group_ok.snap index 4a4f0348..048e5497 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_group_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_group_ok.snap @@ -112,39 +112,60 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "role" WHITESPACE " " - IDENT "foo" - COMMA "," - WHITESPACE " " - IDENT "bar" - COMMA "," - WHITESPACE " " - IDENT "buzz" + ROLE_LIST + ROLE + NAME_REF + IDENT "foo" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "bar" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "buzz" WHITESPACE "\n " ROLE_OPTION IN_KW "in" WHITESPACE " " GROUP_KW "group" WHITESPACE " " - IDENT "foo" + ROLE_LIST + ROLE + NAME_REF + IDENT "foo" WHITESPACE "\n " ROLE_OPTION ROLE_KW "role" WHITESPACE " " - IDENT "r" - COMMA "," - WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + NAME_REF + IDENT "r" + COMMA "," + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" WHITESPACE "\n " ROLE_OPTION ADMIN_KW "admin" WHITESPACE " " - IDENT "foo" - COMMA "," - WHITESPACE " " - IDENT "bar" - COMMA "," - WHITESPACE " " - IDENT "buzz" + ROLE_LIST + ROLE + NAME_REF + IDENT "foo" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "bar" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "buzz" WHITESPACE "\n " ROLE_OPTION SYSID_KW "sysid" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_index_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_index_ok.snap index c14e6837..10d51736 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_index_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_index_ok.snap @@ -171,7 +171,8 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PRIMARY_KW "primary" + ATTRIBUTE_VALUE + PRIMARY_KW "primary" COMMA "," WHITESPACE " " ATTRIBUTE_OPTION @@ -180,7 +181,8 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - DEFAULT_KW "default" + ATTRIBUTE_VALUE + DEFAULT_KW "default" R_PAREN ")" COMMA "," WHITESPACE "\n " @@ -198,7 +200,8 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PRIMARY_KW "primary" + ATTRIBUTE_VALUE + PRIMARY_KW "primary" R_PAREN ")" WHITESPACE "\n" R_PAREN ")" @@ -302,11 +305,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "bar" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "bar" COMMA "," WHITESPACE " " ATTRIBUTE_OPTION @@ -505,8 +509,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - OFF_KW "off" + ATTRIBUTE_VALUE + LITERAL + OFF_KW "off" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -635,8 +640,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "70" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "70" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -680,8 +686,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - OFF_KW "off" + ATTRIBUTE_VALUE + LITERAL + OFF_KW "off" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_materialized_view_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_materialized_view_ok.snap index fecc407b..d1fd5905 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_materialized_view_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_materialized_view_ok.snap @@ -89,8 +89,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "10" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "10" COMMA "," WHITESPACE " " ATTRIBUTE_OPTION @@ -104,8 +105,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - TRUE_KW "true" + ATTRIBUTE_VALUE + LITERAL + TRUE_KW "true" R_PAREN ")" WHITESPACE "\n " TABLESPACE @@ -135,11 +137,12 @@ SOURCE_FILE LITERAL INT_NUMBER "3" WHITESPACE "\n " - WITH_KW "with" - WHITESPACE " " - NO_KW "no" - WHITESPACE " " - DATA_KW "data" + WITH_NO_DATA + WITH_KW "with" + WHITESPACE " " + NO_KW "no" + WHITESPACE " " + DATA_KW "data" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- table" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_operator_class_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_operator_class_ok.snap index b3e5969f..5190518a 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_operator_class_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_operator_class_ok.snap @@ -34,13 +34,15 @@ SOURCE_FILE WHITESPACE " " AS_KW "as" WHITESPACE " " - STORAGE_KW "storage" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "s" + OPERATOR_CLASS_OPTION_LIST + OP_CLASS_OPTION + STORAGE_KW "storage" + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- full" @@ -94,227 +96,243 @@ SOURCE_FILE WHITESPACE " " AS_KW "as" WHITESPACE " \n " - STORAGE_KW "storage" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "s" - COMMA "," - WHITESPACE "\n " - OPERATOR_KW "operator" - WHITESPACE " " - LITERAL - INT_NUMBER "1" - WHITESPACE " " - CUSTOM_OP - AMP "&" - AMP "&" - COMMA "," - WHITESPACE "\n " - OPERATOR_KW "operator" - WHITESPACE " " - LITERAL - INT_NUMBER "100" - WHITESPACE " " - CUSTOM_OP - L_ANGLE "<" - L_ANGLE "<" - L_ANGLE "<" - L_ANGLE "<" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - TEXT_KW "text" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH - PATH_SEGMENT - NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - BIGINT_KW "bigint" - R_PAREN ")" - WHITESPACE " " - FOR_KW "for" - WHITESPACE " " - SEARCH_KW "search" - COMMA "," - WHITESPACE "\n " - OPERATOR_KW "operator" - WHITESPACE " " - LITERAL - INT_NUMBER "100" - WHITESPACE " " - CUSTOM_OP - POUND "#" - WHITESPACE " " - L_PAREN "(" - CHAR_TYPE - VARCHAR_KW "varchar" - ARG_LIST - L_PAREN "(" - ARG - LITERAL - INT_NUMBER "100" - R_PAREN ")" - COMMA "," - WHITESPACE " " - CHAR_TYPE - VARCHAR_KW "varchar" - ARG_LIST - L_PAREN "(" - ARG - LITERAL - INT_NUMBER "10" - R_PAREN ")" - R_PAREN ")" - WHITESPACE " " - FOR_KW "for" - WHITESPACE " " - ORDER_KW "order" - WHITESPACE " " - BY_KW "by" - WHITESPACE " " - PATH - PATH - PATH_SEGMENT - NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "bar" - COMMA "," - WHITESPACE "\n " - FUNCTION_KW "function" - WHITESPACE " " - LITERAL - INT_NUMBER "1010" - WHITESPACE " " - FUNCTION_SIG - PATH - PATH_SEGMENT - NAME_REF - IDENT "foo" - COMMA "," - WHITESPACE "\n " - FUNCTION_KW "function" - WHITESPACE " " - LITERAL - INT_NUMBER "1010" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - BIGINT_KW "bigint" - R_PAREN ")" - WHITESPACE " " - FUNCTION_SIG - PATH - PATH - PATH_SEGMENT - NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "bar" - PARAM_LIST + OPERATOR_CLASS_OPTION_LIST + OP_CLASS_OPTION + STORAGE_KW "storage" + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "s" + COMMA "," + WHITESPACE "\n " + OP_CLASS_OPTION + OPERATOR_KW "operator" + WHITESPACE " " + LITERAL + INT_NUMBER "1" + WHITESPACE " " + OP + CUSTOM_OP + AMP "&" + AMP "&" + COMMA "," + WHITESPACE "\n " + OP_CLASS_OPTION + OPERATOR_KW "operator" + WHITESPACE " " + LITERAL + INT_NUMBER "100" + WHITESPACE " " + OP + CUSTOM_OP + L_ANGLE "<" + L_ANGLE "<" + L_ANGLE "<" + L_ANGLE "<" + WHITESPACE " " L_PAREN "(" - PARAM - PARAM_IN - IN_KW "in" - WHITESPACE " " - NAME - IDENT "b" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - TEXT_KW "text" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" COMMA "," WHITESPACE " " - PARAM - PARAM_OUT - OUT_KW "out" - WHITESPACE " " - NAME - IDENT "a" - WHITESPACE " " - PATH_TYPE + PATH_TYPE + PATH PATH PATH_SEGMENT NAME_REF - TEXT_KW "text" + IDENT "foo" + DOT "." + PATH_SEGMENT + NAME_REF + BIGINT_KW "bigint" + R_PAREN ")" + WHITESPACE " " + FOR_KW "for" + WHITESPACE " " + SEARCH_KW "search" + COMMA "," + WHITESPACE "\n " + OP_CLASS_OPTION + OPERATOR_KW "operator" + WHITESPACE " " + LITERAL + INT_NUMBER "100" + WHITESPACE " " + OP + CUSTOM_OP + POUND "#" + WHITESPACE " " + L_PAREN "(" + CHAR_TYPE + VARCHAR_KW "varchar" + ARG_LIST + L_PAREN "(" + ARG + LITERAL + INT_NUMBER "100" + R_PAREN ")" COMMA "," WHITESPACE " " - PARAM - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - TEXT_KW "text" + CHAR_TYPE + VARCHAR_KW "varchar" + ARG_LIST + L_PAREN "(" + ARG + LITERAL + INT_NUMBER "10" + R_PAREN ")" R_PAREN ")" - COMMA "," - WHITESPACE "\n " - FUNCTION_KW "function" - WHITESPACE " " - LITERAL - INT_NUMBER "1010" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - BIGINT_KW "bigint" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - SMALLINT_KW "smallint" - R_PAREN ")" - WHITESPACE " " - FUNCTION_SIG - PATH + WHITESPACE " " + FOR_KW "for" + WHITESPACE " " + ORDER_KW "order" + WHITESPACE " " + BY_KW "by" + WHITESPACE " " PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "bar" - PARAM_LIST - L_PAREN "(" - PARAM - PATH_TYPE + IDENT "bar" + COMMA "," + WHITESPACE "\n " + OP_CLASS_OPTION + FUNCTION_KW "function" + WHITESPACE " " + LITERAL + INT_NUMBER "1010" + WHITESPACE " " + FUNCTION_SIG + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + COMMA "," + WHITESPACE "\n " + OP_CLASS_OPTION + FUNCTION_KW "function" + WHITESPACE " " + LITERAL + INT_NUMBER "1010" + WHITESPACE " " + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + BIGINT_KW "bigint" + R_PAREN ")" + WHITESPACE " " + FUNCTION_SIG + PATH PATH PATH_SEGMENT NAME_REF - TEXT_KW "text" - COMMA "," + IDENT "foo" + DOT "." + PATH_SEGMENT + NAME_REF + IDENT "bar" + PARAM_LIST + L_PAREN "(" + PARAM + PARAM_IN + IN_KW "in" + WHITESPACE " " + NAME + IDENT "b" + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" + COMMA "," + WHITESPACE " " + PARAM + PARAM_OUT + OUT_KW "out" + WHITESPACE " " + NAME + IDENT "a" + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" + COMMA "," + WHITESPACE " " + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" + R_PAREN ")" + COMMA "," + WHITESPACE "\n " + OP_CLASS_OPTION + FUNCTION_KW "function" WHITESPACE " " - PARAM - PATH_TYPE + LITERAL + INT_NUMBER "1010" + WHITESPACE " " + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + BIGINT_KW "bigint" + COMMA "," + WHITESPACE " " + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + SMALLINT_KW "smallint" + R_PAREN ")" + WHITESPACE " " + FUNCTION_SIG + PATH PATH PATH_SEGMENT NAME_REF - TEXT_KW "text" - R_PAREN ")" + IDENT "foo" + DOT "." + PATH_SEGMENT + NAME_REF + IDENT "bar" + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" + COMMA "," + WHITESPACE " " + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_operator_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_operator_ok.snap index abe6c9ae..a078a0ab 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_operator_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_operator_ok.snap @@ -10,7 +10,8 @@ SOURCE_FILE WHITESPACE " " OPERATOR_KW "operator" WHITESPACE " " - R_ANGLE ">" + OP + R_ANGLE ">" WHITESPACE " " ATTRIBUTE_LIST L_PAREN "(" @@ -21,11 +22,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "f" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "f" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -37,8 +39,9 @@ SOURCE_FILE WHITESPACE " " OPERATOR_KW "operator" WHITESPACE " " - CUSTOM_OP - POUND "#" + OP + CUSTOM_OP + POUND "#" WHITESPACE " " ATTRIBUTE_LIST L_PAREN "(" @@ -49,11 +52,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "p" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "p" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -65,23 +69,24 @@ SOURCE_FILE WHITESPACE " " OPERATOR_KW "operator" WHITESPACE " " - PATH + OP PATH PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" + IDENT "bar" DOT "." PATH_SEGMENT - NAME_REF - IDENT "bar" - DOT "." - PATH_SEGMENT - CUSTOM_OP - R_ANGLE ">" - R_ANGLE ">" - MINUS "-" - POUND "#" + CUSTOM_OP + R_ANGLE ">" + R_ANGLE ">" + MINUS "-" + POUND "#" WHITESPACE " " ATTRIBUTE_LIST L_PAREN "(" @@ -92,21 +97,22 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH + ATTRIBUTE_VALUE + PATH_TYPE PATH PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" + IDENT "bar" DOT "." PATH_SEGMENT NAME_REF - IDENT "bar" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "f" + IDENT "f" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -115,14 +121,15 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - CHAR_TYPE - VARCHAR_KW "varchar" - ARG_LIST - L_PAREN "(" - ARG - LITERAL - INT_NUMBER "100" - R_PAREN ")" + ATTRIBUTE_VALUE + CHAR_TYPE + VARCHAR_KW "varchar" + ARG_LIST + L_PAREN "(" + ARG + LITERAL + INT_NUMBER "100" + R_PAREN ")" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -131,16 +138,17 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH + ATTRIBUTE_VALUE + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - BIGINT_KW "bigint" + BIGINT_KW "bigint" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -149,11 +157,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - CUSTOM_OP - AMP "&" - AMP "&" - AMP "&" - AMP "&" + ATTRIBUTE_VALUE + CUSTOM_OP + AMP "&" + AMP "&" + AMP "&" + AMP "&" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -162,10 +171,11 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - CUSTOM_OP - L_ANGLE "<" - MINUS "-" - R_ANGLE ">" + ATTRIBUTE_VALUE + CUSTOM_OP + L_ANGLE "<" + MINUS "-" + R_ANGLE ">" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -174,11 +184,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "r" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "r" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -187,11 +198,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "j" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "j" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION diff --git a/crates/squawk_parser/tests/snapshots/tests__create_policy_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_policy_ok.snap index 913407e1..e2cebd1a 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_policy_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_policy_ok.snap @@ -13,12 +13,13 @@ SOURCE_FILE NAME IDENT "p" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- as_" @@ -31,12 +32,13 @@ SOURCE_FILE NAME IDENT "p" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE "\n " AS_KW "as" WHITESPACE " " @@ -51,12 +53,13 @@ SOURCE_FILE NAME IDENT "p" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE "\n " AS_KW "as" WHITESPACE " " @@ -73,17 +76,18 @@ SOURCE_FILE NAME IDENT "p" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH + ON_TABLE + ON_KW "on" + WHITESPACE " " PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "t" + IDENT "t" WHITESPACE "\n " AS_KW "as" WHITESPACE " " @@ -95,16 +99,22 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - IDENT "public" - COMMA "," - WHITESPACE " " - CURRENT_ROLE_KW "current_role" - COMMA "," - WHITESPACE " " - CURRENT_USER_KW "current_user" - COMMA "," - WHITESPACE " " - SESSION_USER_KW "session_user" + ROLE_LIST + ROLE + NAME_REF + IDENT "public" + COMMA "," + WHITESPACE " " + ROLE + CURRENT_ROLE_KW "current_role" + COMMA "," + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" + COMMA "," + WHITESPACE " " + ROLE + SESSION_USER_KW "session_user" WHITESPACE "\n " USING_KW "using" WHITESPACE " " @@ -158,12 +168,13 @@ SOURCE_FILE NAME IDENT "p" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE "\n " FOR_KW "for" WHITESPACE " " @@ -178,12 +189,13 @@ SOURCE_FILE NAME IDENT "p" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE "\n " FOR_KW "for" WHITESPACE " " @@ -198,12 +210,13 @@ SOURCE_FILE NAME IDENT "p" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE "\n " FOR_KW "for" WHITESPACE " " @@ -218,12 +231,13 @@ SOURCE_FILE NAME IDENT "p" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE "\n " FOR_KW "for" WHITESPACE " " @@ -238,12 +252,13 @@ SOURCE_FILE NAME IDENT "p" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE "\n " FOR_KW "for" WHITESPACE " " diff --git a/crates/squawk_parser/tests/snapshots/tests__create_procedure_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_procedure_ok.snap index 01735509..bd6b9e85 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_procedure_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_procedure_ok.snap @@ -159,42 +159,45 @@ SOURCE_FILE DEFINER_KW "definer" WHITESPACE "\n" SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "foo" - WHITESPACE " " - TO_KW "to" - WHITESPACE " " - LITERAL - TRUE_KW "true" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + WHITESPACE " " + TO_KW "to" + WHITESPACE " " + LITERAL + TRUE_KW "true" WHITESPACE "\n" SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "bar" - WHITESPACE " " - EQ "=" - WHITESPACE " " - LITERAL - FALSE_KW "false" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "bar" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + FALSE_KW "false" WHITESPACE "\n" SET_FUNC_OPTION - SET_KW "set" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "buzz" - WHITESPACE " " - FROM_KW "from" - WHITESPACE " " - CURRENT_KW "current" + SET_CONFIG_PARAM + SET_KW "set" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "buzz" + WHITESPACE " " + FROM_KW "from" + WHITESPACE " " + CURRENT_KW "current" WHITESPACE "\n" AS_FUNC_OPTION AS_KW "as" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_publication_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_publication_ok.snap index d3a38a9c..4b0058ee 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_publication_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_publication_ok.snap @@ -41,11 +41,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "bar" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "bar" COMMA "," WHITESPACE " " ATTRIBUTE_OPTION @@ -180,11 +181,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "bar" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "bar" COMMA "," WHITESPACE " " ATTRIBUTE_OPTION diff --git a/crates/squawk_parser/tests/snapshots/tests__create_role_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_role_ok.snap index 854fbe7f..e34b0525 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_role_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_role_ok.snap @@ -112,25 +112,38 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "role" WHITESPACE " " - IDENT "foo" - COMMA "," - WHITESPACE " " - IDENT "bar" - COMMA "," - WHITESPACE " " - IDENT "buzz" + ROLE_LIST + ROLE + NAME_REF + IDENT "foo" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "bar" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "buzz" WHITESPACE "\n " ROLE_OPTION IN_KW "in" WHITESPACE " " GROUP_KW "group" WHITESPACE " " - IDENT "foo" + ROLE_LIST + ROLE + NAME_REF + IDENT "foo" WHITESPACE "\n " ROLE_OPTION ADMIN_KW "admin" WHITESPACE " " - IDENT "foo" + ROLE_LIST + ROLE + NAME_REF + IDENT "foo" WHITESPACE "\n " ROLE_OPTION SYSID_KW "sysid" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_rule_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_rule_ok.snap index 472c1020..89f76510 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_rule_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_rule_ok.snap @@ -198,7 +198,7 @@ SOURCE_FILE NOTIFY NOTIFY_KW "notify" WHITESPACE " " - NAME + NAME_REF IDENT "f" SEMICOLON ";" WHITESPACE "\n " @@ -335,7 +335,7 @@ SOURCE_FILE NOTIFY NOTIFY_KW "NOTIFY" WHITESPACE " " - NAME + NAME_REF IDENT "mytable" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_statistics_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_statistics_ok.snap index 20bc99e6..d756244b 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_statistics_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_statistics_ok.snap @@ -18,12 +18,13 @@ SOURCE_FILE IDENT "a" R_PAREN ")" WHITESPACE " " - FROM_KW "from" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + FROM_TABLE + FROM_KW "from" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- full" @@ -91,17 +92,18 @@ SOURCE_FILE IDENT "b" R_PAREN ")" WHITESPACE "\n" - FROM_KW "from" - WHITESPACE " " - PATH + FROM_TABLE + FROM_KW "from" + WHITESPACE " " PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "t" + IDENT "t" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- docs_1" @@ -130,12 +132,13 @@ SOURCE_FILE NAME_REF IDENT "b" WHITESPACE " " - FROM_KW "FROM" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t1" + FROM_TABLE + FROM_KW "FROM" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t1" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- docs_2" @@ -164,12 +167,13 @@ SOURCE_FILE NAME_REF IDENT "b" WHITESPACE " " - FROM_KW "FROM" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t2" + FROM_TABLE + FROM_KW "FROM" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t2" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- docs_3" @@ -218,11 +222,12 @@ SOURCE_FILE IDENT "a" R_PAREN ")" WHITESPACE " " - FROM_KW "FROM" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t3" + FROM_TABLE + FROM_KW "FROM" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t3" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_subscription_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_subscription_ok.snap index a70de09b..105215f5 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_subscription_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_subscription_ok.snap @@ -64,8 +64,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - FALSE_KW "false" + ATTRIBUTE_VALUE + LITERAL + FALSE_KW "false" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -74,8 +75,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - TRUE_KW "true" + ATTRIBUTE_VALUE + LITERAL + TRUE_KW "true" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -84,8 +86,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - FALSE_KW "false" + ATTRIBUTE_VALUE + LITERAL + FALSE_KW "false" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -94,8 +97,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'bar'" + ATTRIBUTE_VALUE + LITERAL + STRING "'bar'" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -104,8 +108,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - TRUE_KW "true" + ATTRIBUTE_VALUE + LITERAL + TRUE_KW "true" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -114,8 +119,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - TRUE_KW "true" + ATTRIBUTE_VALUE + LITERAL + TRUE_KW "true" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -124,8 +130,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - OFF_KW "off" + ATTRIBUTE_VALUE + LITERAL + OFF_KW "off" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -134,8 +141,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - FALSE_KW "false" + ATTRIBUTE_VALUE + LITERAL + FALSE_KW "false" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -144,8 +152,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - TRUE_KW "true" + ATTRIBUTE_VALUE + LITERAL + TRUE_KW "true" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -154,8 +163,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - FALSE_KW "false" + ATTRIBUTE_VALUE + LITERAL + FALSE_KW "false" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -164,8 +174,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - TRUE_KW "true" + ATTRIBUTE_VALUE + LITERAL + TRUE_KW "true" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -174,8 +185,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'foo'" + ATTRIBUTE_VALUE + LITERAL + STRING "'foo'" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -184,8 +196,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - FALSE_KW "false" + ATTRIBUTE_VALUE + LITERAL + FALSE_KW "false" WHITESPACE "\n " R_PAREN ")" SEMICOLON ";" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_table_as_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_table_as_ok.snap index 0cc3f99a..b429a85b 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_table_as_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_table_as_ok.snap @@ -155,8 +155,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE " " ATTRIBUTE_OPTION diff --git a/crates/squawk_parser/tests/snapshots/tests__create_table_err.snap b/crates/squawk_parser/tests/snapshots/tests__create_table_err.snap index c3f7e22e..5e0de8df 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_table_err.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_table_err.snap @@ -584,14 +584,15 @@ SOURCE_FILE WHITESPACE " " WITH_KW "with" WHITESPACE " " - PATH + OP PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "buzz" + DOT "." PATH_SEGMENT - NAME_REF - IDENT "buzz" - DOT "." - PATH_SEGMENT - R_ANGLE ">" + R_ANGLE ">" WHITESPACE " " CONSTRAINT_EXCLUSION NAME_REF @@ -599,7 +600,8 @@ SOURCE_FILE WHITESPACE " " WITH_KW "with" WHITESPACE " " - L_ANGLE "<" + OP + L_ANGLE "<" R_PAREN ")" WHITESPACE " \n" R_PAREN ")" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_table_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_table_ok.snap index a4dfde57..c9c6c9e8 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_table_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_table_ok.snap @@ -673,8 +673,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -686,8 +687,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - FALSE_KW "false" + ATTRIBUTE_VALUE + LITERAL + FALSE_KW "false" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -1085,8 +1087,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "100" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "100" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1095,8 +1098,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "5" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "5" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1105,8 +1109,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - FALSE_KW "false" + ATTRIBUTE_VALUE + LITERAL + FALSE_KW "false" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -1115,8 +1120,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - FLOAT_NUMBER "10.1" + ATTRIBUTE_VALUE + LITERAL + FLOAT_NUMBER "10.1" WHITESPACE "\n " COMMENT "-- others omitted" WHITESPACE "\n " @@ -1530,7 +1536,7 @@ SOURCE_FILE NULL_CONSTRAINT CONSTRAINT_KW "constraint" WHITESPACE " " - NAME_REF + NAME IDENT "foo" WHITESPACE " " NULL_KW "null" @@ -1792,8 +1798,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - FALSE_KW "false" + ATTRIBUTE_VALUE + LITERAL + FALSE_KW "false" WHITESPACE " " R_PAREN ")" WHITESPACE "\n" @@ -1980,19 +1987,20 @@ SOURCE_FILE WHITESPACE " " WITH_KW "with" WHITESPACE " " - PATH + OP PATH PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "f" + DOT "." PATH_SEGMENT NAME_REF - IDENT "f" + IDENT "buzz" DOT "." PATH_SEGMENT - NAME_REF - IDENT "buzz" - DOT "." - PATH_SEGMENT - R_ANGLE ">" + R_ANGLE ">" WHITESPACE " " R_PAREN ")" WHITESPACE " " @@ -2070,14 +2078,15 @@ SOURCE_FILE WHITESPACE " " WITH_KW "with" WHITESPACE " " - PATH + OP PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "buzz" + DOT "." PATH_SEGMENT - NAME_REF - IDENT "buzz" - DOT "." - PATH_SEGMENT - R_ANGLE ">" + R_ANGLE ">" COMMA "," WHITESPACE " " CONSTRAINT_EXCLUSION @@ -2086,7 +2095,8 @@ SOURCE_FILE WHITESPACE " " WITH_KW "with" WHITESPACE " " - L_ANGLE "<" + OP + L_ANGLE "<" WHITESPACE " " R_PAREN ")" WHITESPACE " \n " @@ -2176,7 +2186,8 @@ SOURCE_FILE WHITESPACE " " WITH_KW "with" WHITESPACE " " - R_ANGLE ">" + OP + R_ANGLE ">" WHITESPACE " " R_PAREN ")" WHITESPACE " \n " @@ -2206,8 +2217,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "10" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "10" COMMA "," WHITESPACE " " ATTRIBUTE_OPTION @@ -2455,8 +2467,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - FALSE_KW "false" + ATTRIBUTE_VALUE + LITERAL + FALSE_KW "false" WHITESPACE " " R_PAREN ")" COMMA "," @@ -2507,14 +2520,15 @@ SOURCE_FILE WHITESPACE " " WITH_KW "with" WHITESPACE " " - PATH + OP PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "buzz" + DOT "." PATH_SEGMENT - NAME_REF - IDENT "buzz" - DOT "." - PATH_SEGMENT - R_ANGLE ">" + R_ANGLE ">" WHITESPACE " " R_PAREN ")" WHITESPACE " " diff --git a/crates/squawk_parser/tests/snapshots/tests__create_tablespace_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_tablespace_ok.snap index aafd2086..8083c6a3 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_tablespace_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_tablespace_ok.snap @@ -31,7 +31,8 @@ SOURCE_FILE WHITESPACE " \n " OWNER_KW "owner" WHITESPACE " " - CURRENT_ROLE_KW "current_role" + ROLE + CURRENT_ROLE_KW "current_role" WHITESPACE "\n " LOCATION_KW "location" WHITESPACE " " @@ -50,8 +51,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "10" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "10" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -60,8 +62,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -70,8 +73,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "0" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "0" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -80,8 +84,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "4" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "4" WHITESPACE "\n " R_PAREN ")" SEMICOLON ";" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_text_search_config_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_text_search_config_ok.snap index 420bee3f..c882f566 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_text_search_config_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_text_search_config_ok.snap @@ -5,7 +5,7 @@ input_file: crates/squawk_parser/tests/data/ok/create_text_search_config.sql SOURCE_FILE COMMENT "-- simple" WHITESPACE "\n" - CREATE_TEXT_SEARCH_PARSER + CREATE_TEXT_SEARCH_CONFIGURATION CREATE_KW "create" WHITESPACE " " TEXT_KW "text" @@ -28,18 +28,19 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "parser_name" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "parser_name" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- full" WHITESPACE "\n" - CREATE_TEXT_SEARCH_PARSER + CREATE_TEXT_SEARCH_CONFIGURATION CREATE_KW "create" WHITESPACE " " TEXT_KW "text" @@ -67,11 +68,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "source_config" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "source_config" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_text_search_dict_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_text_search_dict_ok.snap index 138d061f..8325d948 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_text_search_dict_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_text_search_dict_ok.snap @@ -5,7 +5,7 @@ input_file: crates/squawk_parser/tests/data/ok/create_text_search_dict.sql SOURCE_FILE COMMENT "-- simple" WHITESPACE "\n" - CREATE_TEXT_SEARCH_PARSER + CREATE_TEXT_SEARCH_DICTIONARY CREATE_KW "create" WHITESPACE " " TEXT_KW "text" @@ -28,18 +28,19 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- full" WHITESPACE "\n" - CREATE_TEXT_SEARCH_PARSER + CREATE_TEXT_SEARCH_DICTIONARY CREATE_KW "create" WHITESPACE " " TEXT_KW "text" @@ -67,11 +68,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -80,11 +82,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "bar" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "bar" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -93,11 +96,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "b" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "b" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_text_search_parser_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_text_search_parser_ok.snap index bf279f3d..303b4172 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_text_search_parser_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_text_search_parser_ok.snap @@ -28,11 +28,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "start_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "start_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -41,11 +42,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "gettoken_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "gettoken_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -54,11 +56,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "end_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "end_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -67,11 +70,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "lextypes_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "lextypes_function" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -106,11 +110,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "start_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "start_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -119,11 +124,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "gettoken_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "gettoken_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -132,11 +138,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "end_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "end_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -145,11 +152,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "lextypes_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "lextypes_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -158,11 +166,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "headline_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "headline_function" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_text_search_template_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_text_search_template_ok.snap index d5899e07..e9be488f 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_text_search_template_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_text_search_template_ok.snap @@ -5,7 +5,7 @@ input_file: crates/squawk_parser/tests/data/ok/create_text_search_template.sql SOURCE_FILE COMMENT "-- simple" WHITESPACE "\n" - CREATE_TEXT_SEARCH_PARSER + CREATE_TEXT_SEARCH_TEMPLATE CREATE_KW "create" WHITESPACE " " TEXT_KW "text" @@ -28,18 +28,19 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "f" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "f" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- full" WHITESPACE "\n" - CREATE_TEXT_SEARCH_PARSER + CREATE_TEXT_SEARCH_TEMPLATE CREATE_KW "create" WHITESPACE " " TEXT_KW "text" @@ -67,11 +68,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "init_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "init_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -80,11 +82,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "lexize_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "lexize_function" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_transform_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_transform_ok.snap index 227749da..6b5211f5 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_transform_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_transform_ok.snap @@ -25,34 +25,36 @@ SOURCE_FILE WHITESPACE " " L_PAREN "(" WHITESPACE "\n " - FROM_KW "from" - WHITESPACE " " - SQL_KW "sql" - WHITESPACE " " - WITH_KW "with" - WHITESPACE " " - FUNCTION_KW "function" - WHITESPACE " " - FUNCTION_SIG - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + TRANSFORM_FROM_FUNC + FROM_KW "from" + WHITESPACE " " + SQL_KW "sql" + WHITESPACE " " + WITH_KW "with" + WHITESPACE " " + FUNCTION_KW "function" + WHITESPACE " " + FUNCTION_SIG + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" COMMA "," WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - SQL_KW "sql" - WHITESPACE " " - WITH_KW "with" - WHITESPACE " " - FUNCTION_KW "function" - WHITESPACE " " - FUNCTION_SIG - PATH - PATH_SEGMENT - NAME_REF - IDENT "g" + TRANSFORM_TO_FUNC + TO_KW "to" + WHITESPACE " " + SQL_KW "sql" + WHITESPACE " " + WITH_KW "with" + WHITESPACE " " + FUNCTION_KW "function" + WHITESPACE " " + FUNCTION_SIG + PATH + PATH_SEGMENT + NAME_REF + IDENT "g" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -95,56 +97,58 @@ SOURCE_FILE WHITESPACE " " L_PAREN "(" WHITESPACE "\n " - FROM_KW "from" - WHITESPACE " " - SQL_KW "sql" - WHITESPACE " " - WITH_KW "with" - WHITESPACE " " - FUNCTION_KW "function" - WHITESPACE " " - FUNCTION_SIG - PATH + TRANSFORM_FROM_FUNC + FROM_KW "from" + WHITESPACE " " + SQL_KW "sql" + WHITESPACE " " + WITH_KW "with" + WHITESPACE " " + FUNCTION_KW "function" + WHITESPACE " " + FUNCTION_SIG PATH PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "bar" + DOT "." PATH_SEGMENT NAME_REF - IDENT "bar" + IDENT "foo" DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "f" - PARAM_LIST - L_PAREN "(" - PARAM - NAME - IDENT "a" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - TEXT_KW "text" - R_PAREN ")" + IDENT "f" + PARAM_LIST + L_PAREN "(" + PARAM + NAME + IDENT "a" + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" + R_PAREN ")" COMMA "," WHITESPACE "\n " - TO_KW "to" - WHITESPACE " " - SQL_KW "sql" - WHITESPACE " " - WITH_KW "with" - WHITESPACE " " - FUNCTION_KW "function" - WHITESPACE " " - FUNCTION_SIG - PATH - PATH_SEGMENT - NAME_REF - IDENT "g" + TRANSFORM_TO_FUNC + TO_KW "to" + WHITESPACE " " + SQL_KW "sql" + WHITESPACE " " + WITH_KW "with" + WHITESPACE " " + FUNCTION_KW "function" + WHITESPACE " " + FUNCTION_SIG + PATH + PATH_SEGMENT + NAME_REF + IDENT "g" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_trigger_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_trigger_ok.snap index ee04cb64..8be99807 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_trigger_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_trigger_ok.snap @@ -13,16 +13,20 @@ SOURCE_FILE NAME IDENT "update_foo_column" WHITESPACE "\n" - BEFORE_KW "BEFORE" + TIMING + BEFORE_KW "BEFORE" WHITESPACE " " - INSERT_KW "INSERT" + TRIGGER_EVENT_LIST + TRIGGER_EVENT + INSERT_KW "INSERT" WHITESPACE " " - ON_KW "ON" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "core_recipe" + ON_TABLE + ON_KW "ON" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "core_recipe" WHITESPACE "\n" FOR_KW "FOR" WHITESPACE " " @@ -57,52 +61,60 @@ SOURCE_FILE NAME IDENT "buzz" WHITESPACE " " - INSTEAD_KW "instead" - WHITESPACE " " - OF_KW "of" - WHITESPACE " " - INSERT_KW "insert" - WHITESPACE " " - OR_KW "or" + TIMING + INSTEAD_KW "instead" + WHITESPACE " " + OF_KW "of" WHITESPACE " " - DELETE_KW "delete" + TRIGGER_EVENT_LIST + TRIGGER_EVENT + INSERT_KW "insert" + WHITESPACE " " + OR_KW "or" + WHITESPACE " " + TRIGGER_EVENT + DELETE_KW "delete" WHITESPACE " \n" - ON_KW "on" - WHITESPACE " " - PATH + ON_TABLE + ON_KW "on" + WHITESPACE " " PATH PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" + IDENT "bar" DOT "." PATH_SEGMENT NAME_REF - IDENT "bar" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "buzz" + IDENT "buzz" WHITESPACE "\n" - REFERENCING_KW "referencing" - WHITESPACE " \n " - OLD_KW "old" - WHITESPACE " " - TABLE_KW "table" - WHITESPACE " " - AS_KW "as" - WHITESPACE " " - NAME_REF - IDENT "foo" - WHITESPACE "\n " - NEW_KW "new" - WHITESPACE " " - TABLE_KW "table" - WHITESPACE " " - AS_KW "as" - WHITESPACE " " - NAME_REF - IDENT "bar" + REFERENCING + REFERENCING_KW "referencing" + WHITESPACE " \n " + REFERENCING_TABLE + OLD_KW "old" + WHITESPACE " " + TABLE_KW "table" + WHITESPACE " " + AS_KW "as" + WHITESPACE " " + NAME_REF + IDENT "foo" + WHITESPACE "\n " + REFERENCING_TABLE + NEW_KW "new" + WHITESPACE " " + TABLE_KW "table" + WHITESPACE " " + AS_KW "as" + WHITESPACE " " + NAME_REF + IDENT "bar" WHITESPACE "\n" FOR_KW "for" WHITESPACE " " @@ -110,33 +122,34 @@ SOURCE_FILE WHITESPACE " " STATEMENT_KW "statement" WHITESPACE " \n" - WHEN_KW "when" - WHITESPACE " " - L_PAREN "(" - BIN_EXPR - BIN_EXPR - NAME_REF - IDENT "x" - WHITESPACE " " - R_ANGLE ">" - WHITESPACE " " - LITERAL - INT_NUMBER "10" - WHITESPACE " " - AND_KW "and" + WHEN_CONDITION + WHEN_KW "when" WHITESPACE " " + L_PAREN "(" BIN_EXPR - NAME_REF - IDENT "b" - WHITESPACE " " - IS_NOT - IS_KW "is" + BIN_EXPR + NAME_REF + IDENT "x" WHITESPACE " " - NOT_KW "not" + R_ANGLE ">" + WHITESPACE " " + LITERAL + INT_NUMBER "10" WHITESPACE " " - LITERAL - NULL_KW "null" - R_PAREN ")" + AND_KW "and" + WHITESPACE " " + BIN_EXPR + NAME_REF + IDENT "b" + WHITESPACE " " + IS_NOT + IS_KW "is" + WHITESPACE " " + NOT_KW "not" + WHITESPACE " " + LITERAL + NULL_KW "null" + R_PAREN ")" WHITESPACE "\n" EXECUTE_KW "execute" WHITESPACE " " @@ -178,20 +191,25 @@ SOURCE_FILE NAME IDENT "t" WHITESPACE " " - AFTER_KW "after" + TIMING + AFTER_KW "after" WHITESPACE " " - INSERT_KW "insert" - WHITESPACE " " - OR_KW "or" - WHITESPACE " " - DELETE_KW "delete" + TRIGGER_EVENT_LIST + TRIGGER_EVENT + INSERT_KW "insert" + WHITESPACE " " + OR_KW "or" + WHITESPACE " " + TRIGGER_EVENT + DELETE_KW "delete" WHITESPACE " \n" - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "f" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "f" WHITESPACE "\n" FOR_KW "for" WHITESPACE " " @@ -221,46 +239,54 @@ SOURCE_FILE NAME IDENT "bar" WHITESPACE " " - AFTER_KW "after" - WHITESPACE " " - UPDATE_KW "update" - WHITESPACE " " - OF_KW "of" + TIMING + AFTER_KW "after" WHITESPACE " " - NAME_REF - IDENT "a" - COMMA "," - WHITESPACE " " - NAME_REF - IDENT "b" - COMMA "," - WHITESPACE " " - NAME_REF - IDENT "c" + TRIGGER_EVENT_LIST + TRIGGER_EVENT + TRIGGER_EVENT_UPDATE + UPDATE_KW "update" + WHITESPACE " " + OF_KW "of" + WHITESPACE " " + NAME_REF + IDENT "a" + COMMA "," + WHITESPACE " " + NAME_REF + IDENT "b" + COMMA "," + WHITESPACE " " + NAME_REF + IDENT "c" WHITESPACE "\n" - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + WHITESPACE "\n" + REFERENCING + REFERENCING_KW "referencing" + WHITESPACE " \n " + REFERENCING_TABLE + NEW_KW "new" + WHITESPACE " " + TABLE_KW "table" + WHITESPACE " " + NAME_REF + IDENT "bar" + WHITESPACE "\n " + REFERENCING_TABLE + OLD_KW "old" + WHITESPACE " " + TABLE_KW "table" + WHITESPACE " " NAME_REF IDENT "foo" WHITESPACE "\n" - REFERENCING_KW "referencing" - WHITESPACE " \n " - NEW_KW "new" - WHITESPACE " " - TABLE_KW "table" - WHITESPACE " " - NAME_REF - IDENT "bar" - WHITESPACE "\n " - OLD_KW "old" - WHITESPACE " " - TABLE_KW "table" - WHITESPACE " " - NAME_REF - IDENT "foo" - WHITESPACE "\n" FOR_KW "for" WHITESPACE " " ROW_KW "row" @@ -289,24 +315,30 @@ SOURCE_FILE NAME IDENT "bar" WHITESPACE " " - BEFORE_KW "before" - WHITESPACE " " - TRUNCATE_KW "truncate" - WHITESPACE " " - OR_KW "or" - WHITESPACE " " - DELETE_KW "delete" + TIMING + BEFORE_KW "before" WHITESPACE " " - OR_KW "or" - WHITESPACE " " - INSERT_KW "insert" + TRIGGER_EVENT_LIST + TRIGGER_EVENT + TRUNCATE_KW "truncate" + WHITESPACE " " + OR_KW "or" + WHITESPACE " " + TRIGGER_EVENT + DELETE_KW "delete" + WHITESPACE " " + OR_KW "or" + WHITESPACE " " + TRIGGER_EVENT + INSERT_KW "insert" WHITESPACE "\n" - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "buzz" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "buzz" WHITESPACE "\n" EXECUTE_KW "execute" WHITESPACE " " diff --git a/crates/squawk_parser/tests/snapshots/tests__create_type_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_type_ok.snap index 14e0f8e1..7d88e408 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_type_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_type_ok.snap @@ -216,11 +216,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - BIGINT_KW "bigint" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + BIGINT_KW "bigint" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -301,21 +302,22 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH + ATTRIBUTE_VALUE + PATH_TYPE PATH PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" + IDENT "bar" DOT "." PATH_SEGMENT NAME_REF - IDENT "bar" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "func_name" + IDENT "func_name" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -324,11 +326,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "func_name" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "func_name" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -352,21 +355,22 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH + ATTRIBUTE_VALUE + PATH_TYPE PATH PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" + IDENT "bar" DOT "." PATH_SEGMENT NAME_REF - IDENT "bar" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "func_name" + IDENT "func_name" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -375,11 +379,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "func_name" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "func_name" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -388,11 +393,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "receive_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "receive_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -401,11 +407,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "send_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "send_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -414,11 +421,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "type_modifier_input_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "type_modifier_input_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -427,11 +435,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "type_modifier_output_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "type_modifier_output_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -440,11 +449,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "analyze_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "analyze_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -453,11 +463,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "subscript_function" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "subscript_function" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -466,11 +477,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "variable" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "variable" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -486,8 +498,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "1" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -496,11 +509,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "plain" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "plain" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -509,11 +523,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "like_type" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "like_type" COMMA "," WHITESPACE "\n " COMMENT "-- see: https://www.postgresql.org/docs/17/catalog-pg-type.html#CATALOG-TYPCATEGORY-TABLE" @@ -524,8 +539,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'U'" + ATTRIBUTE_VALUE + LITERAL + STRING "'U'" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -534,8 +550,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - FALSE_KW "false" + ATTRIBUTE_VALUE + LITERAL + FALSE_KW "false" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -544,7 +561,8 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - NULL_KW "null" + ATTRIBUTE_VALUE + NULL_KW "null" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -553,11 +571,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "float4" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "float4" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -566,8 +585,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "','" + ATTRIBUTE_VALUE + LITERAL + STRING "','" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -576,8 +596,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - TRUE_KW "true" + ATTRIBUTE_VALUE + LITERAL + TRUE_KW "true" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_user_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_user_ok.snap index f1f6c755..1ed652bb 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_user_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_user_ok.snap @@ -112,35 +112,54 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "role" WHITESPACE " " - IDENT "foo" - COMMA "," - WHITESPACE " " - IDENT "bar" - COMMA "," - WHITESPACE " " - IDENT "buzz" + ROLE_LIST + ROLE + NAME_REF + IDENT "foo" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "bar" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "buzz" WHITESPACE "\n " ROLE_OPTION IN_KW "in" WHITESPACE " " GROUP_KW "group" WHITESPACE " " - IDENT "foo" + ROLE_LIST + ROLE + NAME_REF + IDENT "foo" WHITESPACE "\n " ROLE_OPTION ROLE_KW "role" WHITESPACE " " - IDENT "foo" + ROLE_LIST + ROLE + NAME_REF + IDENT "foo" WHITESPACE "\n " ROLE_OPTION ADMIN_KW "admin" WHITESPACE " " - IDENT "foo" + ROLE_LIST + ROLE + NAME_REF + IDENT "foo" WHITESPACE "\n " ROLE_OPTION USER_KW "user" WHITESPACE " " - IDENT "foo" + ROLE_LIST + ROLE + NAME_REF + IDENT "foo" WHITESPACE "\n " ROLE_OPTION SYSID_KW "sysid" diff --git a/crates/squawk_parser/tests/snapshots/tests__create_view_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_view_ok.snap index b1b58b1a..2e736f2e 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_view_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_view_ok.snap @@ -455,11 +455,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "bar" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "bar" COMMA "," WHITESPACE " " ATTRIBUTE_OPTION diff --git a/crates/squawk_parser/tests/snapshots/tests__deallocate_ok.snap b/crates/squawk_parser/tests/snapshots/tests__deallocate_ok.snap index c645d556..861372e6 100644 --- a/crates/squawk_parser/tests/snapshots/tests__deallocate_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__deallocate_ok.snap @@ -22,7 +22,7 @@ SOURCE_FILE DEALLOCATE DEALLOCATE_KW "deallocate" WHITESPACE " " - NAME + NAME_REF IDENT "foo" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__drop_cast_ok.snap b/crates/squawk_parser/tests/snapshots/tests__drop_cast_ok.snap index b8b444e2..ba0efc36 100644 --- a/crates/squawk_parser/tests/snapshots/tests__drop_cast_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__drop_cast_ok.snap @@ -10,21 +10,22 @@ SOURCE_FILE WHITESPACE " " CAST_KW "cast" WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - TEXT_KW "text" - WHITESPACE " " - AS_KW "as" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INT_KW "int" - R_PAREN ")" + CAST_SIG + L_PAREN "(" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" + WHITESPACE " " + AS_KW "as" + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INT_KW "int" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- full" @@ -39,21 +40,22 @@ SOURCE_FILE WHITESPACE " " EXISTS_KW "exists" WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "a" - WHITESPACE " " - AS_KW "as" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "b" - R_PAREN ")" + CAST_SIG + L_PAREN "(" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "a" + WHITESPACE " " + AS_KW "as" + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "b" + R_PAREN ")" WHITESPACE " " CASCADE_KW "cascade" SEMICOLON ";" @@ -68,31 +70,32 @@ SOURCE_FILE WHITESPACE " " EXISTS_KW "exists" WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH + CAST_SIG + L_PAREN "(" + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "a" - WHITESPACE " " - AS_KW "as" - WHITESPACE " " - PATH_TYPE - PATH + IDENT "a" + WHITESPACE " " + AS_KW "as" + WHITESPACE " " + PATH_TYPE PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "bar" + DOT "." PATH_SEGMENT NAME_REF - IDENT "bar" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "b" - R_PAREN ")" + IDENT "b" + R_PAREN ")" WHITESPACE " " RESTRICT_KW "restrict" SEMICOLON ";" diff --git a/crates/squawk_parser/tests/snapshots/tests__drop_operator_ok.snap b/crates/squawk_parser/tests/snapshots/tests__drop_operator_ok.snap index ff666c2b..220deca1 100644 --- a/crates/squawk_parser/tests/snapshots/tests__drop_operator_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__drop_operator_ok.snap @@ -10,22 +10,25 @@ SOURCE_FILE WHITESPACE " " OPERATOR_KW "operator" WHITESPACE " " - CARET "^" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INTEGER_KW "integer" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INTEGER_KW "integer" - R_PAREN ")" + OP_SIG_LIST + OP_SIG + OP + CARET "^" + WHITESPACE " " + L_PAREN "(" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INTEGER_KW "integer" + COMMA "," + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INTEGER_KW "integer" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- schema" @@ -35,44 +38,47 @@ SOURCE_FILE WHITESPACE " " OPERATOR_KW "operator" WHITESPACE " " - PATH - PATH - PATH - PATH_SEGMENT - NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - CARET "^" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH - PATH_SEGMENT - NAME_REF - IDENT "f" - DOT "." - PATH_SEGMENT - NAME_REF - SMALLINT_KW "smallint" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH - PATH_SEGMENT - NAME_REF - IDENT "bar" - DOT "." - PATH_SEGMENT - NAME_REF - SMALLINT_KW "smallint" - R_PAREN ")" + OP_SIG_LIST + OP_SIG + OP + PATH + PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." + PATH_SEGMENT + CARET "^" + WHITESPACE " " + L_PAREN "(" + PATH_TYPE + PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "f" + DOT "." + PATH_SEGMENT + NAME_REF + SMALLINT_KW "smallint" + COMMA "," + WHITESPACE " " + PATH_TYPE + PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "bar" + DOT "." + PATH_SEGMENT + NAME_REF + SMALLINT_KW "smallint" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- unary" @@ -82,16 +88,19 @@ SOURCE_FILE WHITESPACE " " OPERATOR_KW "operator" WHITESPACE " " - CUSTOM_OP - TILDE "~" - WHITESPACE " " - L_PAREN "(" - NONE_KW "none" - COMMA "," - WHITESPACE " " - BIT_TYPE - BIT_KW "bit" - R_PAREN ")" + OP_SIG_LIST + OP_SIG + OP + CUSTOM_OP + TILDE "~" + WHITESPACE " " + L_PAREN "(" + NONE_KW "none" + COMMA "," + WHITESPACE " " + BIT_TYPE + BIT_KW "bit" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- multiple" @@ -101,34 +110,39 @@ SOURCE_FILE WHITESPACE " " OPERATOR_KW "operator" WHITESPACE " " - CUSTOM_OP - TILDE "~" - WHITESPACE " " - L_PAREN "(" - NONE_KW "none" - COMMA "," - WHITESPACE " " - BIT_TYPE - BIT_KW "bit" - R_PAREN ")" - COMMA "," - WHITESPACE " " - CARET "^" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INTEGER_KW "integer" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INTEGER_KW "integer" - R_PAREN ")" + OP_SIG_LIST + OP_SIG + OP + CUSTOM_OP + TILDE "~" + WHITESPACE " " + L_PAREN "(" + NONE_KW "none" + COMMA "," + WHITESPACE " " + BIT_TYPE + BIT_KW "bit" + R_PAREN ")" + COMMA "," + WHITESPACE " " + OP_SIG + OP + CARET "^" + WHITESPACE " " + L_PAREN "(" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INTEGER_KW "integer" + COMMA "," + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INTEGER_KW "integer" + R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- full" @@ -143,54 +157,61 @@ SOURCE_FILE WHITESPACE " " EXISTS_KW "exists" WHITESPACE " " - CUSTOM_OP - POUND "#" - WHITESPACE " " - L_PAREN "(" - NONE_KW "NONE" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - BIGINT_KW "bigint" - R_PAREN ")" - COMMA "," - WHITESPACE " " - CUSTOM_OP - AT "@" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - TEXT_KW "text" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - TEXT_KW "text" - R_PAREN ")" - COMMA "," - WHITESPACE " " - CUSTOM_OP - POUND "#" - POUND "#" - WHITESPACE " " - L_PAREN "(" - NONE_KW "none" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INTEGER_KW "integer" - R_PAREN ")" + OP_SIG_LIST + OP_SIG + OP + CUSTOM_OP + POUND "#" + WHITESPACE " " + L_PAREN "(" + NONE_KW "NONE" + COMMA "," + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + BIGINT_KW "bigint" + R_PAREN ")" + COMMA "," + WHITESPACE " " + OP_SIG + OP + CUSTOM_OP + AT "@" + WHITESPACE " " + L_PAREN "(" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" + COMMA "," + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" + R_PAREN ")" + COMMA "," + WHITESPACE " " + OP_SIG + OP + CUSTOM_OP + POUND "#" + POUND "#" + WHITESPACE " " + L_PAREN "(" + NONE_KW "none" + COMMA "," + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INTEGER_KW "integer" + R_PAREN ")" WHITESPACE " " CASCADE_KW "cascade" SEMICOLON ";" @@ -205,23 +226,26 @@ SOURCE_FILE WHITESPACE " " EXISTS_KW "exists" WHITESPACE " " - CUSTOM_OP - BANG "!" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INT_KW "int" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INT_KW "int" - R_PAREN ")" + OP_SIG_LIST + OP_SIG + OP + CUSTOM_OP + BANG "!" + WHITESPACE " " + L_PAREN "(" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INT_KW "int" + COMMA "," + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INT_KW "int" + R_PAREN ")" WHITESPACE " " RESTRICT_KW "restrict" SEMICOLON ";" @@ -238,41 +262,44 @@ SOURCE_FILE WHITESPACE " " EXISTS_KW "exists" WHITESPACE " " - CUSTOM_OP - BANG "!" - BANG "!" - BANG "!" - BANG "!" - BANG "!" - BANG "!" - BANG "!" - BANG "!" - BANG "!" - BANG "!" - BANG "!" - BANG "!" - BANG "!" - BANG "!" - BANG "!" - BANG "!" - BANG "!" - BANG "!" - BANG "!" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INT_KW "int" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INT_KW "int" - R_PAREN ")" + OP_SIG_LIST + OP_SIG + OP + CUSTOM_OP + BANG "!" + BANG "!" + BANG "!" + BANG "!" + BANG "!" + BANG "!" + BANG "!" + BANG "!" + BANG "!" + BANG "!" + BANG "!" + BANG "!" + BANG "!" + BANG "!" + BANG "!" + BANG "!" + BANG "!" + BANG "!" + BANG "!" + WHITESPACE " " + L_PAREN "(" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INT_KW "int" + COMMA "," + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INT_KW "int" + R_PAREN ")" WHITESPACE " " RESTRICT_KW "restrict" SEMICOLON ";" @@ -282,51 +309,54 @@ SOURCE_FILE WHITESPACE " " OPERATOR_KW "operator" WHITESPACE " " - PATH - PATH - PATH - PATH_SEGMENT - NAME_REF - IDENT "bar" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "bar" - DOT "." - PATH_SEGMENT - CUSTOM_OP - AT "@" - AT "@" - AT "@" - AT "@" - AT "@" - AT "@" - AT "@" - AT "@" - AT "@" - AT "@" - AT "@" - AT "@" - AT "@" - AT "@" - AT "@" - AT "@" - AT "@" - WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INT_KW "int" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INT_KW "int" - R_PAREN ")" + OP_SIG_LIST + OP_SIG + OP + PATH + PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "bar" + DOT "." + PATH_SEGMENT + NAME_REF + IDENT "bar" + DOT "." + PATH_SEGMENT + CUSTOM_OP + AT "@" + AT "@" + AT "@" + AT "@" + AT "@" + AT "@" + AT "@" + AT "@" + AT "@" + AT "@" + AT "@" + AT "@" + AT "@" + AT "@" + AT "@" + AT "@" + AT "@" + WHITESPACE " " + L_PAREN "(" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INT_KW "int" + COMMA "," + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INT_KW "int" + R_PAREN ")" WHITESPACE " " RESTRICT_KW "restrict" SEMICOLON ";" diff --git a/crates/squawk_parser/tests/snapshots/tests__drop_owned_ok.snap b/crates/squawk_parser/tests/snapshots/tests__drop_owned_ok.snap index 6f0b27dd..1840dede 100644 --- a/crates/squawk_parser/tests/snapshots/tests__drop_owned_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__drop_owned_ok.snap @@ -12,7 +12,10 @@ SOURCE_FILE WHITESPACE " " BY_KW "by" WHITESPACE " " - IDENT "s" + ROLE_LIST + ROLE + NAME_REF + IDENT "s" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- full" @@ -24,13 +27,19 @@ SOURCE_FILE WHITESPACE " " BY_KW "by" WHITESPACE " " - IDENT "a" - COMMA "," - WHITESPACE " " - CURRENT_ROLE_KW "current_role" - COMMA "," - WHITESPACE " " - IDENT "c" + ROLE_LIST + ROLE + NAME_REF + IDENT "a" + COMMA "," + WHITESPACE " " + ROLE + CURRENT_ROLE_KW "current_role" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "c" WHITESPACE " " CASCADE_KW "cascade" SEMICOLON ";" @@ -42,10 +51,13 @@ SOURCE_FILE WHITESPACE " " BY_KW "by" WHITESPACE " " - SESSION_USER_KW "session_user" - COMMA "," - WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + SESSION_USER_KW "session_user" + COMMA "," + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" WHITESPACE " " RESTRICT_KW "restrict" SEMICOLON ";" diff --git a/crates/squawk_parser/tests/snapshots/tests__drop_policy_ok.snap b/crates/squawk_parser/tests/snapshots/tests__drop_policy_ok.snap index b2847193..53a756ac 100644 --- a/crates/squawk_parser/tests/snapshots/tests__drop_policy_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__drop_policy_ok.snap @@ -13,12 +13,13 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- full" @@ -36,17 +37,18 @@ SOURCE_FILE NAME_REF IDENT "r" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH + ON_TABLE + ON_KW "on" + WHITESPACE " " PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "t_name" + IDENT "t_name" WHITESPACE " " CASCADE_KW "cascade" SEMICOLON ";" @@ -64,12 +66,13 @@ SOURCE_FILE NAME_REF IDENT "r" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "a" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "a" WHITESPACE " " RESTRICT_KW "restrict" SEMICOLON ";" diff --git a/crates/squawk_parser/tests/snapshots/tests__drop_rule_ok.snap b/crates/squawk_parser/tests/snapshots/tests__drop_rule_ok.snap index 18d111b4..b10c0ee2 100644 --- a/crates/squawk_parser/tests/snapshots/tests__drop_rule_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__drop_rule_ok.snap @@ -13,12 +13,13 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" SEMICOLON ";" SEMICOLON ";" WHITESPACE "\n\n" @@ -37,17 +38,18 @@ SOURCE_FILE NAME_REF IDENT "r" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH + ON_TABLE + ON_KW "on" + WHITESPACE " " PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "foo" + DOT "." PATH_SEGMENT NAME_REF - IDENT "foo" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "t_name" + IDENT "t_name" WHITESPACE " " CASCADE_KW "cascade" SEMICOLON ";" @@ -65,12 +67,13 @@ SOURCE_FILE NAME_REF IDENT "r" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "a" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "a" WHITESPACE " " RESTRICT_KW "restrict" SEMICOLON ";" diff --git a/crates/squawk_parser/tests/snapshots/tests__drop_trigger_ok.snap b/crates/squawk_parser/tests/snapshots/tests__drop_trigger_ok.snap index 3cd488fc..4e59d749 100644 --- a/crates/squawk_parser/tests/snapshots/tests__drop_trigger_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__drop_trigger_ok.snap @@ -13,12 +13,13 @@ SOURCE_FILE NAME_REF IDENT "tr" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" SEMICOLON ";" WHITESPACE "\n\n" DROP_TRIGGER @@ -31,17 +32,18 @@ SOURCE_FILE NAME_REF IDENT "tr" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH + ON_TABLE + ON_KW "on" + WHITESPACE " " PATH + PATH + PATH_SEGMENT + NAME_REF + IDENT "bar" + DOT "." PATH_SEGMENT NAME_REF - IDENT "bar" - DOT "." - PATH_SEGMENT - NAME_REF - IDENT "t" + IDENT "t" SEMICOLON ";" WHITESPACE "\n\n" DROP_TRIGGER @@ -59,12 +61,13 @@ SOURCE_FILE NAME_REF IDENT "tr" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" SEMICOLON ";" WHITESPACE "\n\n" DROP_TRIGGER @@ -82,12 +85,13 @@ SOURCE_FILE NAME_REF IDENT "tr" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE " " CASCADE_KW "cascade" SEMICOLON ";" @@ -102,12 +106,13 @@ SOURCE_FILE NAME_REF IDENT "tr" WHITESPACE " " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "t" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" WHITESPACE " " RESTRICT_KW "restrict" SEMICOLON ";" diff --git a/crates/squawk_parser/tests/snapshots/tests__drop_user_mapping_ok.snap b/crates/squawk_parser/tests/snapshots/tests__drop_user_mapping_ok.snap index 5c364e80..793fd144 100644 --- a/crates/squawk_parser/tests/snapshots/tests__drop_user_mapping_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__drop_user_mapping_ok.snap @@ -38,7 +38,8 @@ SOURCE_FILE WHITESPACE " " FOR_KW "for" WHITESPACE " " - CURRENT_ROLE_KW "current_role" + ROLE + CURRENT_ROLE_KW "current_role" WHITESPACE " " SERVER_KW "server" WHITESPACE " " diff --git a/crates/squawk_parser/tests/snapshots/tests__explain_ok.snap b/crates/squawk_parser/tests/snapshots/tests__explain_ok.snap index 0e1dab45..87cc03bc 100644 --- a/crates/squawk_parser/tests/snapshots/tests__explain_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__explain_ok.snap @@ -330,20 +330,23 @@ SOURCE_FILE WHITESPACE " " NAME IDENT "query" - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INT_KW "int" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INT_KW "int" - R_PAREN ")" + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INT_KW "int" + COMMA "," + WHITESPACE " " + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INT_KW "int" + R_PAREN ")" WHITESPACE " " AS_KW "AS" WHITESPACE " " diff --git a/crates/squawk_parser/tests/snapshots/tests__grant_ok.snap b/crates/squawk_parser/tests/snapshots/tests__grant_ok.snap index b3a76fd7..cf896a95 100644 --- a/crates/squawk_parser/tests/snapshots/tests__grant_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__grant_ok.snap @@ -8,28 +8,49 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - SELECT_KW "select" - COMMA "," - WHITESPACE " " - INSERT_KW "insert" - COMMA "," - WHITESPACE " " - UPDATE_KW "update" - COMMA "," - WHITESPACE " " - DELETE_KW "delete" - COMMA "," - WHITESPACE " " - TRUNCATE_KW "truncate" - COMMA "," - WHITESPACE " " - REFERENCES_KW "references" - COMMA "," - WHITESPACE " " - TRIGGER_KW "trigger" - COMMA "," - WHITESPACE " " - IDENT "maintain" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + INSERT_KW "insert" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + UPDATE_KW "update" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + DELETE_KW "delete" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + TRUNCATE_KW "truncate" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + REFERENCES_KW "references" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + TRIGGER_KW "trigger" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "maintain" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -40,7 +61,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- on_table" @@ -75,10 +98,13 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" - COMMA "," - WHITESPACE " " - CURRENT_ROLE_KW "current_role" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" + COMMA "," + WHITESPACE " " + ROLE + CURRENT_ROLE_KW "current_role" WHITESPACE "\n " WITH_KW "with" WHITESPACE " " @@ -90,7 +116,9 @@ SOURCE_FILE WHITESPACE " " BY_KW "by" WHITESPACE " " - IDENT "public" + ROLE + NAME_REF + IDENT "public" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -116,7 +144,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -135,7 +165,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- on_all_tables" @@ -166,7 +198,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_ROLE_KW "current_role" + ROLE_LIST + ROLE + CURRENT_ROLE_KW "current_role" WHITESPACE "\n " WITH_KW "with" WHITESPACE " " @@ -180,23 +214,25 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - SELECT_KW "select" - COLUMN_LIST - L_PAREN "(" - COLUMN - NAME_REF - IDENT "a" - COMMA "," - WHITESPACE " " - COLUMN - NAME_REF - IDENT "b" - COMMA "," - WHITESPACE " " - COLUMN - NAME_REF - IDENT "c" - R_PAREN ")" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" + COLUMN_LIST + L_PAREN "(" + COLUMN + NAME_REF + IDENT "a" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "b" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "c" + R_PAREN ")" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -207,29 +243,35 @@ SOURCE_FILE WHITESPACE " \n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT GRANT_KW "grant" WHITESPACE " " - INSERT_KW "insert" - COLUMN_LIST - L_PAREN "(" - COLUMN - NAME_REF - IDENT "a" - COMMA "," - WHITESPACE " " - COLUMN - NAME_REF - IDENT "b" - COMMA "," - WHITESPACE " " - COLUMN - NAME_REF - IDENT "c" - R_PAREN ")" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + INSERT_KW "insert" + COLUMN_LIST + L_PAREN "(" + COLUMN + NAME_REF + IDENT "a" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "b" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "c" + R_PAREN ")" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -240,29 +282,35 @@ SOURCE_FILE WHITESPACE " \n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT GRANT_KW "grant" WHITESPACE " " - UPDATE_KW "update" - COLUMN_LIST - L_PAREN "(" - COLUMN - NAME_REF - IDENT "a" - COMMA "," - WHITESPACE " " - COLUMN - NAME_REF - IDENT "b" - COMMA "," - WHITESPACE " " - COLUMN - NAME_REF - IDENT "c" - R_PAREN ")" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + UPDATE_KW "update" + COLUMN_LIST + L_PAREN "(" + COLUMN + NAME_REF + IDENT "a" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "b" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "c" + R_PAREN ")" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -273,29 +321,33 @@ SOURCE_FILE WHITESPACE " \n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT GRANT_KW "grant" WHITESPACE " " - REFERENCES_KW "references" - COLUMN_LIST - L_PAREN "(" - COLUMN - NAME_REF - IDENT "a" - COMMA "," - WHITESPACE " " - COLUMN - NAME_REF - IDENT "b" - COMMA "," - WHITESPACE " " - COLUMN - NAME_REF - IDENT "c" - R_PAREN ")" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + REFERENCES_KW "references" + COLUMN_LIST + L_PAREN "(" + COLUMN + NAME_REF + IDENT "a" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "b" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "c" + R_PAREN ")" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -306,7 +358,9 @@ SOURCE_FILE WHITESPACE " \n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -331,7 +385,9 @@ SOURCE_FILE WHITESPACE " \n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -354,7 +410,9 @@ SOURCE_FILE WHITESPACE " \n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- sequence" @@ -362,7 +420,9 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - SELECT_KW "select" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" WHITESPACE " " ON_KW "on" WHITESPACE " " @@ -375,13 +435,17 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT GRANT_KW "grant" WHITESPACE " " - SELECT_KW "select" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" WHITESPACE " " ON_KW "on" WHITESPACE " " @@ -399,13 +463,19 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT GRANT_KW "grant" WHITESPACE " " - IDENT "usage" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" WHITESPACE " " ON_KW "on" WHITESPACE " " @@ -430,13 +500,19 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT GRANT_KW "grant" WHITESPACE " " - UPDATE_KW "update" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + UPDATE_KW "update" WHITESPACE " " ON_KW "on" WHITESPACE " " @@ -449,7 +525,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -472,7 +550,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -505,7 +585,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- database" @@ -513,7 +595,9 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - CREATE_KW "create" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + CREATE_KW "create" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -532,7 +616,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" WHITESPACE "\n " WITH_KW "with" WHITESPACE " " @@ -544,16 +630,27 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - CREATE_KW "create" - COMMA "," - WHITESPACE " " - IDENT "connect" - COMMA "," - WHITESPACE " " - TEMPORARY_KW "temporary" - COMMA "," - WHITESPACE " " - TEMP_KW "temp" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + CREATE_KW "create" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "connect" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + TEMPORARY_KW "temporary" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + TEMP_KW "temp" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -564,7 +661,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -581,7 +680,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- domain" @@ -589,7 +690,11 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - IDENT "usage" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -614,7 +719,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" WHITESPACE "\n " WITH_KW "with" WHITESPACE " " @@ -641,7 +748,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -667,7 +776,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- foreign_data" @@ -675,7 +786,11 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - IDENT "usage" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -698,7 +813,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" WHITESPACE "\n " WITH_KW "with" WHITESPACE " " @@ -727,7 +844,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- foreign_server" @@ -735,7 +854,11 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - IDENT "usage" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -756,7 +879,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" WHITESPACE "\n " WITH_KW "with" WHITESPACE " " @@ -783,7 +908,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- function" @@ -791,7 +918,11 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - EXECUTE_KW "execute" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + EXECUTE_KW "execute" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -813,7 +944,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" WHITESPACE "\n " WITH_KW "with" WHITESPACE " " @@ -825,7 +958,11 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - EXECUTE_KW "execute" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + EXECUTE_KW "execute" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -903,7 +1040,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -924,7 +1063,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -955,7 +1096,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -978,7 +1121,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -1001,7 +1146,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -1068,7 +1215,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- language" @@ -1076,7 +1225,11 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - IDENT "usage" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" WHITESPACE " \n " ON_KW "on" WHITESPACE " " @@ -1095,7 +1248,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -1120,7 +1275,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -1147,7 +1304,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- large_object" @@ -1155,10 +1314,15 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - SELECT_KW "select" - COMMA "," - WHITESPACE " " - UPDATE_KW "update" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + UPDATE_KW "update" WHITESPACE " \n " ON_KW "on" WHITESPACE " " @@ -1175,7 +1339,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -1200,7 +1366,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- param" @@ -1208,12 +1376,17 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - SET_KW "set" - COMMA "," - WHITESPACE " " - ALTER_KW "alter" - WHITESPACE " " - SYSTEM_KW "system" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + SET_KW "set" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ALTER_KW "alter" + WHITESPACE " " + SYSTEM_KW "system" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1238,15 +1411,19 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT GRANT_KW "grant" WHITESPACE " " - ALTER_KW "alter" - WHITESPACE " " - SYSTEM_KW "system" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ALTER_KW "alter" + WHITESPACE " " + SYSTEM_KW "system" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1259,7 +1436,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -1278,7 +1457,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- edge_case" @@ -1286,17 +1467,29 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - SET_KW "set" - COMMA "," - WHITESPACE " " - SET_KW "set" - COMMA "," - WHITESPACE " " - SET_KW "set" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + SET_KW "set" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + SET_KW "set" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + SET_KW "set" WHITESPACE " \n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" WHITESPACE "\n " WITH_KW "with" WHITESPACE " " @@ -1309,17 +1502,29 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - SET_KW "set" - COMMA "," - WHITESPACE " " - SET_KW "set" - COMMA "," - WHITESPACE " " - SET_KW "set" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + SET_KW "set" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + SET_KW "set" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + SET_KW "set" WHITESPACE " \n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE " \n\n" COMMENT "-- schema" @@ -1327,7 +1532,9 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - CREATE_KW "create" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + CREATE_KW "create" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1338,16 +1545,23 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT GRANT_KW "grant" WHITESPACE " " - CREATE_KW "create" - COMMA "," - WHITESPACE " " - IDENT "usage" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + CREATE_KW "create" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1366,21 +1580,29 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" - COMMA "," - WHITESPACE " " - IDENT "public" - COMMA "," - WHITESPACE " " - GROUP_KW "group" - WHITESPACE " " - IDENT "foo" - COMMA "," - WHITESPACE " " - CURRENT_ROLE_KW "current_role" - COMMA "," - WHITESPACE " " - SESSION_USER_KW "session_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "public" + COMMA "," + WHITESPACE " " + ROLE + GROUP_KW "group" + WHITESPACE " " + NAME_REF + IDENT "foo" + COMMA "," + WHITESPACE " " + ROLE + CURRENT_ROLE_KW "current_role" + COMMA "," + WHITESPACE " " + ROLE + SESSION_USER_KW "session_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -1405,7 +1627,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- tablespace" @@ -1413,7 +1637,9 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - CREATE_KW "create" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + CREATE_KW "create" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1432,7 +1658,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -1457,7 +1685,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- type_" @@ -1465,7 +1695,11 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - IDENT "usage" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1493,7 +1727,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -1513,7 +1749,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" GRANT @@ -1538,7 +1776,9 @@ SOURCE_FILE WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- option" @@ -1546,11 +1786,17 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - IDENT "public" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "public" WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" WHITESPACE "\n " WITH_KW "with" WHITESPACE " " @@ -1563,11 +1809,17 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - IDENT "public" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "public" WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" WHITESPACE "\n " WITH_KW "with" WHITESPACE " " @@ -1580,11 +1832,17 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - IDENT "public" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "public" WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" WHITESPACE "\n " WITH_KW "with" WHITESPACE " " @@ -1597,11 +1855,17 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - IDENT "public" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "public" WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" WHITESPACE "\n " WITH_KW "with" WHITESPACE " " @@ -1614,25 +1878,34 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - IDENT "public" - COMMA "," - WHITESPACE " " - IDENT "t" - COLUMN_LIST - L_PAREN "(" - COLUMN - NAME_REF - IDENT "a" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "public" COMMA "," WHITESPACE " " - COLUMN - NAME_REF - IDENT "b" - R_PAREN ")" + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "t" + COLUMN_LIST + L_PAREN "(" + COLUMN + NAME_REF + IDENT "a" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "b" + R_PAREN ")" WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" WHITESPACE "\n " WITH_KW "with" WHITESPACE " " @@ -1645,10 +1918,16 @@ SOURCE_FILE GRANT GRANT_KW "grant" WHITESPACE " " - IDENT "public" + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "public" WHITESPACE "\n " TO_KW "to" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__import_foreign_schema_ok.snap b/crates/squawk_parser/tests/snapshots/tests__import_foreign_schema_ok.snap index b9b102c2..506209a9 100644 --- a/crates/squawk_parser/tests/snapshots/tests__import_foreign_schema_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__import_foreign_schema_ok.snap @@ -15,17 +15,19 @@ SOURCE_FILE NAME_REF IDENT "s" WHITESPACE "\n " - FROM_KW "from" - WHITESPACE " " - SERVER_KW "server" - WHITESPACE " " - NAME_REF - IDENT "a" + FROM_SERVER + FROM_KW "from" + WHITESPACE " " + SERVER_KW "server" + WHITESPACE " " + NAME_REF + IDENT "a" WHITESPACE "\n " - INTO_KW "into" - WHITESPACE " " - NAME_REF - IDENT "b" + INTO_SCHEMA + INTO_KW "into" + WHITESPACE " " + NAME_REF + IDENT "b" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- except" @@ -40,28 +42,31 @@ SOURCE_FILE NAME_REF IDENT "some_schema_name" WHITESPACE "\n " - EXCEPT_KW "EXCEPT" - WHITESPACE " " - L_PAREN "(" - NAME_REF - IDENT "t1" - COMMA "," - WHITESPACE " " - NAME_REF - IDENT "t2" - R_PAREN ")" + EXCEPT_TABLES + EXCEPT_KW "EXCEPT" + WHITESPACE " " + L_PAREN "(" + NAME_REF + IDENT "t1" + COMMA "," + WHITESPACE " " + NAME_REF + IDENT "t2" + R_PAREN ")" WHITESPACE "\n " - FROM_KW "FROM" - WHITESPACE " " - SERVER_KW "SERVER" - WHITESPACE " " - NAME_REF - IDENT "server_name" + FROM_SERVER + FROM_KW "FROM" + WHITESPACE " " + SERVER_KW "SERVER" + WHITESPACE " " + NAME_REF + IDENT "server_name" WHITESPACE "\n " - INTO_KW "INTO" - WHITESPACE " " - NAME_REF - IDENT "local_schema" + INTO_SCHEMA + INTO_KW "INTO" + WHITESPACE " " + NAME_REF + IDENT "local_schema" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- options" @@ -76,17 +81,19 @@ SOURCE_FILE NAME_REF IDENT "a" WHITESPACE "\n " - FROM_KW "from" - WHITESPACE " " - SERVER_KW "server" - WHITESPACE " " - NAME_REF - IDENT "b" + FROM_SERVER + FROM_KW "from" + WHITESPACE " " + SERVER_KW "server" + WHITESPACE " " + NAME_REF + IDENT "b" WHITESPACE "\n " - INTO_KW "into" - WHITESPACE " " - NAME_REF - IDENT "c" + INTO_SCHEMA + INTO_KW "into" + WHITESPACE " " + NAME_REF + IDENT "c" WHITESPACE "\n " ALTER_OPTION_LIST OPTIONS_KW "options" @@ -113,17 +120,19 @@ SOURCE_FILE NAME_REF IDENT "a" WHITESPACE "\n " - FROM_KW "from" - WHITESPACE " " - SERVER_KW "server" - WHITESPACE " " - NAME_REF - IDENT "b" + FROM_SERVER + FROM_KW "from" + WHITESPACE " " + SERVER_KW "server" + WHITESPACE " " + NAME_REF + IDENT "b" WHITESPACE "\n " - INTO_KW "into" - WHITESPACE " " - NAME_REF - IDENT "c" + INTO_SCHEMA + INTO_KW "into" + WHITESPACE " " + NAME_REF + IDENT "c" WHITESPACE "\n " ALTER_OPTION_LIST OPTIONS_KW "options" @@ -158,17 +167,19 @@ SOURCE_FILE NAME_REF IDENT "foreign_films" WHITESPACE "\n " - FROM_KW "FROM" - WHITESPACE " " - SERVER_KW "SERVER" - WHITESPACE " " - NAME_REF - IDENT "film_server" - WHITESPACE " " - INTO_KW "INTO" + FROM_SERVER + FROM_KW "FROM" + WHITESPACE " " + SERVER_KW "SERVER" + WHITESPACE " " + NAME_REF + IDENT "film_server" WHITESPACE " " - NAME_REF - IDENT "films" + INTO_SCHEMA + INTO_KW "INTO" + WHITESPACE " " + NAME_REF + IDENT "films" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- doc_example_2" @@ -183,29 +194,32 @@ SOURCE_FILE NAME_REF IDENT "foreign_films" WHITESPACE " " - LIMIT_KW "LIMIT" - WHITESPACE " " - TO_KW "TO" - WHITESPACE " " - L_PAREN "(" - NAME_REF - IDENT "actors" - COMMA "," - WHITESPACE " " - NAME_REF - IDENT "directors" - R_PAREN ")" + LIMIT_TO_TABLES + LIMIT_KW "LIMIT" + WHITESPACE " " + TO_KW "TO" + WHITESPACE " " + L_PAREN "(" + NAME_REF + IDENT "actors" + COMMA "," + WHITESPACE " " + NAME_REF + IDENT "directors" + R_PAREN ")" WHITESPACE "\n " - FROM_KW "FROM" - WHITESPACE " " - SERVER_KW "SERVER" - WHITESPACE " " - NAME_REF - IDENT "film_server" - WHITESPACE " " - INTO_KW "INTO" + FROM_SERVER + FROM_KW "FROM" + WHITESPACE " " + SERVER_KW "SERVER" + WHITESPACE " " + NAME_REF + IDENT "film_server" WHITESPACE " " - NAME_REF - IDENT "films" + INTO_SCHEMA + INTO_KW "INTO" + WHITESPACE " " + NAME_REF + IDENT "films" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__misc_ok.snap b/crates/squawk_parser/tests/snapshots/tests__misc_ok.snap index 2dffce39..a562248c 100644 --- a/crates/squawk_parser/tests/snapshots/tests__misc_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__misc_ok.snap @@ -925,11 +925,12 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "sum_per_hour" + ATTRIBUTE_VALUE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "sum_per_hour" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -938,14 +939,15 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - ARRAY_TYPE - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "int8" - L_BRACK "[" - R_BRACK "]" + ATTRIBUTE_VALUE + ARRAY_TYPE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "int8" + L_BRACK "[" + R_BRACK "]" COMMA "," WHITESPACE "\n " ATTRIBUTE_OPTION @@ -954,8 +956,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - STRING "'[0:23]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}'" + ATTRIBUTE_VALUE + LITERAL + STRING "'[0:23]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}'" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -1865,7 +1868,7 @@ SOURCE_FILE IDENT "partman" DOT "." PATH_SEGMENT - NAME + NAME_REF IDENT "partition_data_proc" ARG_LIST L_PAREN "(" @@ -1987,7 +1990,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "tng" WHITESPACE " " COLUMN_LIST @@ -3191,19 +3194,22 @@ SOURCE_FILE NAME IDENT "wasm_wrapper" WHITESPACE "\n " - HANDLER_KW "handler" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "wasm_fdw_handler" - WHITESPACE "\n " - VALIDATOR_KW "validator" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "wasm_fdw_validator" + FDW_OPTION_LIST + FDW_OPTION + HANDLER_KW "handler" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "wasm_fdw_handler" + WHITESPACE "\n " + FDW_OPTION + VALIDATOR_KW "validator" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "wasm_fdw_validator" SEMICOLON ";" WHITESPACE "\n\n" CREATE_SERVER @@ -5804,8 +5810,9 @@ SOURCE_FILE WHITESPACE " " EQ "=" WHITESPACE " " - LITERAL - INT_NUMBER "128" + ATTRIBUTE_VALUE + LITERAL + INT_NUMBER "128" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__notify_ok.snap b/crates/squawk_parser/tests/snapshots/tests__notify_ok.snap index 4abdbfb8..13233391 100644 --- a/crates/squawk_parser/tests/snapshots/tests__notify_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__notify_ok.snap @@ -8,14 +8,14 @@ SOURCE_FILE NOTIFY NOTIFY_KW "NOTIFY" WHITESPACE " " - NAME + NAME_REF IDENT "foo" SEMICOLON ";" WHITESPACE "\n" NOTIFY NOTIFY_KW "NOTIFY" WHITESPACE " " - NAME + NAME_REF VIRTUAL_KW "virtual" COMMA "," WHITESPACE " " diff --git a/crates/squawk_parser/tests/snapshots/tests__prepare_err.snap b/crates/squawk_parser/tests/snapshots/tests__prepare_err.snap index 98fd4dad..6c80e12f 100644 --- a/crates/squawk_parser/tests/snapshots/tests__prepare_err.snap +++ b/crates/squawk_parser/tests/snapshots/tests__prepare_err.snap @@ -11,32 +11,37 @@ SOURCE_FILE NAME IDENT "fooplan" WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INT_KW "int" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - TEXT_KW "text" - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "bool" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - NUMERIC_KW "numeric" - R_PAREN ")" + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INT_KW "int" + WHITESPACE " " + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" + WHITESPACE " " + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "bool" + COMMA "," + WHITESPACE " " + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + NUMERIC_KW "numeric" + R_PAREN ")" WHITESPACE " " AS_KW "AS" WHITESPACE "\n " diff --git a/crates/squawk_parser/tests/snapshots/tests__prepare_ok.snap b/crates/squawk_parser/tests/snapshots/tests__prepare_ok.snap index a2cfc4ab..3965eaf9 100644 --- a/crates/squawk_parser/tests/snapshots/tests__prepare_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__prepare_ok.snap @@ -11,34 +11,39 @@ SOURCE_FILE NAME IDENT "fooplan" WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INT_KW "int" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - TEXT_KW "text" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "bool" - COMMA "," - WHITESPACE " " - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - NUMERIC_KW "numeric" - R_PAREN ")" + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INT_KW "int" + COMMA "," + WHITESPACE " " + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" + COMMA "," + WHITESPACE " " + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "bool" + COMMA "," + WHITESPACE " " + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + NUMERIC_KW "numeric" + R_PAREN ")" WHITESPACE " " AS_KW "AS" WHITESPACE "\n " @@ -82,13 +87,15 @@ SOURCE_FILE NAME IDENT "usrrptplan" WHITESPACE " " - L_PAREN "(" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - INT_KW "int" - R_PAREN ")" + PARAM_LIST + L_PAREN "(" + PARAM + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + INT_KW "int" + R_PAREN ")" WHITESPACE " " AS_KW "AS" WHITESPACE "\n " diff --git a/crates/squawk_parser/tests/snapshots/tests__reassign_ok.snap b/crates/squawk_parser/tests/snapshots/tests__reassign_ok.snap index b4d45f60..49080f81 100644 --- a/crates/squawk_parser/tests/snapshots/tests__reassign_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__reassign_ok.snap @@ -12,20 +12,29 @@ SOURCE_FILE WHITESPACE " " BY_KW "by" WHITESPACE " " - SET_KW "set" - COMMA "," - WHITESPACE " " - CURRENT_ROLE_KW "current_role" - COMMA "," - WHITESPACE " " - CURRENT_USER_KW "current_user" - COMMA "," - WHITESPACE " " - IDENT "foo" + ROLE_LIST + ROLE + NAME_REF + SET_KW "set" + COMMA "," + WHITESPACE " " + ROLE + CURRENT_ROLE_KW "current_role" + COMMA "," + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" + COMMA "," + WHITESPACE " " + ROLE + NAME_REF + IDENT "foo" WHITESPACE " " TO_KW "to" WHITESPACE " " - SESSION_USER_KW "session_user" + ROLE_LIST + ROLE + SESSION_USER_KW "session_user" SEMICOLON ";" WHITESPACE "\n\n" REASSIGN @@ -35,10 +44,14 @@ SOURCE_FILE WHITESPACE " " BY_KW "by" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" WHITESPACE " " TO_KW "to" WHITESPACE " " - CURRENT_ROLE_KW "current_role" + ROLE_LIST + ROLE + CURRENT_ROLE_KW "current_role" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__refresh_ok.snap b/crates/squawk_parser/tests/snapshots/tests__refresh_ok.snap index acadc07f..6582297a 100644 --- a/crates/squawk_parser/tests/snapshots/tests__refresh_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__refresh_ok.snap @@ -30,11 +30,12 @@ SOURCE_FILE NAME_REF IDENT "annual_statistics_basis" WHITESPACE " " - WITH_KW "WITH" - WHITESPACE " " - NO_KW "NO" - WHITESPACE " " - DATA_KW "DATA" + WITH_NO_DATA + WITH_KW "WITH" + WHITESPACE " " + NO_KW "NO" + WHITESPACE " " + DATA_KW "DATA" SEMICOLON ";" WHITESPACE "\n\n" REFRESH @@ -51,8 +52,9 @@ SOURCE_FILE NAME_REF IDENT "v" WHITESPACE " " - WITH_KW "with" - WHITESPACE " " - DATA_KW "data" + WITH_DATA + WITH_KW "with" + WHITESPACE " " + DATA_KW "data" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__reset_ok.snap b/crates/squawk_parser/tests/snapshots/tests__reset_ok.snap index 63eaa9a6..479f69e7 100644 --- a/crates/squawk_parser/tests/snapshots/tests__reset_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__reset_ok.snap @@ -57,7 +57,7 @@ SOURCE_FILE LEVEL_KW "level" SEMICOLON ";" WHITESPACE "\n" - SET_SESSION_AUTH + RESET_SESSION_AUTH RESET_KW "reset" WHITESPACE " " SESSION_KW "session" diff --git a/crates/squawk_parser/tests/snapshots/tests__revoke_ok.snap b/crates/squawk_parser/tests/snapshots/tests__revoke_ok.snap index 16dd2ad7..e86c4b8a 100644 --- a/crates/squawk_parser/tests/snapshots/tests__revoke_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__revoke_ok.snap @@ -8,28 +8,50 @@ SOURCE_FILE REVOKE REVOKE_KW "revoke" WHITESPACE " " - SELECT_KW "select" - COMMA "," - WHITESPACE " " - INSERT_KW "insert" - COMMA "," - WHITESPACE " " - UPDATE_KW "update" - COMMA "," - WHITESPACE " " - DELETE_KW "delete" - COMMA "," - WHITESPACE " " - TRUNCATE_KW "truncate" - COMMA "," - WHITESPACE " " - REFERENCES_KW "references" - COMMA "," - WHITESPACE " " - TRIGGER_KW "trigger" - COMMA "," - WHITESPACE " " - IDENT "maintain" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + INSERT_KW "insert" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + UPDATE_KW "update" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + DELETE_KW "delete" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + TRUNCATE_KW "truncate" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + REFERENCES_KW "references" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + TRIGGER_KW "trigger" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "maintain" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -40,7 +62,9 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- on_table" @@ -54,9 +78,10 @@ SOURCE_FILE WHITESPACE " " FOR_KW "for" WHITESPACE " \n " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" WHITESPACE " \n " ON_KW "on" WHITESPACE " " @@ -81,16 +106,21 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" - COMMA "," - WHITESPACE " " - CURRENT_ROLE_KW "current_role" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" + COMMA "," + WHITESPACE " " + ROLE + CURRENT_ROLE_KW "current_role" WHITESPACE "\n " GRANTED_KW "granted" WHITESPACE " " BY_KW "by" WHITESPACE " " - IDENT "public" + ROLE + NAME_REF + IDENT "public" WHITESPACE "\n " CASCADE_KW "cascade" SEMICOLON ";" @@ -104,9 +134,10 @@ SOURCE_FILE WHITESPACE " " FOR_KW "for" WHITESPACE " \n " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" WHITESPACE " \n " ON_KW "on" WHITESPACE " " @@ -124,16 +155,21 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" - COMMA "," - WHITESPACE " " - CURRENT_ROLE_KW "current_role" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" + COMMA "," + WHITESPACE " " + ROLE + CURRENT_ROLE_KW "current_role" WHITESPACE "\n " GRANTED_KW "granted" WHITESPACE " " BY_KW "by" WHITESPACE " " - IDENT "public" + ROLE + NAME_REF + IDENT "public" WHITESPACE "\n " CASCADE_KW "cascade" SEMICOLON ";" @@ -147,9 +183,10 @@ SOURCE_FILE WHITESPACE " " FOR_KW "for" WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -160,7 +197,9 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE @@ -172,9 +211,10 @@ SOURCE_FILE WHITESPACE " " FOR_KW "for" WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -201,7 +241,9 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- on_all_tables" @@ -215,9 +257,10 @@ SOURCE_FILE WHITESPACE " " FOR_KW "for" WHITESPACE " \n " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" WHITESPACE " \n " ON_KW "on" WHITESPACE " " @@ -238,7 +281,9 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_ROLE_KW "current_role" + ROLE_LIST + ROLE + CURRENT_ROLE_KW "current_role" WHITESPACE "\n " RESTRICT_KW "restrict" SEMICOLON ";" @@ -248,23 +293,26 @@ SOURCE_FILE REVOKE REVOKE_KW "revoke" WHITESPACE " " - SELECT_KW "select" - COLUMN_LIST - L_PAREN "(" - COLUMN - NAME_REF - IDENT "a" - COMMA "," - WHITESPACE " " - COLUMN - NAME_REF - IDENT "b" - COMMA "," - WHITESPACE " " - COLUMN - NAME_REF - IDENT "c" - R_PAREN ")" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" + COLUMN_LIST + L_PAREN "(" + COLUMN + NAME_REF + IDENT "a" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "b" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "c" + R_PAREN ")" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -275,29 +323,36 @@ SOURCE_FILE WHITESPACE " \n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - INSERT_KW "insert" - COLUMN_LIST - L_PAREN "(" - COLUMN - NAME_REF - IDENT "a" - COMMA "," - WHITESPACE " " - COLUMN - NAME_REF - IDENT "b" - COMMA "," - WHITESPACE " " - COLUMN - NAME_REF - IDENT "c" - R_PAREN ")" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + INSERT_KW "insert" + COLUMN_LIST + L_PAREN "(" + COLUMN + NAME_REF + IDENT "a" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "b" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "c" + R_PAREN ")" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -308,29 +363,36 @@ SOURCE_FILE WHITESPACE " \n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - UPDATE_KW "update" - COLUMN_LIST - L_PAREN "(" - COLUMN - NAME_REF - IDENT "a" - COMMA "," - WHITESPACE " " - COLUMN - NAME_REF - IDENT "b" - COMMA "," - WHITESPACE " " - COLUMN - NAME_REF - IDENT "c" - R_PAREN ")" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + UPDATE_KW "update" + COLUMN_LIST + L_PAREN "(" + COLUMN + NAME_REF + IDENT "a" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "b" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "c" + R_PAREN ")" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -341,29 +403,34 @@ SOURCE_FILE WHITESPACE " \n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - REFERENCES_KW "references" - COLUMN_LIST - L_PAREN "(" - COLUMN - NAME_REF - IDENT "a" - COMMA "," - WHITESPACE " " - COLUMN - NAME_REF - IDENT "b" - COMMA "," - WHITESPACE " " - COLUMN - NAME_REF - IDENT "c" - R_PAREN ")" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + REFERENCES_KW "references" + COLUMN_LIST + L_PAREN "(" + COLUMN + NAME_REF + IDENT "a" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "b" + COMMA "," + WHITESPACE " " + COLUMN + NAME_REF + IDENT "c" + R_PAREN ")" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -374,21 +441,24 @@ SOURCE_FILE WHITESPACE " \n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" - COLUMN_LIST - L_PAREN "(" - COLUMN - NAME_REF - IDENT "a" - R_PAREN ")" + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" + COLUMN_LIST + L_PAREN "(" + COLUMN + NAME_REF + IDENT "a" + R_PAREN ")" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -399,19 +469,22 @@ SOURCE_FILE WHITESPACE " \n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" - COLUMN_LIST - L_PAREN "(" - COLUMN - NAME_REF - IDENT "a" - R_PAREN ")" + PRIVILEGES + ALL_KW "all" + COLUMN_LIST + L_PAREN "(" + COLUMN + NAME_REF + IDENT "a" + R_PAREN ")" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -422,7 +495,9 @@ SOURCE_FILE WHITESPACE " \n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- sequence" @@ -430,7 +505,10 @@ SOURCE_FILE REVOKE REVOKE_KW "revoke" WHITESPACE " " - SELECT_KW "select" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" WHITESPACE " " ON_KW "on" WHITESPACE " " @@ -443,13 +521,20 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - IDENT "usage" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" WHITESPACE " " ON_KW "on" WHITESPACE " " @@ -474,13 +559,20 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - UPDATE_KW "update" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + UPDATE_KW "update" WHITESPACE " " ON_KW "on" WHITESPACE " " @@ -493,13 +585,16 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" + PRIVILEGES + ALL_KW "all" WHITESPACE " " ON_KW "on" WHITESPACE " " @@ -516,15 +611,18 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" WHITESPACE " " ON_KW "on" WHITESPACE " " @@ -549,7 +647,9 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- database" @@ -563,7 +663,10 @@ SOURCE_FILE WHITESPACE " " FOR_KW "for" WHITESPACE " " - CREATE_KW "create" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + CREATE_KW "create" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -582,22 +685,36 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - CREATE_KW "create" - COMMA "," - WHITESPACE " " - IDENT "connect" - COMMA "," - WHITESPACE " " - TEMPORARY_KW "temporary" - COMMA "," - WHITESPACE " " - TEMP_KW "temp" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + CREATE_KW "create" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "connect" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + TEMPORARY_KW "temporary" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + TEMP_KW "temp" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -608,13 +725,16 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" + PRIVILEGES + ALL_KW "all" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -625,7 +745,9 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- domain" @@ -639,7 +761,12 @@ SOURCE_FILE WHITESPACE " " FOR_KW "for" WHITESPACE " " - IDENT "usage" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -664,15 +791,18 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -685,7 +815,9 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- foreign_data" @@ -699,7 +831,12 @@ SOURCE_FILE WHITESPACE " " FOR_KW "for" WHITESPACE " " - IDENT "usage" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -722,15 +859,18 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -745,7 +885,9 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- foreign_server" @@ -759,7 +901,12 @@ SOURCE_FILE WHITESPACE " " FOR_KW "for" WHITESPACE " " - IDENT "usage" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -780,15 +927,18 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -801,7 +951,9 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- function" @@ -815,7 +967,12 @@ SOURCE_FILE WHITESPACE " " FOR_KW "for" WHITESPACE " " - EXECUTE_KW "execute" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + EXECUTE_KW "execute" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -837,13 +994,20 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - EXECUTE_KW "execute" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + EXECUTE_KW "execute" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -921,13 +1085,16 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" + PRIVILEGES + ALL_KW "all" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -942,13 +1109,16 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" + PRIVILEGES + ALL_KW "all" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -973,13 +1143,16 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" + PRIVILEGES + ALL_KW "all" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -996,13 +1169,16 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" + PRIVILEGES + ALL_KW "all" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1019,15 +1195,18 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1086,7 +1265,9 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- language" @@ -1094,7 +1275,12 @@ SOURCE_FILE REVOKE REVOKE_KW "revoke" WHITESPACE " " - IDENT "usage" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" WHITESPACE " \n " ON_KW "on" WHITESPACE " " @@ -1113,13 +1299,16 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" + PRIVILEGES + ALL_KW "all" WHITESPACE " \n " ON_KW "on" WHITESPACE " " @@ -1138,15 +1327,18 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" WHITESPACE " \n " ON_KW "on" WHITESPACE " " @@ -1165,7 +1357,9 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- large_object" @@ -1173,10 +1367,16 @@ SOURCE_FILE REVOKE REVOKE_KW "revoke" WHITESPACE " " - SELECT_KW "select" - COMMA "," - WHITESPACE " " - UPDATE_KW "update" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + SELECT_KW "select" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + UPDATE_KW "update" WHITESPACE " \n " ON_KW "on" WHITESPACE " " @@ -1193,15 +1393,18 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" - WHITESPACE " " - PRIVILEGES_KW "privileges" + PRIVILEGES + ALL_KW "all" + WHITESPACE " " + PRIVILEGES_KW "privileges" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1218,7 +1421,9 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- param" @@ -1226,12 +1431,18 @@ SOURCE_FILE REVOKE REVOKE_KW "revoke" WHITESPACE " " - SET_KW "set" - COMMA "," - WHITESPACE " " - ALTER_KW "alter" - WHITESPACE " " - SYSTEM_KW "system" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + SET_KW "set" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ALTER_KW "alter" + WHITESPACE " " + SYSTEM_KW "system" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1256,15 +1467,20 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALTER_KW "alter" - WHITESPACE " " - SYSTEM_KW "system" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ALTER_KW "alter" + WHITESPACE " " + SYSTEM_KW "system" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1277,13 +1493,16 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" + PRIVILEGES + ALL_KW "all" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1296,7 +1515,9 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- edge_case" @@ -1310,33 +1531,59 @@ SOURCE_FILE WHITESPACE " " FOR_KW "for" WHITESPACE " \n " - SET_KW "set" - COMMA "," - WHITESPACE " " - SET_KW "set" - COMMA "," - WHITESPACE " " - SET_KW "set" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + SET_KW "set" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + SET_KW "set" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + SET_KW "set" WHITESPACE " " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE " \n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - SET_KW "set" - COMMA "," - WHITESPACE " " - SET_KW "set" - COMMA "," - WHITESPACE " " - SET_KW "set" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + SET_KW "set" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + SET_KW "set" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + SET_KW "set" WHITESPACE " " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE " \n\n" COMMENT "-- schema" @@ -1344,7 +1591,10 @@ SOURCE_FILE REVOKE REVOKE_KW "revoke" WHITESPACE " " - CREATE_KW "create" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + CREATE_KW "create" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1355,16 +1605,24 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - CREATE_KW "create" - COMMA "," - WHITESPACE " " - IDENT "usage" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + CREATE_KW "create" + COMMA "," + WHITESPACE " " + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1383,13 +1641,16 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" + PRIVILEGES + ALL_KW "all" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1408,7 +1669,9 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- tablespace" @@ -1416,7 +1679,10 @@ SOURCE_FILE REVOKE REVOKE_KW "revoke" WHITESPACE " " - CREATE_KW "create" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + CREATE_KW "create" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1435,13 +1701,16 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" + PRIVILEGES + ALL_KW "all" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1460,7 +1729,9 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- type_" @@ -1468,7 +1739,12 @@ SOURCE_FILE REVOKE REVOKE_KW "revoke" WHITESPACE " " - IDENT "usage" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "usage" WHITESPACE "\n " ON_KW "on" WHITESPACE " " @@ -1496,13 +1772,16 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" + PRIVILEGES + ALL_KW "all" WHITESPACE " \n " ON_KW "on" WHITESPACE " " @@ -1516,13 +1795,16 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - ALL_KW "all" + PRIVILEGES + ALL_KW "all" WHITESPACE " \n " ON_KW "on" WHITESPACE " " @@ -1541,7 +1823,9 @@ SOURCE_FILE WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- option" @@ -1555,11 +1839,18 @@ SOURCE_FILE WHITESPACE " " FOR_KW "for" WHITESPACE "\n " - IDENT "public" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "public" WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE @@ -1571,11 +1862,18 @@ SOURCE_FILE WHITESPACE " " FOR_KW "for" WHITESPACE "\n " - IDENT "public" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "public" WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE @@ -1587,20 +1885,34 @@ SOURCE_FILE WHITESPACE " " FOR_KW "for" WHITESPACE "\n " - IDENT "public" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "public" WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" REVOKE REVOKE_KW "revoke" WHITESPACE " " - IDENT "public" + PRIVILEGES + REVOKE_COMMAND_LIST + REVOKE_COMMAND + ROLE + NAME_REF + IDENT "public" WHITESPACE "\n " FROM_KW "from" WHITESPACE " " - CURRENT_USER_KW "current_user" + ROLE_LIST + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__schemas_ok.snap b/crates/squawk_parser/tests/snapshots/tests__schemas_ok.snap index 554da2ef..93ed484d 100644 --- a/crates/squawk_parser/tests/snapshots/tests__schemas_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__schemas_ok.snap @@ -22,9 +22,12 @@ SOURCE_FILE NAME IDENT "s" WHITESPACE " " - AUTHORIZATION_KW "authorization" - WHITESPACE " " - IDENT "foo" + SCHEMA_AUTHORIZATION + AUTHORIZATION_KW "authorization" + WHITESPACE " " + ROLE + NAME_REF + IDENT "foo" SEMICOLON ";" WHITESPACE "\n" CREATE_SCHEMA @@ -35,9 +38,11 @@ SOURCE_FILE NAME IDENT "s" WHITESPACE " " - AUTHORIZATION_KW "authorization" - WHITESPACE " " - CURRENT_ROLE_KW "current_role" + SCHEMA_AUTHORIZATION + AUTHORIZATION_KW "authorization" + WHITESPACE " " + ROLE + CURRENT_ROLE_KW "current_role" SEMICOLON ";" WHITESPACE "\n" CREATE_SCHEMA @@ -48,9 +53,11 @@ SOURCE_FILE NAME IDENT "s" WHITESPACE " " - AUTHORIZATION_KW "authorization" - WHITESPACE " " - CURRENT_USER_KW "current_user" + SCHEMA_AUTHORIZATION + AUTHORIZATION_KW "authorization" + WHITESPACE " " + ROLE + CURRENT_USER_KW "current_user" SEMICOLON ";" WHITESPACE "\n" CREATE_SCHEMA @@ -61,9 +68,11 @@ SOURCE_FILE NAME IDENT "s" WHITESPACE " " - AUTHORIZATION_KW "authorization" - WHITESPACE " " - SESSION_USER_KW "session_user" + SCHEMA_AUTHORIZATION + AUTHORIZATION_KW "authorization" + WHITESPACE " " + ROLE + SESSION_USER_KW "session_user" SEMICOLON ";" WHITESPACE "\n\n" CREATE_SCHEMA @@ -71,9 +80,12 @@ SOURCE_FILE WHITESPACE " " SCHEMA_KW "schema" WHITESPACE " " - AUTHORIZATION_KW "authorization" - WHITESPACE " " - IDENT "foo" + SCHEMA_AUTHORIZATION + AUTHORIZATION_KW "authorization" + WHITESPACE " " + ROLE + NAME_REF + IDENT "foo" SEMICOLON ";" WHITESPACE "\n\n" CREATE_SCHEMA @@ -107,9 +119,12 @@ SOURCE_FILE NAME IDENT "s" WHITESPACE " " - AUTHORIZATION_KW "authorization" - WHITESPACE " " - IDENT "bar" + SCHEMA_AUTHORIZATION + AUTHORIZATION_KW "authorization" + WHITESPACE " " + ROLE + NAME_REF + IDENT "bar" SEMICOLON ";" WHITESPACE "\n" CREATE_SCHEMA @@ -124,9 +139,12 @@ SOURCE_FILE WHITESPACE " " EXISTS_KW "exists" WHITESPACE " " - AUTHORIZATION_KW "authorization" - WHITESPACE " " - IDENT "bar" + SCHEMA_AUTHORIZATION + AUTHORIZATION_KW "authorization" + WHITESPACE " " + ROLE + NAME_REF + IDENT "bar" SEMICOLON ";" WHITESPACE "\n\n" CREATE_SCHEMA @@ -235,7 +253,7 @@ SOURCE_FILE WHITESPACE " " SCHEMA_KW "schema" WHITESPACE " " - NAME + NAME_REF IDENT "myschema" SEMICOLON ";" WHITESPACE "\n" @@ -244,7 +262,7 @@ SOURCE_FILE WHITESPACE " " SCHEMA_KW "schema" WHITESPACE " " - NAME + NAME_REF IDENT "myschema" WHITESPACE " " CASCADE_KW "cascade" @@ -260,7 +278,7 @@ SOURCE_FILE WHITESPACE " " EXISTS_KW "exists" WHITESPACE " " - NAME + NAME_REF IDENT "myschema" WHITESPACE " " RESTRICT_KW "restrict" @@ -276,15 +294,15 @@ SOURCE_FILE WHITESPACE " " EXISTS_KW "exists" WHITESPACE " " - NAME + NAME_REF IDENT "a" COMMA "," WHITESPACE " " - NAME + NAME_REF IDENT "b" COMMA "," WHITESPACE " " - NAME + NAME_REF IDENT "c" SEMICOLON ";" WHITESPACE "\n\n" @@ -296,9 +314,12 @@ SOURCE_FILE NAME IDENT "schema_name" WHITESPACE " " - AUTHORIZATION_KW "authorization" - WHITESPACE " " - IDENT "user_name" + SCHEMA_AUTHORIZATION + AUTHORIZATION_KW "authorization" + WHITESPACE " " + ROLE + NAME_REF + IDENT "user_name" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- create_schema_with_sequence" @@ -340,16 +361,20 @@ SOURCE_FILE NAME IDENT "t" WHITESPACE " " - AFTER_KW "after" + TIMING + AFTER_KW "after" WHITESPACE " " - INSERT_KW "insert" + TRIGGER_EVENT_LIST + TRIGGER_EVENT + INSERT_KW "insert" WHITESPACE "\n " - ON_KW "on" - WHITESPACE " " - PATH - PATH_SEGMENT - NAME_REF - IDENT "u" + ON_TABLE + ON_KW "on" + WHITESPACE " " + PATH + PATH_SEGMENT + NAME_REF + IDENT "u" WHITESPACE "\n " EXECUTE_KW "execute" WHITESPACE " " @@ -449,7 +474,9 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "role" WHITESPACE " " - IDENT "foo" + ROLE + NAME_REF + IDENT "foo" SEMICOLON ";" WHITESPACE "\n\n" SET diff --git a/crates/squawk_parser/tests/snapshots/tests__security_label_ok.snap b/crates/squawk_parser/tests/snapshots/tests__security_label_ok.snap index d3edf3db..66abc7c7 100644 --- a/crates/squawk_parser/tests/snapshots/tests__security_label_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__security_label_ok.snap @@ -10,9 +10,11 @@ SOURCE_FILE WHITESPACE " " LABEL_KW "LABEL" WHITESPACE " " - FOR_KW "FOR" - WHITESPACE " " - IDENT "selinux" + FOR_PROVIDER + FOR_KW "FOR" + WHITESPACE " " + NAME_REF + IDENT "selinux" WHITESPACE " " ON_KW "ON" WHITESPACE " " @@ -20,7 +22,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "mytable" WHITESPACE " " IS_KW "IS" @@ -34,9 +36,11 @@ SOURCE_FILE WHITESPACE " " LABEL_KW "LABEL" WHITESPACE " " - FOR_KW "FOR" - WHITESPACE " " - IDENT "selinux" + FOR_PROVIDER + FOR_KW "FOR" + WHITESPACE " " + NAME_REF + IDENT "selinux" WHITESPACE " " ON_KW "ON" WHITESPACE " " @@ -44,7 +48,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "mytable" WHITESPACE " " IS_KW "IS" @@ -70,7 +74,7 @@ SOURCE_FILE IDENT "foo" DOT "." PATH_SEGMENT - NAME + NAME_REF IDENT "bar" WHITESPACE " " IS_KW "is" @@ -338,7 +342,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "foo" WHITESPACE " " IS_KW "is" @@ -364,7 +368,7 @@ SOURCE_FILE IDENT "bar" DOT "." PATH_SEGMENT - NAME + NAME_REF IDENT "foo" WHITESPACE " " IS_KW "is" @@ -383,7 +387,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "foo" WHITESPACE " " IS_KW "is" @@ -406,7 +410,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "foo" WHITESPACE " " IS_KW "is" @@ -429,7 +433,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "bar" WHITESPACE " " IS_KW "is" @@ -594,7 +598,7 @@ SOURCE_FILE IDENT "foo" DOT "." PATH_SEGMENT - NAME + NAME_REF IDENT "bar" WHITESPACE " " IS_KW "is" @@ -617,7 +621,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "bar" WHITESPACE " " IS_KW "is" @@ -636,7 +640,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "bar" WHITESPACE " " IS_KW "is" @@ -757,7 +761,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "bar" WHITESPACE " " IS_KW "is" @@ -778,7 +782,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "bar" WHITESPACE " " IS_KW "is" @@ -904,7 +908,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "bar" WHITESPACE " " IS_KW "is" @@ -930,7 +934,7 @@ SOURCE_FILE IDENT "foo" DOT "." PATH_SEGMENT - NAME + NAME_REF IDENT "bar" WHITESPACE " " IS_KW "is" @@ -951,7 +955,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "bar" WHITESPACE " " IS_KW "is" @@ -972,7 +976,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "bar" WHITESPACE " " IS_KW "is" @@ -998,7 +1002,7 @@ SOURCE_FILE IDENT "foo" DOT "." PATH_SEGMENT - NAME + NAME_REF IDENT "bar" WHITESPACE " " IS_KW "is" @@ -1024,7 +1028,7 @@ SOURCE_FILE IDENT "foo" DOT "." PATH_SEGMENT - NAME + NAME_REF IDENT "bar" WHITESPACE " " IS_KW "is" diff --git a/crates/squawk_parser/tests/snapshots/tests__select_ok.snap b/crates/squawk_parser/tests/snapshots/tests__select_ok.snap index 4878bcdd..bbdf4f19 100644 --- a/crates/squawk_parser/tests/snapshots/tests__select_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__select_ok.snap @@ -3491,7 +3491,8 @@ SOURCE_FILE SORT_USING USING_KW "using" WHITESPACE " " - R_ANGLE ">" + OP + R_ANGLE ">" WHITESPACE " " NULLS_LAST NULLS_KW "nulls" @@ -5947,10 +5948,11 @@ SOURCE_FILE SORT_USING USING_KW "using" WHITESPACE " " - CUSTOM_OP - R_ANGLE ">" - R_ANGLE ">" - R_ANGLE ">" + OP + CUSTOM_OP + R_ANGLE ">" + R_ANGLE ">" + R_ANGLE ">" SEMICOLON ";" WHITESPACE "\n\n" COMMENT "-- order_by_regression" diff --git a/crates/squawk_parser/tests/snapshots/tests__set_constraints_ok.snap b/crates/squawk_parser/tests/snapshots/tests__set_constraints_ok.snap index 3643436d..d46b2aca 100644 --- a/crates/squawk_parser/tests/snapshots/tests__set_constraints_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__set_constraints_ok.snap @@ -32,13 +32,13 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "foo" COMMA "," WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "bar" COMMA "," WHITESPACE " " @@ -49,7 +49,7 @@ SOURCE_FILE IDENT "a" DOT "." PATH_SEGMENT - NAME + NAME_REF IDENT "b" WHITESPACE " " IMMEDIATE_KW "immediate" @@ -62,7 +62,7 @@ SOURCE_FILE WHITESPACE " " PATH PATH_SEGMENT - NAME + NAME_REF IDENT "bar" WHITESPACE " " IMMEDIATE_KW "immediate" diff --git a/crates/squawk_parser/tests/snapshots/tests__set_role_ok.snap b/crates/squawk_parser/tests/snapshots/tests__set_role_ok.snap index f1c13e08..15c4238f 100644 --- a/crates/squawk_parser/tests/snapshots/tests__set_role_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__set_role_ok.snap @@ -39,7 +39,18 @@ SOURCE_FILE WHITESPACE " " ROLE_KW "ROLE" WHITESPACE " " - IDENT "foo" + ROLE + NAME_REF + IDENT "foo" + SEMICOLON ";" + WHITESPACE "\n\n" + SET_ROLE + SET_KW "set" + WHITESPACE " " + ROLE_KW "role" + WHITESPACE " " + LITERAL + STRING "'fooo'" SEMICOLON ";" WHITESPACE "\n\n" SET_ROLE diff --git a/crates/squawk_parser/tests/snapshots/tests__set_session_auth_ok.snap b/crates/squawk_parser/tests/snapshots/tests__set_session_auth_ok.snap index 52944989..9b34672f 100644 --- a/crates/squawk_parser/tests/snapshots/tests__set_session_auth_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__set_session_auth_ok.snap @@ -12,7 +12,9 @@ SOURCE_FILE WHITESPACE " " AUTHORIZATION_KW "AUTHORIZATION" WHITESPACE " " - DECIMAL_KW "decimal" + ROLE + NAME_REF + DECIMAL_KW "decimal" SEMICOLON ";" WHITESPACE "\n" SET_SESSION_AUTH @@ -40,7 +42,7 @@ SOURCE_FILE DEFAULT_KW "DEFAULT" SEMICOLON ";" WHITESPACE "\n" - SET_SESSION_AUTH + RESET_SESSION_AUTH RESET_KW "RESET" WHITESPACE " " SESSION_KW "SESSION" diff --git a/crates/squawk_parser/tests/snapshots/tests__transaction_ok.snap b/crates/squawk_parser/tests/snapshots/tests__transaction_ok.snap index c9f53de6..0a1119ac 100644 --- a/crates/squawk_parser/tests/snapshots/tests__transaction_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__transaction_ok.snap @@ -276,7 +276,7 @@ SOURCE_FILE SAVEPOINT SAVEPOINT_KW "savepoint" WHITESPACE " " - NAME_REF + NAME IDENT "foo" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__unlisten_ok.snap b/crates/squawk_parser/tests/snapshots/tests__unlisten_ok.snap index a9088c39..ad81d6d3 100644 --- a/crates/squawk_parser/tests/snapshots/tests__unlisten_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__unlisten_ok.snap @@ -8,7 +8,7 @@ SOURCE_FILE UNLISTEN UNLISTEN_KW "unlisten" WHITESPACE " " - NAME + NAME_REF VIRTUAL_KW "virtual" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__update_ok.snap b/crates/squawk_parser/tests/snapshots/tests__update_ok.snap index 8dbd0db4..a3d65013 100644 --- a/crates/squawk_parser/tests/snapshots/tests__update_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__update_ok.snap @@ -1139,7 +1139,7 @@ SOURCE_FILE SAVEPOINT SAVEPOINT_KW "SAVEPOINT" WHITESPACE " " - NAME_REF + NAME IDENT "sp1" SEMICOLON ";" WHITESPACE "\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__update_pg18_ok.snap b/crates/squawk_parser/tests/snapshots/tests__update_pg18_ok.snap new file mode 100644 index 00000000..8a062c5b --- /dev/null +++ b/crates/squawk_parser/tests/snapshots/tests__update_pg18_ok.snap @@ -0,0 +1,196 @@ +--- +source: crates/squawk_parser/tests/tests.rs +input_file: crates/squawk_parser/tests/data/ok/update_pg18.sql +--- +SOURCE_FILE + COMMENT "-- returning_with_old_new" + WHITESPACE "\n" + UPDATE + UPDATE_KW "UPDATE" + WHITESPACE " " + RELATION_NAME + PATH + PATH_SEGMENT + NAME_REF + IDENT "inventory" + WHITESPACE "\n" + SET_CLAUSE + SET_KW "SET" + WHITESPACE " " + SET_COLUMN_LIST + SET_SINGLE_COLUMN + COLUMN + NAME_REF + IDENT "quantity" + WHITESPACE " " + EQ "=" + WHITESPACE " " + SET_EXPR + BIN_EXPR + NAME_REF + IDENT "quantity" + WHITESPACE " " + MINUS "-" + WHITESPACE " " + LITERAL + INT_NUMBER "5" + WHITESPACE "\n" + WHERE_CLAUSE + WHERE_KW "WHERE" + WHITESPACE " " + BIN_EXPR + NAME_REF + IDENT "product_id" + WHITESPACE " " + EQ "=" + WHITESPACE " " + LITERAL + INT_NUMBER "456" + WHITESPACE "\n" + RETURNING_CLAUSE + RETURNING_KW "RETURNING" + WHITESPACE " " + RETURNING_OPTION_LIST + WITH_KW "WITH" + WHITESPACE " " + L_PAREN "(" + RETURNING_OPTION + OLD_KW "OLD" + WHITESPACE " " + AS_KW "AS" + WHITESPACE " " + NAME + BEFORE_KW "before" + COMMA "," + WHITESPACE " " + RETURNING_OPTION + NEW_KW "NEW" + WHITESPACE " " + AS_KW "AS" + WHITESPACE " " + NAME + AFTER_KW "after" + R_PAREN ")" + WHITESPACE "\n " + TARGET_LIST + TARGET + FIELD_EXPR + NAME_REF + BEFORE_KW "before" + DOT "." + NAME_REF + IDENT "quantity" + WHITESPACE " " + AS_NAME + AS_KW "AS" + WHITESPACE " " + NAME + IDENT "previous_quantity" + COMMA "," + WHITESPACE "\n " + TARGET + FIELD_EXPR + NAME_REF + AFTER_KW "after" + DOT "." + NAME_REF + IDENT "quantity" + WHITESPACE " " + AS_NAME + AS_KW "AS" + WHITESPACE " " + NAME + IDENT "current_quantity" + COMMA "," + WHITESPACE "\n " + TARGET + BIN_EXPR + FIELD_EXPR + NAME_REF + AFTER_KW "after" + DOT "." + NAME_REF + IDENT "quantity" + WHITESPACE " " + MINUS "-" + WHITESPACE " " + FIELD_EXPR + NAME_REF + BEFORE_KW "before" + DOT "." + NAME_REF + IDENT "quantity" + WHITESPACE " " + AS_NAME + AS_KW "AS" + WHITESPACE " " + NAME + IDENT "change" + SEMICOLON ";" + WHITESPACE "\n\n" + UPDATE + UPDATE_KW "update" + WHITESPACE " " + RELATION_NAME + PATH + PATH_SEGMENT + NAME_REF + IDENT "t" + WHITESPACE " " + SET_CLAUSE + SET_KW "set" + WHITESPACE " " + SET_COLUMN_LIST + SET_SINGLE_COLUMN + COLUMN + NAME_REF + IDENT "x" + WHITESPACE " " + EQ "=" + WHITESPACE " " + SET_EXPR + LITERAL + INT_NUMBER "1" + WHITESPACE " \n" + RETURNING_CLAUSE + RETURNING_KW "returning" + WHITESPACE " " + RETURNING_OPTION_LIST + WITH_KW "with" + WHITESPACE " " + L_PAREN "(" + RETURNING_OPTION + OLD_KW "old" + WHITESPACE " " + AS_KW "as" + WHITESPACE " " + NAME + IDENT "o" + COMMA "," + WHITESPACE " " + RETURNING_OPTION + NEW_KW "new" + WHITESPACE " " + AS_KW "as" + WHITESPACE " " + NAME + IDENT "n" + R_PAREN ")" + WHITESPACE " " + TARGET_LIST + TARGET + FIELD_EXPR + NAME_REF + IDENT "o" + DOT "." + STAR "*" + COMMA "," + WHITESPACE " " + TARGET + FIELD_EXPR + NAME_REF + IDENT "n" + DOT "." + STAR "*" + SEMICOLON ";" + WHITESPACE "\n" diff --git a/crates/squawk_parser/tests/tests.rs b/crates/squawk_parser/tests/tests.rs index 1f1c42fa..0394aab9 100644 --- a/crates/squawk_parser/tests/tests.rs +++ b/crates/squawk_parser/tests/tests.rs @@ -33,8 +33,8 @@ fn parser_ok(fixture: Fixture<&str>) { errors.is_empty(), "tests defined in the `ok` can't have parser errors." ); - // skipping pg17 specific stuff since our parser isn't using the latest parser - if !test_name.ends_with("pg17") { + // skipping pg17/pg18 specific stuff since our parser isn't using the latest parser + if !test_name.ends_with("pg17") && !test_name.ends_with("pg18") { let pg_result = pg_query::parse(content); if let Err(e) = &pg_result { assert!( diff --git a/crates/squawk_syntax/src/ast/generated/nodes.rs b/crates/squawk_syntax/src/ast/generated/nodes.rs index 2b6f8679..cd749f74 100644 --- a/crates/squawk_syntax/src/ast/generated/nodes.rs +++ b/crates/squawk_syntax/src/ast/generated/nodes.rs @@ -101,6 +101,21 @@ impl AddGenerated { } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct AddOpClassOptions { + pub(crate) syntax: SyntaxNode, +} +impl AddOpClassOptions { + #[inline] + pub fn operator_class_option_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn add_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ADD_KW) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct Aggregate { pub(crate) syntax: SyntaxNode, @@ -160,7 +175,23 @@ pub struct AlterCollation { } impl AlterCollation { #[inline] - pub fn name_ref(&self) -> Option { + pub fn owner_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn refresh_version(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_schema(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -221,7 +252,19 @@ pub struct AlterConversion { } impl AlterConversion { #[inline] - pub fn name_ref(&self) -> Option { + pub fn owner_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_schema(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -239,11 +282,39 @@ pub struct AlterDatabase { pub(crate) syntax: SyntaxNode, } impl AlterDatabase { + #[inline] + pub fn create_database_option_list(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn name_ref(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn owner_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn refresh_collation_version(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn reset_config_param(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_config_param(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_tablespace(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) } @@ -258,6 +329,22 @@ pub struct AlterDefaultPrivileges { pub(crate) syntax: SyntaxNode, } impl AlterDefaultPrivileges { + #[inline] + pub fn grant_default_privileges(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name_refs(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn revoke_default_privileges(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn role_list(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) @@ -267,9 +354,29 @@ impl AlterDefaultPrivileges { support::token(&self.syntax, SyntaxKind::DEFAULT_KW) } #[inline] + pub fn for_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FOR_KW) + } + #[inline] + pub fn in_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IN_KW) + } + #[inline] pub fn privileges_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::PRIVILEGES_KW) } + #[inline] + pub fn role_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ROLE_KW) + } + #[inline] + pub fn schema_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SCHEMA_KW) + } + #[inline] + pub fn user_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::USER_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -300,15 +407,43 @@ pub struct AlterEventTrigger { pub(crate) syntax: SyntaxNode, } impl AlterEventTrigger { + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn owner_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) } #[inline] + pub fn always_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ALWAYS_KW) + } + #[inline] + pub fn disable_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DISABLE_KW) + } + #[inline] + pub fn enable_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ENABLE_KW) + } + #[inline] pub fn event_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::EVENT_KW) } #[inline] + pub fn replica_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::REPLICA_KW) + } + #[inline] pub fn trigger_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::TRIGGER_KW) } @@ -338,6 +473,22 @@ pub struct AlterForeignDataWrapper { pub(crate) syntax: SyntaxNode, } impl AlterForeignDataWrapper { + #[inline] + pub fn fdw_option_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn owner_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) @@ -361,6 +512,30 @@ pub struct AlterForeignTable { pub(crate) syntax: SyntaxNode, } impl AlterForeignTable { + #[inline] + pub fn alter_table_actions(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn if_exists(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn relation_name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_column(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_schema(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) @@ -380,6 +555,34 @@ pub struct AlterFunction { pub(crate) syntax: SyntaxNode, } impl AlterFunction { + #[inline] + pub fn depends_on_extension(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn func_option_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn function_sig(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn no_depends_on_extension(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn owner_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_schema(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) @@ -388,6 +591,10 @@ impl AlterFunction { pub fn function_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::FUNCTION_KW) } + #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -396,17 +603,37 @@ pub struct AlterGroup { } impl AlterGroup { #[inline] - pub fn name_ref(&self) -> Option { + pub fn name_refs(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn role(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn add_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ADD_KW) + } + #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) } #[inline] + pub fn drop_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DROP_KW) + } + #[inline] pub fn group_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::GROUP_KW) } + #[inline] + pub fn user_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::USER_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -415,7 +642,11 @@ pub struct AlterIndex { } impl AlterIndex { #[inline] - pub fn name_ref(&self) -> Option { + pub fn if_exists(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -438,6 +669,14 @@ impl AlterLanguage { support::child(&self.syntax) } #[inline] + pub fn owner_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) } @@ -471,19 +710,67 @@ pub struct AlterMaterializedView { pub(crate) syntax: SyntaxNode, } impl AlterMaterializedView { + #[inline] + pub fn action(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn if_exists(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn name_ref(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn role_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn all_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ALL_KW) + } + #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) } #[inline] + pub fn by_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::BY_KW) + } + #[inline] + pub fn in_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IN_KW) + } + #[inline] pub fn materialized_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::MATERIALIZED_KW) } #[inline] + pub fn nowait_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NOWAIT_KW) + } + #[inline] + pub fn owned_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OWNED_KW) + } + #[inline] + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) + } + #[inline] + pub fn tablespace_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TABLESPACE_KW) + } + #[inline] pub fn view_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::VIEW_KW) } @@ -495,11 +782,27 @@ pub struct AlterOperator { } impl AlterOperator { #[inline] - pub fn alter_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ALTER_KW) + pub fn op_sig(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn operator_token(&self) -> Option { + pub fn owner_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_options(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_schema(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn alter_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ALTER_KW) + } + #[inline] + pub fn operator_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::OPERATOR_KW) } } @@ -514,6 +817,22 @@ impl AlterOperatorClass { support::child(&self.syntax) } #[inline] + pub fn owner_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_schema(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) } @@ -536,11 +855,35 @@ pub struct AlterOperatorFamily { pub(crate) syntax: SyntaxNode, } impl AlterOperatorFamily { + #[inline] + pub fn add_op_class_options(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn drop_op_class_options(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn name_ref(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn owner_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_schema(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) } @@ -601,22 +944,58 @@ pub struct AlterPolicy { pub(crate) syntax: SyntaxNode, } impl AlterPolicy { + #[inline] + pub fn expr(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn name_ref(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn on_table(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn role_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } + #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) } #[inline] - pub fn on_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ON_KW) + pub fn check_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CHECK_KW) } #[inline] pub fn policy_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::POLICY_KW) } + #[inline] + pub fn to_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TO_KW) + } + #[inline] + pub fn using_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::USING_KW) + } + #[inline] + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -624,6 +1003,34 @@ pub struct AlterProcedure { pub(crate) syntax: SyntaxNode, } impl AlterProcedure { + #[inline] + pub fn depends_on_extension(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn func_option_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn function_sig(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn no_depends_on_extension(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn owner_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_schema(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) @@ -632,6 +1039,10 @@ impl AlterProcedure { pub fn procedure_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::PROCEDURE_KW) } + #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -658,6 +1069,10 @@ pub struct AlterRole { pub(crate) syntax: SyntaxNode, } impl AlterRole { + #[inline] + pub fn role(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) @@ -673,11 +1088,43 @@ pub struct AlterRoutine { pub(crate) syntax: SyntaxNode, } impl AlterRoutine { + #[inline] + pub fn depends_on_extension(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn func_option_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn function_sig(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn no_depends_on_extension(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn owner_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_schema(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) } #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } + #[inline] pub fn routine_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ROUTINE_KW) } @@ -693,6 +1140,14 @@ impl AlterRule { support::child(&self.syntax) } #[inline] + pub fn on_table(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) } @@ -716,20 +1171,20 @@ impl AlterSchema { support::child(&self.syntax) } #[inline] - pub fn alter_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ALTER_KW) + pub fn owner_to(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn rename_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::RENAME_KW) + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn schema_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SCHEMA_KW) + pub fn alter_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ALTER_KW) } #[inline] - pub fn to_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TO_KW) + pub fn schema_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SCHEMA_KW) } } @@ -739,7 +1194,11 @@ pub struct AlterSequence { } impl AlterSequence { #[inline] - pub fn name_ref(&self) -> Option { + pub fn if_exists(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -775,13 +1234,40 @@ impl AlterServer { } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct AlterSetStatistics { + pub(crate) syntax: SyntaxNode, +} +impl AlterSetStatistics { + #[inline] + pub fn literal(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn column_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::COLUMN_KW) + } + #[inline] + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) + } + #[inline] + pub fn statistics_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::STATISTICS_KW) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct AlterStatistics { pub(crate) syntax: SyntaxNode, } impl AlterStatistics { #[inline] - pub fn name_ref(&self) -> Option { + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -861,7 +1347,23 @@ pub struct AlterTablespace { } impl AlterTablespace { #[inline] - pub fn name_ref(&self) -> Option { + pub fn owner_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn reset_options(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_options(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -880,7 +1382,19 @@ pub struct AlterTextSearchConfiguration { } impl AlterTextSearchConfiguration { #[inline] - pub fn name_ref(&self) -> Option { + pub fn owner_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_schema(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -907,7 +1421,23 @@ pub struct AlterTextSearchDictionary { } impl AlterTextSearchDictionary { #[inline] - pub fn name_ref(&self) -> Option { + pub fn attribute_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn owner_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_schema(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -934,7 +1464,15 @@ pub struct AlterTextSearchParser { } impl AlterTextSearchParser { #[inline] - pub fn name_ref(&self) -> Option { + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_schema(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -961,7 +1499,15 @@ pub struct AlterTextSearchTemplate { } impl AlterTextSearchTemplate { #[inline] - pub fn name_ref(&self) -> Option { + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_schema(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -987,20 +1533,32 @@ pub struct AlterTrigger { pub(crate) syntax: SyntaxNode, } impl AlterTrigger { + #[inline] + pub fn depends_on_extension(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn name_ref(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn alter_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ALTER_KW) + pub fn no_depends_on_extension(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn on_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ON_KW) + pub fn on_table(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn trigger_token(&self) -> Option { + pub fn rename_to(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn alter_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ALTER_KW) + } + #[inline] + pub fn trigger_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::TRIGGER_KW) } } @@ -1011,7 +1569,7 @@ pub struct AlterType { } impl AlterType { #[inline] - pub fn ty(&self) -> Option { + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -1030,7 +1588,7 @@ pub struct AlterUser { } impl AlterUser { #[inline] - pub fn name_ref(&self) -> Option { + pub fn role(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -1048,11 +1606,19 @@ pub struct AlterUserMapping { pub(crate) syntax: SyntaxNode, } impl AlterUserMapping { + #[inline] + pub fn alter_option_list(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn name_ref(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn role(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn alter_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ALTER_KW) } @@ -1080,7 +1646,7 @@ pub struct AlterView { } impl AlterView { #[inline] - pub fn name_ref(&self) -> Option { + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -1103,6 +1669,10 @@ impl Analyze { support::child(&self.syntax) } #[inline] + pub fn relation_names(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] pub fn analyze_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ANALYZE_KW) } @@ -1336,12 +1906,59 @@ pub struct AttributeOption { pub(crate) syntax: SyntaxNode, } impl AttributeOption { + #[inline] + pub fn attribute_value(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn dot_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DOT) + } #[inline] pub fn eq_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::EQ) } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct AttributeValue { + pub(crate) syntax: SyntaxNode, +} +impl AttributeValue { + #[inline] + pub fn literal(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn op(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn ty(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } + #[inline] + pub fn none_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NONE_KW) + } + #[inline] + pub fn operator_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OPERATOR_KW) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct Begin { pub(crate) syntax: SyntaxNode, @@ -1438,6 +2055,14 @@ pub struct Call { pub(crate) syntax: SyntaxNode, } impl Call { + #[inline] + pub fn arg_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn call_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CALL_KW) @@ -1540,6 +2165,25 @@ impl CastExpr { } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct CastSig { + pub(crate) syntax: SyntaxNode, +} +impl CastSig { + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } + #[inline] + pub fn as_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AS_KW) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct CharType { pub(crate) syntax: SyntaxNode, @@ -1581,7 +2225,7 @@ impl CheckConstraint { support::child(&self.syntax) } #[inline] - pub fn name_ref(&self) -> Option { + pub fn name(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -1622,6 +2266,10 @@ pub struct Close { pub(crate) syntax: SyntaxNode, } impl Close { + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn close_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CLOSE_KW) @@ -1633,6 +2281,18 @@ pub struct Cluster { pub(crate) syntax: SyntaxNode, } impl Cluster { + #[inline] + pub fn option_item_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn using_method(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn cluster_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CLUSTER_KW) @@ -1798,14 +2458,46 @@ pub struct CommentOn { pub(crate) syntax: SyntaxNode, } impl CommentOn { + #[inline] + pub fn literal(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn comment_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::COMMENT_KW) } #[inline] + pub fn constraint_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CONSTRAINT_KW) + } + #[inline] + pub fn domain_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DOMAIN_KW) + } + #[inline] + pub fn is_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IS_KW) + } + #[inline] + pub fn null_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NULL_KW) + } + #[inline] pub fn on_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ON_KW) } + #[inline] + pub fn table_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TABLE_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -2000,6 +2692,10 @@ pub struct ConstraintExclusion { pub(crate) syntax: SyntaxNode, } impl ConstraintExclusion { + #[inline] + pub fn expr(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn with_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::WITH_KW) @@ -2012,8 +2708,16 @@ pub struct ConstraintExclusionList { } impl ConstraintExclusionList { #[inline] - pub fn exclude_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::EXCLUDE_KW) + pub fn constraint_exclusions(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) } } @@ -2067,6 +2771,18 @@ pub struct ConstraintWhereClause { pub(crate) syntax: SyntaxNode, } impl ConstraintWhereClause { + #[inline] + pub fn expr(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } #[inline] pub fn where_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::WHERE_KW) @@ -2078,10 +2794,62 @@ pub struct Copy { pub(crate) syntax: SyntaxNode, } impl Copy { + #[inline] + pub fn column_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn literal(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn preparable_stmt(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn where_clause(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } + #[inline] + pub fn binary_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::BINARY_KW) + } #[inline] pub fn copy_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::COPY_KW) } + #[inline] + pub fn from_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FROM_KW) + } + #[inline] + pub fn program_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::PROGRAM_KW) + } + #[inline] + pub fn stdin_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::STDIN_KW) + } + #[inline] + pub fn stdout_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::STDOUT_KW) + } + #[inline] + pub fn to_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TO_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -2101,7 +2869,11 @@ pub struct CreateAccessMethod { } impl CreateAccessMethod { #[inline] - pub fn name_ref(&self) -> Option { + pub fn handler_clause(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -2113,10 +2885,18 @@ impl CreateAccessMethod { support::token(&self.syntax, SyntaxKind::CREATE_KW) } #[inline] + pub fn index_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::INDEX_KW) + } + #[inline] pub fn method_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::METHOD_KW) } #[inline] + pub fn table_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TABLE_KW) + } + #[inline] pub fn type_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::TYPE_KW) } @@ -2155,22 +2935,22 @@ pub struct CreateCast { } impl CreateCast { #[inline] - pub fn ty(&self) -> Option { + pub fn cast_sig(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn l_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::L_PAREN) - } - #[inline] - pub fn r_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::R_PAREN) + pub fn function_sig(&self) -> Option { + support::child(&self.syntax) } #[inline] pub fn as_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::AS_KW) } #[inline] + pub fn assignment_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ASSIGNMENT_KW) + } + #[inline] pub fn cast_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CAST_KW) } @@ -2178,6 +2958,26 @@ impl CreateCast { pub fn create_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CREATE_KW) } + #[inline] + pub fn function_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FUNCTION_KW) + } + #[inline] + pub fn implicit_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IMPLICIT_KW) + } + #[inline] + pub fn inout_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::INOUT_KW) + } + #[inline] + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) + } + #[inline] + pub fn without_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITHOUT_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -2186,7 +2986,7 @@ pub struct CreateCollation { } impl CreateCollation { #[inline] - pub fn name_ref(&self) -> Option { + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -2205,7 +3005,11 @@ pub struct CreateConversion { } impl CreateConversion { #[inline] - pub fn name_ref(&self) -> Option { + pub fn literal(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -2217,9 +3021,21 @@ impl CreateConversion { support::token(&self.syntax, SyntaxKind::CREATE_KW) } #[inline] + pub fn default_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DEFAULT_KW) + } + #[inline] pub fn for_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::FOR_KW) } + #[inline] + pub fn from_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FROM_KW) + } + #[inline] + pub fn to_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TO_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -2228,7 +3044,11 @@ pub struct CreateDatabase { } impl CreateDatabase { #[inline] - pub fn name_ref(&self) -> Option { + pub fn create_database_option_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -2241,6 +3061,68 @@ impl CreateDatabase { } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct CreateDatabaseOption { + pub(crate) syntax: SyntaxNode, +} +impl CreateDatabaseOption { + #[inline] + pub fn literal(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn eq_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::EQ) + } + #[inline] + pub fn connection_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CONNECTION_KW) + } + #[inline] + pub fn default_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DEFAULT_KW) + } + #[inline] + pub fn encoding_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ENCODING_KW) + } + #[inline] + pub fn ident_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IDENT) + } + #[inline] + pub fn limit_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::LIMIT_KW) + } + #[inline] + pub fn owner_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OWNER_KW) + } + #[inline] + pub fn tablespace_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TABLESPACE_KW) + } + #[inline] + pub fn template_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TEMPLATE_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct CreateDatabaseOptionList { + pub(crate) syntax: SyntaxNode, +} +impl CreateDatabaseOptionList { + #[inline] + pub fn create_database_options(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct CreateDomain { pub(crate) syntax: SyntaxNode, @@ -2255,7 +3137,7 @@ impl CreateDomain { support::children(&self.syntax) } #[inline] - pub fn name_ref(&self) -> Option { + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -2281,6 +3163,18 @@ pub struct CreateEventTrigger { pub(crate) syntax: SyntaxNode, } impl CreateEventTrigger { + #[inline] + pub fn call_expr(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn event_trigger_when_clause(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn name_ref(&self) -> Option { support::child(&self.syntax) @@ -2294,10 +3188,22 @@ impl CreateEventTrigger { support::token(&self.syntax, SyntaxKind::EVENT_KW) } #[inline] + pub fn execute_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::EXECUTE_KW) + } + #[inline] + pub fn function_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FUNCTION_KW) + } + #[inline] pub fn on_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ON_KW) } #[inline] + pub fn procedure_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::PROCEDURE_KW) + } + #[inline] pub fn trigger_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::TRIGGER_KW) } @@ -2308,6 +3214,14 @@ pub struct CreateExtension { pub(crate) syntax: SyntaxNode, } impl CreateExtension { + #[inline] + pub fn if_not_exists(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn create_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CREATE_KW) @@ -2324,7 +3238,7 @@ pub struct CreateForeignDataWrapper { } impl CreateForeignDataWrapper { #[inline] - pub fn name_ref(&self) -> Option { + pub fn name(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -2355,6 +3269,18 @@ impl CreateForeignTable { support::child(&self.syntax) } #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn table_arg_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn create_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CREATE_KW) } @@ -2363,6 +3289,10 @@ impl CreateForeignTable { support::token(&self.syntax, SyntaxKind::FOREIGN_KW) } #[inline] + pub fn server_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SERVER_KW) + } + #[inline] pub fn table_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::TABLE_KW) } @@ -2409,7 +3339,7 @@ pub struct CreateGroup { } impl CreateGroup { #[inline] - pub fn name_ref(&self) -> Option { + pub fn name(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -2503,7 +3433,7 @@ pub struct CreateLanguage { } impl CreateLanguage { #[inline] - pub fn name_ref(&self) -> Option { + pub fn name(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -2521,10 +3451,58 @@ pub struct CreateMaterializedView { pub(crate) syntax: SyntaxNode, } impl CreateMaterializedView { + #[inline] + pub fn column_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn if_not_exists(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn query(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn tablespace(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn using_method(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn with_data(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn with_no_data(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn with_params(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn as_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AS_KW) + } #[inline] pub fn create_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CREATE_KW) } + #[inline] + pub fn materialized_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::MATERIALIZED_KW) + } + #[inline] + pub fn view_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::VIEW_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -2532,6 +3510,18 @@ pub struct CreateOperator { pub(crate) syntax: SyntaxNode, } impl CreateOperator { + #[inline] + pub fn attribute_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn op(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn create_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CREATE_KW) @@ -2552,10 +3542,22 @@ impl CreateOperatorClass { support::child(&self.syntax) } #[inline] + pub fn operator_class_option_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn ty(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn as_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AS_KW) + } + #[inline] pub fn class_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CLASS_KW) } @@ -2568,6 +3570,10 @@ impl CreateOperatorClass { support::token(&self.syntax, SyntaxKind::DEFAULT_KW) } #[inline] + pub fn family_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FAMILY_KW) + } + #[inline] pub fn for_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::FOR_KW) } @@ -2595,6 +3601,10 @@ impl CreateOperatorFamily { support::child(&self.syntax) } #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn create_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CREATE_KW) } @@ -2618,16 +3628,16 @@ pub struct CreatePolicy { } impl CreatePolicy { #[inline] - pub fn name_ref(&self) -> Option { + pub fn name(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn create_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CREATE_KW) + pub fn on_table(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn on_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ON_KW) + pub fn create_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CREATE_KW) } #[inline] pub fn policy_token(&self) -> Option { @@ -2640,6 +3650,18 @@ pub struct CreateProcedure { pub(crate) syntax: SyntaxNode, } impl CreateProcedure { + #[inline] + pub fn option_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn param_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn create_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CREATE_KW) @@ -2656,7 +3678,7 @@ pub struct CreatePublication { } impl CreatePublication { #[inline] - pub fn name_ref(&self) -> Option { + pub fn name(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -2675,7 +3697,7 @@ pub struct CreateRole { } impl CreateRole { #[inline] - pub fn name_ref(&self) -> Option { + pub fn name(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -2694,32 +3716,116 @@ pub struct CreateRule { } impl CreateRule { #[inline] - pub fn name_ref(&self) -> Option { + pub fn name(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn as_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::AS_KW) + pub fn or_replace(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn create_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CREATE_KW) + pub fn path(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn on_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ON_KW) + pub fn stmt(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn rule_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::RULE_KW) + pub fn stmts(&self) -> AstChildren { + support::children(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] + #[inline] + pub fn where_clause(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } + #[inline] + pub fn also_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ALSO_KW) + } + #[inline] + pub fn as_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AS_KW) + } + #[inline] + pub fn create_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CREATE_KW) + } + #[inline] + pub fn delete_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DELETE_KW) + } + #[inline] + pub fn do_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DO_KW) + } + #[inline] + pub fn ident_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IDENT) + } + #[inline] + pub fn insert_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::INSERT_KW) + } + #[inline] + pub fn instead_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::INSTEAD_KW) + } + #[inline] + pub fn nothing_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NOTHING_KW) + } + #[inline] + pub fn on_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ON_KW) + } + #[inline] + pub fn rule_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RULE_KW) + } + #[inline] + pub fn select_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SELECT_KW) + } + #[inline] + pub fn to_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TO_KW) + } + #[inline] + pub fn update_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::UPDATE_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct CreateSchema { pub(crate) syntax: SyntaxNode, } impl CreateSchema { + #[inline] + pub fn if_not_exists(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn schema_authorization(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn schema_elements(&self) -> AstChildren { + support::children(&self.syntax) + } #[inline] pub fn create_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CREATE_KW) @@ -2736,10 +3842,18 @@ pub struct CreateSequence { } impl CreateSequence { #[inline] - pub fn name_ref(&self) -> Option { + pub fn if_not_exists(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn sequence_options(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] pub fn create_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CREATE_KW) } @@ -2747,6 +3861,18 @@ impl CreateSequence { pub fn sequence_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::SEQUENCE_KW) } + #[inline] + pub fn temp_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TEMP_KW) + } + #[inline] + pub fn temporary_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TEMPORARY_KW) + } + #[inline] + pub fn unlogged_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::UNLOGGED_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -2755,7 +3881,7 @@ pub struct CreateServer { } impl CreateServer { #[inline] - pub fn name_ref(&self) -> Option { + pub fn name(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -2774,7 +3900,15 @@ pub struct CreateStatistics { } impl CreateStatistics { #[inline] - pub fn name_ref(&self) -> Option { + pub fn from_table(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name_refs(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -2782,6 +3916,10 @@ impl CreateStatistics { support::token(&self.syntax, SyntaxKind::CREATE_KW) } #[inline] + pub fn on_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ON_KW) + } + #[inline] pub fn statistics_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::STATISTICS_KW) } @@ -2793,7 +3931,7 @@ pub struct CreateSubscription { } impl CreateSubscription { #[inline] - pub fn name_ref(&self) -> Option { + pub fn name(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -2887,7 +4025,7 @@ impl CreateTableAs { support::child(&self.syntax) } #[inline] - pub fn stmt(&self) -> Option { + pub fn query(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -2930,7 +4068,19 @@ pub struct CreateTablespace { } impl CreateTablespace { #[inline] - pub fn name_ref(&self) -> Option { + pub fn literal(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn role(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn with_params(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -2938,6 +4088,14 @@ impl CreateTablespace { support::token(&self.syntax, SyntaxKind::CREATE_KW) } #[inline] + pub fn location_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::LOCATION_KW) + } + #[inline] + pub fn owner_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OWNER_KW) + } + #[inline] pub fn tablespace_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::TABLESPACE_KW) } @@ -2953,7 +4111,7 @@ impl CreateTextSearchConfiguration { support::child(&self.syntax) } #[inline] - pub fn name_ref(&self) -> Option { + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -2980,7 +4138,11 @@ pub struct CreateTextSearchDictionary { } impl CreateTextSearchDictionary { #[inline] - pub fn name_ref(&self) -> Option { + pub fn attribute_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -3007,7 +4169,11 @@ pub struct CreateTextSearchParser { } impl CreateTextSearchParser { #[inline] - pub fn name_ref(&self) -> Option { + pub fn attribute_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -3034,7 +4200,11 @@ pub struct CreateTextSearchTemplate { } impl CreateTextSearchTemplate { #[inline] - pub fn name_ref(&self) -> Option { + pub fn attribute_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -3061,7 +4231,19 @@ pub struct CreateTransform { } impl CreateTransform { #[inline] - pub fn name_ref(&self) -> Option { + pub fn from_func(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn language(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn or_replace(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn to_func(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -3069,6 +4251,18 @@ impl CreateTransform { support::child(&self.syntax) } #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } + #[inline] + pub fn comma_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::COMMA) + } + #[inline] pub fn create_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CREATE_KW) } @@ -3092,92 +4286,192 @@ pub struct CreateTrigger { } impl CreateTrigger { #[inline] - pub fn create_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CREATE_KW) + pub fn call_expr(&self) -> Option { + support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct CreateType { - pub(crate) syntax: SyntaxNode, -} -impl CreateType { #[inline] - pub fn ty(&self) -> Option { + pub fn deferrable_constraint_option(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn variant_list(&self) -> Option { + pub fn from_table(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn l_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::L_PAREN) + pub fn initially_deferred_constraint_option( + &self, + ) -> Option { + support::child(&self.syntax) } #[inline] - pub fn r_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::R_PAREN) + pub fn initially_immediate_constraint_option( + &self, + ) -> Option { + support::child(&self.syntax) } #[inline] - pub fn as_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::AS_KW) + pub fn name(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn create_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CREATE_KW) + pub fn not_deferrable_constraint_option(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn enum_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ENUM_KW) + pub fn on_table(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn range_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::RANGE_KW) + pub fn or_replace(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn type_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TYPE_KW) + pub fn referencing(&self) -> Option { + support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct CreateUser { - pub(crate) syntax: SyntaxNode, -} -impl CreateUser { #[inline] - pub fn name_ref(&self) -> Option { + pub fn timing(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn create_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CREATE_KW) + pub fn trigger_event_list(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn user_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::USER_KW) + pub fn when_condition(&self) -> Option { + support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct CreateUserMapping { - pub(crate) syntax: SyntaxNode, -} -impl CreateUserMapping { #[inline] - pub fn name_ref(&self) -> Option { - support::child(&self.syntax) + pub fn constraint_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CONSTRAINT_KW) } #[inline] pub fn create_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CREATE_KW) } #[inline] - pub fn for_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::FOR_KW) + pub fn each_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::EACH_KW) } #[inline] - pub fn mapping_token(&self) -> Option { + pub fn execute_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::EXECUTE_KW) + } + #[inline] + pub fn for_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FOR_KW) + } + #[inline] + pub fn function_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FUNCTION_KW) + } + #[inline] + pub fn procedure_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::PROCEDURE_KW) + } + #[inline] + pub fn row_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ROW_KW) + } + #[inline] + pub fn statement_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::STATEMENT_KW) + } + #[inline] + pub fn trigger_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TRIGGER_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct CreateType { + pub(crate) syntax: SyntaxNode, +} +impl CreateType { + #[inline] + pub fn attribute_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn column_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn variant_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn as_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AS_KW) + } + #[inline] + pub fn create_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CREATE_KW) + } + #[inline] + pub fn enum_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ENUM_KW) + } + #[inline] + pub fn range_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RANGE_KW) + } + #[inline] + pub fn type_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TYPE_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct CreateUser { + pub(crate) syntax: SyntaxNode, +} +impl CreateUser { + #[inline] + pub fn name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn create_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CREATE_KW) + } + #[inline] + pub fn user_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::USER_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct CreateUserMapping { + pub(crate) syntax: SyntaxNode, +} +impl CreateUserMapping { + #[inline] + pub fn alter_option_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn role(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn create_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CREATE_KW) + } + #[inline] + pub fn for_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FOR_KW) + } + #[inline] + pub fn mapping_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::MAPPING_KW) } #[inline] @@ -3196,17 +4490,61 @@ pub struct CreateView { } impl CreateView { #[inline] - pub fn name_ref(&self) -> Option { + pub fn column_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn or_replace(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn query(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn with_params(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn as_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AS_KW) + } + #[inline] + pub fn cascaded_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADED_KW) + } + #[inline] + pub fn check_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CHECK_KW) + } + #[inline] pub fn create_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CREATE_KW) } #[inline] + pub fn local_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::LOCAL_KW) + } + #[inline] + pub fn option_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OPTION_KW) + } + #[inline] + pub fn recursive_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RECURSIVE_KW) + } + #[inline] pub fn view_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::VIEW_KW) } + #[inline] + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -3312,10 +4650,58 @@ pub struct Declare { pub(crate) syntax: SyntaxNode, } impl Declare { + #[inline] + pub fn name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn query(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn asensitive_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ASENSITIVE_KW) + } + #[inline] + pub fn binary_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::BINARY_KW) + } + #[inline] + pub fn cursor_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CURSOR_KW) + } #[inline] pub fn declare_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DECLARE_KW) } + #[inline] + pub fn for_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FOR_KW) + } + #[inline] + pub fn hold_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::HOLD_KW) + } + #[inline] + pub fn insensitive_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::INSENSITIVE_KW) + } + #[inline] + pub fn no_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NO_KW) + } + #[inline] + pub fn scroll_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SCROLL_KW) + } + #[inline] + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) + } + #[inline] + pub fn without_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITHOUT_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -3417,6 +4803,29 @@ impl DeleteRows { } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct DependsOnExtension { + pub(crate) syntax: SyntaxNode, +} +impl DependsOnExtension { + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn depends_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DEPENDS_KW) + } + #[inline] + pub fn extension_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::EXTENSION_KW) + } + #[inline] + pub fn on_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ON_KW) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct DetachPartition { pub(crate) syntax: SyntaxNode, @@ -3636,24 +5045,16 @@ pub struct DropCast { } impl DropCast { #[inline] - pub fn if_exists(&self) -> Option { + pub fn cast_sig(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn ty(&self) -> Option { + pub fn if_exists(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn l_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::L_PAREN) - } - #[inline] - pub fn r_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::R_PAREN) - } - #[inline] - pub fn as_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::AS_KW) + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) } #[inline] pub fn cast_token(&self) -> Option { @@ -3663,6 +5064,10 @@ impl DropCast { pub fn drop_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DROP_KW) } + #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -3675,8 +5080,8 @@ impl DropCollation { support::child(&self.syntax) } #[inline] - pub fn name_ref(&self) -> Option { - support::child(&self.syntax) + pub fn paths(&self) -> AstChildren { + support::children(&self.syntax) } #[inline] pub fn collation_token(&self) -> Option { @@ -3760,10 +5165,14 @@ impl DropConversion { support::child(&self.syntax) } #[inline] - pub fn name_ref(&self) -> Option { + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) + } + #[inline] pub fn conversion_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CONVERSION_KW) } @@ -3771,6 +5180,10 @@ impl DropConversion { pub fn drop_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DROP_KW) } + #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -3821,10 +5234,14 @@ impl DropDomain { support::child(&self.syntax) } #[inline] - pub fn types(&self) -> AstChildren { + pub fn paths(&self) -> AstChildren { support::children(&self.syntax) } #[inline] + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) + } + #[inline] pub fn domain_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DOMAIN_KW) } @@ -3832,6 +5249,10 @@ impl DropDomain { pub fn drop_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DROP_KW) } + #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -3944,9 +5365,13 @@ impl DropForeignTable { support::child(&self.syntax) } #[inline] - pub fn drop_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::DROP_KW) - } + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn drop_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DROP_KW) + } #[inline] pub fn foreign_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::FOREIGN_KW) @@ -3990,8 +5415,8 @@ impl DropGroup { support::child(&self.syntax) } #[inline] - pub fn name_ref(&self) -> Option { - support::child(&self.syntax) + pub fn name_refs(&self) -> AstChildren { + support::children(&self.syntax) } #[inline] pub fn drop_token(&self) -> Option { @@ -4082,6 +5507,14 @@ impl DropMaterializedView { support::child(&self.syntax) } #[inline] + pub fn paths(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) + } + #[inline] pub fn drop_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DROP_KW) } @@ -4090,6 +5523,10 @@ impl DropMaterializedView { support::token(&self.syntax, SyntaxKind::MATERIALIZED_KW) } #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } + #[inline] pub fn view_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::VIEW_KW) } @@ -4114,6 +5551,55 @@ impl DropNotNull { } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct DropOpClassOption { + pub(crate) syntax: SyntaxNode, +} +impl DropOpClassOption { + #[inline] + pub fn literal(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn param_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn function_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FUNCTION_KW) + } + #[inline] + pub fn operator_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OPERATOR_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct DropOpClassOptionList { + pub(crate) syntax: SyntaxNode, +} +impl DropOpClassOptionList { + #[inline] + pub fn drop_op_class_options(&self) -> AstChildren { + support::children(&self.syntax) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct DropOpClassOptions { + pub(crate) syntax: SyntaxNode, +} +impl DropOpClassOptions { + #[inline] + pub fn drop_op_class_option_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn drop_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DROP_KW) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct DropOperator { pub(crate) syntax: SyntaxNode, @@ -4124,6 +5610,14 @@ impl DropOperator { support::child(&self.syntax) } #[inline] + pub fn op_sig_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) + } + #[inline] pub fn drop_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DROP_KW) } @@ -4131,6 +5625,10 @@ impl DropOperator { pub fn operator_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::OPERATOR_KW) } + #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -4147,6 +5645,10 @@ impl DropOperatorClass { support::child(&self.syntax) } #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn class_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CLASS_KW) } @@ -4174,6 +5676,18 @@ impl DropOperatorFamily { support::child(&self.syntax) } #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) + } + #[inline] pub fn drop_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DROP_KW) } @@ -4185,6 +5699,14 @@ impl DropOperatorFamily { pub fn operator_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::OPERATOR_KW) } + #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } + #[inline] + pub fn using_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::USING_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -4220,12 +5742,12 @@ impl DropPolicy { support::child(&self.syntax) } #[inline] - pub fn drop_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::DROP_KW) + pub fn on_table(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn on_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ON_KW) + pub fn drop_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DROP_KW) } #[inline] pub fn policy_token(&self) -> Option { @@ -4238,6 +5760,10 @@ pub struct DropProcedure { pub(crate) syntax: SyntaxNode, } impl DropProcedure { + #[inline] + pub fn function_sig_list(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn if_exists(&self) -> Option { support::child(&self.syntax) @@ -4303,15 +5829,27 @@ pub struct DropRoutine { pub(crate) syntax: SyntaxNode, } impl DropRoutine { + #[inline] + pub fn function_sig_list(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn if_exists(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) + } + #[inline] pub fn drop_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DROP_KW) } #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } + #[inline] pub fn routine_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ROUTINE_KW) } @@ -4331,12 +5869,20 @@ impl DropRule { support::child(&self.syntax) } #[inline] + pub fn on_table(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) + } + #[inline] pub fn drop_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DROP_KW) } #[inline] - pub fn on_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ON_KW) + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) } #[inline] pub fn rule_token(&self) -> Option { @@ -4354,10 +5900,22 @@ impl DropSchema { support::child(&self.syntax) } #[inline] + pub fn name_refs(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) + } + #[inline] pub fn drop_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DROP_KW) } #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } + #[inline] pub fn schema_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::SCHEMA_KW) } @@ -4373,7 +5931,7 @@ impl DropSequence { support::child(&self.syntax) } #[inline] - pub fn name_refs(&self) -> AstChildren { + pub fn paths(&self) -> AstChildren { support::children(&self.syntax) } #[inline] @@ -4419,8 +5977,8 @@ impl DropStatistics { support::child(&self.syntax) } #[inline] - pub fn name_ref(&self) -> Option { - support::child(&self.syntax) + pub fn paths(&self) -> AstChildren { + support::children(&self.syntax) } #[inline] pub fn drop_token(&self) -> Option { @@ -4523,6 +6081,14 @@ impl DropTextSearchConfig { support::child(&self.syntax) } #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) + } + #[inline] pub fn configuration_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::CONFIGURATION_KW) } @@ -4531,6 +6097,10 @@ impl DropTextSearchConfig { support::token(&self.syntax, SyntaxKind::DROP_KW) } #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } + #[inline] pub fn search_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::SEARCH_KW) } @@ -4550,6 +6120,14 @@ impl DropTextSearchDict { support::child(&self.syntax) } #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) + } + #[inline] pub fn dictionary_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DICTIONARY_KW) } @@ -4558,6 +6136,10 @@ impl DropTextSearchDict { support::token(&self.syntax, SyntaxKind::DROP_KW) } #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } + #[inline] pub fn search_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::SEARCH_KW) } @@ -4577,10 +6159,14 @@ impl DropTextSearchParser { support::child(&self.syntax) } #[inline] - pub fn name_ref(&self) -> Option { + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) + } + #[inline] pub fn drop_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DROP_KW) } @@ -4589,6 +6175,10 @@ impl DropTextSearchParser { support::token(&self.syntax, SyntaxKind::PARSER_KW) } #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } + #[inline] pub fn search_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::SEARCH_KW) } @@ -4608,10 +6198,22 @@ impl DropTextSearchTemplate { support::child(&self.syntax) } #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) + } + #[inline] pub fn drop_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DROP_KW) } #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } + #[inline] pub fn search_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::SEARCH_KW) } @@ -4635,10 +6237,34 @@ impl DropTransform { support::child(&self.syntax) } #[inline] + pub fn language(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn ty(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) + } + #[inline] pub fn drop_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DROP_KW) } #[inline] + pub fn for_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FOR_KW) + } + #[inline] + pub fn language_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::LANGUAGE_KW) + } + #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } + #[inline] pub fn transform_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::TRANSFORM_KW) } @@ -4654,16 +6280,24 @@ impl DropTrigger { support::child(&self.syntax) } #[inline] - pub fn name_ref(&self) -> Option { + pub fn on_table(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) + } + #[inline] pub fn drop_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DROP_KW) } #[inline] - pub fn on_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ON_KW) + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) } #[inline] pub fn trigger_token(&self) -> Option { @@ -4739,6 +6373,10 @@ impl DropUserMapping { support::child(&self.syntax) } #[inline] + pub fn role(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn drop_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DROP_KW) } @@ -4770,6 +6408,10 @@ impl DropView { support::child(&self.syntax) } #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn drop_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DROP_KW) } @@ -4935,29 +6577,106 @@ impl Enforced { } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct ExcludeConstraint { +pub struct EventTriggerWhen { pub(crate) syntax: SyntaxNode, } -impl ExcludeConstraint { +impl EventTriggerWhen { #[inline] - pub fn constraint_exclusion_list(&self) -> Option { - support::child(&self.syntax) + pub fn literals(&self) -> AstChildren { + support::children(&self.syntax) } #[inline] - pub fn constraint_index_method(&self) -> Option { + pub fn name_ref(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn exclude_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::EXCLUDE_KW) + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Execute { + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } + #[inline] + pub fn in_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IN_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct EventTriggerWhenClause { + pub(crate) syntax: SyntaxNode, +} +impl EventTriggerWhenClause { + #[inline] + pub fn event_trigger_whens(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn when_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WHEN_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct ExceptTables { + pub(crate) syntax: SyntaxNode, +} +impl ExceptTables { + #[inline] + pub fn name_refs(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn except_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::EXCEPT_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct ExcludeConstraint { + pub(crate) syntax: SyntaxNode, +} +impl ExcludeConstraint { + #[inline] + pub fn constraint_exclusion_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn constraint_index_method(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn constraint_where_clause(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn constraint_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CONSTRAINT_KW) + } + #[inline] + pub fn exclude_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::EXCLUDE_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct Execute { pub(crate) syntax: SyntaxNode, } impl Execute { + #[inline] + pub fn arg_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn execute_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::EXECUTE_KW) @@ -5005,15 +6724,69 @@ impl FatArrow { } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct FdwOption { + pub(crate) syntax: SyntaxNode, +} +impl FdwOption { + #[inline] + pub fn alter_option_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn handler_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::HANDLER_KW) + } + #[inline] + pub fn no_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NO_KW) + } + #[inline] + pub fn options_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OPTIONS_KW) + } + #[inline] + pub fn validator_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::VALIDATOR_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct FdwOptionList { + pub(crate) syntax: SyntaxNode, +} +impl FdwOptionList { + #[inline] + pub fn fdw_options(&self) -> AstChildren { + support::children(&self.syntax) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct Fetch { pub(crate) syntax: SyntaxNode, } impl Fetch { + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn fetch_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::FETCH_KW) } + #[inline] + pub fn from_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FROM_KW) + } + #[inline] + pub fn in_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IN_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -5101,6 +6874,25 @@ impl FilterClause { } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct ForProvider { + pub(crate) syntax: SyntaxNode, +} +impl ForProvider { + #[inline] + pub fn literal(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn for_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FOR_KW) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct ForceRls { pub(crate) syntax: SyntaxNode, @@ -5134,6 +6926,10 @@ impl ForeignKeyConstraint { support::child(&self.syntax) } #[inline] + pub fn name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn on_delete_action(&self) -> Option { support::child(&self.syntax) } @@ -5146,6 +6942,10 @@ impl ForeignKeyConstraint { support::child(&self.syntax) } #[inline] + pub fn constraint_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CONSTRAINT_KW) + } + #[inline] pub fn foreign_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::FOREIGN_KW) } @@ -5248,6 +7048,40 @@ impl FromItem { } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct FromServer { + pub(crate) syntax: SyntaxNode, +} +impl FromServer { + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn from_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FROM_KW) + } + #[inline] + pub fn server_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SERVER_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct FromTable { + pub(crate) syntax: SyntaxNode, +} +impl FromTable { + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn from_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FROM_KW) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct FuncOptionList { pub(crate) syntax: SyntaxNode, @@ -5350,18 +7184,23 @@ pub struct Grant { } impl Grant { #[inline] - pub fn grant_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::GRANT_KW) + pub fn name_refs(&self) -> AstChildren { + support::children(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct GroupByClause { - pub(crate) syntax: SyntaxNode, -} -impl GroupByClause { #[inline] - pub fn group_by_list(&self) -> Option { + pub fn paths(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn revoke_command_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn role(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn role_list(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -5373,53 +7212,155 @@ impl GroupByClause { support::token(&self.syntax, SyntaxKind::BY_KW) } #[inline] - pub fn distinct_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::DISTINCT_KW) + pub fn grant_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::GRANT_KW) } #[inline] - pub fn group_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::GROUP_KW) + pub fn granted_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::GRANTED_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct GroupByList { - pub(crate) syntax: SyntaxNode, -} -impl GroupByList { #[inline] - pub fn group_bys(&self) -> AstChildren { - support::children(&self.syntax) + pub fn in_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IN_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct GroupingCube { - pub(crate) syntax: SyntaxNode, -} -impl GroupingCube { #[inline] - pub fn expr(&self) -> Option { - support::child(&self.syntax) + pub fn on_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ON_KW) } #[inline] - pub fn cube_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CUBE_KW) + pub fn option_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OPTION_KW) + } + #[inline] + pub fn privileges_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::PRIVILEGES_KW) + } + #[inline] + pub fn schema_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SCHEMA_KW) + } + #[inline] + pub fn table_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TABLE_KW) + } + #[inline] + pub fn tables_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TABLES_KW) + } + #[inline] + pub fn to_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TO_KW) + } + #[inline] + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct GroupingExpr { +pub struct GrantDefaultPrivileges { pub(crate) syntax: SyntaxNode, } -impl GroupingExpr { +impl GrantDefaultPrivileges { #[inline] - pub fn expr(&self) -> Option { + pub fn privilege_target(&self) -> Option { support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] + #[inline] + pub fn privileges(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn role_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn grant_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::GRANT_KW) + } + #[inline] + pub fn on_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ON_KW) + } + #[inline] + pub fn option_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OPTION_KW) + } + #[inline] + pub fn to_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TO_KW) + } + #[inline] + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct GroupByClause { + pub(crate) syntax: SyntaxNode, +} +impl GroupByClause { + #[inline] + pub fn group_by_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn all_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ALL_KW) + } + #[inline] + pub fn by_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::BY_KW) + } + #[inline] + pub fn distinct_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DISTINCT_KW) + } + #[inline] + pub fn group_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::GROUP_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct GroupByList { + pub(crate) syntax: SyntaxNode, +} +impl GroupByList { + #[inline] + pub fn group_bys(&self) -> AstChildren { + support::children(&self.syntax) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct GroupingCube { + pub(crate) syntax: SyntaxNode, +} +impl GroupingCube { + #[inline] + pub fn expr(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn cube_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CUBE_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct GroupingExpr { + pub(crate) syntax: SyntaxNode, +} +impl GroupingExpr { + #[inline] + pub fn expr(&self) -> Option { + support::child(&self.syntax) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct GroupingRollup { pub(crate) syntax: SyntaxNode, } @@ -5476,6 +7417,21 @@ impl Gteq { } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct HandlerClause { + pub(crate) syntax: SyntaxNode, +} +impl HandlerClause { + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn handler_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::HANDLER_KW) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct HavingClause { pub(crate) syntax: SyntaxNode, @@ -5530,6 +7486,26 @@ pub struct ImportForeignSchema { pub(crate) syntax: SyntaxNode, } impl ImportForeignSchema { + #[inline] + pub fn alter_option_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn except_tables(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn from_server(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn into_schema(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn limit_to_tables(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn name_ref(&self) -> Option { support::child(&self.syntax) @@ -5769,6 +7745,25 @@ pub struct IntoClause { pub(crate) syntax: SyntaxNode, } impl IntoClause { + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn into_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::INTO_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct IntoSchema { + pub(crate) syntax: SyntaxNode, +} +impl IntoSchema { + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn into_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::INTO_KW) @@ -6698,6 +8693,10 @@ impl LikeClause { support::children(&self.syntax) } #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn like_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::LIKE_KW) } @@ -6708,6 +8707,10 @@ pub struct LikeOption { pub(crate) syntax: SyntaxNode, } impl LikeOption { + #[inline] + pub fn all_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ALL_KW) + } #[inline] pub fn comments_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::COMMENTS_KW) @@ -6744,6 +8747,14 @@ impl LikeOption { pub fn indexes_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::INDEXES_KW) } + #[inline] + pub fn statistics_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::STATISTICS_KW) + } + #[inline] + pub fn storage_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::STORAGE_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -6765,13 +8776,32 @@ impl LimitClause { } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct LimitToTables { + pub(crate) syntax: SyntaxNode, +} +impl LimitToTables { + #[inline] + pub fn name_refs(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn limit_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::LIMIT_KW) + } + #[inline] + pub fn to_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TO_KW) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct Listen { pub(crate) syntax: SyntaxNode, } impl Listen { #[inline] - pub fn name_ref(&self) -> Option { + pub fn name(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -6791,6 +8821,10 @@ pub struct Load { pub(crate) syntax: SyntaxNode, } impl Load { + #[inline] + pub fn literal(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn load_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::LOAD_KW) @@ -6802,6 +8836,10 @@ pub struct Lock { pub(crate) syntax: SyntaxNode, } impl Lock { + #[inline] + pub fn table_list(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn lock_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::LOCK_KW) @@ -7131,6 +9169,18 @@ pub struct Move { pub(crate) syntax: SyntaxNode, } impl Move { + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn from_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FROM_KW) + } + #[inline] + pub fn in_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IN_KW) + } #[inline] pub fn move_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::MOVE_KW) @@ -7223,6 +9273,33 @@ impl NoAction { } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct NoDependsOnExtension { + pub(crate) syntax: SyntaxNode, +} +impl NoDependsOnExtension { + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn depends_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DEPENDS_KW) + } + #[inline] + pub fn extension_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::EXTENSION_KW) + } + #[inline] + pub fn no_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NO_KW) + } + #[inline] + pub fn on_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ON_KW) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct NoForceRls { pub(crate) syntax: SyntaxNode, @@ -7489,6 +9566,18 @@ pub struct Notify { pub(crate) syntax: SyntaxNode, } impl Notify { + #[inline] + pub fn literal(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn comma_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::COMMA) + } #[inline] pub fn notify_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::NOTIFY_KW) @@ -7692,6 +9781,21 @@ impl OnDeleteAction { } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct OnTable { + pub(crate) syntax: SyntaxNode, +} +impl OnTable { + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn on_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ON_KW) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct OnUpdateAction { pub(crate) syntax: SyntaxNode, @@ -7899,19 +10003,35 @@ impl Op { } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct OperatorCall { +pub struct OpClassOption { pub(crate) syntax: SyntaxNode, } -impl OperatorCall { +impl OpClassOption { + #[inline] + pub fn function_sig(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn literal(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn op(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn param_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn ty(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn l_paren_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::L_PAREN) } @@ -7920,7 +10040,100 @@ impl OperatorCall { support::token(&self.syntax, SyntaxKind::R_PAREN) } #[inline] - pub fn dot_token(&self) -> Option { + pub fn comma_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::COMMA) + } + #[inline] + pub fn by_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::BY_KW) + } + #[inline] + pub fn for_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FOR_KW) + } + #[inline] + pub fn function_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FUNCTION_KW) + } + #[inline] + pub fn operator_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OPERATOR_KW) + } + #[inline] + pub fn order_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ORDER_KW) + } + #[inline] + pub fn search_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SEARCH_KW) + } + #[inline] + pub fn storage_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::STORAGE_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct OpSig { + pub(crate) syntax: SyntaxNode, +} +impl OpSig { + #[inline] + pub fn op(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } + #[inline] + pub fn comma_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::COMMA) + } + #[inline] + pub fn none_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NONE_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct OpSigList { + pub(crate) syntax: SyntaxNode, +} +impl OpSigList { + #[inline] + pub fn op_sigs(&self) -> AstChildren { + support::children(&self.syntax) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct OperatorCall { + pub(crate) syntax: SyntaxNode, +} +impl OperatorCall { + #[inline] + pub fn op(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } + #[inline] + pub fn dot_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DOT) } #[inline] @@ -7929,6 +10142,17 @@ impl OperatorCall { } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct OperatorClassOptionList { + pub(crate) syntax: SyntaxNode, +} +impl OperatorClassOptionList { + #[inline] + pub fn op_class_options(&self) -> AstChildren { + support::children(&self.syntax) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct OptionItem { pub(crate) syntax: SyntaxNode, @@ -8500,10 +10724,18 @@ pub struct Prepare { } impl Prepare { #[inline] - pub fn name_ref(&self) -> Option { + pub fn name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn preparable_stmt(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn as_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AS_KW) + } + #[inline] pub fn prepare_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::PREPARE_KW) } @@ -8553,7 +10785,7 @@ impl PrimaryKeyConstraint { support::child(&self.syntax) } #[inline] - pub fn name_ref(&self) -> Option { + pub fn name(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -8578,6 +10810,68 @@ impl PrimaryKeyConstraint { } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct PrivilegeTarget { + pub(crate) syntax: SyntaxNode, +} +impl PrivilegeTarget { + #[inline] + pub fn functions_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FUNCTIONS_KW) + } + #[inline] + pub fn large_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::LARGE_KW) + } + #[inline] + pub fn objects_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OBJECTS_KW) + } + #[inline] + pub fn routines_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ROUTINES_KW) + } + #[inline] + pub fn schemas_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SCHEMAS_KW) + } + #[inline] + pub fn sequences_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SEQUENCES_KW) + } + #[inline] + pub fn tables_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TABLES_KW) + } + #[inline] + pub fn types_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TYPES_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct Privileges { + pub(crate) syntax: SyntaxNode, +} +impl Privileges { + #[inline] + pub fn column_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn revoke_command_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn all_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ALL_KW) + } + #[inline] + pub fn privileges_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::PRIVILEGES_KW) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct ReadCommitted { pub(crate) syntax: SyntaxNode, @@ -8659,10 +10953,30 @@ pub struct Reassign { pub(crate) syntax: SyntaxNode, } impl Reassign { + #[inline] + pub fn new_roles(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn old_roles(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn by_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::BY_KW) + } + #[inline] + pub fn owned_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OWNED_KW) + } #[inline] pub fn reassign_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::REASSIGN_KW) } + #[inline] + pub fn to_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TO_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -8675,6 +10989,10 @@ impl ReferencesConstraint { support::child(&self.syntax) } #[inline] + pub fn name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] pub fn name_ref(&self) -> Option { support::child(&self.syntax) } @@ -8709,132 +11027,205 @@ impl ReferencesConstraint { } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Refresh { +pub struct Referencing { pub(crate) syntax: SyntaxNode, } -impl Refresh { +impl Referencing { #[inline] - pub fn name_ref(&self) -> Option { - support::child(&self.syntax) + pub fn referencing_tables(&self) -> AstChildren { + support::children(&self.syntax) } #[inline] - pub fn concurrently_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CONCURRENTLY_KW) + pub fn referencing_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::REFERENCING_KW) } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct ReferencingTable { + pub(crate) syntax: SyntaxNode, +} +impl ReferencingTable { #[inline] - pub fn data_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::DATA_KW) + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn materialized_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::MATERIALIZED_KW) + pub fn as_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AS_KW) } #[inline] - pub fn refresh_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::REFRESH_KW) + pub fn new_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NEW_KW) } #[inline] - pub fn view_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::VIEW_KW) + pub fn old_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OLD_KW) } #[inline] - pub fn with_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WITH_KW) + pub fn table_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TABLE_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Reindex { +pub struct Refresh { pub(crate) syntax: SyntaxNode, } -impl Reindex { +impl Refresh { #[inline] - pub fn reindex_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::REINDEX_KW) + pub fn path(&self) -> Option { + support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct RelationName { - pub(crate) syntax: SyntaxNode, -} -impl RelationName { #[inline] - pub fn path(&self) -> Option { + pub fn with_data(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn l_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::L_PAREN) + pub fn with_no_data(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn r_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::R_PAREN) + pub fn concurrently_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CONCURRENTLY_KW) } #[inline] - pub fn star_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::STAR) + pub fn materialized_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::MATERIALIZED_KW) } #[inline] - pub fn only_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ONLY_KW) + pub fn refresh_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::REFRESH_KW) + } + #[inline] + pub fn view_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::VIEW_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct ReleaseSavepoint { +pub struct RefreshCollationVersion { pub(crate) syntax: SyntaxNode, } -impl ReleaseSavepoint { +impl RefreshCollationVersion { #[inline] - pub fn name_ref(&self) -> Option { - support::child(&self.syntax) + pub fn collation_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::COLLATION_KW) } #[inline] - pub fn release_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::RELEASE_KW) + pub fn refresh_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::REFRESH_KW) } #[inline] - pub fn savepoint_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SAVEPOINT_KW) + pub fn version_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::VERSION_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct RenameColumn { +pub struct RefreshVersion { pub(crate) syntax: SyntaxNode, } -impl RenameColumn { +impl RefreshVersion { #[inline] - pub fn column_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::COLUMN_KW) + pub fn refresh_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::REFRESH_KW) } #[inline] - pub fn rename_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::RENAME_KW) + pub fn version_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::VERSION_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct Reindex { + pub(crate) syntax: SyntaxNode, +} +impl Reindex { + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn to_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TO_KW) + pub fn database_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DATABASE_KW) + } + #[inline] + pub fn index_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::INDEX_KW) + } + #[inline] + pub fn reindex_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::REINDEX_KW) + } + #[inline] + pub fn schema_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SCHEMA_KW) + } + #[inline] + pub fn system_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SYSTEM_KW) + } + #[inline] + pub fn table_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TABLE_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct RenameConstraint { +pub struct RelationName { pub(crate) syntax: SyntaxNode, } -impl RenameConstraint { +impl RelationName { #[inline] - pub fn name(&self) -> Option { + pub fn path(&self) -> Option { support::child(&self.syntax) } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } + #[inline] + pub fn star_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::STAR) + } + #[inline] + pub fn only_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ONLY_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct ReleaseSavepoint { + pub(crate) syntax: SyntaxNode, +} +impl ReleaseSavepoint { #[inline] pub fn name_ref(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn constraint_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CONSTRAINT_KW) + pub fn release_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RELEASE_KW) + } + #[inline] + pub fn savepoint_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SAVEPOINT_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct RenameColumn { + pub(crate) syntax: SyntaxNode, +} +impl RenameColumn { + #[inline] + pub fn column_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::COLUMN_KW) } #[inline] pub fn rename_token(&self) -> Option { @@ -8847,15 +11238,23 @@ impl RenameConstraint { } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct RenameTable { +pub struct RenameConstraint { pub(crate) syntax: SyntaxNode, } -impl RenameTable { +impl RenameConstraint { + #[inline] + pub fn name(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn name_ref(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn constraint_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CONSTRAINT_KW) + } + #[inline] pub fn rename_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::RENAME_KW) } @@ -8941,6 +11340,25 @@ impl Reset { } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct ResetConfigParam { + pub(crate) syntax: SyntaxNode, +} +impl ResetConfigParam { + #[inline] + pub fn path(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn all_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ALL_KW) + } + #[inline] + pub fn reset_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESET_KW) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct ResetFuncOption { pub(crate) syntax: SyntaxNode, @@ -8976,18 +11394,22 @@ impl ResetOptions { } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct ResetStorageParams { +pub struct ResetSessionAuth { pub(crate) syntax: SyntaxNode, } -impl ResetStorageParams { +impl ResetSessionAuth { #[inline] - pub fn attribute_list(&self) -> Option { - support::child(&self.syntax) + pub fn authorization_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AUTHORIZATION_KW) } #[inline] pub fn reset_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::RESET_KW) } + #[inline] + pub fn session_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SESSION_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -9051,6 +11473,10 @@ pub struct ReturningClause { pub(crate) syntax: SyntaxNode, } impl ReturningClause { + #[inline] + pub fn returning_option_list(&self) -> Option { + support::child(&self.syntax) + } #[inline] pub fn target_list(&self) -> Option { support::child(&self.syntax) @@ -9062,232 +11488,149 @@ impl ReturningClause { } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Revoke { - pub(crate) syntax: SyntaxNode, -} -impl Revoke { - #[inline] - pub fn revoke_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::REVOKE_KW) - } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Role { +pub struct ReturningOption { pub(crate) syntax: SyntaxNode, } -impl Role { - #[inline] - pub fn current_role_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CURRENT_ROLE_KW) - } - #[inline] - pub fn current_user_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CURRENT_USER_KW) - } +impl ReturningOption { #[inline] - pub fn group_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::GROUP_KW) + pub fn name(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn ident_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::IDENT) + pub fn as_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AS_KW) } #[inline] - pub fn session_user_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SESSION_USER_KW) + pub fn new_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NEW_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct RoleOption { - pub(crate) syntax: SyntaxNode, -} -impl RoleOption { #[inline] - pub fn inherit_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::INHERIT_KW) + pub fn old_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OLD_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct RoleOptionList { +pub struct ReturningOptionList { pub(crate) syntax: SyntaxNode, } -impl RoleOptionList { +impl ReturningOptionList { #[inline] - pub fn role_options(&self) -> AstChildren { + pub fn returning_options(&self) -> AstChildren { support::children(&self.syntax) } #[inline] - pub fn with_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WITH_KW) + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Rollback { - pub(crate) syntax: SyntaxNode, -} -impl Rollback { #[inline] - pub fn abort_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ABORT_KW) + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) } #[inline] - pub fn rollback_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ROLLBACK_KW) + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Row { +pub struct Revoke { pub(crate) syntax: SyntaxNode, } -impl Row { +impl Revoke { #[inline] - pub fn exprs(&self) -> AstChildren { + pub fn name_refs(&self) -> AstChildren { support::children(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct RowList { - pub(crate) syntax: SyntaxNode, -} -impl RowList { #[inline] - pub fn rows(&self) -> AstChildren { + pub fn paths(&self) -> AstChildren { support::children(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct RowsFuncOption { - pub(crate) syntax: SyntaxNode, -} -impl RowsFuncOption { #[inline] - pub fn rows_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ROWS_KW) + pub fn revoke_command_list(&self) -> Option { + support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Savepoint { - pub(crate) syntax: SyntaxNode, -} -impl Savepoint { #[inline] - pub fn savepoint_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SAVEPOINT_KW) + pub fn role(&self) -> Option { + support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SecurityFuncOption { - pub(crate) syntax: SyntaxNode, -} -impl SecurityFuncOption { #[inline] - pub fn definer_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::DEFINER_KW) + pub fn role_list(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn invoker_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::INVOKER_KW) + pub fn all_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ALL_KW) } #[inline] - pub fn security_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SECURITY_KW) + pub fn by_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::BY_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SecurityLabel { - pub(crate) syntax: SyntaxNode, -} -impl SecurityLabel { #[inline] - pub fn label_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::LABEL_KW) + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) } #[inline] - pub fn security_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SECURITY_KW) - } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Select { - pub(crate) syntax: SyntaxNode, -} -impl Select { - #[inline] - pub fn fetch_clause(&self) -> Option { - support::child(&self.syntax) + pub fn for_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FOR_KW) } #[inline] - pub fn filter_clause(&self) -> Option { - support::child(&self.syntax) + pub fn from_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FROM_KW) } #[inline] - pub fn from_clause(&self) -> Option { - support::child(&self.syntax) + pub fn grant_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::GRANT_KW) } #[inline] - pub fn group_by_clause(&self) -> Option { - support::child(&self.syntax) + pub fn granted_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::GRANTED_KW) } #[inline] - pub fn having_clause(&self) -> Option { - support::child(&self.syntax) + pub fn in_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IN_KW) } #[inline] - pub fn limit_clause(&self) -> Option { - support::child(&self.syntax) + pub fn on_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ON_KW) } #[inline] - pub fn locking_clauses(&self) -> AstChildren { - support::children(&self.syntax) + pub fn option_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OPTION_KW) } #[inline] - pub fn offset_clause(&self) -> Option { - support::child(&self.syntax) + pub fn privileges_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::PRIVILEGES_KW) } #[inline] - pub fn order_by_clause(&self) -> Option { - support::child(&self.syntax) + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) } #[inline] - pub fn select_clause(&self) -> Option { - support::child(&self.syntax) + pub fn revoke_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::REVOKE_KW) } #[inline] - pub fn where_clause(&self) -> Option { - support::child(&self.syntax) + pub fn schema_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SCHEMA_KW) } #[inline] - pub fn window_clause(&self) -> Option { - support::child(&self.syntax) + pub fn table_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TABLE_KW) } #[inline] - pub fn with_clause(&self) -> Option { - support::child(&self.syntax) + pub fn tables_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TABLES_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SelectClause { +pub struct RevokeCommand { pub(crate) syntax: SyntaxNode, } -impl SelectClause { - #[inline] - pub fn distinct_clause(&self) -> Option { - support::child(&self.syntax) - } +impl RevokeCommand { #[inline] - pub fn target_list(&self) -> Option { + pub fn role(&self) -> Option { support::child(&self.syntax) } #[inline] @@ -9295,1126 +11638,888 @@ impl SelectClause { support::token(&self.syntax, SyntaxKind::ALL_KW) } #[inline] - pub fn select_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SELECT_KW) - } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SelectInto { - pub(crate) syntax: SyntaxNode, -} -impl SelectInto { - #[inline] - pub fn filter_clause(&self) -> Option { - support::child(&self.syntax) - } - #[inline] - pub fn from_clause(&self) -> Option { - support::child(&self.syntax) - } - #[inline] - pub fn group_by_clause(&self) -> Option { - support::child(&self.syntax) + pub fn alter_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ALTER_KW) } #[inline] - pub fn having_clause(&self) -> Option { - support::child(&self.syntax) + pub fn create_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CREATE_KW) } #[inline] - pub fn into_clause(&self) -> Option { - support::child(&self.syntax) + pub fn delete_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DELETE_KW) } #[inline] - pub fn limit_clause(&self) -> Option { - support::child(&self.syntax) + pub fn execute_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::EXECUTE_KW) } #[inline] - pub fn locking_clauses(&self) -> AstChildren { - support::children(&self.syntax) + pub fn ident_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IDENT) } #[inline] - pub fn offset_clause(&self) -> Option { - support::child(&self.syntax) + pub fn insert_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::INSERT_KW) } #[inline] - pub fn order_by_clause(&self) -> Option { - support::child(&self.syntax) + pub fn references_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::REFERENCES_KW) } #[inline] - pub fn select_clause(&self) -> Option { - support::child(&self.syntax) + pub fn select_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SELECT_KW) } #[inline] - pub fn where_clause(&self) -> Option { - support::child(&self.syntax) + pub fn system_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SYSTEM_KW) } #[inline] - pub fn window_clause(&self) -> Option { - support::child(&self.syntax) + pub fn temp_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TEMP_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SequenceOption { - pub(crate) syntax: SyntaxNode, -} -impl SequenceOption { #[inline] - pub fn cycle_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CYCLE_KW) + pub fn temporary_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TEMPORARY_KW) } #[inline] - pub fn maxvalue_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::MAXVALUE_KW) + pub fn trigger_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TRIGGER_KW) } #[inline] - pub fn minvalue_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::MINVALUE_KW) + pub fn truncate_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TRUNCATE_KW) } #[inline] - pub fn no_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::NO_KW) + pub fn update_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::UPDATE_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SequenceOptionList { +pub struct RevokeCommandList { pub(crate) syntax: SyntaxNode, } -impl SequenceOptionList { +impl RevokeCommandList { #[inline] - pub fn sequence_options(&self) -> AstChildren { + pub fn revoke_commands(&self) -> AstChildren { support::children(&self.syntax) } - #[inline] - pub fn l_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::L_PAREN) - } - #[inline] - pub fn r_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::R_PAREN) - } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Serializable { +pub struct RevokeDefaultPrivileges { pub(crate) syntax: SyntaxNode, } -impl Serializable { - #[inline] - pub fn isolation_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ISOLATION_KW) - } - #[inline] - pub fn level_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::LEVEL_KW) - } +impl RevokeDefaultPrivileges { #[inline] - pub fn serializable_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SERIALIZABLE_KW) + pub fn privilege_target(&self) -> Option { + support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Set { - pub(crate) syntax: SyntaxNode, -} -impl Set { #[inline] - pub fn expr(&self) -> Option { + pub fn privileges(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn path(&self) -> Option { + pub fn role_list(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn eq_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::EQ) + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) } #[inline] - pub fn default_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::DEFAULT_KW) + pub fn for_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FOR_KW) } #[inline] - pub fn local_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::LOCAL_KW) + pub fn from_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FROM_KW) } #[inline] - pub fn session_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SESSION_KW) + pub fn grant_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::GRANT_KW) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn on_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ON_KW) } #[inline] - pub fn time_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TIME_KW) + pub fn option_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OPTION_KW) } #[inline] - pub fn to_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TO_KW) + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) } #[inline] - pub fn zone_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ZONE_KW) + pub fn revoke_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::REVOKE_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetAccessMethod { +pub struct Role { pub(crate) syntax: SyntaxNode, } -impl SetAccessMethod { +impl Role { #[inline] pub fn name_ref(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn access_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ACCESS_KW) + pub fn current_role_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CURRENT_ROLE_KW) } #[inline] - pub fn method_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::METHOD_KW) + pub fn current_user_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CURRENT_USER_KW) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn group_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::GROUP_KW) + } + #[inline] + pub fn session_user_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SESSION_USER_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetClause { +pub struct RoleList { pub(crate) syntax: SyntaxNode, } -impl SetClause { - #[inline] - pub fn set_column_list(&self) -> Option { - support::child(&self.syntax) - } +impl RoleList { #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn roles(&self) -> AstChildren { + support::children(&self.syntax) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetColumnList { +pub struct RoleOption { pub(crate) syntax: SyntaxNode, } -impl SetColumnList { +impl RoleOption { #[inline] - pub fn set_columns(&self) -> AstChildren { - support::children(&self.syntax) + pub fn inherit_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::INHERIT_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetCompression { +pub struct RoleOptionList { pub(crate) syntax: SyntaxNode, } -impl SetCompression { +impl RoleOptionList { #[inline] - pub fn compression_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::COMPRESSION_KW) + pub fn role_options(&self) -> AstChildren { + support::children(&self.syntax) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetConstraints { +pub struct Rollback { pub(crate) syntax: SyntaxNode, } -impl SetConstraints { - #[inline] - pub fn constraints_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CONSTRAINTS_KW) - } - #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) - } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetDefault { - pub(crate) syntax: SyntaxNode, -} -impl SetDefault { +impl Rollback { #[inline] - pub fn expr(&self) -> Option { + pub fn literal(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn default_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::DEFAULT_KW) + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn abort_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ABORT_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetDefaultColumns { - pub(crate) syntax: SyntaxNode, -} -impl SetDefaultColumns { #[inline] - pub fn column_list(&self) -> Option { - support::child(&self.syntax) + pub fn and_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AND_KW) } #[inline] - pub fn default_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::DEFAULT_KW) + pub fn chain_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CHAIN_KW) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn no_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NO_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetExpr { - pub(crate) syntax: SyntaxNode, -} -impl SetExpr { #[inline] - pub fn expr(&self) -> Option { - support::child(&self.syntax) + pub fn prepared_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::PREPARED_KW) } #[inline] - pub fn default_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::DEFAULT_KW) + pub fn rollback_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ROLLBACK_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetExprList { - pub(crate) syntax: SyntaxNode, -} -impl SetExprList { #[inline] - pub fn set_exprs(&self) -> AstChildren { - support::children(&self.syntax) + pub fn savepoint_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SAVEPOINT_KW) } #[inline] - pub fn l_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::L_PAREN) + pub fn to_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TO_KW) } #[inline] - pub fn r_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::R_PAREN) + pub fn transaction_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TRANSACTION_KW) } #[inline] - pub fn row_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ROW_KW) + pub fn work_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WORK_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetExpression { +pub struct Row { pub(crate) syntax: SyntaxNode, } -impl SetExpression { - #[inline] - pub fn expr(&self) -> Option { - support::child(&self.syntax) - } - #[inline] - pub fn expression_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::EXPRESSION_KW) - } +impl Row { #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn exprs(&self) -> AstChildren { + support::children(&self.syntax) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetFuncOption { +pub struct RowList { pub(crate) syntax: SyntaxNode, } -impl SetFuncOption { +impl RowList { #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn rows(&self) -> AstChildren { + support::children(&self.syntax) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetGenerated { +pub struct RowsFuncOption { pub(crate) syntax: SyntaxNode, } -impl SetGenerated { +impl RowsFuncOption { #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn rows_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ROWS_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetGeneratedOptions { +pub struct Savepoint { pub(crate) syntax: SyntaxNode, } -impl SetGeneratedOptions { +impl Savepoint { #[inline] - pub fn generated_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::GENERATED_KW) + pub fn name(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn savepoint_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SAVEPOINT_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetLogged { +pub struct SchemaAuthorization { pub(crate) syntax: SyntaxNode, } -impl SetLogged { +impl SchemaAuthorization { #[inline] - pub fn logged_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::LOGGED_KW) + pub fn role(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn authorization_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AUTHORIZATION_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetMultipleColumns { +pub struct SecurityFuncOption { pub(crate) syntax: SyntaxNode, } -impl SetMultipleColumns { - #[inline] - pub fn column_list(&self) -> Option { - support::child(&self.syntax) - } +impl SecurityFuncOption { #[inline] - pub fn paren_select(&self) -> Option { - support::child(&self.syntax) + pub fn definer_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DEFINER_KW) } #[inline] - pub fn set_expr_list(&self) -> Option { - support::child(&self.syntax) + pub fn invoker_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::INVOKER_KW) } #[inline] - pub fn eq_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::EQ) + pub fn security_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SECURITY_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetNotNull { +pub struct SecurityLabel { pub(crate) syntax: SyntaxNode, } -impl SetNotNull { +impl SecurityLabel { #[inline] - pub fn not_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::NOT_KW) + pub fn aggregate(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn null_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::NULL_KW) + pub fn for_provider(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn function_sig(&self) -> Option { + support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetNullColumns { - pub(crate) syntax: SyntaxNode, -} -impl SetNullColumns { #[inline] - pub fn column_list(&self) -> Option { + pub fn literal(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn null_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::NULL_KW) + pub fn path(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn aggregate_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AGGREGATE_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetOptions { - pub(crate) syntax: SyntaxNode, -} -impl SetOptions { #[inline] - pub fn l_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::L_PAREN) + pub fn column_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::COLUMN_KW) } #[inline] - pub fn r_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::R_PAREN) + pub fn database_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DATABASE_KW) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn domain_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DOMAIN_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetOptionsList { - pub(crate) syntax: SyntaxNode, -} -impl SetOptionsList { #[inline] - pub fn alter_option_list(&self) -> Option { - support::child(&self.syntax) + pub fn event_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::EVENT_KW) } #[inline] - pub fn options_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::OPTIONS_KW) + pub fn foreign_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FOREIGN_KW) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn function_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FUNCTION_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetRole { - pub(crate) syntax: SyntaxNode, -} -impl SetRole { #[inline] - pub fn role_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ROLE_KW) + pub fn is_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IS_KW) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn label_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::LABEL_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetSchema { - pub(crate) syntax: SyntaxNode, -} -impl SetSchema { #[inline] - pub fn name_ref(&self) -> Option { - support::child(&self.syntax) + pub fn language_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::LANGUAGE_KW) } #[inline] - pub fn schema_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SCHEMA_KW) + pub fn large_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::LARGE_KW) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) - } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetSequenceOption { - pub(crate) syntax: SyntaxNode, -} -impl SetSequenceOption { - #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) - } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetSessionAuth { - pub(crate) syntax: SyntaxNode, -} -impl SetSessionAuth { - #[inline] - pub fn authorization_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::AUTHORIZATION_KW) + pub fn materialized_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::MATERIALIZED_KW) } #[inline] - pub fn session_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SESSION_KW) + pub fn null_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NULL_KW) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn object_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OBJECT_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetSingleColumn { - pub(crate) syntax: SyntaxNode, -} -impl SetSingleColumn { #[inline] - pub fn column(&self) -> Option { - support::child(&self.syntax) + pub fn on_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ON_KW) } #[inline] - pub fn set_expr(&self) -> Option { - support::child(&self.syntax) + pub fn procedural_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::PROCEDURAL_KW) } #[inline] - pub fn eq_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::EQ) + pub fn procedure_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::PROCEDURE_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetStatistics { - pub(crate) syntax: SyntaxNode, -} -impl SetStatistics { #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn publication_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::PUBLICATION_KW) } #[inline] - pub fn statistics_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::STATISTICS_KW) + pub fn role_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ROLE_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetStorage { - pub(crate) syntax: SyntaxNode, -} -impl SetStorage { #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn routine_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ROUTINE_KW) } #[inline] - pub fn storage_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::STORAGE_KW) + pub fn schema_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SCHEMA_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetStorageParams { - pub(crate) syntax: SyntaxNode, -} -impl SetStorageParams { #[inline] - pub fn attribute_list(&self) -> Option { - support::child(&self.syntax) + pub fn security_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SECURITY_KW) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn sequence_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SEQUENCE_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetTablespace { - pub(crate) syntax: SyntaxNode, -} -impl SetTablespace { #[inline] - pub fn name_ref(&self) -> Option { - support::child(&self.syntax) + pub fn subscription_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SUBSCRIPTION_KW) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn table_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TABLE_KW) } #[inline] pub fn tablespace_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::TABLESPACE_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetTransaction { - pub(crate) syntax: SyntaxNode, -} -impl SetTransaction { #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn trigger_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TRIGGER_KW) } #[inline] - pub fn transaction_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TRANSACTION_KW) + pub fn type_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TYPE_KW) + } + #[inline] + pub fn view_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::VIEW_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetType { +pub struct Select { pub(crate) syntax: SyntaxNode, } -impl SetType { +impl Select { #[inline] - pub fn collate(&self) -> Option { + pub fn fetch_clause(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn ty(&self) -> Option { + pub fn filter_clause(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn from_clause(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn type_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TYPE_KW) + pub fn group_by_clause(&self) -> Option { + support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetUnlogged { - pub(crate) syntax: SyntaxNode, -} -impl SetUnlogged { #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn having_clause(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn unlogged_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::UNLOGGED_KW) + pub fn limit_clause(&self) -> Option { + support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetWithoutCluster { - pub(crate) syntax: SyntaxNode, -} -impl SetWithoutCluster { #[inline] - pub fn cluster_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CLUSTER_KW) + pub fn locking_clauses(&self) -> AstChildren { + support::children(&self.syntax) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn offset_clause(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn without_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WITHOUT_KW) + pub fn order_by_clause(&self) -> Option { + support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SetWithoutOids { - pub(crate) syntax: SyntaxNode, -} -impl SetWithoutOids { #[inline] - pub fn oids_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::OIDS_KW) + pub fn select_clause(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn set_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SET_KW) + pub fn where_clause(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn without_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WITHOUT_KW) + pub fn window_clause(&self) -> Option { + support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Show { - pub(crate) syntax: SyntaxNode, -} -impl Show { #[inline] - pub fn show_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SHOW_KW) + pub fn with_clause(&self) -> Option { + support::child(&self.syntax) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SimilarTo { +pub struct SelectClause { pub(crate) syntax: SyntaxNode, } -impl SimilarTo { - #[inline] - pub fn similar_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SIMILAR_KW) - } +impl SelectClause { #[inline] - pub fn to_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TO_KW) + pub fn distinct_clause(&self) -> Option { + support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SliceExpr { - pub(crate) syntax: SyntaxNode, -} -impl SliceExpr { #[inline] - pub fn l_brack_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::L_BRACK) + pub fn target_list(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn r_brack_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::R_BRACK) + pub fn all_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ALL_KW) } #[inline] - pub fn colon_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::COLON) + pub fn select_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SELECT_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SortAsc { +pub struct SelectInto { pub(crate) syntax: SyntaxNode, } -impl SortAsc { +impl SelectInto { #[inline] - pub fn asc_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ASC_KW) + pub fn filter_clause(&self) -> Option { + support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SortBy { - pub(crate) syntax: SyntaxNode, -} -impl SortBy { #[inline] - pub fn expr(&self) -> Option { + pub fn from_clause(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn nulls_first(&self) -> Option { + pub fn group_by_clause(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn nulls_last(&self) -> Option { + pub fn having_clause(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn sort_asc(&self) -> Option { + pub fn into_clause(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn sort_desc(&self) -> Option { + pub fn limit_clause(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn sort_using(&self) -> Option { + pub fn locking_clauses(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn offset_clause(&self) -> Option { support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SortByList { - pub(crate) syntax: SyntaxNode, -} -impl SortByList { #[inline] - pub fn sort_bys(&self) -> AstChildren { - support::children(&self.syntax) + pub fn order_by_clause(&self) -> Option { + support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SortDesc { - pub(crate) syntax: SyntaxNode, -} -impl SortDesc { #[inline] - pub fn desc_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::DESC_KW) + pub fn select_clause(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn where_clause(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn window_clause(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn with_clause(&self) -> Option { + support::child(&self.syntax) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SortUsing { +pub struct SequenceOption { pub(crate) syntax: SyntaxNode, } -impl SortUsing { +impl SequenceOption { #[inline] - pub fn op(&self) -> Option { - support::child(&self.syntax) + pub fn cycle_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CYCLE_KW) } #[inline] - pub fn using_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::USING_KW) + pub fn maxvalue_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::MAXVALUE_KW) + } + #[inline] + pub fn minvalue_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::MINVALUE_KW) + } + #[inline] + pub fn no_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NO_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SourceFile { +pub struct SequenceOptionList { pub(crate) syntax: SyntaxNode, } -impl SourceFile { +impl SequenceOptionList { #[inline] - pub fn stmts(&self) -> AstChildren { + pub fn sequence_options(&self) -> AstChildren { support::children(&self.syntax) } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Storage { +pub struct Serializable { pub(crate) syntax: SyntaxNode, } -impl Storage { - #[inline] - pub fn default_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::DEFAULT_KW) - } +impl Serializable { #[inline] - pub fn external_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::EXTERNAL_KW) + pub fn isolation_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ISOLATION_KW) } #[inline] - pub fn ident_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::IDENT) + pub fn level_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::LEVEL_KW) } #[inline] - pub fn storage_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::STORAGE_KW) + pub fn serializable_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SERIALIZABLE_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct StrictFuncOption { +pub struct Set { pub(crate) syntax: SyntaxNode, } -impl StrictFuncOption { +impl Set { #[inline] - pub fn called_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CALLED_KW) + pub fn expr(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn input_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::INPUT_KW) + pub fn path(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn null_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::NULL_KW) + pub fn eq_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::EQ) } #[inline] - pub fn on_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ON_KW) + pub fn default_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DEFAULT_KW) } #[inline] - pub fn returns_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::RETURNS_KW) + pub fn local_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::LOCAL_KW) } #[inline] - pub fn strict_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::STRICT_KW) + pub fn session_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SESSION_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SupportFuncOption { - pub(crate) syntax: SyntaxNode, -} -impl SupportFuncOption { #[inline] - pub fn support_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::SUPPORT_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) + } + #[inline] + pub fn time_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TIME_KW) + } + #[inline] + pub fn to_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TO_KW) + } + #[inline] + pub fn zone_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ZONE_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Table { +pub struct SetAccessMethod { pub(crate) syntax: SyntaxNode, } -impl Table { +impl SetAccessMethod { #[inline] - pub fn relation_name(&self) -> Option { + pub fn name_ref(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn table_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TABLE_KW) + pub fn access_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ACCESS_KW) + } + #[inline] + pub fn method_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::METHOD_KW) + } + #[inline] + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct TableArgList { +pub struct SetClause { pub(crate) syntax: SyntaxNode, } -impl TableArgList { - #[inline] - pub fn args(&self) -> AstChildren { - support::children(&self.syntax) - } +impl SetClause { #[inline] - pub fn l_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::L_PAREN) + pub fn set_column_list(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn r_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::R_PAREN) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct TableList { +pub struct SetColumnList { pub(crate) syntax: SyntaxNode, } -impl TableList { +impl SetColumnList { #[inline] - pub fn relation_names(&self) -> AstChildren { + pub fn set_columns(&self) -> AstChildren { support::children(&self.syntax) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Tablespace { +pub struct SetCompression { pub(crate) syntax: SyntaxNode, } -impl Tablespace { +impl SetCompression { #[inline] - pub fn name_ref(&self) -> Option { - support::child(&self.syntax) + pub fn compression_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::COMPRESSION_KW) } #[inline] - pub fn tablespace_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TABLESPACE_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Target { +pub struct SetConfigParam { pub(crate) syntax: SyntaxNode, } -impl Target { - #[inline] - pub fn as_name(&self) -> Option { - support::child(&self.syntax) - } +impl SetConfigParam { #[inline] - pub fn expr(&self) -> Option { + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn star_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::STAR) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct TargetList { +pub struct SetConstraints { pub(crate) syntax: SyntaxNode, } -impl TargetList { +impl SetConstraints { #[inline] - pub fn targets(&self) -> AstChildren { + pub fn paths(&self) -> AstChildren { support::children(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct TimeType { - pub(crate) syntax: SyntaxNode, -} -impl TimeType { - #[inline] - pub fn literal(&self) -> Option { - support::child(&self.syntax) - } #[inline] - pub fn timezone(&self) -> Option { - support::child(&self.syntax) + pub fn all_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ALL_KW) } #[inline] - pub fn l_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::L_PAREN) + pub fn constraints_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CONSTRAINTS_KW) } #[inline] - pub fn r_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::R_PAREN) + pub fn deferred_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DEFERRED_KW) } #[inline] - pub fn time_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TIME_KW) + pub fn immediate_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IMMEDIATE_KW) } #[inline] - pub fn timestamp_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TIMESTAMP_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct TransactionModeList { +pub struct SetDefault { pub(crate) syntax: SyntaxNode, } -impl TransactionModeList { +impl SetDefault { #[inline] - pub fn transaction_modes(&self) -> AstChildren { - support::children(&self.syntax) + pub fn expr(&self) -> Option { + support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct TransformFuncOption { - pub(crate) syntax: SyntaxNode, -} -impl TransformFuncOption { #[inline] - pub fn transform_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TRANSFORM_KW) + pub fn default_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DEFAULT_KW) + } + #[inline] + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Truncate { +pub struct SetDefaultColumns { pub(crate) syntax: SyntaxNode, } -impl Truncate { +impl SetDefaultColumns { #[inline] - pub fn table_list(&self) -> Option { + pub fn column_list(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn cascade_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CASCADE_KW) - } - #[inline] - pub fn continue_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CONTINUE_KW) - } - #[inline] - pub fn identity_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::IDENTITY_KW) - } - #[inline] - pub fn restart_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::RESTART_KW) + pub fn default_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DEFAULT_KW) } #[inline] - pub fn restrict_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct SetExpr { + pub(crate) syntax: SyntaxNode, +} +impl SetExpr { #[inline] - pub fn table_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TABLE_KW) + pub fn expr(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn truncate_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TRUNCATE_KW) + pub fn default_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DEFAULT_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct TupleExpr { +pub struct SetExprList { pub(crate) syntax: SyntaxNode, } -impl TupleExpr { +impl SetExprList { #[inline] - pub fn exprs(&self) -> AstChildren { + pub fn set_exprs(&self) -> AstChildren { support::children(&self.syntax) } #[inline] @@ -10425,1279 +12530,3030 @@ impl TupleExpr { pub fn r_paren_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::R_PAREN) } + #[inline] + pub fn row_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ROW_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct UnicodeNormalForm { +pub struct SetExpression { pub(crate) syntax: SyntaxNode, } -impl UnicodeNormalForm { - #[inline] - pub fn nfc_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::NFC_KW) - } +impl SetExpression { #[inline] - pub fn nfd_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::NFD_KW) + pub fn expr(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn nfkc_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::NFKC_KW) + pub fn expression_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::EXPRESSION_KW) } #[inline] - pub fn nfkd_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::NFKD_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct UniqueConstraint { +pub struct SetFuncOption { pub(crate) syntax: SyntaxNode, } -impl UniqueConstraint { - #[inline] - pub fn column_list(&self) -> Option { - support::child(&self.syntax) - } - #[inline] - pub fn name_ref(&self) -> Option { - support::child(&self.syntax) - } - #[inline] - pub fn nulls_distinct(&self) -> Option { - support::child(&self.syntax) - } - #[inline] - pub fn nulls_not_distinct(&self) -> Option { - support::child(&self.syntax) - } - #[inline] - pub fn using_index(&self) -> Option { - support::child(&self.syntax) - } - #[inline] - pub fn constraint_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CONSTRAINT_KW) - } +impl SetFuncOption { #[inline] - pub fn unique_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::UNIQUE_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Unlisten { +pub struct SetGenerated { pub(crate) syntax: SyntaxNode, } -impl Unlisten { +impl SetGenerated { #[inline] - pub fn name_ref(&self) -> Option { - support::child(&self.syntax) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct SetGeneratedOptions { + pub(crate) syntax: SyntaxNode, +} +impl SetGeneratedOptions { #[inline] - pub fn star_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::STAR) + pub fn generated_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::GENERATED_KW) } #[inline] - pub fn unlisten_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::UNLISTEN_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Update { +pub struct SetLogged { pub(crate) syntax: SyntaxNode, } -impl Update { - #[inline] - pub fn alias(&self) -> Option { - support::child(&self.syntax) - } +impl SetLogged { #[inline] - pub fn from_clause(&self) -> Option { - support::child(&self.syntax) + pub fn logged_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::LOGGED_KW) } #[inline] - pub fn relation_name(&self) -> Option { - support::child(&self.syntax) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct SetMultipleColumns { + pub(crate) syntax: SyntaxNode, +} +impl SetMultipleColumns { #[inline] - pub fn returning_clause(&self) -> Option { + pub fn column_list(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn set_clause(&self) -> Option { + pub fn paren_select(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn where_clause(&self) -> Option { + pub fn set_expr_list(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn update_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::UPDATE_KW) + pub fn eq_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::EQ) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct UsingClause { +pub struct SetNotNull { pub(crate) syntax: SyntaxNode, } -impl UsingClause { +impl SetNotNull { #[inline] - pub fn from_items(&self) -> AstChildren { - support::children(&self.syntax) + pub fn not_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NOT_KW) } #[inline] - pub fn using_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::USING_KW) + pub fn null_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NULL_KW) + } + #[inline] + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct UsingIndex { +pub struct SetNullColumns { pub(crate) syntax: SyntaxNode, } -impl UsingIndex { +impl SetNullColumns { #[inline] - pub fn name_ref(&self) -> Option { + pub fn column_list(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn index_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::INDEX_KW) + pub fn null_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NULL_KW) } #[inline] - pub fn using_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::USING_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct UsingMethod { +pub struct SetOptions { pub(crate) syntax: SyntaxNode, } -impl UsingMethod { +impl SetOptions { #[inline] - pub fn name_ref(&self) -> Option { + pub fn attribute_list(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn using_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::USING_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct UsingOnClause { +pub struct SetOptionsList { pub(crate) syntax: SyntaxNode, } -impl UsingOnClause { - #[inline] - pub fn expr(&self) -> Option { - support::child(&self.syntax) - } +impl SetOptionsList { #[inline] - pub fn from_item(&self) -> Option { + pub fn alter_option_list(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn on_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ON_KW) + pub fn options_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OPTIONS_KW) } #[inline] - pub fn using_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::USING_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Vacuum { +pub struct SetRole { pub(crate) syntax: SyntaxNode, } -impl Vacuum { +impl SetRole { #[inline] - pub fn vacuum_option_list(&self) -> Option { + pub fn role(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn vacuum_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::VACUUM_KW) + pub fn local_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::LOCAL_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct VacuumOption { - pub(crate) syntax: SyntaxNode, -} -impl VacuumOption { #[inline] - pub fn full_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::FULL_KW) + pub fn none_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NONE_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct VacuumOptionList { - pub(crate) syntax: SyntaxNode, -} -impl VacuumOptionList { #[inline] - pub fn vacuum_options(&self) -> AstChildren { - support::children(&self.syntax) + pub fn reset_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESET_KW) } #[inline] - pub fn l_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::L_PAREN) + pub fn role_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ROLE_KW) } #[inline] - pub fn r_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::R_PAREN) + pub fn session_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SESSION_KW) + } + #[inline] + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct ValidateConstraint { +pub struct SetSchema { pub(crate) syntax: SyntaxNode, } -impl ValidateConstraint { +impl SetSchema { #[inline] pub fn name_ref(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn constraint_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CONSTRAINT_KW) + pub fn schema_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SCHEMA_KW) } #[inline] - pub fn validate_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::VALIDATE_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Values { +pub struct SetSequenceOption { pub(crate) syntax: SyntaxNode, } -impl Values { - #[inline] - pub fn row_list(&self) -> Option { - support::child(&self.syntax) - } +impl SetSequenceOption { #[inline] - pub fn values_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::VALUES_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Variant { +pub struct SetSessionAuth { pub(crate) syntax: SyntaxNode, } -impl Variant { +impl SetSessionAuth { #[inline] pub fn literal(&self) -> Option { support::child(&self.syntax) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct VariantList { - pub(crate) syntax: SyntaxNode, -} -impl VariantList { #[inline] - pub fn variants(&self) -> AstChildren { - support::children(&self.syntax) + pub fn role(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn l_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::L_PAREN) + pub fn authorization_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AUTHORIZATION_KW) } #[inline] - pub fn r_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::R_PAREN) + pub fn default_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DEFAULT_KW) + } + #[inline] + pub fn local_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::LOCAL_KW) + } + #[inline] + pub fn session_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SESSION_KW) + } + #[inline] + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct VolatilityFuncOption { +pub struct SetSingleColumn { pub(crate) syntax: SyntaxNode, } -impl VolatilityFuncOption { +impl SetSingleColumn { #[inline] - pub fn immutable_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::IMMUTABLE_KW) + pub fn column(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn stable_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::STABLE_KW) + pub fn set_expr(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn volatile_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::VOLATILE_KW) + pub fn eq_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::EQ) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WhenClause { +pub struct SetStatistics { pub(crate) syntax: SyntaxNode, } -impl WhenClause { +impl SetStatistics { #[inline] - pub fn then_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::THEN_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } #[inline] - pub fn when_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WHEN_KW) + pub fn statistics_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::STATISTICS_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WhenClauseList { +pub struct SetStorage { pub(crate) syntax: SyntaxNode, } -impl WhenClauseList { +impl SetStorage { #[inline] - pub fn when_clause(&self) -> Option { - support::child(&self.syntax) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } #[inline] - pub fn when_clauses(&self) -> AstChildren { - support::children(&self.syntax) + pub fn storage_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::STORAGE_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WhereClause { +pub struct SetTablespace { pub(crate) syntax: SyntaxNode, } -impl WhereClause { +impl SetTablespace { #[inline] - pub fn expr(&self) -> Option { + pub fn path(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn where_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WHERE_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) + } + #[inline] + pub fn tablespace_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TABLESPACE_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WhereCurrentOf { +pub struct SetTransaction { pub(crate) syntax: SyntaxNode, } -impl WhereCurrentOf { +impl SetTransaction { #[inline] - pub fn name_ref(&self) -> Option { + pub fn literal(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn current_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::CURRENT_KW) + pub fn transaction_mode_list(&self) -> Option { + support::child(&self.syntax) } #[inline] - pub fn of_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::OF_KW) + pub fn as_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AS_KW) } #[inline] - pub fn where_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WHERE_KW) + pub fn characteristics_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CHARACTERISTICS_KW) } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WindowClause { - pub(crate) syntax: SyntaxNode, -} -impl WindowClause { #[inline] - pub fn window_defs(&self) -> AstChildren { - support::children(&self.syntax) + pub fn session_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SESSION_KW) } #[inline] - pub fn window_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WINDOW_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) + } + #[inline] + pub fn snapshot_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SNAPSHOT_KW) + } + #[inline] + pub fn transaction_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TRANSACTION_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WindowDef { +pub struct SetType { pub(crate) syntax: SyntaxNode, } -impl WindowDef { +impl SetType { #[inline] - pub fn name(&self) -> Option { + pub fn collate(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn window_spec(&self) -> Option { + pub fn ty(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn l_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::L_PAREN) - } - #[inline] - pub fn r_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::R_PAREN) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } #[inline] - pub fn as_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::AS_KW) + pub fn type_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TYPE_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WindowFuncOption { +pub struct SetUnlogged { pub(crate) syntax: SyntaxNode, } -impl WindowFuncOption { +impl SetUnlogged { #[inline] - pub fn window_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WINDOW_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) + } + #[inline] + pub fn unlogged_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::UNLOGGED_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WindowSpec { +pub struct SetWithoutCluster { pub(crate) syntax: SyntaxNode, } -impl WindowSpec { - #[inline] - pub fn exprs(&self) -> AstChildren { - support::children(&self.syntax) - } - #[inline] - pub fn frame_clause(&self) -> Option { - support::child(&self.syntax) - } - #[inline] - pub fn order_by_clause(&self) -> Option { - support::child(&self.syntax) - } +impl SetWithoutCluster { #[inline] - pub fn by_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::BY_KW) + pub fn cluster_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CLUSTER_KW) } #[inline] - pub fn ident_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::IDENT) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } #[inline] - pub fn partition_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::PARTITION_KW) + pub fn without_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITHOUT_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WithClause { +pub struct SetWithoutOids { pub(crate) syntax: SyntaxNode, } -impl WithClause { +impl SetWithoutOids { #[inline] - pub fn with_tables(&self) -> AstChildren { - support::children(&self.syntax) + pub fn oids_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OIDS_KW) } #[inline] - pub fn recursive_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::RECURSIVE_KW) + pub fn set_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SET_KW) } #[inline] - pub fn with_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WITH_KW) + pub fn without_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITHOUT_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WithData { +pub struct Show { pub(crate) syntax: SyntaxNode, } -impl WithData { +impl Show { #[inline] - pub fn data_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::DATA_KW) - } - #[inline] - pub fn with_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WITH_KW) + pub fn show_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SHOW_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WithNoData { +pub struct SimilarTo { pub(crate) syntax: SyntaxNode, } -impl WithNoData { - #[inline] - pub fn data_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::DATA_KW) - } +impl SimilarTo { #[inline] - pub fn no_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::NO_KW) + pub fn similar_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SIMILAR_KW) } #[inline] - pub fn with_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WITH_KW) + pub fn to_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TO_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WithOptions { +pub struct SliceExpr { pub(crate) syntax: SyntaxNode, } -impl WithOptions { +impl SliceExpr { #[inline] - pub fn options_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::OPTIONS_KW) + pub fn l_brack_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_BRACK) } #[inline] - pub fn with_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WITH_KW) + pub fn r_brack_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_BRACK) + } + #[inline] + pub fn colon_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::COLON) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WithParams { +pub struct SortAsc { pub(crate) syntax: SyntaxNode, } -impl WithParams { - #[inline] - pub fn l_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::L_PAREN) - } - #[inline] - pub fn r_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::R_PAREN) - } +impl SortAsc { #[inline] - pub fn with_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WITH_KW) + pub fn asc_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ASC_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WithTable { +pub struct SortBy { pub(crate) syntax: SyntaxNode, } -impl WithTable { +impl SortBy { #[inline] - pub fn column_list(&self) -> Option { + pub fn expr(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn materialized(&self) -> Option { + pub fn nulls_first(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn name(&self) -> Option { + pub fn nulls_last(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn not_materialized(&self) -> Option { + pub fn sort_asc(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn query(&self) -> Option { + pub fn sort_desc(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn l_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::L_PAREN) - } - #[inline] - pub fn r_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::R_PAREN) - } - #[inline] - pub fn as_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::AS_KW) + pub fn sort_using(&self) -> Option { + support::child(&self.syntax) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WithTimezone { +pub struct SortByList { pub(crate) syntax: SyntaxNode, } -impl WithTimezone { - #[inline] - pub fn time_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TIME_KW) - } +impl SortByList { #[inline] - pub fn with_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WITH_KW) + pub fn sort_bys(&self) -> AstChildren { + support::children(&self.syntax) } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct SortDesc { + pub(crate) syntax: SyntaxNode, +} +impl SortDesc { #[inline] - pub fn zone_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ZONE_KW) + pub fn desc_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DESC_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WithinClause { +pub struct SortUsing { pub(crate) syntax: SyntaxNode, } -impl WithinClause { +impl SortUsing { #[inline] - pub fn order_by_clause(&self) -> Option { + pub fn op(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn l_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::L_PAREN) - } - #[inline] - pub fn r_paren_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::R_PAREN) - } - #[inline] - pub fn group_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::GROUP_KW) - } - #[inline] - pub fn within_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WITHIN_KW) + pub fn using_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::USING_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WithoutOids { +pub struct SourceFile { pub(crate) syntax: SyntaxNode, } -impl WithoutOids { - #[inline] - pub fn oids_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::OIDS_KW) - } +impl SourceFile { #[inline] - pub fn without_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WITHOUT_KW) + pub fn stmts(&self) -> AstChildren { + support::children(&self.syntax) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct WithoutTimezone { +pub struct Storage { pub(crate) syntax: SyntaxNode, } -impl WithoutTimezone { +impl Storage { #[inline] - pub fn time_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::TIME_KW) + pub fn default_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DEFAULT_KW) } #[inline] - pub fn without_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::WITHOUT_KW) + pub fn external_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::EXTERNAL_KW) } #[inline] - pub fn zone_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ZONE_KW) + pub fn ident_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IDENT) + } + #[inline] + pub fn storage_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::STORAGE_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct XmlColumnOption { +pub struct StrictFuncOption { pub(crate) syntax: SyntaxNode, } -impl XmlColumnOption { +impl StrictFuncOption { #[inline] - pub fn expr(&self) -> Option { - support::child(&self.syntax) + pub fn called_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CALLED_KW) } #[inline] - pub fn default_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::DEFAULT_KW) + pub fn input_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::INPUT_KW) } #[inline] - pub fn ident_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::IDENT) + pub fn null_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NULL_KW) } #[inline] - pub fn not_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::NOT_KW) + pub fn on_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ON_KW) } #[inline] - pub fn null_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::NULL_KW) + pub fn returns_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RETURNS_KW) } #[inline] - pub fn path_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::PATH_KW) + pub fn strict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::STRICT_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct XmlColumnOptionList { +pub struct SupportFuncOption { pub(crate) syntax: SyntaxNode, } -impl XmlColumnOptionList { - #[inline] - pub fn xml_column_option(&self) -> Option { - support::child(&self.syntax) - } +impl SupportFuncOption { #[inline] - pub fn xml_column_options(&self) -> AstChildren { - support::children(&self.syntax) + pub fn support_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SUPPORT_KW) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct XmlTableColumn { +pub struct Table { pub(crate) syntax: SyntaxNode, } -impl XmlTableColumn { +impl Table { #[inline] - pub fn name(&self) -> Option { + pub fn relation_name(&self) -> Option { support::child(&self.syntax) } #[inline] - pub fn ty(&self) -> Option { - support::child(&self.syntax) + pub fn table_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TABLE_KW) } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct TableArgList { + pub(crate) syntax: SyntaxNode, +} +impl TableArgList { #[inline] - pub fn xml_column_option_list(&self) -> Option { - support::child(&self.syntax) + pub fn args(&self) -> AstChildren { + support::children(&self.syntax) } #[inline] - pub fn for_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::FOR_KW) + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) } #[inline] - pub fn ordinality_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ORDINALITY_KW) + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct XmlTableColumnList { +pub struct TableList { pub(crate) syntax: SyntaxNode, } -impl XmlTableColumnList { +impl TableList { #[inline] - pub fn xml_table_columns(&self) -> AstChildren { + pub fn relation_names(&self) -> AstChildren { support::children(&self.syntax) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum AlterColumnOption { - AddGenerated(AddGenerated), - DropDefault(DropDefault), - DropExpression(DropExpression), - DropIdentity(DropIdentity), - DropNotNull(DropNotNull), - ResetOptions(ResetOptions), - Restart(Restart), - SetCompression(SetCompression), - SetDefault(SetDefault), - SetExpression(SetExpression), - SetGenerated(SetGenerated), - SetGeneratedOptions(SetGeneratedOptions), - SetNotNull(SetNotNull), - SetOptions(SetOptions), - SetOptionsList(SetOptionsList), - SetSequenceOption(SetSequenceOption), - SetStatistics(SetStatistics), - SetStorage(SetStorage), - SetType(SetType), +pub struct Tablespace { + pub(crate) syntax: SyntaxNode, } - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum AlterDomainAction { - AddConstraint(AddConstraint), - DropConstraint(DropConstraint), - DropDefault(DropDefault), - DropNotNull(DropNotNull), - OwnerTo(OwnerTo), - RenameConstraint(RenameConstraint), - RenameTo(RenameTo), - SetDefault(SetDefault), - SetNotNull(SetNotNull), - SetSchema(SetSchema), - ValidateConstraint(ValidateConstraint), +impl Tablespace { + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn tablespace_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TABLESPACE_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum AlterTableAction { - AddColumn(AddColumn), - AddConstraint(AddConstraint), - AlterColumn(AlterColumn), - AlterConstraint(AlterConstraint), - AttachPartition(AttachPartition), - ClusterOn(ClusterOn), - DetachPartition(DetachPartition), - DisableRls(DisableRls), - DisableRule(DisableRule), - DisableTrigger(DisableTrigger), - DropColumn(DropColumn), - DropConstraint(DropConstraint), - EnableAlwaysRule(EnableAlwaysRule), - EnableAlwaysTrigger(EnableAlwaysTrigger), - EnableReplicaRule(EnableReplicaRule), - EnableReplicaTrigger(EnableReplicaTrigger), - EnableRls(EnableRls), - EnableRule(EnableRule), - EnableTrigger(EnableTrigger), - ForceRls(ForceRls), - InheritTable(InheritTable), - NoForceRls(NoForceRls), - NoInheritTable(NoInheritTable), - NotOf(NotOf), - OfType(OfType), - OptionItemList(OptionItemList), - OwnerTo(OwnerTo), - RenameColumn(RenameColumn), - RenameConstraint(RenameConstraint), - RenameTable(RenameTable), - ReplicaIdentity(ReplicaIdentity), - ResetStorageParams(ResetStorageParams), - SetAccessMethod(SetAccessMethod), - SetLogged(SetLogged), - SetSchema(SetSchema), - SetStorageParams(SetStorageParams), - SetTablespace(SetTablespace), - SetUnlogged(SetUnlogged), - SetWithoutCluster(SetWithoutCluster), - SetWithoutOids(SetWithoutOids), - ValidateConstraint(ValidateConstraint), +pub struct Target { + pub(crate) syntax: SyntaxNode, } - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum ColumnConstraint { - CheckConstraint(CheckConstraint), - ExcludeConstraint(ExcludeConstraint), - NotNullConstraint(NotNullConstraint), - PrimaryKeyConstraint(PrimaryKeyConstraint), - ReferencesConstraint(ReferencesConstraint), - UniqueConstraint(UniqueConstraint), +impl Target { + #[inline] + pub fn as_name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn expr(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn star_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::STAR) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum ConflictAction { - ConflictDoNothing(ConflictDoNothing), - ConflictDoUpdateSet(ConflictDoUpdateSet), +pub struct TargetList { + pub(crate) syntax: SyntaxNode, } - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum ConflictTarget { - ConflictOnConstraint(ConflictOnConstraint), - ConflictOnIndex(ConflictOnIndex), +impl TargetList { + #[inline] + pub fn targets(&self) -> AstChildren { + support::children(&self.syntax) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum Constraint { - CheckConstraint(CheckConstraint), - DefaultConstraint(DefaultConstraint), - ForeignKeyConstraint(ForeignKeyConstraint), - GeneratedConstraint(GeneratedConstraint), - NotNullConstraint(NotNullConstraint), - NullConstraint(NullConstraint), - PrimaryKeyConstraint(PrimaryKeyConstraint), - ReferencesConstraint(ReferencesConstraint), - UniqueConstraint(UniqueConstraint), +pub struct TimeType { + pub(crate) syntax: SyntaxNode, } - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum ExplainStmt { - CompoundSelect(CompoundSelect), - CreateMaterializedView(CreateMaterializedView), - CreateTableAs(CreateTableAs), - Declare(Declare), - Delete(Delete), - Execute(Execute), - Insert(Insert), - Merge(Merge), - ParenSelect(ParenSelect), - Select(Select), - SelectInto(SelectInto), - Table(Table), - Update(Update), - Values(Values), +impl TimeType { + #[inline] + pub fn literal(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn timezone(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } + #[inline] + pub fn time_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TIME_KW) + } + #[inline] + pub fn timestamp_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TIMESTAMP_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum Expr { - ArrayExpr(ArrayExpr), - BetweenExpr(BetweenExpr), - BinExpr(BinExpr), - CallExpr(CallExpr), - CaseExpr(CaseExpr), - CastExpr(CastExpr), - FieldExpr(FieldExpr), - IndexExpr(IndexExpr), - Literal(Literal), - NameRef(NameRef), - ParenExpr(ParenExpr), - PostfixExpr(PostfixExpr), - PrefixExpr(PrefixExpr), - SliceExpr(SliceExpr), - TupleExpr(TupleExpr), +pub struct Timing { + pub(crate) syntax: SyntaxNode, } - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum FuncOption { - AsFuncOption(AsFuncOption), - BeginFuncOption(BeginFuncOption), - CostFuncOption(CostFuncOption), - LanguageFuncOption(LanguageFuncOption), - LeakproofFuncOption(LeakproofFuncOption), - ParallelFuncOption(ParallelFuncOption), - ResetFuncOption(ResetFuncOption), - ReturnFuncOption(ReturnFuncOption), - RowsFuncOption(RowsFuncOption), - SecurityFuncOption(SecurityFuncOption), - SetFuncOption(SetFuncOption), - StrictFuncOption(StrictFuncOption), - SupportFuncOption(SupportFuncOption), - TransformFuncOption(TransformFuncOption), - VolatilityFuncOption(VolatilityFuncOption), - WindowFuncOption(WindowFuncOption), +impl Timing { + #[inline] + pub fn after_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AFTER_KW) + } + #[inline] + pub fn before_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::BEFORE_KW) + } + #[inline] + pub fn instead_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::INSTEAD_KW) + } + #[inline] + pub fn of_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OF_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum GroupBy { - GroupingCube(GroupingCube), - GroupingExpr(GroupingExpr), - GroupingRollup(GroupingRollup), - GroupingSets(GroupingSets), +pub struct TransactionModeList { + pub(crate) syntax: SyntaxNode, +} +impl TransactionModeList { + #[inline] + pub fn transaction_modes(&self) -> AstChildren { + support::children(&self.syntax) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum JoinType { - JoinCross(JoinCross), - JoinFull(JoinFull), - JoinInner(JoinInner), - JoinLeft(JoinLeft), - JoinRight(JoinRight), +pub struct TransformFromFunc { + pub(crate) syntax: SyntaxNode, +} +impl TransformFromFunc { + #[inline] + pub fn function_sig(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn from_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FROM_KW) + } + #[inline] + pub fn function_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FUNCTION_KW) + } + #[inline] + pub fn sql_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SQL_KW) + } + #[inline] + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum JsonBehavior { - JsonBehaviorDefault(JsonBehaviorDefault), - JsonBehaviorEmptyArray(JsonBehaviorEmptyArray), - JsonBehaviorEmptyObject(JsonBehaviorEmptyObject), - JsonBehaviorError(JsonBehaviorError), - JsonBehaviorFalse(JsonBehaviorFalse), - JsonBehaviorNull(JsonBehaviorNull), - JsonBehaviorTrue(JsonBehaviorTrue), - JsonBehaviorUnknown(JsonBehaviorUnknown), +pub struct TransformFuncOption { + pub(crate) syntax: SyntaxNode, +} +impl TransformFuncOption { + #[inline] + pub fn transform_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TRANSFORM_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum MatchType { - MatchFull(MatchFull), - MatchPartial(MatchPartial), - MatchSimple(MatchSimple), +pub struct TransformToFunc { + pub(crate) syntax: SyntaxNode, +} +impl TransformToFunc { + #[inline] + pub fn function_sig(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn function_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FUNCTION_KW) + } + #[inline] + pub fn sql_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::SQL_KW) + } + #[inline] + pub fn to_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TO_KW) + } + #[inline] + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum MergeAction { - MergeDelete(MergeDelete), - MergeDoNothing(MergeDoNothing), - MergeInsert(MergeInsert), - MergeUpdate(MergeUpdate), +pub struct TriggerEvent { + pub(crate) syntax: SyntaxNode, +} +impl TriggerEvent { + #[inline] + pub fn trigger_event_update(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn delete_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DELETE_KW) + } + #[inline] + pub fn insert_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::INSERT_KW) + } + #[inline] + pub fn truncate_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TRUNCATE_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum MergeWhenClause { - MergeWhenMatched(MergeWhenMatched), - MergeWhenNotMatchedSource(MergeWhenNotMatchedSource), - MergeWhenNotMatchedTarget(MergeWhenNotMatchedTarget), +pub struct TriggerEventList { + pub(crate) syntax: SyntaxNode, +} +impl TriggerEventList { + #[inline] + pub fn trigger_events(&self) -> AstChildren { + support::children(&self.syntax) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum OnCommitAction { - DeleteRows(DeleteRows), - Drop(Drop), - PreserveRows(PreserveRows), +pub struct TriggerEventUpdate { + pub(crate) syntax: SyntaxNode, +} +impl TriggerEventUpdate { + #[inline] + pub fn name_refs(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn of_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OF_KW) + } + #[inline] + pub fn update_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::UPDATE_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum ParamMode { - ParamIn(ParamIn), - ParamInOut(ParamInOut), - ParamOut(ParamOut), - ParamVariadic(ParamVariadic), +pub struct Truncate { + pub(crate) syntax: SyntaxNode, +} +impl Truncate { + #[inline] + pub fn table_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn cascade_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CASCADE_KW) + } + #[inline] + pub fn continue_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CONTINUE_KW) + } + #[inline] + pub fn identity_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IDENTITY_KW) + } + #[inline] + pub fn restart_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTART_KW) + } + #[inline] + pub fn restrict_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RESTRICT_KW) + } + #[inline] + pub fn table_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TABLE_KW) + } + #[inline] + pub fn truncate_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TRUNCATE_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum PartitionType { - PartitionDefault(PartitionDefault), - PartitionForValuesFrom(PartitionForValuesFrom), - PartitionForValuesIn(PartitionForValuesIn), - PartitionForValuesWith(PartitionForValuesWith), +pub struct TupleExpr { + pub(crate) syntax: SyntaxNode, +} +impl TupleExpr { + #[inline] + pub fn exprs(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum RefAction { - Cascade(Cascade), - NoAction(NoAction), - Restrict(Restrict), - SetDefaultColumns(SetDefaultColumns), - SetNullColumns(SetNullColumns), +pub struct UnicodeNormalForm { + pub(crate) syntax: SyntaxNode, +} +impl UnicodeNormalForm { + #[inline] + pub fn nfc_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NFC_KW) + } + #[inline] + pub fn nfd_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NFD_KW) + } + #[inline] + pub fn nfkc_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NFKC_KW) + } + #[inline] + pub fn nfkd_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NFKD_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum SelectVariant { - CompoundSelect(CompoundSelect), - ParenSelect(ParenSelect), - Select(Select), - SelectInto(SelectInto), - Table(Table), - Values(Values), +pub struct UniqueConstraint { + pub(crate) syntax: SyntaxNode, +} +impl UniqueConstraint { + #[inline] + pub fn column_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn nulls_distinct(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn nulls_not_distinct(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn using_index(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn constraint_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CONSTRAINT_KW) + } + #[inline] + pub fn unique_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::UNIQUE_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum SetColumn { - SetMultipleColumns(SetMultipleColumns), - SetSingleColumn(SetSingleColumn), +pub struct Unlisten { + pub(crate) syntax: SyntaxNode, +} +impl Unlisten { + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn star_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::STAR) + } + #[inline] + pub fn unlisten_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::UNLISTEN_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum Stmt { - AlterAggregate(AlterAggregate), - AlterCollation(AlterCollation), - AlterConversion(AlterConversion), - AlterDatabase(AlterDatabase), - AlterDefaultPrivileges(AlterDefaultPrivileges), - AlterDomain(AlterDomain), - AlterEventTrigger(AlterEventTrigger), - AlterExtension(AlterExtension), - AlterForeignDataWrapper(AlterForeignDataWrapper), - AlterForeignTable(AlterForeignTable), - AlterFunction(AlterFunction), - AlterGroup(AlterGroup), - AlterIndex(AlterIndex), - AlterLanguage(AlterLanguage), - AlterLargeObject(AlterLargeObject), - AlterMaterializedView(AlterMaterializedView), - AlterOperator(AlterOperator), - AlterOperatorClass(AlterOperatorClass), - AlterOperatorFamily(AlterOperatorFamily), - AlterPolicy(AlterPolicy), - AlterProcedure(AlterProcedure), - AlterPublication(AlterPublication), - AlterRole(AlterRole), - AlterRoutine(AlterRoutine), - AlterRule(AlterRule), - AlterSchema(AlterSchema), - AlterSequence(AlterSequence), - AlterServer(AlterServer), - AlterStatistics(AlterStatistics), - AlterSubscription(AlterSubscription), - AlterSystem(AlterSystem), - AlterTable(AlterTable), - AlterTablespace(AlterTablespace), - AlterTextSearchConfiguration(AlterTextSearchConfiguration), - AlterTextSearchDictionary(AlterTextSearchDictionary), - AlterTextSearchParser(AlterTextSearchParser), - AlterTextSearchTemplate(AlterTextSearchTemplate), - AlterTrigger(AlterTrigger), - AlterType(AlterType), - AlterUser(AlterUser), - AlterUserMapping(AlterUserMapping), - AlterView(AlterView), - Analyze(Analyze), - Begin(Begin), - Call(Call), - Checkpoint(Checkpoint), - Close(Close), - Cluster(Cluster), - CommentOn(CommentOn), - Commit(Commit), - Copy(Copy), - CreateAccessMethod(CreateAccessMethod), - CreateAggregate(CreateAggregate), - CreateCast(CreateCast), - CreateCollation(CreateCollation), - CreateConversion(CreateConversion), - CreateDatabase(CreateDatabase), - CreateDomain(CreateDomain), - CreateEventTrigger(CreateEventTrigger), - CreateExtension(CreateExtension), - CreateForeignDataWrapper(CreateForeignDataWrapper), - CreateForeignTable(CreateForeignTable), - CreateFunction(CreateFunction), - CreateGroup(CreateGroup), - CreateIndex(CreateIndex), - CreateLanguage(CreateLanguage), - CreateMaterializedView(CreateMaterializedView), - CreateOperator(CreateOperator), - CreateOperatorClass(CreateOperatorClass), - CreateOperatorFamily(CreateOperatorFamily), - CreatePolicy(CreatePolicy), - CreateProcedure(CreateProcedure), - CreatePublication(CreatePublication), - CreateRole(CreateRole), - CreateRule(CreateRule), - CreateSchema(CreateSchema), - CreateSequence(CreateSequence), - CreateServer(CreateServer), - CreateStatistics(CreateStatistics), - CreateSubscription(CreateSubscription), - CreateTable(CreateTable), - CreateTableAs(CreateTableAs), - CreateTablespace(CreateTablespace), - CreateTextSearchConfiguration(CreateTextSearchConfiguration), - CreateTextSearchDictionary(CreateTextSearchDictionary), - CreateTextSearchParser(CreateTextSearchParser), - CreateTextSearchTemplate(CreateTextSearchTemplate), - CreateTransform(CreateTransform), - CreateTrigger(CreateTrigger), - CreateType(CreateType), - CreateUser(CreateUser), - CreateUserMapping(CreateUserMapping), - CreateView(CreateView), - Deallocate(Deallocate), - Declare(Declare), - Delete(Delete), - Discard(Discard), - Do(Do), - DropAccessMethod(DropAccessMethod), - DropAggregate(DropAggregate), - DropCast(DropCast), - DropCollation(DropCollation), - DropConversion(DropConversion), - DropDatabase(DropDatabase), - DropDomain(DropDomain), - DropEventTrigger(DropEventTrigger), - DropExtension(DropExtension), - DropForeignDataWrapper(DropForeignDataWrapper), - DropForeignTable(DropForeignTable), - DropFunction(DropFunction), - DropGroup(DropGroup), - DropIndex(DropIndex), - DropLanguage(DropLanguage), - DropMaterializedView(DropMaterializedView), - DropOperator(DropOperator), - DropOperatorClass(DropOperatorClass), - DropOperatorFamily(DropOperatorFamily), - DropOwned(DropOwned), - DropPolicy(DropPolicy), - DropProcedure(DropProcedure), - DropPublication(DropPublication), - DropRole(DropRole), - DropRoutine(DropRoutine), - DropRule(DropRule), - DropSchema(DropSchema), - DropSequence(DropSequence), - DropServer(DropServer), - DropStatistics(DropStatistics), - DropSubscription(DropSubscription), - DropTable(DropTable), - DropTablespace(DropTablespace), - DropTextSearchConfig(DropTextSearchConfig), - DropTextSearchDict(DropTextSearchDict), - DropTextSearchParser(DropTextSearchParser), - DropTextSearchTemplate(DropTextSearchTemplate), - DropTransform(DropTransform), - DropTrigger(DropTrigger), - DropType(DropType), - DropUser(DropUser), - DropUserMapping(DropUserMapping), - DropView(DropView), - Execute(Execute), - Explain(Explain), - Fetch(Fetch), - Grant(Grant), - ImportForeignSchema(ImportForeignSchema), - Insert(Insert), - Listen(Listen), - Load(Load), - Lock(Lock), - Merge(Merge), - Move(Move), - Notify(Notify), - ParenSelect(ParenSelect), - Prepare(Prepare), - PrepareTransaction(PrepareTransaction), - Reassign(Reassign), - Refresh(Refresh), - Reindex(Reindex), - ReleaseSavepoint(ReleaseSavepoint), - Reset(Reset), - Revoke(Revoke), - Rollback(Rollback), - Savepoint(Savepoint), - SecurityLabel(SecurityLabel), - Select(Select), - SelectInto(SelectInto), - Set(Set), - SetConstraints(SetConstraints), - SetRole(SetRole), - SetSessionAuth(SetSessionAuth), - SetTransaction(SetTransaction), - Show(Show), - Table(Table), - Truncate(Truncate), - Unlisten(Unlisten), - Update(Update), - Vacuum(Vacuum), - Values(Values), +pub struct Update { + pub(crate) syntax: SyntaxNode, +} +impl Update { + #[inline] + pub fn alias(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn from_clause(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn relation_name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn returning_clause(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn set_clause(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn where_clause(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn update_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::UPDATE_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum TableArg { - Column(Column), - LikeClause(LikeClause), - TableConstraint(TableConstraint), +pub struct UsingClause { + pub(crate) syntax: SyntaxNode, +} +impl UsingClause { + #[inline] + pub fn from_items(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn using_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::USING_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum TableConstraint { - CheckConstraint(CheckConstraint), - ExcludeConstraint(ExcludeConstraint), - ForeignKeyConstraint(ForeignKeyConstraint), - PrimaryKeyConstraint(PrimaryKeyConstraint), - UniqueConstraint(UniqueConstraint), +pub struct UsingIndex { + pub(crate) syntax: SyntaxNode, +} +impl UsingIndex { + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn index_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::INDEX_KW) + } + #[inline] + pub fn using_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::USING_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum Timezone { - WithTimezone(WithTimezone), - WithoutTimezone(WithoutTimezone), +pub struct UsingMethod { + pub(crate) syntax: SyntaxNode, +} +impl UsingMethod { + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn using_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::USING_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum TransactionMode { - Deferrable(Deferrable), - NotDeferrable(NotDeferrable), - ReadCommitted(ReadCommitted), - ReadOnly(ReadOnly), - ReadUncommitted(ReadUncommitted), - ReadWrite(ReadWrite), - RepeatableRead(RepeatableRead), - Serializable(Serializable), +pub struct UsingOnClause { + pub(crate) syntax: SyntaxNode, +} +impl UsingOnClause { + #[inline] + pub fn expr(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn from_item(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn on_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ON_KW) + } + #[inline] + pub fn using_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::USING_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum Type { - ArrayType(ArrayType), - BitType(BitType), - CharType(CharType), - DoubleType(DoubleType), - ExprType(ExprType), - IntervalType(IntervalType), - PathType(PathType), - PercentType(PercentType), - TimeType(TimeType), +pub struct Vacuum { + pub(crate) syntax: SyntaxNode, +} +impl Vacuum { + #[inline] + pub fn relation_name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn vacuum_option_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn vacuum_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::VACUUM_KW) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum WithQuery { - Delete(Delete), - Insert(Insert), - Merge(Merge), - Select(Select), - Update(Update), - Values(Values), +pub struct VacuumOption { + pub(crate) syntax: SyntaxNode, +} +impl VacuumOption { + #[inline] + pub fn full_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FULL_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct VacuumOptionList { + pub(crate) syntax: SyntaxNode, +} +impl VacuumOptionList { + #[inline] + pub fn vacuum_options(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct ValidateConstraint { + pub(crate) syntax: SyntaxNode, +} +impl ValidateConstraint { + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn constraint_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CONSTRAINT_KW) + } + #[inline] + pub fn validate_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::VALIDATE_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct Values { + pub(crate) syntax: SyntaxNode, +} +impl Values { + #[inline] + pub fn row_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn values_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::VALUES_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct Variant { + pub(crate) syntax: SyntaxNode, +} +impl Variant { + #[inline] + pub fn literal(&self) -> Option { + support::child(&self.syntax) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct VariantList { + pub(crate) syntax: SyntaxNode, +} +impl VariantList { + #[inline] + pub fn variants(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct VolatilityFuncOption { + pub(crate) syntax: SyntaxNode, +} +impl VolatilityFuncOption { + #[inline] + pub fn immutable_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IMMUTABLE_KW) + } + #[inline] + pub fn stable_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::STABLE_KW) + } + #[inline] + pub fn volatile_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::VOLATILE_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WhenClause { + pub(crate) syntax: SyntaxNode, +} +impl WhenClause { + #[inline] + pub fn then_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::THEN_KW) + } + #[inline] + pub fn when_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WHEN_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WhenClauseList { + pub(crate) syntax: SyntaxNode, +} +impl WhenClauseList { + #[inline] + pub fn when_clause(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn when_clauses(&self) -> AstChildren { + support::children(&self.syntax) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WhenCondition { + pub(crate) syntax: SyntaxNode, +} +impl WhenCondition { + #[inline] + pub fn expr(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } + #[inline] + pub fn when_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WHEN_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WhereClause { + pub(crate) syntax: SyntaxNode, +} +impl WhereClause { + #[inline] + pub fn expr(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn where_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WHERE_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WhereCurrentOf { + pub(crate) syntax: SyntaxNode, +} +impl WhereCurrentOf { + #[inline] + pub fn name_ref(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn current_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::CURRENT_KW) + } + #[inline] + pub fn of_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OF_KW) + } + #[inline] + pub fn where_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WHERE_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WindowClause { + pub(crate) syntax: SyntaxNode, +} +impl WindowClause { + #[inline] + pub fn window_defs(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn window_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WINDOW_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WindowDef { + pub(crate) syntax: SyntaxNode, +} +impl WindowDef { + #[inline] + pub fn name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn window_spec(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } + #[inline] + pub fn as_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AS_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WindowFuncOption { + pub(crate) syntax: SyntaxNode, +} +impl WindowFuncOption { + #[inline] + pub fn window_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WINDOW_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WindowSpec { + pub(crate) syntax: SyntaxNode, +} +impl WindowSpec { + #[inline] + pub fn exprs(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn frame_clause(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn order_by_clause(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn by_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::BY_KW) + } + #[inline] + pub fn ident_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IDENT) + } + #[inline] + pub fn partition_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::PARTITION_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WithClause { + pub(crate) syntax: SyntaxNode, +} +impl WithClause { + #[inline] + pub fn with_tables(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] + pub fn recursive_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::RECURSIVE_KW) + } + #[inline] + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WithData { + pub(crate) syntax: SyntaxNode, +} +impl WithData { + #[inline] + pub fn data_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DATA_KW) + } + #[inline] + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WithNoData { + pub(crate) syntax: SyntaxNode, +} +impl WithNoData { + #[inline] + pub fn data_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DATA_KW) + } + #[inline] + pub fn no_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NO_KW) + } + #[inline] + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WithOptions { + pub(crate) syntax: SyntaxNode, +} +impl WithOptions { + #[inline] + pub fn options_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OPTIONS_KW) + } + #[inline] + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WithParams { + pub(crate) syntax: SyntaxNode, +} +impl WithParams { + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } + #[inline] + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WithTable { + pub(crate) syntax: SyntaxNode, +} +impl WithTable { + #[inline] + pub fn column_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn materialized(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn not_materialized(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn query(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } + #[inline] + pub fn as_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::AS_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WithTimezone { + pub(crate) syntax: SyntaxNode, +} +impl WithTimezone { + #[inline] + pub fn time_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TIME_KW) + } + #[inline] + pub fn with_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITH_KW) + } + #[inline] + pub fn zone_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ZONE_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WithinClause { + pub(crate) syntax: SyntaxNode, +} +impl WithinClause { + #[inline] + pub fn order_by_clause(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn l_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::L_PAREN) + } + #[inline] + pub fn r_paren_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::R_PAREN) + } + #[inline] + pub fn group_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::GROUP_KW) + } + #[inline] + pub fn within_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITHIN_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WithoutOids { + pub(crate) syntax: SyntaxNode, +} +impl WithoutOids { + #[inline] + pub fn oids_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::OIDS_KW) + } + #[inline] + pub fn without_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITHOUT_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct WithoutTimezone { + pub(crate) syntax: SyntaxNode, +} +impl WithoutTimezone { + #[inline] + pub fn time_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::TIME_KW) + } + #[inline] + pub fn without_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::WITHOUT_KW) + } + #[inline] + pub fn zone_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ZONE_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct XmlColumnOption { + pub(crate) syntax: SyntaxNode, +} +impl XmlColumnOption { + #[inline] + pub fn expr(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn default_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::DEFAULT_KW) + } + #[inline] + pub fn ident_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::IDENT) + } + #[inline] + pub fn not_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NOT_KW) + } + #[inline] + pub fn null_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::NULL_KW) + } + #[inline] + pub fn path_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::PATH_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct XmlColumnOptionList { + pub(crate) syntax: SyntaxNode, +} +impl XmlColumnOptionList { + #[inline] + pub fn xml_column_option(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn xml_column_options(&self) -> AstChildren { + support::children(&self.syntax) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct XmlTableColumn { + pub(crate) syntax: SyntaxNode, +} +impl XmlTableColumn { + #[inline] + pub fn name(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn ty(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn xml_column_option_list(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn for_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::FOR_KW) + } + #[inline] + pub fn ordinality_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ORDINALITY_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct XmlTableColumnList { + pub(crate) syntax: SyntaxNode, +} +impl XmlTableColumnList { + #[inline] + pub fn xml_table_columns(&self) -> AstChildren { + support::children(&self.syntax) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum AlterColumnOption { + AddGenerated(AddGenerated), + DropDefault(DropDefault), + DropExpression(DropExpression), + DropIdentity(DropIdentity), + DropNotNull(DropNotNull), + ResetOptions(ResetOptions), + Restart(Restart), + SetCompression(SetCompression), + SetDefault(SetDefault), + SetExpression(SetExpression), + SetGenerated(SetGenerated), + SetGeneratedOptions(SetGeneratedOptions), + SetNotNull(SetNotNull), + SetOptions(SetOptions), + SetOptionsList(SetOptionsList), + SetSequenceOption(SetSequenceOption), + SetStatistics(SetStatistics), + SetStorage(SetStorage), + SetType(SetType), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum AlterDomainAction { + AddConstraint(AddConstraint), + DropConstraint(DropConstraint), + DropDefault(DropDefault), + DropNotNull(DropNotNull), + OwnerTo(OwnerTo), + RenameConstraint(RenameConstraint), + RenameTo(RenameTo), + SetDefault(SetDefault), + SetNotNull(SetNotNull), + SetSchema(SetSchema), + ValidateConstraint(ValidateConstraint), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum AlterMaterializedViewAction { + DependsOnExtension(DependsOnExtension), + NoDependsOnExtension(NoDependsOnExtension), + RenameColumn(RenameColumn), + RenameTo(RenameTo), + SetSchema(SetSchema), + AlterTableAction(AlterTableAction), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum AlterTableAction { + AddColumn(AddColumn), + AddConstraint(AddConstraint), + AlterColumn(AlterColumn), + AlterConstraint(AlterConstraint), + AttachPartition(AttachPartition), + ClusterOn(ClusterOn), + DetachPartition(DetachPartition), + DisableRls(DisableRls), + DisableRule(DisableRule), + DisableTrigger(DisableTrigger), + DropColumn(DropColumn), + DropConstraint(DropConstraint), + EnableAlwaysRule(EnableAlwaysRule), + EnableAlwaysTrigger(EnableAlwaysTrigger), + EnableReplicaRule(EnableReplicaRule), + EnableReplicaTrigger(EnableReplicaTrigger), + EnableRls(EnableRls), + EnableRule(EnableRule), + EnableTrigger(EnableTrigger), + ForceRls(ForceRls), + InheritTable(InheritTable), + NoForceRls(NoForceRls), + NoInheritTable(NoInheritTable), + NotOf(NotOf), + OfType(OfType), + OptionItemList(OptionItemList), + OwnerTo(OwnerTo), + RenameColumn(RenameColumn), + RenameConstraint(RenameConstraint), + RenameTo(RenameTo), + ReplicaIdentity(ReplicaIdentity), + ResetOptions(ResetOptions), + SetAccessMethod(SetAccessMethod), + SetLogged(SetLogged), + SetOptions(SetOptions), + SetSchema(SetSchema), + SetTablespace(SetTablespace), + SetUnlogged(SetUnlogged), + SetWithoutCluster(SetWithoutCluster), + SetWithoutOids(SetWithoutOids), + ValidateConstraint(ValidateConstraint), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum ColumnConstraint { + CheckConstraint(CheckConstraint), + DefaultConstraint(DefaultConstraint), + ExcludeConstraint(ExcludeConstraint), + NotNullConstraint(NotNullConstraint), + PrimaryKeyConstraint(PrimaryKeyConstraint), + ReferencesConstraint(ReferencesConstraint), + UniqueConstraint(UniqueConstraint), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum ConflictAction { + ConflictDoNothing(ConflictDoNothing), + ConflictDoUpdateSet(ConflictDoUpdateSet), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum ConflictTarget { + ConflictOnConstraint(ConflictOnConstraint), + ConflictOnIndex(ConflictOnIndex), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum Constraint { + CheckConstraint(CheckConstraint), + DefaultConstraint(DefaultConstraint), + ForeignKeyConstraint(ForeignKeyConstraint), + GeneratedConstraint(GeneratedConstraint), + NotNullConstraint(NotNullConstraint), + NullConstraint(NullConstraint), + PrimaryKeyConstraint(PrimaryKeyConstraint), + ReferencesConstraint(ReferencesConstraint), + UniqueConstraint(UniqueConstraint), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum ExplainStmt { + CompoundSelect(CompoundSelect), + CreateMaterializedView(CreateMaterializedView), + CreateTableAs(CreateTableAs), + Declare(Declare), + Delete(Delete), + Execute(Execute), + Insert(Insert), + Merge(Merge), + ParenSelect(ParenSelect), + Select(Select), + SelectInto(SelectInto), + Table(Table), + Update(Update), + Values(Values), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum Expr { + ArrayExpr(ArrayExpr), + BetweenExpr(BetweenExpr), + BinExpr(BinExpr), + CallExpr(CallExpr), + CaseExpr(CaseExpr), + CastExpr(CastExpr), + FieldExpr(FieldExpr), + IndexExpr(IndexExpr), + Literal(Literal), + NameRef(NameRef), + ParenExpr(ParenExpr), + PostfixExpr(PostfixExpr), + PrefixExpr(PrefixExpr), + SliceExpr(SliceExpr), + TupleExpr(TupleExpr), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum FuncOption { + AsFuncOption(AsFuncOption), + BeginFuncOption(BeginFuncOption), + CostFuncOption(CostFuncOption), + LanguageFuncOption(LanguageFuncOption), + LeakproofFuncOption(LeakproofFuncOption), + ParallelFuncOption(ParallelFuncOption), + ResetFuncOption(ResetFuncOption), + ReturnFuncOption(ReturnFuncOption), + RowsFuncOption(RowsFuncOption), + SecurityFuncOption(SecurityFuncOption), + SetFuncOption(SetFuncOption), + StrictFuncOption(StrictFuncOption), + SupportFuncOption(SupportFuncOption), + TransformFuncOption(TransformFuncOption), + VolatilityFuncOption(VolatilityFuncOption), + WindowFuncOption(WindowFuncOption), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum GroupBy { + GroupingCube(GroupingCube), + GroupingExpr(GroupingExpr), + GroupingRollup(GroupingRollup), + GroupingSets(GroupingSets), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum JoinType { + JoinCross(JoinCross), + JoinFull(JoinFull), + JoinInner(JoinInner), + JoinLeft(JoinLeft), + JoinRight(JoinRight), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum JsonBehavior { + JsonBehaviorDefault(JsonBehaviorDefault), + JsonBehaviorEmptyArray(JsonBehaviorEmptyArray), + JsonBehaviorEmptyObject(JsonBehaviorEmptyObject), + JsonBehaviorError(JsonBehaviorError), + JsonBehaviorFalse(JsonBehaviorFalse), + JsonBehaviorNull(JsonBehaviorNull), + JsonBehaviorTrue(JsonBehaviorTrue), + JsonBehaviorUnknown(JsonBehaviorUnknown), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum MatchType { + MatchFull(MatchFull), + MatchPartial(MatchPartial), + MatchSimple(MatchSimple), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum MergeAction { + MergeDelete(MergeDelete), + MergeDoNothing(MergeDoNothing), + MergeInsert(MergeInsert), + MergeUpdate(MergeUpdate), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum MergeWhenClause { + MergeWhenMatched(MergeWhenMatched), + MergeWhenNotMatchedSource(MergeWhenNotMatchedSource), + MergeWhenNotMatchedTarget(MergeWhenNotMatchedTarget), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum OnCommitAction { + DeleteRows(DeleteRows), + Drop(Drop), + PreserveRows(PreserveRows), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum ParamMode { + ParamIn(ParamIn), + ParamInOut(ParamInOut), + ParamOut(ParamOut), + ParamVariadic(ParamVariadic), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum PartitionType { + PartitionDefault(PartitionDefault), + PartitionForValuesFrom(PartitionForValuesFrom), + PartitionForValuesIn(PartitionForValuesIn), + PartitionForValuesWith(PartitionForValuesWith), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum PreparableStmt { + CompoundSelect(CompoundSelect), + Delete(Delete), + Insert(Insert), + Merge(Merge), + Select(Select), + SelectInto(SelectInto), + Table(Table), + Update(Update), + Values(Values), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum RefAction { + Cascade(Cascade), + NoAction(NoAction), + Restrict(Restrict), + SetDefaultColumns(SetDefaultColumns), + SetNullColumns(SetNullColumns), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum SchemaElement { + CreateIndex(CreateIndex), + CreateSequence(CreateSequence), + CreateTable(CreateTable), + CreateTrigger(CreateTrigger), + CreateView(CreateView), + Grant(Grant), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum SelectVariant { + CompoundSelect(CompoundSelect), + ParenSelect(ParenSelect), + Select(Select), + SelectInto(SelectInto), + Table(Table), + Values(Values), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum SetColumn { + SetMultipleColumns(SetMultipleColumns), + SetSingleColumn(SetSingleColumn), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum Stmt { + AlterAggregate(AlterAggregate), + AlterCollation(AlterCollation), + AlterConversion(AlterConversion), + AlterDatabase(AlterDatabase), + AlterDefaultPrivileges(AlterDefaultPrivileges), + AlterDomain(AlterDomain), + AlterEventTrigger(AlterEventTrigger), + AlterExtension(AlterExtension), + AlterForeignDataWrapper(AlterForeignDataWrapper), + AlterForeignTable(AlterForeignTable), + AlterFunction(AlterFunction), + AlterGroup(AlterGroup), + AlterIndex(AlterIndex), + AlterLanguage(AlterLanguage), + AlterLargeObject(AlterLargeObject), + AlterMaterializedView(AlterMaterializedView), + AlterOperator(AlterOperator), + AlterOperatorClass(AlterOperatorClass), + AlterOperatorFamily(AlterOperatorFamily), + AlterPolicy(AlterPolicy), + AlterProcedure(AlterProcedure), + AlterPublication(AlterPublication), + AlterRole(AlterRole), + AlterRoutine(AlterRoutine), + AlterRule(AlterRule), + AlterSchema(AlterSchema), + AlterSequence(AlterSequence), + AlterServer(AlterServer), + AlterStatistics(AlterStatistics), + AlterSubscription(AlterSubscription), + AlterSystem(AlterSystem), + AlterTable(AlterTable), + AlterTablespace(AlterTablespace), + AlterTextSearchConfiguration(AlterTextSearchConfiguration), + AlterTextSearchDictionary(AlterTextSearchDictionary), + AlterTextSearchParser(AlterTextSearchParser), + AlterTextSearchTemplate(AlterTextSearchTemplate), + AlterTrigger(AlterTrigger), + AlterType(AlterType), + AlterUser(AlterUser), + AlterUserMapping(AlterUserMapping), + AlterView(AlterView), + Analyze(Analyze), + Begin(Begin), + Call(Call), + Checkpoint(Checkpoint), + Close(Close), + Cluster(Cluster), + CommentOn(CommentOn), + Commit(Commit), + Copy(Copy), + CreateAccessMethod(CreateAccessMethod), + CreateAggregate(CreateAggregate), + CreateCast(CreateCast), + CreateCollation(CreateCollation), + CreateConversion(CreateConversion), + CreateDatabase(CreateDatabase), + CreateDomain(CreateDomain), + CreateEventTrigger(CreateEventTrigger), + CreateExtension(CreateExtension), + CreateForeignDataWrapper(CreateForeignDataWrapper), + CreateForeignTable(CreateForeignTable), + CreateFunction(CreateFunction), + CreateGroup(CreateGroup), + CreateIndex(CreateIndex), + CreateLanguage(CreateLanguage), + CreateMaterializedView(CreateMaterializedView), + CreateOperator(CreateOperator), + CreateOperatorClass(CreateOperatorClass), + CreateOperatorFamily(CreateOperatorFamily), + CreatePolicy(CreatePolicy), + CreateProcedure(CreateProcedure), + CreatePublication(CreatePublication), + CreateRole(CreateRole), + CreateRule(CreateRule), + CreateSchema(CreateSchema), + CreateSequence(CreateSequence), + CreateServer(CreateServer), + CreateStatistics(CreateStatistics), + CreateSubscription(CreateSubscription), + CreateTable(CreateTable), + CreateTableAs(CreateTableAs), + CreateTablespace(CreateTablespace), + CreateTextSearchConfiguration(CreateTextSearchConfiguration), + CreateTextSearchDictionary(CreateTextSearchDictionary), + CreateTextSearchParser(CreateTextSearchParser), + CreateTextSearchTemplate(CreateTextSearchTemplate), + CreateTransform(CreateTransform), + CreateTrigger(CreateTrigger), + CreateType(CreateType), + CreateUser(CreateUser), + CreateUserMapping(CreateUserMapping), + CreateView(CreateView), + Deallocate(Deallocate), + Declare(Declare), + Delete(Delete), + Discard(Discard), + Do(Do), + DropAccessMethod(DropAccessMethod), + DropAggregate(DropAggregate), + DropCast(DropCast), + DropCollation(DropCollation), + DropConversion(DropConversion), + DropDatabase(DropDatabase), + DropDomain(DropDomain), + DropEventTrigger(DropEventTrigger), + DropExtension(DropExtension), + DropForeignDataWrapper(DropForeignDataWrapper), + DropForeignTable(DropForeignTable), + DropFunction(DropFunction), + DropGroup(DropGroup), + DropIndex(DropIndex), + DropLanguage(DropLanguage), + DropMaterializedView(DropMaterializedView), + DropOperator(DropOperator), + DropOperatorClass(DropOperatorClass), + DropOperatorFamily(DropOperatorFamily), + DropOwned(DropOwned), + DropPolicy(DropPolicy), + DropProcedure(DropProcedure), + DropPublication(DropPublication), + DropRole(DropRole), + DropRoutine(DropRoutine), + DropRule(DropRule), + DropSchema(DropSchema), + DropSequence(DropSequence), + DropServer(DropServer), + DropStatistics(DropStatistics), + DropSubscription(DropSubscription), + DropTable(DropTable), + DropTablespace(DropTablespace), + DropTextSearchConfig(DropTextSearchConfig), + DropTextSearchDict(DropTextSearchDict), + DropTextSearchParser(DropTextSearchParser), + DropTextSearchTemplate(DropTextSearchTemplate), + DropTransform(DropTransform), + DropTrigger(DropTrigger), + DropType(DropType), + DropUser(DropUser), + DropUserMapping(DropUserMapping), + DropView(DropView), + Execute(Execute), + Explain(Explain), + Fetch(Fetch), + Grant(Grant), + ImportForeignSchema(ImportForeignSchema), + Insert(Insert), + Listen(Listen), + Load(Load), + Lock(Lock), + Merge(Merge), + Move(Move), + Notify(Notify), + ParenSelect(ParenSelect), + Prepare(Prepare), + PrepareTransaction(PrepareTransaction), + Reassign(Reassign), + Refresh(Refresh), + Reindex(Reindex), + ReleaseSavepoint(ReleaseSavepoint), + Reset(Reset), + ResetSessionAuth(ResetSessionAuth), + Revoke(Revoke), + Rollback(Rollback), + Savepoint(Savepoint), + SecurityLabel(SecurityLabel), + Select(Select), + SelectInto(SelectInto), + Set(Set), + SetConstraints(SetConstraints), + SetRole(SetRole), + SetSessionAuth(SetSessionAuth), + SetTransaction(SetTransaction), + Show(Show), + Table(Table), + Truncate(Truncate), + Unlisten(Unlisten), + Update(Update), + Vacuum(Vacuum), + Values(Values), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum TableArg { + Column(Column), + LikeClause(LikeClause), + TableConstraint(TableConstraint), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum TableConstraint { + CheckConstraint(CheckConstraint), + ExcludeConstraint(ExcludeConstraint), + ForeignKeyConstraint(ForeignKeyConstraint), + PrimaryKeyConstraint(PrimaryKeyConstraint), + UniqueConstraint(UniqueConstraint), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum Timezone { + WithTimezone(WithTimezone), + WithoutTimezone(WithoutTimezone), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum TransactionMode { + Deferrable(Deferrable), + NotDeferrable(NotDeferrable), + ReadCommitted(ReadCommitted), + ReadOnly(ReadOnly), + ReadUncommitted(ReadUncommitted), + ReadWrite(ReadWrite), + RepeatableRead(RepeatableRead), + Serializable(Serializable), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum Type { + ArrayType(ArrayType), + BitType(BitType), + CharType(CharType), + DoubleType(DoubleType), + ExprType(ExprType), + IntervalType(IntervalType), + PathType(PathType), + PercentType(PercentType), + TimeType(TimeType), +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum WithQuery { + CompoundSelect(CompoundSelect), + Delete(Delete), + Insert(Insert), + Merge(Merge), + ParenSelect(ParenSelect), + Select(Select), + Table(Table), + Update(Update), + Values(Values), +} +impl AstNode for AddColumn { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ADD_COLUMN + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AddConstraint { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ADD_CONSTRAINT + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AddGenerated { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ADD_GENERATED + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AddOpClassOptions { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ADD_OP_CLASS_OPTIONS + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for Aggregate { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::AGGREGATE + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for Alias { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALIAS + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterAggregate { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_AGGREGATE + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterCollation { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_COLLATION + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterColumn { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_COLUMN + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterConstraint { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_CONSTRAINT + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterConversion { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_CONVERSION + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterDatabase { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_DATABASE + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterDefaultPrivileges { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_DEFAULT_PRIVILEGES + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterDomain { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_DOMAIN + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterEventTrigger { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_EVENT_TRIGGER + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterExtension { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_EXTENSION + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterForeignDataWrapper { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_FOREIGN_DATA_WRAPPER + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterForeignTable { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_FOREIGN_TABLE + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterFunction { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_FUNCTION + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterGroup { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_GROUP + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterIndex { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_INDEX + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterLanguage { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_LANGUAGE + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterLargeObject { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_LARGE_OBJECT + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterMaterializedView { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_MATERIALIZED_VIEW + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterOperator { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_OPERATOR + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterOperatorClass { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_OPERATOR_CLASS + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterOperatorFamily { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_OPERATOR_FAMILY + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterOption { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_OPTION + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterOptionList { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_OPTION_LIST + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterPolicy { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_POLICY + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterProcedure { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_PROCEDURE + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterPublication { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_PUBLICATION + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterRole { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_ROLE + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterRoutine { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_ROUTINE + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterRule { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_RULE + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterSchema { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_SCHEMA + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterSequence { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_SEQUENCE + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterServer { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_SERVER + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for AlterSetStatistics { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ALTER_SET_STATISTICS + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } } -impl AstNode for AddColumn { +impl AstNode for AlterStatistics { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ADD_COLUMN + kind == SyntaxKind::ALTER_STATISTICS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -11712,10 +15568,10 @@ impl AstNode for AddColumn { &self.syntax } } -impl AstNode for AddConstraint { +impl AstNode for AlterSubscription { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ADD_CONSTRAINT + kind == SyntaxKind::ALTER_SUBSCRIPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -11730,10 +15586,10 @@ impl AstNode for AddConstraint { &self.syntax } } -impl AstNode for AddGenerated { +impl AstNode for AlterSystem { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ADD_GENERATED + kind == SyntaxKind::ALTER_SYSTEM } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -11748,10 +15604,10 @@ impl AstNode for AddGenerated { &self.syntax } } -impl AstNode for Aggregate { +impl AstNode for AlterTable { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::AGGREGATE + kind == SyntaxKind::ALTER_TABLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -11766,10 +15622,10 @@ impl AstNode for Aggregate { &self.syntax } } -impl AstNode for Alias { +impl AstNode for AlterTablespace { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALIAS + kind == SyntaxKind::ALTER_TABLESPACE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -11784,10 +15640,10 @@ impl AstNode for Alias { &self.syntax } } -impl AstNode for AlterAggregate { +impl AstNode for AlterTextSearchConfiguration { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_AGGREGATE + kind == SyntaxKind::ALTER_TEXT_SEARCH_CONFIGURATION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -11802,10 +15658,10 @@ impl AstNode for AlterAggregate { &self.syntax } } -impl AstNode for AlterCollation { +impl AstNode for AlterTextSearchDictionary { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_COLLATION + kind == SyntaxKind::ALTER_TEXT_SEARCH_DICTIONARY } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -11820,10 +15676,10 @@ impl AstNode for AlterCollation { &self.syntax } } -impl AstNode for AlterColumn { +impl AstNode for AlterTextSearchParser { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_COLUMN + kind == SyntaxKind::ALTER_TEXT_SEARCH_PARSER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -11838,10 +15694,10 @@ impl AstNode for AlterColumn { &self.syntax } } -impl AstNode for AlterConstraint { +impl AstNode for AlterTextSearchTemplate { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_CONSTRAINT + kind == SyntaxKind::ALTER_TEXT_SEARCH_TEMPLATE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -11856,10 +15712,10 @@ impl AstNode for AlterConstraint { &self.syntax } } -impl AstNode for AlterConversion { +impl AstNode for AlterTrigger { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_CONVERSION + kind == SyntaxKind::ALTER_TRIGGER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -11874,10 +15730,10 @@ impl AstNode for AlterConversion { &self.syntax } } -impl AstNode for AlterDatabase { +impl AstNode for AlterType { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_DATABASE + kind == SyntaxKind::ALTER_TYPE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -11892,10 +15748,10 @@ impl AstNode for AlterDatabase { &self.syntax } } -impl AstNode for AlterDefaultPrivileges { +impl AstNode for AlterUser { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_DEFAULT_PRIVILEGES + kind == SyntaxKind::ALTER_USER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -11910,10 +15766,10 @@ impl AstNode for AlterDefaultPrivileges { &self.syntax } } -impl AstNode for AlterDomain { +impl AstNode for AlterUserMapping { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_DOMAIN + kind == SyntaxKind::ALTER_USER_MAPPING } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -11928,10 +15784,10 @@ impl AstNode for AlterDomain { &self.syntax } } -impl AstNode for AlterEventTrigger { +impl AstNode for AlterView { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_EVENT_TRIGGER + kind == SyntaxKind::ALTER_VIEW } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -11946,10 +15802,10 @@ impl AstNode for AlterEventTrigger { &self.syntax } } -impl AstNode for AlterExtension { +impl AstNode for Analyze { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_EXTENSION + kind == SyntaxKind::ANALYZE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -11964,10 +15820,10 @@ impl AstNode for AlterExtension { &self.syntax } } -impl AstNode for AlterForeignDataWrapper { +impl AstNode for Arg { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_FOREIGN_DATA_WRAPPER + kind == SyntaxKind::ARG } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -11982,10 +15838,10 @@ impl AstNode for AlterForeignDataWrapper { &self.syntax } } -impl AstNode for AlterForeignTable { +impl AstNode for ArgList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_FOREIGN_TABLE + kind == SyntaxKind::ARG_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12000,10 +15856,10 @@ impl AstNode for AlterForeignTable { &self.syntax } } -impl AstNode for AlterFunction { +impl AstNode for ArrayExpr { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_FUNCTION + kind == SyntaxKind::ARRAY_EXPR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12018,10 +15874,10 @@ impl AstNode for AlterFunction { &self.syntax } } -impl AstNode for AlterGroup { +impl AstNode for ArrayType { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_GROUP + kind == SyntaxKind::ARRAY_TYPE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12036,10 +15892,10 @@ impl AstNode for AlterGroup { &self.syntax } } -impl AstNode for AlterIndex { +impl AstNode for AsFuncOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_INDEX + kind == SyntaxKind::AS_FUNC_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12054,10 +15910,10 @@ impl AstNode for AlterIndex { &self.syntax } } -impl AstNode for AlterLanguage { +impl AstNode for AsName { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_LANGUAGE + kind == SyntaxKind::AS_NAME } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12072,10 +15928,10 @@ impl AstNode for AlterLanguage { &self.syntax } } -impl AstNode for AlterLargeObject { +impl AstNode for AtTimeZone { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_LARGE_OBJECT + kind == SyntaxKind::AT_TIME_ZONE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12090,10 +15946,10 @@ impl AstNode for AlterLargeObject { &self.syntax } } -impl AstNode for AlterMaterializedView { +impl AstNode for AttachPartition { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_MATERIALIZED_VIEW + kind == SyntaxKind::ATTACH_PARTITION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12108,10 +15964,10 @@ impl AstNode for AlterMaterializedView { &self.syntax } } -impl AstNode for AlterOperator { +impl AstNode for AttributeList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_OPERATOR + kind == SyntaxKind::ATTRIBUTE_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12126,10 +15982,10 @@ impl AstNode for AlterOperator { &self.syntax } } -impl AstNode for AlterOperatorClass { +impl AstNode for AttributeOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_OPERATOR_CLASS + kind == SyntaxKind::ATTRIBUTE_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12144,10 +16000,10 @@ impl AstNode for AlterOperatorClass { &self.syntax } } -impl AstNode for AlterOperatorFamily { +impl AstNode for AttributeValue { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_OPERATOR_FAMILY + kind == SyntaxKind::ATTRIBUTE_VALUE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12162,10 +16018,10 @@ impl AstNode for AlterOperatorFamily { &self.syntax } } -impl AstNode for AlterOption { +impl AstNode for Begin { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_OPTION + kind == SyntaxKind::BEGIN } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12180,10 +16036,10 @@ impl AstNode for AlterOption { &self.syntax } } -impl AstNode for AlterOptionList { +impl AstNode for BeginFuncOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_OPTION_LIST + kind == SyntaxKind::BEGIN_FUNC_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12198,10 +16054,10 @@ impl AstNode for AlterOptionList { &self.syntax } } -impl AstNode for AlterPolicy { +impl AstNode for BetweenExpr { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_POLICY + kind == SyntaxKind::BETWEEN_EXPR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12216,10 +16072,10 @@ impl AstNode for AlterPolicy { &self.syntax } } -impl AstNode for AlterProcedure { +impl AstNode for BinExpr { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_PROCEDURE + kind == SyntaxKind::BIN_EXPR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12234,10 +16090,10 @@ impl AstNode for AlterProcedure { &self.syntax } } -impl AstNode for AlterPublication { +impl AstNode for BitType { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_PUBLICATION + kind == SyntaxKind::BIT_TYPE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12252,10 +16108,10 @@ impl AstNode for AlterPublication { &self.syntax } } -impl AstNode for AlterRole { +impl AstNode for Call { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_ROLE + kind == SyntaxKind::CALL } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12270,10 +16126,10 @@ impl AstNode for AlterRole { &self.syntax } } -impl AstNode for AlterRoutine { +impl AstNode for CallExpr { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_ROUTINE + kind == SyntaxKind::CALL_EXPR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12288,10 +16144,10 @@ impl AstNode for AlterRoutine { &self.syntax } } -impl AstNode for AlterRule { +impl AstNode for Cascade { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_RULE + kind == SyntaxKind::CASCADE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12306,10 +16162,10 @@ impl AstNode for AlterRule { &self.syntax } } -impl AstNode for AlterSchema { +impl AstNode for CaseExpr { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_SCHEMA + kind == SyntaxKind::CASE_EXPR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12324,10 +16180,10 @@ impl AstNode for AlterSchema { &self.syntax } } -impl AstNode for AlterSequence { +impl AstNode for CastExpr { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_SEQUENCE + kind == SyntaxKind::CAST_EXPR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12342,10 +16198,10 @@ impl AstNode for AlterSequence { &self.syntax } } -impl AstNode for AlterServer { +impl AstNode for CastSig { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_SERVER + kind == SyntaxKind::CAST_SIG } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12360,10 +16216,10 @@ impl AstNode for AlterServer { &self.syntax } } -impl AstNode for AlterStatistics { +impl AstNode for CharType { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_STATISTICS + kind == SyntaxKind::CHAR_TYPE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12378,10 +16234,10 @@ impl AstNode for AlterStatistics { &self.syntax } } -impl AstNode for AlterSubscription { +impl AstNode for CheckConstraint { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_SUBSCRIPTION + kind == SyntaxKind::CHECK_CONSTRAINT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12396,10 +16252,10 @@ impl AstNode for AlterSubscription { &self.syntax } } -impl AstNode for AlterSystem { +impl AstNode for Checkpoint { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_SYSTEM + kind == SyntaxKind::CHECKPOINT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12414,10 +16270,10 @@ impl AstNode for AlterSystem { &self.syntax } } -impl AstNode for AlterTable { +impl AstNode for Close { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_TABLE + kind == SyntaxKind::CLOSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12432,10 +16288,10 @@ impl AstNode for AlterTable { &self.syntax } } -impl AstNode for AlterTablespace { +impl AstNode for Cluster { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_TABLESPACE + kind == SyntaxKind::CLUSTER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12450,10 +16306,10 @@ impl AstNode for AlterTablespace { &self.syntax } } -impl AstNode for AlterTextSearchConfiguration { +impl AstNode for ClusterOn { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_TEXT_SEARCH_CONFIGURATION + kind == SyntaxKind::CLUSTER_ON } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12468,10 +16324,10 @@ impl AstNode for AlterTextSearchConfiguration { &self.syntax } } -impl AstNode for AlterTextSearchDictionary { +impl AstNode for Collate { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_TEXT_SEARCH_DICTIONARY + kind == SyntaxKind::COLLATE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12486,10 +16342,10 @@ impl AstNode for AlterTextSearchDictionary { &self.syntax } } -impl AstNode for AlterTextSearchParser { +impl AstNode for ColonColon { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_TEXT_SEARCH_PARSER + kind == SyntaxKind::COLON_COLON } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12504,10 +16360,10 @@ impl AstNode for AlterTextSearchParser { &self.syntax } } -impl AstNode for AlterTextSearchTemplate { +impl AstNode for ColonEq { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_TEXT_SEARCH_TEMPLATE + kind == SyntaxKind::COLON_EQ } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12522,10 +16378,10 @@ impl AstNode for AlterTextSearchTemplate { &self.syntax } } -impl AstNode for AlterTrigger { +impl AstNode for Column { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_TRIGGER + kind == SyntaxKind::COLUMN } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12540,10 +16396,10 @@ impl AstNode for AlterTrigger { &self.syntax } } -impl AstNode for AlterType { +impl AstNode for ColumnList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_TYPE + kind == SyntaxKind::COLUMN_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12558,10 +16414,10 @@ impl AstNode for AlterType { &self.syntax } } -impl AstNode for AlterUser { +impl AstNode for CommentOn { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_USER + kind == SyntaxKind::COMMENT_ON } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12576,10 +16432,10 @@ impl AstNode for AlterUser { &self.syntax } } -impl AstNode for AlterUserMapping { +impl AstNode for Commit { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_USER_MAPPING + kind == SyntaxKind::COMMIT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12594,10 +16450,10 @@ impl AstNode for AlterUserMapping { &self.syntax } } -impl AstNode for AlterView { +impl AstNode for CompoundSelect { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ALTER_VIEW + kind == SyntaxKind::COMPOUND_SELECT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12612,10 +16468,10 @@ impl AstNode for AlterView { &self.syntax } } -impl AstNode for Analyze { +impl AstNode for CompressionMethod { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ANALYZE + kind == SyntaxKind::COMPRESSION_METHOD } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12630,10 +16486,10 @@ impl AstNode for Analyze { &self.syntax } } -impl AstNode for Arg { +impl AstNode for ConflictDoNothing { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ARG + kind == SyntaxKind::CONFLICT_DO_NOTHING } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12648,10 +16504,10 @@ impl AstNode for Arg { &self.syntax } } -impl AstNode for ArgList { +impl AstNode for ConflictDoUpdateSet { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ARG_LIST + kind == SyntaxKind::CONFLICT_DO_UPDATE_SET } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12666,10 +16522,10 @@ impl AstNode for ArgList { &self.syntax } } -impl AstNode for ArrayExpr { +impl AstNode for ConflictIndexItem { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ARRAY_EXPR + kind == SyntaxKind::CONFLICT_INDEX_ITEM } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12684,10 +16540,10 @@ impl AstNode for ArrayExpr { &self.syntax } } -impl AstNode for ArrayType { +impl AstNode for ConflictIndexItemList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ARRAY_TYPE + kind == SyntaxKind::CONFLICT_INDEX_ITEM_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12702,10 +16558,10 @@ impl AstNode for ArrayType { &self.syntax } } -impl AstNode for AsFuncOption { +impl AstNode for ConflictOnConstraint { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::AS_FUNC_OPTION + kind == SyntaxKind::CONFLICT_ON_CONSTRAINT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12720,10 +16576,10 @@ impl AstNode for AsFuncOption { &self.syntax } } -impl AstNode for AsName { +impl AstNode for ConflictOnIndex { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::AS_NAME + kind == SyntaxKind::CONFLICT_ON_INDEX } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12738,10 +16594,28 @@ impl AstNode for AsName { &self.syntax } } -impl AstNode for AtTimeZone { +impl AstNode for ConstraintExclusion { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::AT_TIME_ZONE + kind == SyntaxKind::CONSTRAINT_EXCLUSION + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for ConstraintExclusionList { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::CONSTRAINT_EXCLUSION_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12756,10 +16630,10 @@ impl AstNode for AtTimeZone { &self.syntax } } -impl AstNode for AttachPartition { +impl AstNode for ConstraintIncludeClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ATTACH_PARTITION + kind == SyntaxKind::CONSTRAINT_INCLUDE_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12774,10 +16648,10 @@ impl AstNode for AttachPartition { &self.syntax } } -impl AstNode for AttributeList { +impl AstNode for ConstraintIndexMethod { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ATTRIBUTE_LIST + kind == SyntaxKind::CONSTRAINT_INDEX_METHOD } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12792,10 +16666,10 @@ impl AstNode for AttributeList { &self.syntax } } -impl AstNode for AttributeOption { +impl AstNode for ConstraintIndexTablespace { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ATTRIBUTE_OPTION + kind == SyntaxKind::CONSTRAINT_INDEX_TABLESPACE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12810,10 +16684,10 @@ impl AstNode for AttributeOption { &self.syntax } } -impl AstNode for Begin { +impl AstNode for ConstraintWhereClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::BEGIN + kind == SyntaxKind::CONSTRAINT_WHERE_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12828,10 +16702,10 @@ impl AstNode for Begin { &self.syntax } } -impl AstNode for BeginFuncOption { +impl AstNode for Copy { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::BEGIN_FUNC_OPTION + kind == SyntaxKind::COPY } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12846,10 +16720,10 @@ impl AstNode for BeginFuncOption { &self.syntax } } -impl AstNode for BetweenExpr { +impl AstNode for CostFuncOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::BETWEEN_EXPR + kind == SyntaxKind::COST_FUNC_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12864,10 +16738,10 @@ impl AstNode for BetweenExpr { &self.syntax } } -impl AstNode for BinExpr { +impl AstNode for CreateAccessMethod { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::BIN_EXPR + kind == SyntaxKind::CREATE_ACCESS_METHOD } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12882,10 +16756,10 @@ impl AstNode for BinExpr { &self.syntax } } -impl AstNode for BitType { +impl AstNode for CreateAggregate { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::BIT_TYPE + kind == SyntaxKind::CREATE_AGGREGATE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12900,10 +16774,10 @@ impl AstNode for BitType { &self.syntax } } -impl AstNode for Call { +impl AstNode for CreateCast { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CALL + kind == SyntaxKind::CREATE_CAST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12918,10 +16792,10 @@ impl AstNode for Call { &self.syntax } } -impl AstNode for CallExpr { +impl AstNode for CreateCollation { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CALL_EXPR + kind == SyntaxKind::CREATE_COLLATION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12936,10 +16810,10 @@ impl AstNode for CallExpr { &self.syntax } } -impl AstNode for Cascade { +impl AstNode for CreateConversion { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CASCADE + kind == SyntaxKind::CREATE_CONVERSION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12954,10 +16828,10 @@ impl AstNode for Cascade { &self.syntax } } -impl AstNode for CaseExpr { +impl AstNode for CreateDatabase { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CASE_EXPR + kind == SyntaxKind::CREATE_DATABASE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12972,10 +16846,10 @@ impl AstNode for CaseExpr { &self.syntax } } -impl AstNode for CastExpr { +impl AstNode for CreateDatabaseOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CAST_EXPR + kind == SyntaxKind::CREATE_DATABASE_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -12990,10 +16864,10 @@ impl AstNode for CastExpr { &self.syntax } } -impl AstNode for CharType { +impl AstNode for CreateDatabaseOptionList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CHAR_TYPE + kind == SyntaxKind::CREATE_DATABASE_OPTION_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13008,10 +16882,10 @@ impl AstNode for CharType { &self.syntax } } -impl AstNode for CheckConstraint { +impl AstNode for CreateDomain { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CHECK_CONSTRAINT + kind == SyntaxKind::CREATE_DOMAIN } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13026,10 +16900,10 @@ impl AstNode for CheckConstraint { &self.syntax } } -impl AstNode for Checkpoint { +impl AstNode for CreateEventTrigger { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CHECKPOINT + kind == SyntaxKind::CREATE_EVENT_TRIGGER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13044,10 +16918,10 @@ impl AstNode for Checkpoint { &self.syntax } } -impl AstNode for Close { +impl AstNode for CreateExtension { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CLOSE + kind == SyntaxKind::CREATE_EXTENSION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13062,10 +16936,10 @@ impl AstNode for Close { &self.syntax } } -impl AstNode for Cluster { +impl AstNode for CreateForeignDataWrapper { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CLUSTER + kind == SyntaxKind::CREATE_FOREIGN_DATA_WRAPPER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13080,10 +16954,10 @@ impl AstNode for Cluster { &self.syntax } } -impl AstNode for ClusterOn { +impl AstNode for CreateForeignTable { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CLUSTER_ON + kind == SyntaxKind::CREATE_FOREIGN_TABLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13098,10 +16972,10 @@ impl AstNode for ClusterOn { &self.syntax } } -impl AstNode for Collate { +impl AstNode for CreateFunction { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::COLLATE + kind == SyntaxKind::CREATE_FUNCTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13116,10 +16990,10 @@ impl AstNode for Collate { &self.syntax } } -impl AstNode for ColonColon { +impl AstNode for CreateGroup { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::COLON_COLON + kind == SyntaxKind::CREATE_GROUP } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13134,10 +17008,10 @@ impl AstNode for ColonColon { &self.syntax } } -impl AstNode for ColonEq { +impl AstNode for CreateIndex { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::COLON_EQ + kind == SyntaxKind::CREATE_INDEX } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13152,10 +17026,10 @@ impl AstNode for ColonEq { &self.syntax } } -impl AstNode for Column { +impl AstNode for CreateLanguage { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::COLUMN + kind == SyntaxKind::CREATE_LANGUAGE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13170,10 +17044,10 @@ impl AstNode for Column { &self.syntax } } -impl AstNode for ColumnList { +impl AstNode for CreateMaterializedView { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::COLUMN_LIST + kind == SyntaxKind::CREATE_MATERIALIZED_VIEW } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13188,10 +17062,10 @@ impl AstNode for ColumnList { &self.syntax } } -impl AstNode for CommentOn { +impl AstNode for CreateOperator { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::COMMENT_ON + kind == SyntaxKind::CREATE_OPERATOR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13206,10 +17080,10 @@ impl AstNode for CommentOn { &self.syntax } } -impl AstNode for Commit { +impl AstNode for CreateOperatorClass { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::COMMIT + kind == SyntaxKind::CREATE_OPERATOR_CLASS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13224,10 +17098,10 @@ impl AstNode for Commit { &self.syntax } } -impl AstNode for CompoundSelect { +impl AstNode for CreateOperatorFamily { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::COMPOUND_SELECT + kind == SyntaxKind::CREATE_OPERATOR_FAMILY } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13242,10 +17116,10 @@ impl AstNode for CompoundSelect { &self.syntax } } -impl AstNode for CompressionMethod { +impl AstNode for CreatePolicy { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::COMPRESSION_METHOD + kind == SyntaxKind::CREATE_POLICY } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13260,10 +17134,10 @@ impl AstNode for CompressionMethod { &self.syntax } } -impl AstNode for ConflictDoNothing { +impl AstNode for CreateProcedure { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CONFLICT_DO_NOTHING + kind == SyntaxKind::CREATE_PROCEDURE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13278,10 +17152,10 @@ impl AstNode for ConflictDoNothing { &self.syntax } } -impl AstNode for ConflictDoUpdateSet { +impl AstNode for CreatePublication { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CONFLICT_DO_UPDATE_SET + kind == SyntaxKind::CREATE_PUBLICATION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13296,10 +17170,10 @@ impl AstNode for ConflictDoUpdateSet { &self.syntax } } -impl AstNode for ConflictIndexItem { +impl AstNode for CreateRole { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CONFLICT_INDEX_ITEM + kind == SyntaxKind::CREATE_ROLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13314,10 +17188,10 @@ impl AstNode for ConflictIndexItem { &self.syntax } } -impl AstNode for ConflictIndexItemList { +impl AstNode for CreateRule { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CONFLICT_INDEX_ITEM_LIST + kind == SyntaxKind::CREATE_RULE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13332,10 +17206,10 @@ impl AstNode for ConflictIndexItemList { &self.syntax } } -impl AstNode for ConflictOnConstraint { +impl AstNode for CreateSchema { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CONFLICT_ON_CONSTRAINT + kind == SyntaxKind::CREATE_SCHEMA } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13350,10 +17224,10 @@ impl AstNode for ConflictOnConstraint { &self.syntax } } -impl AstNode for ConflictOnIndex { +impl AstNode for CreateSequence { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CONFLICT_ON_INDEX + kind == SyntaxKind::CREATE_SEQUENCE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13368,10 +17242,10 @@ impl AstNode for ConflictOnIndex { &self.syntax } } -impl AstNode for ConstraintExclusion { +impl AstNode for CreateServer { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CONSTRAINT_EXCLUSION + kind == SyntaxKind::CREATE_SERVER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13386,10 +17260,10 @@ impl AstNode for ConstraintExclusion { &self.syntax } } -impl AstNode for ConstraintExclusionList { +impl AstNode for CreateStatistics { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CONSTRAINT_EXCLUSION_LIST + kind == SyntaxKind::CREATE_STATISTICS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13404,10 +17278,10 @@ impl AstNode for ConstraintExclusionList { &self.syntax } } -impl AstNode for ConstraintIncludeClause { +impl AstNode for CreateSubscription { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CONSTRAINT_INCLUDE_CLAUSE + kind == SyntaxKind::CREATE_SUBSCRIPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13422,10 +17296,10 @@ impl AstNode for ConstraintIncludeClause { &self.syntax } } -impl AstNode for ConstraintIndexMethod { +impl AstNode for CreateTable { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CONSTRAINT_INDEX_METHOD + kind == SyntaxKind::CREATE_TABLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13440,10 +17314,10 @@ impl AstNode for ConstraintIndexMethod { &self.syntax } } -impl AstNode for ConstraintIndexTablespace { +impl AstNode for CreateTableAs { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CONSTRAINT_INDEX_TABLESPACE + kind == SyntaxKind::CREATE_TABLE_AS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13458,10 +17332,10 @@ impl AstNode for ConstraintIndexTablespace { &self.syntax } } -impl AstNode for ConstraintWhereClause { +impl AstNode for CreateTablespace { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CONSTRAINT_WHERE_CLAUSE + kind == SyntaxKind::CREATE_TABLESPACE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13476,10 +17350,10 @@ impl AstNode for ConstraintWhereClause { &self.syntax } } -impl AstNode for Copy { +impl AstNode for CreateTextSearchConfiguration { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::COPY + kind == SyntaxKind::CREATE_TEXT_SEARCH_CONFIGURATION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13494,10 +17368,10 @@ impl AstNode for Copy { &self.syntax } } -impl AstNode for CostFuncOption { +impl AstNode for CreateTextSearchDictionary { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::COST_FUNC_OPTION + kind == SyntaxKind::CREATE_TEXT_SEARCH_DICTIONARY } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13512,10 +17386,10 @@ impl AstNode for CostFuncOption { &self.syntax } } -impl AstNode for CreateAccessMethod { +impl AstNode for CreateTextSearchParser { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_ACCESS_METHOD + kind == SyntaxKind::CREATE_TEXT_SEARCH_PARSER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13530,10 +17404,10 @@ impl AstNode for CreateAccessMethod { &self.syntax } } -impl AstNode for CreateAggregate { +impl AstNode for CreateTextSearchTemplate { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_AGGREGATE + kind == SyntaxKind::CREATE_TEXT_SEARCH_TEMPLATE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13548,10 +17422,10 @@ impl AstNode for CreateAggregate { &self.syntax } } -impl AstNode for CreateCast { +impl AstNode for CreateTransform { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_CAST + kind == SyntaxKind::CREATE_TRANSFORM } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13566,10 +17440,10 @@ impl AstNode for CreateCast { &self.syntax } } -impl AstNode for CreateCollation { +impl AstNode for CreateTrigger { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_COLLATION + kind == SyntaxKind::CREATE_TRIGGER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13584,10 +17458,10 @@ impl AstNode for CreateCollation { &self.syntax } } -impl AstNode for CreateConversion { +impl AstNode for CreateType { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_CONVERSION + kind == SyntaxKind::CREATE_TYPE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13602,10 +17476,10 @@ impl AstNode for CreateConversion { &self.syntax } } -impl AstNode for CreateDatabase { +impl AstNode for CreateUser { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_DATABASE + kind == SyntaxKind::CREATE_USER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13620,10 +17494,10 @@ impl AstNode for CreateDatabase { &self.syntax } } -impl AstNode for CreateDomain { +impl AstNode for CreateUserMapping { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_DOMAIN + kind == SyntaxKind::CREATE_USER_MAPPING } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13638,10 +17512,10 @@ impl AstNode for CreateDomain { &self.syntax } } -impl AstNode for CreateEventTrigger { +impl AstNode for CreateView { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_EVENT_TRIGGER + kind == SyntaxKind::CREATE_VIEW } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13656,10 +17530,10 @@ impl AstNode for CreateEventTrigger { &self.syntax } } -impl AstNode for CreateExtension { +impl AstNode for CustomOp { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_EXTENSION + kind == SyntaxKind::CUSTOM_OP } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13674,10 +17548,10 @@ impl AstNode for CreateExtension { &self.syntax } } -impl AstNode for CreateForeignDataWrapper { +impl AstNode for Deallocate { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_FOREIGN_DATA_WRAPPER + kind == SyntaxKind::DEALLOCATE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13692,10 +17566,10 @@ impl AstNode for CreateForeignDataWrapper { &self.syntax } } -impl AstNode for CreateForeignTable { +impl AstNode for Declare { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_FOREIGN_TABLE + kind == SyntaxKind::DECLARE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13710,10 +17584,10 @@ impl AstNode for CreateForeignTable { &self.syntax } } -impl AstNode for CreateFunction { +impl AstNode for DefaultConstraint { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_FUNCTION + kind == SyntaxKind::DEFAULT_CONSTRAINT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13728,10 +17602,10 @@ impl AstNode for CreateFunction { &self.syntax } } -impl AstNode for CreateGroup { +impl AstNode for Deferrable { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_GROUP + kind == SyntaxKind::DEFERRABLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13746,10 +17620,10 @@ impl AstNode for CreateGroup { &self.syntax } } -impl AstNode for CreateIndex { +impl AstNode for DeferrableConstraintOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_INDEX + kind == SyntaxKind::DEFERRABLE_CONSTRAINT_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13764,10 +17638,10 @@ impl AstNode for CreateIndex { &self.syntax } } -impl AstNode for CreateLanguage { +impl AstNode for Delete { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_LANGUAGE + kind == SyntaxKind::DELETE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13782,10 +17656,10 @@ impl AstNode for CreateLanguage { &self.syntax } } -impl AstNode for CreateMaterializedView { +impl AstNode for DeleteRows { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_MATERIALIZED_VIEW + kind == SyntaxKind::DELETE_ROWS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13800,10 +17674,10 @@ impl AstNode for CreateMaterializedView { &self.syntax } } -impl AstNode for CreateOperator { +impl AstNode for DependsOnExtension { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_OPERATOR + kind == SyntaxKind::DEPENDS_ON_EXTENSION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13818,10 +17692,10 @@ impl AstNode for CreateOperator { &self.syntax } } -impl AstNode for CreateOperatorClass { +impl AstNode for DetachPartition { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_OPERATOR_CLASS + kind == SyntaxKind::DETACH_PARTITION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13836,10 +17710,10 @@ impl AstNode for CreateOperatorClass { &self.syntax } } -impl AstNode for CreateOperatorFamily { +impl AstNode for DisableRls { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_OPERATOR_FAMILY + kind == SyntaxKind::DISABLE_RLS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13854,10 +17728,10 @@ impl AstNode for CreateOperatorFamily { &self.syntax } } -impl AstNode for CreatePolicy { +impl AstNode for DisableRule { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_POLICY + kind == SyntaxKind::DISABLE_RULE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13872,10 +17746,10 @@ impl AstNode for CreatePolicy { &self.syntax } } -impl AstNode for CreateProcedure { +impl AstNode for DisableTrigger { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_PROCEDURE + kind == SyntaxKind::DISABLE_TRIGGER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13890,10 +17764,10 @@ impl AstNode for CreateProcedure { &self.syntax } } -impl AstNode for CreatePublication { +impl AstNode for Discard { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_PUBLICATION + kind == SyntaxKind::DISCARD } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13908,10 +17782,10 @@ impl AstNode for CreatePublication { &self.syntax } } -impl AstNode for CreateRole { +impl AstNode for DistinctClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_ROLE + kind == SyntaxKind::DISTINCT_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13926,10 +17800,10 @@ impl AstNode for CreateRole { &self.syntax } } -impl AstNode for CreateRule { +impl AstNode for Do { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_RULE + kind == SyntaxKind::DO } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13944,10 +17818,10 @@ impl AstNode for CreateRule { &self.syntax } } -impl AstNode for CreateSchema { +impl AstNode for DoubleType { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_SCHEMA + kind == SyntaxKind::DOUBLE_TYPE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13962,10 +17836,10 @@ impl AstNode for CreateSchema { &self.syntax } } -impl AstNode for CreateSequence { +impl AstNode for Drop { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_SEQUENCE + kind == SyntaxKind::DROP } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13980,10 +17854,10 @@ impl AstNode for CreateSequence { &self.syntax } } -impl AstNode for CreateServer { +impl AstNode for DropAccessMethod { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_SERVER + kind == SyntaxKind::DROP_ACCESS_METHOD } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -13998,10 +17872,10 @@ impl AstNode for CreateServer { &self.syntax } } -impl AstNode for CreateStatistics { +impl AstNode for DropAggregate { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_STATISTICS + kind == SyntaxKind::DROP_AGGREGATE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14016,10 +17890,10 @@ impl AstNode for CreateStatistics { &self.syntax } } -impl AstNode for CreateSubscription { +impl AstNode for DropCast { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_SUBSCRIPTION + kind == SyntaxKind::DROP_CAST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14034,10 +17908,10 @@ impl AstNode for CreateSubscription { &self.syntax } } -impl AstNode for CreateTable { +impl AstNode for DropCollation { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_TABLE + kind == SyntaxKind::DROP_COLLATION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14052,10 +17926,10 @@ impl AstNode for CreateTable { &self.syntax } } -impl AstNode for CreateTableAs { +impl AstNode for DropColumn { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_TABLE_AS + kind == SyntaxKind::DROP_COLUMN } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14070,10 +17944,10 @@ impl AstNode for CreateTableAs { &self.syntax } } -impl AstNode for CreateTablespace { +impl AstNode for DropConstraint { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_TABLESPACE + kind == SyntaxKind::DROP_CONSTRAINT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14088,10 +17962,10 @@ impl AstNode for CreateTablespace { &self.syntax } } -impl AstNode for CreateTextSearchConfiguration { +impl AstNode for DropConversion { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_TEXT_SEARCH_CONFIGURATION + kind == SyntaxKind::DROP_CONVERSION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14106,10 +17980,10 @@ impl AstNode for CreateTextSearchConfiguration { &self.syntax } } -impl AstNode for CreateTextSearchDictionary { +impl AstNode for DropDatabase { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_TEXT_SEARCH_DICTIONARY + kind == SyntaxKind::DROP_DATABASE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14124,10 +17998,10 @@ impl AstNode for CreateTextSearchDictionary { &self.syntax } } -impl AstNode for CreateTextSearchParser { +impl AstNode for DropDefault { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_TEXT_SEARCH_PARSER + kind == SyntaxKind::DROP_DEFAULT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14142,10 +18016,10 @@ impl AstNode for CreateTextSearchParser { &self.syntax } } -impl AstNode for CreateTextSearchTemplate { +impl AstNode for DropDomain { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_TEXT_SEARCH_TEMPLATE + kind == SyntaxKind::DROP_DOMAIN } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14160,10 +18034,10 @@ impl AstNode for CreateTextSearchTemplate { &self.syntax } } -impl AstNode for CreateTransform { +impl AstNode for DropEventTrigger { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_TRANSFORM + kind == SyntaxKind::DROP_EVENT_TRIGGER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14178,10 +18052,10 @@ impl AstNode for CreateTransform { &self.syntax } } -impl AstNode for CreateTrigger { +impl AstNode for DropExpression { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_TRIGGER + kind == SyntaxKind::DROP_EXPRESSION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14196,10 +18070,10 @@ impl AstNode for CreateTrigger { &self.syntax } } -impl AstNode for CreateType { +impl AstNode for DropExtension { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_TYPE + kind == SyntaxKind::DROP_EXTENSION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14214,10 +18088,10 @@ impl AstNode for CreateType { &self.syntax } } -impl AstNode for CreateUser { +impl AstNode for DropForeignDataWrapper { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_USER + kind == SyntaxKind::DROP_FOREIGN_DATA_WRAPPER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14232,10 +18106,10 @@ impl AstNode for CreateUser { &self.syntax } } -impl AstNode for CreateUserMapping { +impl AstNode for DropForeignTable { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_USER_MAPPING + kind == SyntaxKind::DROP_FOREIGN_TABLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14250,10 +18124,10 @@ impl AstNode for CreateUserMapping { &self.syntax } } -impl AstNode for CreateView { +impl AstNode for DropFunction { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CREATE_VIEW + kind == SyntaxKind::DROP_FUNCTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14268,10 +18142,10 @@ impl AstNode for CreateView { &self.syntax } } -impl AstNode for CustomOp { +impl AstNode for DropGroup { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::CUSTOM_OP + kind == SyntaxKind::DROP_GROUP } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14286,10 +18160,10 @@ impl AstNode for CustomOp { &self.syntax } } -impl AstNode for Deallocate { +impl AstNode for DropIdentity { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DEALLOCATE + kind == SyntaxKind::DROP_IDENTITY } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14304,10 +18178,10 @@ impl AstNode for Deallocate { &self.syntax } } -impl AstNode for Declare { +impl AstNode for DropIndex { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DECLARE + kind == SyntaxKind::DROP_INDEX } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14322,10 +18196,10 @@ impl AstNode for Declare { &self.syntax } } -impl AstNode for DefaultConstraint { +impl AstNode for DropLanguage { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DEFAULT_CONSTRAINT + kind == SyntaxKind::DROP_LANGUAGE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14340,10 +18214,10 @@ impl AstNode for DefaultConstraint { &self.syntax } } -impl AstNode for Deferrable { +impl AstNode for DropMaterializedView { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DEFERRABLE + kind == SyntaxKind::DROP_MATERIALIZED_VIEW } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14358,10 +18232,10 @@ impl AstNode for Deferrable { &self.syntax } } -impl AstNode for DeferrableConstraintOption { +impl AstNode for DropNotNull { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DEFERRABLE_CONSTRAINT_OPTION + kind == SyntaxKind::DROP_NOT_NULL } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14376,10 +18250,10 @@ impl AstNode for DeferrableConstraintOption { &self.syntax } } -impl AstNode for Delete { +impl AstNode for DropOpClassOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DELETE + kind == SyntaxKind::DROP_OP_CLASS_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14394,10 +18268,10 @@ impl AstNode for Delete { &self.syntax } } -impl AstNode for DeleteRows { +impl AstNode for DropOpClassOptionList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DELETE_ROWS + kind == SyntaxKind::DROP_OP_CLASS_OPTION_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14412,10 +18286,10 @@ impl AstNode for DeleteRows { &self.syntax } } -impl AstNode for DetachPartition { +impl AstNode for DropOpClassOptions { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DETACH_PARTITION + kind == SyntaxKind::DROP_OP_CLASS_OPTIONS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14430,10 +18304,10 @@ impl AstNode for DetachPartition { &self.syntax } } -impl AstNode for DisableRls { +impl AstNode for DropOperator { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DISABLE_RLS + kind == SyntaxKind::DROP_OPERATOR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14448,10 +18322,10 @@ impl AstNode for DisableRls { &self.syntax } } -impl AstNode for DisableRule { +impl AstNode for DropOperatorClass { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DISABLE_RULE + kind == SyntaxKind::DROP_OPERATOR_CLASS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14466,10 +18340,10 @@ impl AstNode for DisableRule { &self.syntax } } -impl AstNode for DisableTrigger { +impl AstNode for DropOperatorFamily { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DISABLE_TRIGGER + kind == SyntaxKind::DROP_OPERATOR_FAMILY } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14484,10 +18358,10 @@ impl AstNode for DisableTrigger { &self.syntax } } -impl AstNode for Discard { +impl AstNode for DropOwned { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DISCARD + kind == SyntaxKind::DROP_OWNED } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14502,10 +18376,10 @@ impl AstNode for Discard { &self.syntax } } -impl AstNode for DistinctClause { +impl AstNode for DropPolicy { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DISTINCT_CLAUSE + kind == SyntaxKind::DROP_POLICY } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14520,10 +18394,10 @@ impl AstNode for DistinctClause { &self.syntax } } -impl AstNode for Do { +impl AstNode for DropProcedure { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DO + kind == SyntaxKind::DROP_PROCEDURE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14538,10 +18412,10 @@ impl AstNode for Do { &self.syntax } } -impl AstNode for DoubleType { +impl AstNode for DropPublication { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DOUBLE_TYPE + kind == SyntaxKind::DROP_PUBLICATION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14556,10 +18430,10 @@ impl AstNode for DoubleType { &self.syntax } } -impl AstNode for Drop { +impl AstNode for DropRole { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP + kind == SyntaxKind::DROP_ROLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14574,10 +18448,10 @@ impl AstNode for Drop { &self.syntax } } -impl AstNode for DropAccessMethod { +impl AstNode for DropRoutine { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_ACCESS_METHOD + kind == SyntaxKind::DROP_ROUTINE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14592,10 +18466,10 @@ impl AstNode for DropAccessMethod { &self.syntax } } -impl AstNode for DropAggregate { +impl AstNode for DropRule { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_AGGREGATE + kind == SyntaxKind::DROP_RULE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14610,10 +18484,10 @@ impl AstNode for DropAggregate { &self.syntax } } -impl AstNode for DropCast { +impl AstNode for DropSchema { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_CAST + kind == SyntaxKind::DROP_SCHEMA } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14628,10 +18502,10 @@ impl AstNode for DropCast { &self.syntax } } -impl AstNode for DropCollation { +impl AstNode for DropSequence { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_COLLATION + kind == SyntaxKind::DROP_SEQUENCE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14646,10 +18520,10 @@ impl AstNode for DropCollation { &self.syntax } } -impl AstNode for DropColumn { +impl AstNode for DropServer { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_COLUMN + kind == SyntaxKind::DROP_SERVER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14664,10 +18538,10 @@ impl AstNode for DropColumn { &self.syntax } } -impl AstNode for DropConstraint { +impl AstNode for DropStatistics { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_CONSTRAINT + kind == SyntaxKind::DROP_STATISTICS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14682,10 +18556,10 @@ impl AstNode for DropConstraint { &self.syntax } } -impl AstNode for DropConversion { +impl AstNode for DropSubscription { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_CONVERSION + kind == SyntaxKind::DROP_SUBSCRIPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14700,10 +18574,10 @@ impl AstNode for DropConversion { &self.syntax } } -impl AstNode for DropDatabase { +impl AstNode for DropTable { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_DATABASE + kind == SyntaxKind::DROP_TABLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14718,10 +18592,10 @@ impl AstNode for DropDatabase { &self.syntax } } -impl AstNode for DropDefault { +impl AstNode for DropTablespace { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_DEFAULT + kind == SyntaxKind::DROP_TABLESPACE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14736,10 +18610,10 @@ impl AstNode for DropDefault { &self.syntax } } -impl AstNode for DropDomain { +impl AstNode for DropTextSearchConfig { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_DOMAIN + kind == SyntaxKind::DROP_TEXT_SEARCH_CONFIG } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14754,10 +18628,10 @@ impl AstNode for DropDomain { &self.syntax } } -impl AstNode for DropEventTrigger { +impl AstNode for DropTextSearchDict { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_EVENT_TRIGGER + kind == SyntaxKind::DROP_TEXT_SEARCH_DICT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14772,10 +18646,10 @@ impl AstNode for DropEventTrigger { &self.syntax } } -impl AstNode for DropExpression { +impl AstNode for DropTextSearchParser { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_EXPRESSION + kind == SyntaxKind::DROP_TEXT_SEARCH_PARSER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14790,10 +18664,10 @@ impl AstNode for DropExpression { &self.syntax } } -impl AstNode for DropExtension { +impl AstNode for DropTextSearchTemplate { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_EXTENSION + kind == SyntaxKind::DROP_TEXT_SEARCH_TEMPLATE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14808,10 +18682,10 @@ impl AstNode for DropExtension { &self.syntax } } -impl AstNode for DropForeignDataWrapper { +impl AstNode for DropTransform { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_FOREIGN_DATA_WRAPPER + kind == SyntaxKind::DROP_TRANSFORM } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14826,10 +18700,10 @@ impl AstNode for DropForeignDataWrapper { &self.syntax } } -impl AstNode for DropForeignTable { +impl AstNode for DropTrigger { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_FOREIGN_TABLE + kind == SyntaxKind::DROP_TRIGGER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14844,10 +18718,10 @@ impl AstNode for DropForeignTable { &self.syntax } } -impl AstNode for DropFunction { +impl AstNode for DropType { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_FUNCTION + kind == SyntaxKind::DROP_TYPE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14862,10 +18736,10 @@ impl AstNode for DropFunction { &self.syntax } } -impl AstNode for DropGroup { +impl AstNode for DropUser { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_GROUP + kind == SyntaxKind::DROP_USER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14880,10 +18754,10 @@ impl AstNode for DropGroup { &self.syntax } } -impl AstNode for DropIdentity { +impl AstNode for DropUserMapping { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_IDENTITY + kind == SyntaxKind::DROP_USER_MAPPING } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14898,10 +18772,10 @@ impl AstNode for DropIdentity { &self.syntax } } -impl AstNode for DropIndex { +impl AstNode for DropView { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_INDEX + kind == SyntaxKind::DROP_VIEW } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14916,10 +18790,10 @@ impl AstNode for DropIndex { &self.syntax } } -impl AstNode for DropLanguage { +impl AstNode for ElseClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_LANGUAGE + kind == SyntaxKind::ELSE_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14934,10 +18808,10 @@ impl AstNode for DropLanguage { &self.syntax } } -impl AstNode for DropMaterializedView { +impl AstNode for EnableAlwaysRule { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_MATERIALIZED_VIEW + kind == SyntaxKind::ENABLE_ALWAYS_RULE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14952,10 +18826,10 @@ impl AstNode for DropMaterializedView { &self.syntax } } -impl AstNode for DropNotNull { +impl AstNode for EnableAlwaysTrigger { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_NOT_NULL + kind == SyntaxKind::ENABLE_ALWAYS_TRIGGER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14970,10 +18844,10 @@ impl AstNode for DropNotNull { &self.syntax } } -impl AstNode for DropOperator { +impl AstNode for EnableReplicaRule { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_OPERATOR + kind == SyntaxKind::ENABLE_REPLICA_RULE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -14988,10 +18862,10 @@ impl AstNode for DropOperator { &self.syntax } } -impl AstNode for DropOperatorClass { +impl AstNode for EnableReplicaTrigger { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_OPERATOR_CLASS + kind == SyntaxKind::ENABLE_REPLICA_TRIGGER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15006,10 +18880,10 @@ impl AstNode for DropOperatorClass { &self.syntax } } -impl AstNode for DropOperatorFamily { +impl AstNode for EnableRls { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_OPERATOR_FAMILY + kind == SyntaxKind::ENABLE_RLS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15024,10 +18898,10 @@ impl AstNode for DropOperatorFamily { &self.syntax } } -impl AstNode for DropOwned { +impl AstNode for EnableRule { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_OWNED + kind == SyntaxKind::ENABLE_RULE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15042,10 +18916,10 @@ impl AstNode for DropOwned { &self.syntax } } -impl AstNode for DropPolicy { +impl AstNode for EnableTrigger { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_POLICY + kind == SyntaxKind::ENABLE_TRIGGER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15060,10 +18934,10 @@ impl AstNode for DropPolicy { &self.syntax } } -impl AstNode for DropProcedure { +impl AstNode for Enforced { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_PROCEDURE + kind == SyntaxKind::ENFORCED } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15078,10 +18952,10 @@ impl AstNode for DropProcedure { &self.syntax } } -impl AstNode for DropPublication { +impl AstNode for EventTriggerWhen { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_PUBLICATION + kind == SyntaxKind::EVENT_TRIGGER_WHEN } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15096,10 +18970,10 @@ impl AstNode for DropPublication { &self.syntax } } -impl AstNode for DropRole { +impl AstNode for EventTriggerWhenClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_ROLE + kind == SyntaxKind::EVENT_TRIGGER_WHEN_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15114,10 +18988,10 @@ impl AstNode for DropRole { &self.syntax } } -impl AstNode for DropRoutine { +impl AstNode for ExceptTables { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_ROUTINE + kind == SyntaxKind::EXCEPT_TABLES } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15132,10 +19006,10 @@ impl AstNode for DropRoutine { &self.syntax } } -impl AstNode for DropRule { +impl AstNode for ExcludeConstraint { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_RULE + kind == SyntaxKind::EXCLUDE_CONSTRAINT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15150,10 +19024,10 @@ impl AstNode for DropRule { &self.syntax } } -impl AstNode for DropSchema { +impl AstNode for Execute { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_SCHEMA + kind == SyntaxKind::EXECUTE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15168,10 +19042,10 @@ impl AstNode for DropSchema { &self.syntax } } -impl AstNode for DropSequence { +impl AstNode for Explain { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_SEQUENCE + kind == SyntaxKind::EXPLAIN } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15186,10 +19060,10 @@ impl AstNode for DropSequence { &self.syntax } } -impl AstNode for DropServer { +impl AstNode for ExprType { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_SERVER + kind == SyntaxKind::EXPR_TYPE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15204,10 +19078,10 @@ impl AstNode for DropServer { &self.syntax } } -impl AstNode for DropStatistics { +impl AstNode for FatArrow { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_STATISTICS + kind == SyntaxKind::FAT_ARROW } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15222,10 +19096,10 @@ impl AstNode for DropStatistics { &self.syntax } } -impl AstNode for DropSubscription { +impl AstNode for FdwOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_SUBSCRIPTION + kind == SyntaxKind::FDW_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15240,10 +19114,10 @@ impl AstNode for DropSubscription { &self.syntax } } -impl AstNode for DropTable { +impl AstNode for FdwOptionList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_TABLE + kind == SyntaxKind::FDW_OPTION_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15258,10 +19132,10 @@ impl AstNode for DropTable { &self.syntax } } -impl AstNode for DropTablespace { +impl AstNode for Fetch { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_TABLESPACE + kind == SyntaxKind::FETCH } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15276,10 +19150,10 @@ impl AstNode for DropTablespace { &self.syntax } } -impl AstNode for DropTextSearchConfig { +impl AstNode for FetchClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_TEXT_SEARCH_CONFIG + kind == SyntaxKind::FETCH_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15294,10 +19168,10 @@ impl AstNode for DropTextSearchConfig { &self.syntax } } -impl AstNode for DropTextSearchDict { +impl AstNode for FieldExpr { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_TEXT_SEARCH_DICT + kind == SyntaxKind::FIELD_EXPR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15312,10 +19186,10 @@ impl AstNode for DropTextSearchDict { &self.syntax } } -impl AstNode for DropTextSearchParser { +impl AstNode for FilterClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_TEXT_SEARCH_PARSER + kind == SyntaxKind::FILTER_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15330,10 +19204,10 @@ impl AstNode for DropTextSearchParser { &self.syntax } } -impl AstNode for DropTextSearchTemplate { +impl AstNode for ForProvider { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_TEXT_SEARCH_TEMPLATE + kind == SyntaxKind::FOR_PROVIDER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15348,10 +19222,10 @@ impl AstNode for DropTextSearchTemplate { &self.syntax } } -impl AstNode for DropTransform { +impl AstNode for ForceRls { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_TRANSFORM + kind == SyntaxKind::FORCE_RLS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15366,10 +19240,10 @@ impl AstNode for DropTransform { &self.syntax } } -impl AstNode for DropTrigger { +impl AstNode for ForeignKeyConstraint { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_TRIGGER + kind == SyntaxKind::FOREIGN_KEY_CONSTRAINT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15384,10 +19258,10 @@ impl AstNode for DropTrigger { &self.syntax } } -impl AstNode for DropType { +impl AstNode for FrameClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_TYPE + kind == SyntaxKind::FRAME_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15402,10 +19276,10 @@ impl AstNode for DropType { &self.syntax } } -impl AstNode for DropUser { +impl AstNode for FromClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_USER + kind == SyntaxKind::FROM_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15420,10 +19294,10 @@ impl AstNode for DropUser { &self.syntax } } -impl AstNode for DropUserMapping { +impl AstNode for FromItem { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_USER_MAPPING + kind == SyntaxKind::FROM_ITEM } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15438,10 +19312,10 @@ impl AstNode for DropUserMapping { &self.syntax } } -impl AstNode for DropView { +impl AstNode for FromServer { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::DROP_VIEW + kind == SyntaxKind::FROM_SERVER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15456,10 +19330,10 @@ impl AstNode for DropView { &self.syntax } } -impl AstNode for ElseClause { +impl AstNode for FromTable { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ELSE_CLAUSE + kind == SyntaxKind::FROM_TABLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15474,10 +19348,10 @@ impl AstNode for ElseClause { &self.syntax } } -impl AstNode for EnableAlwaysRule { +impl AstNode for FuncOptionList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ENABLE_ALWAYS_RULE + kind == SyntaxKind::FUNC_OPTION_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15492,10 +19366,10 @@ impl AstNode for EnableAlwaysRule { &self.syntax } } -impl AstNode for EnableAlwaysTrigger { +impl AstNode for FunctionSig { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ENABLE_ALWAYS_TRIGGER + kind == SyntaxKind::FUNCTION_SIG } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15510,10 +19384,10 @@ impl AstNode for EnableAlwaysTrigger { &self.syntax } } -impl AstNode for EnableReplicaRule { +impl AstNode for FunctionSigList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ENABLE_REPLICA_RULE + kind == SyntaxKind::FUNCTION_SIG_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15528,10 +19402,10 @@ impl AstNode for EnableReplicaRule { &self.syntax } } -impl AstNode for EnableReplicaTrigger { +impl AstNode for GeneratedConstraint { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ENABLE_REPLICA_TRIGGER + kind == SyntaxKind::GENERATED_CONSTRAINT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15546,10 +19420,10 @@ impl AstNode for EnableReplicaTrigger { &self.syntax } } -impl AstNode for EnableRls { +impl AstNode for Grant { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ENABLE_RLS + kind == SyntaxKind::GRANT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15564,10 +19438,10 @@ impl AstNode for EnableRls { &self.syntax } } -impl AstNode for EnableRule { +impl AstNode for GrantDefaultPrivileges { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ENABLE_RULE + kind == SyntaxKind::GRANT_DEFAULT_PRIVILEGES } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15582,10 +19456,10 @@ impl AstNode for EnableRule { &self.syntax } } -impl AstNode for EnableTrigger { +impl AstNode for GroupByClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ENABLE_TRIGGER + kind == SyntaxKind::GROUP_BY_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15600,10 +19474,10 @@ impl AstNode for EnableTrigger { &self.syntax } } -impl AstNode for Enforced { +impl AstNode for GroupByList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ENFORCED + kind == SyntaxKind::GROUP_BY_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15618,10 +19492,10 @@ impl AstNode for Enforced { &self.syntax } } -impl AstNode for ExcludeConstraint { +impl AstNode for GroupingCube { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::EXCLUDE_CONSTRAINT + kind == SyntaxKind::GROUPING_CUBE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15636,10 +19510,10 @@ impl AstNode for ExcludeConstraint { &self.syntax } } -impl AstNode for Execute { +impl AstNode for GroupingExpr { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::EXECUTE + kind == SyntaxKind::GROUPING_EXPR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15654,10 +19528,10 @@ impl AstNode for Execute { &self.syntax } } -impl AstNode for Explain { +impl AstNode for GroupingRollup { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::EXPLAIN + kind == SyntaxKind::GROUPING_ROLLUP } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15672,10 +19546,10 @@ impl AstNode for Explain { &self.syntax } } -impl AstNode for ExprType { +impl AstNode for GroupingSets { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::EXPR_TYPE + kind == SyntaxKind::GROUPING_SETS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15690,10 +19564,10 @@ impl AstNode for ExprType { &self.syntax } } -impl AstNode for FatArrow { +impl AstNode for Gteq { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::FAT_ARROW + kind == SyntaxKind::GTEQ } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15708,10 +19582,10 @@ impl AstNode for FatArrow { &self.syntax } } -impl AstNode for Fetch { +impl AstNode for HandlerClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::FETCH + kind == SyntaxKind::HANDLER_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15726,10 +19600,10 @@ impl AstNode for Fetch { &self.syntax } } -impl AstNode for FetchClause { +impl AstNode for HavingClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::FETCH_CLAUSE + kind == SyntaxKind::HAVING_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15744,10 +19618,10 @@ impl AstNode for FetchClause { &self.syntax } } -impl AstNode for FieldExpr { +impl AstNode for IfExists { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::FIELD_EXPR + kind == SyntaxKind::IF_EXISTS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15762,10 +19636,10 @@ impl AstNode for FieldExpr { &self.syntax } } -impl AstNode for FilterClause { +impl AstNode for IfNotExists { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::FILTER_CLAUSE + kind == SyntaxKind::IF_NOT_EXISTS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15780,10 +19654,10 @@ impl AstNode for FilterClause { &self.syntax } } -impl AstNode for ForceRls { +impl AstNode for ImportForeignSchema { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::FORCE_RLS + kind == SyntaxKind::IMPORT_FOREIGN_SCHEMA } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15798,10 +19672,10 @@ impl AstNode for ForceRls { &self.syntax } } -impl AstNode for ForeignKeyConstraint { +impl AstNode for IndexExpr { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::FOREIGN_KEY_CONSTRAINT + kind == SyntaxKind::INDEX_EXPR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15816,10 +19690,10 @@ impl AstNode for ForeignKeyConstraint { &self.syntax } } -impl AstNode for FrameClause { +impl AstNode for Inherit { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::FRAME_CLAUSE + kind == SyntaxKind::INHERIT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15834,10 +19708,10 @@ impl AstNode for FrameClause { &self.syntax } } -impl AstNode for FromClause { +impl AstNode for InheritTable { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::FROM_CLAUSE + kind == SyntaxKind::INHERIT_TABLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15852,10 +19726,10 @@ impl AstNode for FromClause { &self.syntax } } -impl AstNode for FromItem { +impl AstNode for Inherits { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::FROM_ITEM + kind == SyntaxKind::INHERITS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15870,10 +19744,10 @@ impl AstNode for FromItem { &self.syntax } } -impl AstNode for FuncOptionList { +impl AstNode for InitiallyDeferredConstraintOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::FUNC_OPTION_LIST + kind == SyntaxKind::INITIALLY_DEFERRED_CONSTRAINT_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15888,10 +19762,10 @@ impl AstNode for FuncOptionList { &self.syntax } } -impl AstNode for FunctionSig { +impl AstNode for InitiallyImmediateConstraintOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::FUNCTION_SIG + kind == SyntaxKind::INITIALLY_IMMEDIATE_CONSTRAINT_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15906,10 +19780,10 @@ impl AstNode for FunctionSig { &self.syntax } } -impl AstNode for FunctionSigList { +impl AstNode for Insert { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::FUNCTION_SIG_LIST + kind == SyntaxKind::INSERT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15924,10 +19798,10 @@ impl AstNode for FunctionSigList { &self.syntax } } -impl AstNode for GeneratedConstraint { +impl AstNode for IntervalType { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::GENERATED_CONSTRAINT + kind == SyntaxKind::INTERVAL_TYPE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15942,10 +19816,10 @@ impl AstNode for GeneratedConstraint { &self.syntax } } -impl AstNode for Grant { +impl AstNode for IntoClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::GRANT + kind == SyntaxKind::INTO_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15960,10 +19834,10 @@ impl AstNode for Grant { &self.syntax } } -impl AstNode for GroupByClause { +impl AstNode for IntoSchema { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::GROUP_BY_CLAUSE + kind == SyntaxKind::INTO_SCHEMA } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15978,10 +19852,10 @@ impl AstNode for GroupByClause { &self.syntax } } -impl AstNode for GroupByList { +impl AstNode for IsDistinctFrom { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::GROUP_BY_LIST + kind == SyntaxKind::IS_DISTINCT_FROM } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -15996,10 +19870,10 @@ impl AstNode for GroupByList { &self.syntax } } -impl AstNode for GroupingCube { +impl AstNode for IsJson { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::GROUPING_CUBE + kind == SyntaxKind::IS_JSON } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16014,10 +19888,10 @@ impl AstNode for GroupingCube { &self.syntax } } -impl AstNode for GroupingExpr { +impl AstNode for IsJsonArray { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::GROUPING_EXPR + kind == SyntaxKind::IS_JSON_ARRAY } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16032,10 +19906,10 @@ impl AstNode for GroupingExpr { &self.syntax } } -impl AstNode for GroupingRollup { +impl AstNode for IsJsonObject { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::GROUPING_ROLLUP + kind == SyntaxKind::IS_JSON_OBJECT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16050,10 +19924,10 @@ impl AstNode for GroupingRollup { &self.syntax } } -impl AstNode for GroupingSets { +impl AstNode for IsJsonScalar { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::GROUPING_SETS + kind == SyntaxKind::IS_JSON_SCALAR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16068,10 +19942,10 @@ impl AstNode for GroupingSets { &self.syntax } } -impl AstNode for Gteq { +impl AstNode for IsJsonValue { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::GTEQ + kind == SyntaxKind::IS_JSON_VALUE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16086,10 +19960,10 @@ impl AstNode for Gteq { &self.syntax } } -impl AstNode for HavingClause { +impl AstNode for IsNormalized { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::HAVING_CLAUSE + kind == SyntaxKind::IS_NORMALIZED } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16104,10 +19978,10 @@ impl AstNode for HavingClause { &self.syntax } } -impl AstNode for IfExists { +impl AstNode for IsNot { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IF_EXISTS + kind == SyntaxKind::IS_NOT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16122,10 +19996,10 @@ impl AstNode for IfExists { &self.syntax } } -impl AstNode for IfNotExists { +impl AstNode for IsNotDistinctFrom { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IF_NOT_EXISTS + kind == SyntaxKind::IS_NOT_DISTINCT_FROM } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16140,10 +20014,10 @@ impl AstNode for IfNotExists { &self.syntax } } -impl AstNode for ImportForeignSchema { +impl AstNode for IsNotJson { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IMPORT_FOREIGN_SCHEMA + kind == SyntaxKind::IS_NOT_JSON } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16158,10 +20032,10 @@ impl AstNode for ImportForeignSchema { &self.syntax } } -impl AstNode for IndexExpr { +impl AstNode for IsNotJsonArray { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::INDEX_EXPR + kind == SyntaxKind::IS_NOT_JSON_ARRAY } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16176,10 +20050,10 @@ impl AstNode for IndexExpr { &self.syntax } } -impl AstNode for Inherit { +impl AstNode for IsNotJsonObject { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::INHERIT + kind == SyntaxKind::IS_NOT_JSON_OBJECT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16194,10 +20068,10 @@ impl AstNode for Inherit { &self.syntax } } -impl AstNode for InheritTable { +impl AstNode for IsNotJsonScalar { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::INHERIT_TABLE + kind == SyntaxKind::IS_NOT_JSON_SCALAR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16212,10 +20086,10 @@ impl AstNode for InheritTable { &self.syntax } } -impl AstNode for Inherits { +impl AstNode for IsNotJsonValue { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::INHERITS + kind == SyntaxKind::IS_NOT_JSON_VALUE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16230,10 +20104,10 @@ impl AstNode for Inherits { &self.syntax } } -impl AstNode for InitiallyDeferredConstraintOption { +impl AstNode for IsNotNormalized { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::INITIALLY_DEFERRED_CONSTRAINT_OPTION + kind == SyntaxKind::IS_NOT_NORMALIZED } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16248,10 +20122,10 @@ impl AstNode for InitiallyDeferredConstraintOption { &self.syntax } } -impl AstNode for InitiallyImmediateConstraintOption { +impl AstNode for Join { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::INITIALLY_IMMEDIATE_CONSTRAINT_OPTION + kind == SyntaxKind::JOIN } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16266,10 +20140,10 @@ impl AstNode for InitiallyImmediateConstraintOption { &self.syntax } } -impl AstNode for Insert { +impl AstNode for JoinCross { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::INSERT + kind == SyntaxKind::JOIN_CROSS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16284,10 +20158,10 @@ impl AstNode for Insert { &self.syntax } } -impl AstNode for IntervalType { +impl AstNode for JoinExpr { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::INTERVAL_TYPE + kind == SyntaxKind::JOIN_EXPR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16302,10 +20176,10 @@ impl AstNode for IntervalType { &self.syntax } } -impl AstNode for IntoClause { +impl AstNode for JoinFull { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::INTO_CLAUSE + kind == SyntaxKind::JOIN_FULL } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16320,10 +20194,10 @@ impl AstNode for IntoClause { &self.syntax } } -impl AstNode for IsDistinctFrom { +impl AstNode for JoinInner { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IS_DISTINCT_FROM + kind == SyntaxKind::JOIN_INNER } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16338,10 +20212,10 @@ impl AstNode for IsDistinctFrom { &self.syntax } } -impl AstNode for IsJson { +impl AstNode for JoinLeft { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IS_JSON + kind == SyntaxKind::JOIN_LEFT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16356,10 +20230,10 @@ impl AstNode for IsJson { &self.syntax } } -impl AstNode for IsJsonArray { +impl AstNode for JoinRight { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IS_JSON_ARRAY + kind == SyntaxKind::JOIN_RIGHT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16374,10 +20248,10 @@ impl AstNode for IsJsonArray { &self.syntax } } -impl AstNode for IsJsonObject { +impl AstNode for JoinUsingClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IS_JSON_OBJECT + kind == SyntaxKind::JOIN_USING_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16392,10 +20266,10 @@ impl AstNode for IsJsonObject { &self.syntax } } -impl AstNode for IsJsonScalar { +impl AstNode for JsonBehaviorDefault { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IS_JSON_SCALAR + kind == SyntaxKind::JSON_BEHAVIOR_DEFAULT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16410,10 +20284,10 @@ impl AstNode for IsJsonScalar { &self.syntax } } -impl AstNode for IsJsonValue { +impl AstNode for JsonBehaviorEmptyArray { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IS_JSON_VALUE + kind == SyntaxKind::JSON_BEHAVIOR_EMPTY_ARRAY } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16428,10 +20302,10 @@ impl AstNode for IsJsonValue { &self.syntax } } -impl AstNode for IsNormalized { +impl AstNode for JsonBehaviorEmptyObject { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IS_NORMALIZED + kind == SyntaxKind::JSON_BEHAVIOR_EMPTY_OBJECT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16446,10 +20320,10 @@ impl AstNode for IsNormalized { &self.syntax } } -impl AstNode for IsNot { +impl AstNode for JsonBehaviorError { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IS_NOT + kind == SyntaxKind::JSON_BEHAVIOR_ERROR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16464,10 +20338,10 @@ impl AstNode for IsNot { &self.syntax } } -impl AstNode for IsNotDistinctFrom { +impl AstNode for JsonBehaviorFalse { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IS_NOT_DISTINCT_FROM + kind == SyntaxKind::JSON_BEHAVIOR_FALSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16482,10 +20356,10 @@ impl AstNode for IsNotDistinctFrom { &self.syntax } } -impl AstNode for IsNotJson { +impl AstNode for JsonBehaviorNull { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IS_NOT_JSON + kind == SyntaxKind::JSON_BEHAVIOR_NULL } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16500,10 +20374,10 @@ impl AstNode for IsNotJson { &self.syntax } } -impl AstNode for IsNotJsonArray { +impl AstNode for JsonBehaviorTrue { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IS_NOT_JSON_ARRAY + kind == SyntaxKind::JSON_BEHAVIOR_TRUE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16518,10 +20392,10 @@ impl AstNode for IsNotJsonArray { &self.syntax } } -impl AstNode for IsNotJsonObject { +impl AstNode for JsonBehaviorUnknown { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IS_NOT_JSON_OBJECT + kind == SyntaxKind::JSON_BEHAVIOR_UNKNOWN } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16536,10 +20410,10 @@ impl AstNode for IsNotJsonObject { &self.syntax } } -impl AstNode for IsNotJsonScalar { +impl AstNode for JsonFormatClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IS_NOT_JSON_SCALAR + kind == SyntaxKind::JSON_FORMAT_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16554,10 +20428,10 @@ impl AstNode for IsNotJsonScalar { &self.syntax } } -impl AstNode for IsNotJsonValue { +impl AstNode for JsonKeyValue { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IS_NOT_JSON_VALUE + kind == SyntaxKind::JSON_KEY_VALUE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16572,10 +20446,10 @@ impl AstNode for IsNotJsonValue { &self.syntax } } -impl AstNode for IsNotNormalized { +impl AstNode for JsonKeysUniqueClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::IS_NOT_NORMALIZED + kind == SyntaxKind::JSON_KEYS_UNIQUE_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16590,10 +20464,10 @@ impl AstNode for IsNotNormalized { &self.syntax } } -impl AstNode for Join { +impl AstNode for JsonNullClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JOIN + kind == SyntaxKind::JSON_NULL_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16608,10 +20482,10 @@ impl AstNode for Join { &self.syntax } } -impl AstNode for JoinCross { +impl AstNode for JsonOnEmptyClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JOIN_CROSS + kind == SyntaxKind::JSON_ON_EMPTY_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16626,10 +20500,10 @@ impl AstNode for JoinCross { &self.syntax } } -impl AstNode for JoinExpr { +impl AstNode for JsonOnErrorClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JOIN_EXPR + kind == SyntaxKind::JSON_ON_ERROR_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16644,10 +20518,10 @@ impl AstNode for JoinExpr { &self.syntax } } -impl AstNode for JoinFull { +impl AstNode for JsonPassingArg { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JOIN_FULL + kind == SyntaxKind::JSON_PASSING_ARG } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16662,10 +20536,10 @@ impl AstNode for JoinFull { &self.syntax } } -impl AstNode for JoinInner { +impl AstNode for JsonPassingClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JOIN_INNER + kind == SyntaxKind::JSON_PASSING_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16680,10 +20554,10 @@ impl AstNode for JoinInner { &self.syntax } } -impl AstNode for JoinLeft { +impl AstNode for JsonQuotesClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JOIN_LEFT + kind == SyntaxKind::JSON_QUOTES_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16698,10 +20572,10 @@ impl AstNode for JoinLeft { &self.syntax } } -impl AstNode for JoinRight { +impl AstNode for JsonReturningClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JOIN_RIGHT + kind == SyntaxKind::JSON_RETURNING_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16716,10 +20590,10 @@ impl AstNode for JoinRight { &self.syntax } } -impl AstNode for JoinUsingClause { +impl AstNode for JsonTableColumn { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JOIN_USING_CLAUSE + kind == SyntaxKind::JSON_TABLE_COLUMN } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16734,10 +20608,10 @@ impl AstNode for JoinUsingClause { &self.syntax } } -impl AstNode for JsonBehaviorDefault { +impl AstNode for JsonTableColumnList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_BEHAVIOR_DEFAULT + kind == SyntaxKind::JSON_TABLE_COLUMN_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16752,10 +20626,10 @@ impl AstNode for JsonBehaviorDefault { &self.syntax } } -impl AstNode for JsonBehaviorEmptyArray { +impl AstNode for JsonValueExpr { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_BEHAVIOR_EMPTY_ARRAY + kind == SyntaxKind::JSON_VALUE_EXPR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16770,10 +20644,10 @@ impl AstNode for JsonBehaviorEmptyArray { &self.syntax } } -impl AstNode for JsonBehaviorEmptyObject { +impl AstNode for JsonWrapperBehaviorClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_BEHAVIOR_EMPTY_OBJECT + kind == SyntaxKind::JSON_WRAPPER_BEHAVIOR_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16788,10 +20662,10 @@ impl AstNode for JsonBehaviorEmptyObject { &self.syntax } } -impl AstNode for JsonBehaviorError { +impl AstNode for LanguageFuncOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_BEHAVIOR_ERROR + kind == SyntaxKind::LANGUAGE_FUNC_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16806,10 +20680,10 @@ impl AstNode for JsonBehaviorError { &self.syntax } } -impl AstNode for JsonBehaviorFalse { +impl AstNode for LeakproofFuncOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_BEHAVIOR_FALSE + kind == SyntaxKind::LEAKPROOF_FUNC_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16824,10 +20698,10 @@ impl AstNode for JsonBehaviorFalse { &self.syntax } } -impl AstNode for JsonBehaviorNull { +impl AstNode for LikeClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_BEHAVIOR_NULL + kind == SyntaxKind::LIKE_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16842,10 +20716,10 @@ impl AstNode for JsonBehaviorNull { &self.syntax } } -impl AstNode for JsonBehaviorTrue { +impl AstNode for LikeOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_BEHAVIOR_TRUE + kind == SyntaxKind::LIKE_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16860,10 +20734,10 @@ impl AstNode for JsonBehaviorTrue { &self.syntax } } -impl AstNode for JsonBehaviorUnknown { +impl AstNode for LimitClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_BEHAVIOR_UNKNOWN + kind == SyntaxKind::LIMIT_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16878,10 +20752,10 @@ impl AstNode for JsonBehaviorUnknown { &self.syntax } } -impl AstNode for JsonFormatClause { +impl AstNode for LimitToTables { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_FORMAT_CLAUSE + kind == SyntaxKind::LIMIT_TO_TABLES } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16896,10 +20770,10 @@ impl AstNode for JsonFormatClause { &self.syntax } } -impl AstNode for JsonKeyValue { +impl AstNode for Listen { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_KEY_VALUE + kind == SyntaxKind::LISTEN } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16914,10 +20788,10 @@ impl AstNode for JsonKeyValue { &self.syntax } } -impl AstNode for JsonKeysUniqueClause { +impl AstNode for Literal { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_KEYS_UNIQUE_CLAUSE + kind == SyntaxKind::LITERAL } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16932,10 +20806,10 @@ impl AstNode for JsonKeysUniqueClause { &self.syntax } } -impl AstNode for JsonNullClause { +impl AstNode for Load { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_NULL_CLAUSE + kind == SyntaxKind::LOAD } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16950,10 +20824,10 @@ impl AstNode for JsonNullClause { &self.syntax } } -impl AstNode for JsonOnEmptyClause { +impl AstNode for Lock { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_ON_EMPTY_CLAUSE + kind == SyntaxKind::LOCK } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16968,10 +20842,10 @@ impl AstNode for JsonOnEmptyClause { &self.syntax } } -impl AstNode for JsonOnErrorClause { +impl AstNode for LockingClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_ON_ERROR_CLAUSE + kind == SyntaxKind::LOCKING_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -16986,10 +20860,10 @@ impl AstNode for JsonOnErrorClause { &self.syntax } } -impl AstNode for JsonPassingArg { +impl AstNode for Lteq { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_PASSING_ARG + kind == SyntaxKind::LTEQ } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17004,10 +20878,10 @@ impl AstNode for JsonPassingArg { &self.syntax } } -impl AstNode for JsonPassingClause { +impl AstNode for MatchFull { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_PASSING_CLAUSE + kind == SyntaxKind::MATCH_FULL } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17022,10 +20896,10 @@ impl AstNode for JsonPassingClause { &self.syntax } } -impl AstNode for JsonQuotesClause { +impl AstNode for MatchPartial { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_QUOTES_CLAUSE + kind == SyntaxKind::MATCH_PARTIAL } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17040,10 +20914,10 @@ impl AstNode for JsonQuotesClause { &self.syntax } } -impl AstNode for JsonReturningClause { +impl AstNode for MatchSimple { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_RETURNING_CLAUSE + kind == SyntaxKind::MATCH_SIMPLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17058,10 +20932,10 @@ impl AstNode for JsonReturningClause { &self.syntax } } -impl AstNode for JsonTableColumn { +impl AstNode for Materialized { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_TABLE_COLUMN + kind == SyntaxKind::MATERIALIZED } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17076,10 +20950,10 @@ impl AstNode for JsonTableColumn { &self.syntax } } -impl AstNode for JsonTableColumnList { +impl AstNode for Merge { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_TABLE_COLUMN_LIST + kind == SyntaxKind::MERGE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17094,10 +20968,10 @@ impl AstNode for JsonTableColumnList { &self.syntax } } -impl AstNode for JsonValueExpr { +impl AstNode for MergeDelete { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_VALUE_EXPR + kind == SyntaxKind::MERGE_DELETE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17112,10 +20986,10 @@ impl AstNode for JsonValueExpr { &self.syntax } } -impl AstNode for JsonWrapperBehaviorClause { +impl AstNode for MergeDoNothing { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::JSON_WRAPPER_BEHAVIOR_CLAUSE + kind == SyntaxKind::MERGE_DO_NOTHING } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17130,10 +21004,10 @@ impl AstNode for JsonWrapperBehaviorClause { &self.syntax } } -impl AstNode for LanguageFuncOption { +impl AstNode for MergeInsert { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::LANGUAGE_FUNC_OPTION + kind == SyntaxKind::MERGE_INSERT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17148,10 +21022,10 @@ impl AstNode for LanguageFuncOption { &self.syntax } } -impl AstNode for LeakproofFuncOption { +impl AstNode for MergeUpdate { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::LEAKPROOF_FUNC_OPTION + kind == SyntaxKind::MERGE_UPDATE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17166,10 +21040,10 @@ impl AstNode for LeakproofFuncOption { &self.syntax } } -impl AstNode for LikeClause { +impl AstNode for MergeWhenMatched { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::LIKE_CLAUSE + kind == SyntaxKind::MERGE_WHEN_MATCHED } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17184,10 +21058,10 @@ impl AstNode for LikeClause { &self.syntax } } -impl AstNode for LikeOption { +impl AstNode for MergeWhenNotMatchedSource { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::LIKE_OPTION + kind == SyntaxKind::MERGE_WHEN_NOT_MATCHED_SOURCE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17202,10 +21076,10 @@ impl AstNode for LikeOption { &self.syntax } } -impl AstNode for LimitClause { +impl AstNode for MergeWhenNotMatchedTarget { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::LIMIT_CLAUSE + kind == SyntaxKind::MERGE_WHEN_NOT_MATCHED_TARGET } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17220,10 +21094,10 @@ impl AstNode for LimitClause { &self.syntax } } -impl AstNode for Listen { +impl AstNode for Move { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::LISTEN + kind == SyntaxKind::MOVE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17238,10 +21112,10 @@ impl AstNode for Listen { &self.syntax } } -impl AstNode for Literal { +impl AstNode for Name { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::LITERAL + kind == SyntaxKind::NAME } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17256,10 +21130,10 @@ impl AstNode for Literal { &self.syntax } } -impl AstNode for Load { +impl AstNode for NameRef { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::LOAD + kind == SyntaxKind::NAME_REF } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17274,10 +21148,10 @@ impl AstNode for Load { &self.syntax } } -impl AstNode for Lock { +impl AstNode for NamedArg { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::LOCK + kind == SyntaxKind::NAMED_ARG } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17292,10 +21166,10 @@ impl AstNode for Lock { &self.syntax } } -impl AstNode for LockingClause { +impl AstNode for Neq { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::LOCKING_CLAUSE + kind == SyntaxKind::NEQ } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17310,10 +21184,10 @@ impl AstNode for LockingClause { &self.syntax } } -impl AstNode for Lteq { +impl AstNode for Neqb { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::LTEQ + kind == SyntaxKind::NEQB } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17328,10 +21202,10 @@ impl AstNode for Lteq { &self.syntax } } -impl AstNode for MatchFull { +impl AstNode for NoAction { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::MATCH_FULL + kind == SyntaxKind::NO_ACTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17346,10 +21220,10 @@ impl AstNode for MatchFull { &self.syntax } } -impl AstNode for MatchPartial { +impl AstNode for NoDependsOnExtension { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::MATCH_PARTIAL + kind == SyntaxKind::NO_DEPENDS_ON_EXTENSION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17364,10 +21238,10 @@ impl AstNode for MatchPartial { &self.syntax } } -impl AstNode for MatchSimple { +impl AstNode for NoForceRls { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::MATCH_SIMPLE + kind == SyntaxKind::NO_FORCE_RLS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17382,10 +21256,10 @@ impl AstNode for MatchSimple { &self.syntax } } -impl AstNode for Materialized { +impl AstNode for NoInherit { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::MATERIALIZED + kind == SyntaxKind::NO_INHERIT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17400,10 +21274,10 @@ impl AstNode for Materialized { &self.syntax } } -impl AstNode for Merge { +impl AstNode for NoInheritTable { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::MERGE + kind == SyntaxKind::NO_INHERIT_TABLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17418,10 +21292,10 @@ impl AstNode for Merge { &self.syntax } } -impl AstNode for MergeDelete { +impl AstNode for NonStandardParam { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::MERGE_DELETE + kind == SyntaxKind::NON_STANDARD_PARAM } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17436,10 +21310,10 @@ impl AstNode for MergeDelete { &self.syntax } } -impl AstNode for MergeDoNothing { +impl AstNode for NotDeferrable { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::MERGE_DO_NOTHING + kind == SyntaxKind::NOT_DEFERRABLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17454,10 +21328,10 @@ impl AstNode for MergeDoNothing { &self.syntax } } -impl AstNode for MergeInsert { +impl AstNode for NotDeferrableConstraintOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::MERGE_INSERT + kind == SyntaxKind::NOT_DEFERRABLE_CONSTRAINT_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17472,10 +21346,10 @@ impl AstNode for MergeInsert { &self.syntax } } -impl AstNode for MergeUpdate { +impl AstNode for NotEnforced { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::MERGE_UPDATE + kind == SyntaxKind::NOT_ENFORCED } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17490,10 +21364,10 @@ impl AstNode for MergeUpdate { &self.syntax } } -impl AstNode for MergeWhenMatched { +impl AstNode for NotIlike { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::MERGE_WHEN_MATCHED + kind == SyntaxKind::NOT_ILIKE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17508,10 +21382,10 @@ impl AstNode for MergeWhenMatched { &self.syntax } } -impl AstNode for MergeWhenNotMatchedSource { +impl AstNode for NotIn { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::MERGE_WHEN_NOT_MATCHED_SOURCE + kind == SyntaxKind::NOT_IN } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17526,10 +21400,10 @@ impl AstNode for MergeWhenNotMatchedSource { &self.syntax } } -impl AstNode for MergeWhenNotMatchedTarget { +impl AstNode for NotLike { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::MERGE_WHEN_NOT_MATCHED_TARGET + kind == SyntaxKind::NOT_LIKE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17544,10 +21418,10 @@ impl AstNode for MergeWhenNotMatchedTarget { &self.syntax } } -impl AstNode for Move { +impl AstNode for NotMaterialized { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::MOVE + kind == SyntaxKind::NOT_MATERIALIZED } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17562,10 +21436,10 @@ impl AstNode for Move { &self.syntax } } -impl AstNode for Name { +impl AstNode for NotNullConstraint { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NAME + kind == SyntaxKind::NOT_NULL_CONSTRAINT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17580,10 +21454,10 @@ impl AstNode for Name { &self.syntax } } -impl AstNode for NameRef { +impl AstNode for NotOf { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NAME_REF + kind == SyntaxKind::NOT_OF } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17598,10 +21472,10 @@ impl AstNode for NameRef { &self.syntax } } -impl AstNode for NamedArg { +impl AstNode for NotSimilarTo { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NAMED_ARG + kind == SyntaxKind::NOT_SIMILAR_TO } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17616,10 +21490,10 @@ impl AstNode for NamedArg { &self.syntax } } -impl AstNode for Neq { +impl AstNode for NotValid { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NEQ + kind == SyntaxKind::NOT_VALID } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17634,10 +21508,10 @@ impl AstNode for Neq { &self.syntax } } -impl AstNode for Neqb { +impl AstNode for Notify { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NEQB + kind == SyntaxKind::NOTIFY } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17652,10 +21526,10 @@ impl AstNode for Neqb { &self.syntax } } -impl AstNode for NoAction { +impl AstNode for NullConstraint { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NO_ACTION + kind == SyntaxKind::NULL_CONSTRAINT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17670,10 +21544,10 @@ impl AstNode for NoAction { &self.syntax } } -impl AstNode for NoForceRls { +impl AstNode for NullsDistinct { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NO_FORCE_RLS + kind == SyntaxKind::NULLS_DISTINCT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17688,10 +21562,10 @@ impl AstNode for NoForceRls { &self.syntax } } -impl AstNode for NoInherit { +impl AstNode for NullsFirst { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NO_INHERIT + kind == SyntaxKind::NULLS_FIRST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17706,10 +21580,10 @@ impl AstNode for NoInherit { &self.syntax } } -impl AstNode for NoInheritTable { +impl AstNode for NullsLast { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NO_INHERIT_TABLE + kind == SyntaxKind::NULLS_LAST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17724,10 +21598,10 @@ impl AstNode for NoInheritTable { &self.syntax } } -impl AstNode for NonStandardParam { +impl AstNode for NullsNotDistinct { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NON_STANDARD_PARAM + kind == SyntaxKind::NULLS_NOT_DISTINCT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17742,10 +21616,10 @@ impl AstNode for NonStandardParam { &self.syntax } } -impl AstNode for NotDeferrable { +impl AstNode for OfType { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NOT_DEFERRABLE + kind == SyntaxKind::OF_TYPE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17760,10 +21634,10 @@ impl AstNode for NotDeferrable { &self.syntax } } -impl AstNode for NotDeferrableConstraintOption { +impl AstNode for OffsetClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NOT_DEFERRABLE_CONSTRAINT_OPTION + kind == SyntaxKind::OFFSET_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17778,10 +21652,10 @@ impl AstNode for NotDeferrableConstraintOption { &self.syntax } } -impl AstNode for NotEnforced { +impl AstNode for OnClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NOT_ENFORCED + kind == SyntaxKind::ON_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17796,10 +21670,10 @@ impl AstNode for NotEnforced { &self.syntax } } -impl AstNode for NotIlike { +impl AstNode for OnCommit { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NOT_ILIKE + kind == SyntaxKind::ON_COMMIT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17814,10 +21688,10 @@ impl AstNode for NotIlike { &self.syntax } } -impl AstNode for NotIn { +impl AstNode for OnConflictClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NOT_IN + kind == SyntaxKind::ON_CONFLICT_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17832,10 +21706,10 @@ impl AstNode for NotIn { &self.syntax } } -impl AstNode for NotLike { +impl AstNode for OnDeleteAction { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NOT_LIKE + kind == SyntaxKind::ON_DELETE_ACTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17850,10 +21724,10 @@ impl AstNode for NotLike { &self.syntax } } -impl AstNode for NotMaterialized { +impl AstNode for OnTable { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NOT_MATERIALIZED + kind == SyntaxKind::ON_TABLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17868,10 +21742,10 @@ impl AstNode for NotMaterialized { &self.syntax } } -impl AstNode for NotNullConstraint { +impl AstNode for OnUpdateAction { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NOT_NULL_CONSTRAINT + kind == SyntaxKind::ON_UPDATE_ACTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17886,10 +21760,10 @@ impl AstNode for NotNullConstraint { &self.syntax } } -impl AstNode for NotOf { +impl AstNode for Op { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NOT_OF + kind == SyntaxKind::OP } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17904,10 +21778,10 @@ impl AstNode for NotOf { &self.syntax } } -impl AstNode for NotSimilarTo { +impl AstNode for OpClassOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NOT_SIMILAR_TO + kind == SyntaxKind::OP_CLASS_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17922,10 +21796,10 @@ impl AstNode for NotSimilarTo { &self.syntax } } -impl AstNode for NotValid { +impl AstNode for OpSig { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NOT_VALID + kind == SyntaxKind::OP_SIG } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17940,10 +21814,10 @@ impl AstNode for NotValid { &self.syntax } } -impl AstNode for Notify { +impl AstNode for OpSigList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NOTIFY + kind == SyntaxKind::OP_SIG_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17958,10 +21832,10 @@ impl AstNode for Notify { &self.syntax } } -impl AstNode for NullConstraint { +impl AstNode for OperatorCall { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NULL_CONSTRAINT + kind == SyntaxKind::OPERATOR_CALL } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17976,10 +21850,10 @@ impl AstNode for NullConstraint { &self.syntax } } -impl AstNode for NullsDistinct { +impl AstNode for OperatorClassOptionList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NULLS_DISTINCT + kind == SyntaxKind::OPERATOR_CLASS_OPTION_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -17994,10 +21868,10 @@ impl AstNode for NullsDistinct { &self.syntax } } -impl AstNode for NullsFirst { +impl AstNode for OptionItem { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NULLS_FIRST + kind == SyntaxKind::OPTION_ITEM } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18012,10 +21886,10 @@ impl AstNode for NullsFirst { &self.syntax } } -impl AstNode for NullsLast { +impl AstNode for OptionItemList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NULLS_LAST + kind == SyntaxKind::OPTION_ITEM_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18030,10 +21904,10 @@ impl AstNode for NullsLast { &self.syntax } } -impl AstNode for NullsNotDistinct { +impl AstNode for OrReplace { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::NULLS_NOT_DISTINCT + kind == SyntaxKind::OR_REPLACE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18048,10 +21922,10 @@ impl AstNode for NullsNotDistinct { &self.syntax } } -impl AstNode for OfType { +impl AstNode for OrderByClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::OF_TYPE + kind == SyntaxKind::ORDER_BY_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18066,10 +21940,10 @@ impl AstNode for OfType { &self.syntax } } -impl AstNode for OffsetClause { +impl AstNode for OverClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::OFFSET_CLAUSE + kind == SyntaxKind::OVER_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18084,10 +21958,10 @@ impl AstNode for OffsetClause { &self.syntax } } -impl AstNode for OnClause { +impl AstNode for OwnerTo { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ON_CLAUSE + kind == SyntaxKind::OWNER_TO } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18102,10 +21976,10 @@ impl AstNode for OnClause { &self.syntax } } -impl AstNode for OnCommit { +impl AstNode for ParallelFuncOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ON_COMMIT + kind == SyntaxKind::PARALLEL_FUNC_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18120,10 +21994,10 @@ impl AstNode for OnCommit { &self.syntax } } -impl AstNode for OnConflictClause { +impl AstNode for Param { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ON_CONFLICT_CLAUSE + kind == SyntaxKind::PARAM } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18138,10 +22012,10 @@ impl AstNode for OnConflictClause { &self.syntax } } -impl AstNode for OnDeleteAction { +impl AstNode for ParamDefault { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ON_DELETE_ACTION + kind == SyntaxKind::PARAM_DEFAULT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18156,10 +22030,10 @@ impl AstNode for OnDeleteAction { &self.syntax } } -impl AstNode for OnUpdateAction { +impl AstNode for ParamIn { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ON_UPDATE_ACTION + kind == SyntaxKind::PARAM_IN } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18174,10 +22048,10 @@ impl AstNode for OnUpdateAction { &self.syntax } } -impl AstNode for Op { +impl AstNode for ParamInOut { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::OP + kind == SyntaxKind::PARAM_IN_OUT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18192,10 +22066,10 @@ impl AstNode for Op { &self.syntax } } -impl AstNode for OperatorCall { +impl AstNode for ParamList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::OPERATOR_CALL + kind == SyntaxKind::PARAM_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18210,10 +22084,10 @@ impl AstNode for OperatorCall { &self.syntax } } -impl AstNode for OptionItem { +impl AstNode for ParamOut { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::OPTION_ITEM + kind == SyntaxKind::PARAM_OUT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18228,10 +22102,10 @@ impl AstNode for OptionItem { &self.syntax } } -impl AstNode for OptionItemList { +impl AstNode for ParamVariadic { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::OPTION_ITEM_LIST + kind == SyntaxKind::PARAM_VARIADIC } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18246,10 +22120,10 @@ impl AstNode for OptionItemList { &self.syntax } } -impl AstNode for OrReplace { +impl AstNode for ParenExpr { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::OR_REPLACE + kind == SyntaxKind::PAREN_EXPR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18264,10 +22138,10 @@ impl AstNode for OrReplace { &self.syntax } } -impl AstNode for OrderByClause { +impl AstNode for ParenSelect { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ORDER_BY_CLAUSE + kind == SyntaxKind::PAREN_SELECT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18282,10 +22156,10 @@ impl AstNode for OrderByClause { &self.syntax } } -impl AstNode for OverClause { +impl AstNode for PartitionBy { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::OVER_CLAUSE + kind == SyntaxKind::PARTITION_BY } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18300,10 +22174,10 @@ impl AstNode for OverClause { &self.syntax } } -impl AstNode for OwnerTo { +impl AstNode for PartitionDefault { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::OWNER_TO + kind == SyntaxKind::PARTITION_DEFAULT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18318,10 +22192,10 @@ impl AstNode for OwnerTo { &self.syntax } } -impl AstNode for ParallelFuncOption { +impl AstNode for PartitionForValuesFrom { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PARALLEL_FUNC_OPTION + kind == SyntaxKind::PARTITION_FOR_VALUES_FROM } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18336,10 +22210,10 @@ impl AstNode for ParallelFuncOption { &self.syntax } } -impl AstNode for Param { +impl AstNode for PartitionForValuesIn { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PARAM + kind == SyntaxKind::PARTITION_FOR_VALUES_IN } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18354,10 +22228,10 @@ impl AstNode for Param { &self.syntax } } -impl AstNode for ParamDefault { +impl AstNode for PartitionForValuesWith { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PARAM_DEFAULT + kind == SyntaxKind::PARTITION_FOR_VALUES_WITH } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18372,10 +22246,10 @@ impl AstNode for ParamDefault { &self.syntax } } -impl AstNode for ParamIn { +impl AstNode for PartitionItem { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PARAM_IN + kind == SyntaxKind::PARTITION_ITEM } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18390,10 +22264,10 @@ impl AstNode for ParamIn { &self.syntax } } -impl AstNode for ParamInOut { +impl AstNode for PartitionItemList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PARAM_IN_OUT + kind == SyntaxKind::PARTITION_ITEM_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18408,10 +22282,10 @@ impl AstNode for ParamInOut { &self.syntax } } -impl AstNode for ParamList { +impl AstNode for PartitionOf { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PARAM_LIST + kind == SyntaxKind::PARTITION_OF } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18426,10 +22300,10 @@ impl AstNode for ParamList { &self.syntax } } -impl AstNode for ParamOut { +impl AstNode for Path { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PARAM_OUT + kind == SyntaxKind::PATH } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18444,10 +22318,10 @@ impl AstNode for ParamOut { &self.syntax } } -impl AstNode for ParamVariadic { +impl AstNode for PathSegment { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PARAM_VARIADIC + kind == SyntaxKind::PATH_SEGMENT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18462,10 +22336,10 @@ impl AstNode for ParamVariadic { &self.syntax } } -impl AstNode for ParenExpr { +impl AstNode for PathType { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PAREN_EXPR + kind == SyntaxKind::PATH_TYPE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18480,10 +22354,10 @@ impl AstNode for ParenExpr { &self.syntax } } -impl AstNode for ParenSelect { +impl AstNode for PercentType { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PAREN_SELECT + kind == SyntaxKind::PERCENT_TYPE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18498,10 +22372,10 @@ impl AstNode for ParenSelect { &self.syntax } } -impl AstNode for PartitionBy { +impl AstNode for PercentTypeClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PARTITION_BY + kind == SyntaxKind::PERCENT_TYPE_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18516,10 +22390,10 @@ impl AstNode for PartitionBy { &self.syntax } } -impl AstNode for PartitionDefault { +impl AstNode for PostfixExpr { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PARTITION_DEFAULT + kind == SyntaxKind::POSTFIX_EXPR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18534,10 +22408,10 @@ impl AstNode for PartitionDefault { &self.syntax } } -impl AstNode for PartitionForValuesFrom { +impl AstNode for PrefixExpr { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PARTITION_FOR_VALUES_FROM + kind == SyntaxKind::PREFIX_EXPR } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18552,10 +22426,10 @@ impl AstNode for PartitionForValuesFrom { &self.syntax } } -impl AstNode for PartitionForValuesIn { +impl AstNode for Prepare { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PARTITION_FOR_VALUES_IN + kind == SyntaxKind::PREPARE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18570,10 +22444,10 @@ impl AstNode for PartitionForValuesIn { &self.syntax } } -impl AstNode for PartitionForValuesWith { +impl AstNode for PrepareTransaction { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PARTITION_FOR_VALUES_WITH + kind == SyntaxKind::PREPARE_TRANSACTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18588,10 +22462,10 @@ impl AstNode for PartitionForValuesWith { &self.syntax } } -impl AstNode for PartitionItem { +impl AstNode for PreserveRows { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PARTITION_ITEM + kind == SyntaxKind::PRESERVE_ROWS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18606,10 +22480,10 @@ impl AstNode for PartitionItem { &self.syntax } } -impl AstNode for PartitionItemList { +impl AstNode for PrimaryKeyConstraint { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PARTITION_ITEM_LIST + kind == SyntaxKind::PRIMARY_KEY_CONSTRAINT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18624,10 +22498,10 @@ impl AstNode for PartitionItemList { &self.syntax } } -impl AstNode for PartitionOf { +impl AstNode for PrivilegeTarget { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PARTITION_OF + kind == SyntaxKind::PRIVILEGE_TARGET } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18642,10 +22516,10 @@ impl AstNode for PartitionOf { &self.syntax } } -impl AstNode for Path { +impl AstNode for Privileges { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PATH + kind == SyntaxKind::PRIVILEGES } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18660,10 +22534,10 @@ impl AstNode for Path { &self.syntax } } -impl AstNode for PathSegment { +impl AstNode for ReadCommitted { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PATH_SEGMENT + kind == SyntaxKind::READ_COMMITTED } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18678,10 +22552,10 @@ impl AstNode for PathSegment { &self.syntax } } -impl AstNode for PathType { +impl AstNode for ReadOnly { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PATH_TYPE + kind == SyntaxKind::READ_ONLY } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18696,10 +22570,10 @@ impl AstNode for PathType { &self.syntax } } -impl AstNode for PercentType { +impl AstNode for ReadUncommitted { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PERCENT_TYPE + kind == SyntaxKind::READ_UNCOMMITTED } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18714,10 +22588,10 @@ impl AstNode for PercentType { &self.syntax } } -impl AstNode for PercentTypeClause { +impl AstNode for ReadWrite { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PERCENT_TYPE_CLAUSE + kind == SyntaxKind::READ_WRITE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18732,10 +22606,10 @@ impl AstNode for PercentTypeClause { &self.syntax } } -impl AstNode for PostfixExpr { +impl AstNode for Reassign { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::POSTFIX_EXPR + kind == SyntaxKind::REASSIGN } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18750,10 +22624,10 @@ impl AstNode for PostfixExpr { &self.syntax } } -impl AstNode for PrefixExpr { +impl AstNode for ReferencesConstraint { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PREFIX_EXPR + kind == SyntaxKind::REFERENCES_CONSTRAINT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18768,10 +22642,10 @@ impl AstNode for PrefixExpr { &self.syntax } } -impl AstNode for Prepare { +impl AstNode for Referencing { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PREPARE + kind == SyntaxKind::REFERENCING } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18786,10 +22660,10 @@ impl AstNode for Prepare { &self.syntax } } -impl AstNode for PrepareTransaction { +impl AstNode for ReferencingTable { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PREPARE_TRANSACTION + kind == SyntaxKind::REFERENCING_TABLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18804,10 +22678,10 @@ impl AstNode for PrepareTransaction { &self.syntax } } -impl AstNode for PreserveRows { +impl AstNode for Refresh { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PRESERVE_ROWS + kind == SyntaxKind::REFRESH } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18822,10 +22696,10 @@ impl AstNode for PreserveRows { &self.syntax } } -impl AstNode for PrimaryKeyConstraint { +impl AstNode for RefreshCollationVersion { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::PRIMARY_KEY_CONSTRAINT + kind == SyntaxKind::REFRESH_COLLATION_VERSION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18840,10 +22714,10 @@ impl AstNode for PrimaryKeyConstraint { &self.syntax } } -impl AstNode for ReadCommitted { +impl AstNode for RefreshVersion { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::READ_COMMITTED + kind == SyntaxKind::REFRESH_VERSION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18858,10 +22732,10 @@ impl AstNode for ReadCommitted { &self.syntax } } -impl AstNode for ReadOnly { +impl AstNode for Reindex { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::READ_ONLY + kind == SyntaxKind::REINDEX } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18876,10 +22750,10 @@ impl AstNode for ReadOnly { &self.syntax } } -impl AstNode for ReadUncommitted { +impl AstNode for RelationName { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::READ_UNCOMMITTED + kind == SyntaxKind::RELATION_NAME } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18894,10 +22768,10 @@ impl AstNode for ReadUncommitted { &self.syntax } } -impl AstNode for ReadWrite { +impl AstNode for ReleaseSavepoint { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::READ_WRITE + kind == SyntaxKind::RELEASE_SAVEPOINT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18912,10 +22786,10 @@ impl AstNode for ReadWrite { &self.syntax } } -impl AstNode for Reassign { +impl AstNode for RenameColumn { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::REASSIGN + kind == SyntaxKind::RENAME_COLUMN } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18930,10 +22804,10 @@ impl AstNode for Reassign { &self.syntax } } -impl AstNode for ReferencesConstraint { +impl AstNode for RenameConstraint { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::REFERENCES_CONSTRAINT + kind == SyntaxKind::RENAME_CONSTRAINT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18948,10 +22822,10 @@ impl AstNode for ReferencesConstraint { &self.syntax } } -impl AstNode for Refresh { +impl AstNode for RenameTo { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::REFRESH + kind == SyntaxKind::RENAME_TO } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18966,10 +22840,10 @@ impl AstNode for Refresh { &self.syntax } } -impl AstNode for Reindex { +impl AstNode for RepeatableRead { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::REINDEX + kind == SyntaxKind::REPEATABLE_READ } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -18984,10 +22858,10 @@ impl AstNode for Reindex { &self.syntax } } -impl AstNode for RelationName { +impl AstNode for ReplicaIdentity { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::RELATION_NAME + kind == SyntaxKind::REPLICA_IDENTITY } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19002,10 +22876,10 @@ impl AstNode for RelationName { &self.syntax } } -impl AstNode for ReleaseSavepoint { +impl AstNode for Reset { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::RELEASE_SAVEPOINT + kind == SyntaxKind::RESET } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19020,10 +22894,10 @@ impl AstNode for ReleaseSavepoint { &self.syntax } } -impl AstNode for RenameColumn { +impl AstNode for ResetConfigParam { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::RENAME_COLUMN + kind == SyntaxKind::RESET_CONFIG_PARAM } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19038,10 +22912,10 @@ impl AstNode for RenameColumn { &self.syntax } } -impl AstNode for RenameConstraint { +impl AstNode for ResetFuncOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::RENAME_CONSTRAINT + kind == SyntaxKind::RESET_FUNC_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19056,10 +22930,10 @@ impl AstNode for RenameConstraint { &self.syntax } } -impl AstNode for RenameTable { +impl AstNode for ResetOptions { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::RENAME_TABLE + kind == SyntaxKind::RESET_OPTIONS } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19074,10 +22948,10 @@ impl AstNode for RenameTable { &self.syntax } } -impl AstNode for RenameTo { +impl AstNode for ResetSessionAuth { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::RENAME_TO + kind == SyntaxKind::RESET_SESSION_AUTH } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19092,10 +22966,10 @@ impl AstNode for RenameTo { &self.syntax } } -impl AstNode for RepeatableRead { +impl AstNode for Restart { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::REPEATABLE_READ + kind == SyntaxKind::RESTART } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19110,10 +22984,10 @@ impl AstNode for RepeatableRead { &self.syntax } } -impl AstNode for ReplicaIdentity { +impl AstNode for Restrict { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::REPLICA_IDENTITY + kind == SyntaxKind::RESTRICT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19128,10 +23002,10 @@ impl AstNode for ReplicaIdentity { &self.syntax } } -impl AstNode for Reset { +impl AstNode for RetType { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::RESET + kind == SyntaxKind::RET_TYPE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19146,10 +23020,10 @@ impl AstNode for Reset { &self.syntax } } -impl AstNode for ResetFuncOption { +impl AstNode for ReturnFuncOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::RESET_FUNC_OPTION + kind == SyntaxKind::RETURN_FUNC_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19164,10 +23038,10 @@ impl AstNode for ResetFuncOption { &self.syntax } } -impl AstNode for ResetOptions { +impl AstNode for ReturningClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::RESET_OPTIONS + kind == SyntaxKind::RETURNING_CLAUSE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19182,10 +23056,10 @@ impl AstNode for ResetOptions { &self.syntax } } -impl AstNode for ResetStorageParams { +impl AstNode for ReturningOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::RESET_STORAGE_PARAMS + kind == SyntaxKind::RETURNING_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19200,10 +23074,10 @@ impl AstNode for ResetStorageParams { &self.syntax } } -impl AstNode for Restart { +impl AstNode for ReturningOptionList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::RESTART + kind == SyntaxKind::RETURNING_OPTION_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19218,10 +23092,10 @@ impl AstNode for Restart { &self.syntax } } -impl AstNode for Restrict { +impl AstNode for Revoke { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::RESTRICT + kind == SyntaxKind::REVOKE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19236,10 +23110,10 @@ impl AstNode for Restrict { &self.syntax } } -impl AstNode for RetType { +impl AstNode for RevokeCommand { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::RET_TYPE + kind == SyntaxKind::REVOKE_COMMAND } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19254,10 +23128,10 @@ impl AstNode for RetType { &self.syntax } } -impl AstNode for ReturnFuncOption { +impl AstNode for RevokeCommandList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::RETURN_FUNC_OPTION + kind == SyntaxKind::REVOKE_COMMAND_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19272,10 +23146,10 @@ impl AstNode for ReturnFuncOption { &self.syntax } } -impl AstNode for ReturningClause { +impl AstNode for RevokeDefaultPrivileges { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::RETURNING_CLAUSE + kind == SyntaxKind::REVOKE_DEFAULT_PRIVILEGES } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19290,10 +23164,10 @@ impl AstNode for ReturningClause { &self.syntax } } -impl AstNode for Revoke { +impl AstNode for Role { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::REVOKE + kind == SyntaxKind::ROLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19308,10 +23182,10 @@ impl AstNode for Revoke { &self.syntax } } -impl AstNode for Role { +impl AstNode for RoleList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::ROLE + kind == SyntaxKind::ROLE_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -19452,6 +23326,24 @@ impl AstNode for Savepoint { &self.syntax } } +impl AstNode for SchemaAuthorization { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::SCHEMA_AUTHORIZATION + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} impl AstNode for SecurityFuncOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { @@ -19686,6 +23578,24 @@ impl AstNode for SetCompression { &self.syntax } } +impl AstNode for SetConfigParam { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::SET_CONFIG_PARAM + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} impl AstNode for SetConstraints { #[inline] fn can_cast(kind: SyntaxKind) -> bool { @@ -20082,24 +23992,6 @@ impl AstNode for SetStorage { &self.syntax } } -impl AstNode for SetStorageParams { - #[inline] - fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::SET_STORAGE_PARAMS - } - #[inline] - fn cast(syntax: SyntaxNode) -> Option { - if Self::can_cast(syntax.kind()) { - Some(Self { syntax }) - } else { - None - } - } - #[inline] - fn syntax(&self) -> &SyntaxNode { - &self.syntax - } -} impl AstNode for SetTablespace { #[inline] fn can_cast(kind: SyntaxKind) -> bool { @@ -20247,7 +24139,115 @@ impl AstNode for SimilarTo { impl AstNode for SliceExpr { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::SLICE_EXPR + kind == SyntaxKind::SLICE_EXPR + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for SortAsc { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::SORT_ASC + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for SortBy { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::SORT_BY + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for SortByList { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::SORT_BY_LIST + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for SortDesc { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::SORT_DESC + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for SortUsing { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::SORT_USING + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} +impl AstNode for SourceFile { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::SOURCE_FILE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20262,10 +24262,10 @@ impl AstNode for SliceExpr { &self.syntax } } -impl AstNode for SortAsc { +impl AstNode for Storage { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::SORT_ASC + kind == SyntaxKind::STORAGE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20280,10 +24280,10 @@ impl AstNode for SortAsc { &self.syntax } } -impl AstNode for SortBy { +impl AstNode for StrictFuncOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::SORT_BY + kind == SyntaxKind::STRICT_FUNC_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20298,10 +24298,10 @@ impl AstNode for SortBy { &self.syntax } } -impl AstNode for SortByList { +impl AstNode for SupportFuncOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::SORT_BY_LIST + kind == SyntaxKind::SUPPORT_FUNC_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20316,10 +24316,10 @@ impl AstNode for SortByList { &self.syntax } } -impl AstNode for SortDesc { +impl AstNode for Table { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::SORT_DESC + kind == SyntaxKind::TABLE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20334,10 +24334,10 @@ impl AstNode for SortDesc { &self.syntax } } -impl AstNode for SortUsing { +impl AstNode for TableArgList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::SORT_USING + kind == SyntaxKind::TABLE_ARG_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20352,10 +24352,10 @@ impl AstNode for SortUsing { &self.syntax } } -impl AstNode for SourceFile { +impl AstNode for TableList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::SOURCE_FILE + kind == SyntaxKind::TABLE_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20370,10 +24370,10 @@ impl AstNode for SourceFile { &self.syntax } } -impl AstNode for Storage { +impl AstNode for Tablespace { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::STORAGE + kind == SyntaxKind::TABLESPACE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20388,10 +24388,10 @@ impl AstNode for Storage { &self.syntax } } -impl AstNode for StrictFuncOption { +impl AstNode for Target { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::STRICT_FUNC_OPTION + kind == SyntaxKind::TARGET } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20406,10 +24406,10 @@ impl AstNode for StrictFuncOption { &self.syntax } } -impl AstNode for SupportFuncOption { +impl AstNode for TargetList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::SUPPORT_FUNC_OPTION + kind == SyntaxKind::TARGET_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20424,10 +24424,10 @@ impl AstNode for SupportFuncOption { &self.syntax } } -impl AstNode for Table { +impl AstNode for TimeType { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::TABLE + kind == SyntaxKind::TIME_TYPE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20442,10 +24442,10 @@ impl AstNode for Table { &self.syntax } } -impl AstNode for TableArgList { +impl AstNode for Timing { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::TABLE_ARG_LIST + kind == SyntaxKind::TIMING } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20460,10 +24460,10 @@ impl AstNode for TableArgList { &self.syntax } } -impl AstNode for TableList { +impl AstNode for TransactionModeList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::TABLE_LIST + kind == SyntaxKind::TRANSACTION_MODE_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20478,10 +24478,10 @@ impl AstNode for TableList { &self.syntax } } -impl AstNode for Tablespace { +impl AstNode for TransformFromFunc { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::TABLESPACE + kind == SyntaxKind::TRANSFORM_FROM_FUNC } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20496,10 +24496,10 @@ impl AstNode for Tablespace { &self.syntax } } -impl AstNode for Target { +impl AstNode for TransformFuncOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::TARGET + kind == SyntaxKind::TRANSFORM_FUNC_OPTION } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20514,10 +24514,10 @@ impl AstNode for Target { &self.syntax } } -impl AstNode for TargetList { +impl AstNode for TransformToFunc { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::TARGET_LIST + kind == SyntaxKind::TRANSFORM_TO_FUNC } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20532,10 +24532,10 @@ impl AstNode for TargetList { &self.syntax } } -impl AstNode for TimeType { +impl AstNode for TriggerEvent { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::TIME_TYPE + kind == SyntaxKind::TRIGGER_EVENT } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20550,10 +24550,10 @@ impl AstNode for TimeType { &self.syntax } } -impl AstNode for TransactionModeList { +impl AstNode for TriggerEventList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::TRANSACTION_MODE_LIST + kind == SyntaxKind::TRIGGER_EVENT_LIST } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20568,10 +24568,10 @@ impl AstNode for TransactionModeList { &self.syntax } } -impl AstNode for TransformFuncOption { +impl AstNode for TriggerEventUpdate { #[inline] fn can_cast(kind: SyntaxKind) -> bool { - kind == SyntaxKind::TRANSFORM_FUNC_OPTION + kind == SyntaxKind::TRIGGER_EVENT_UPDATE } #[inline] fn cast(syntax: SyntaxNode) -> Option { @@ -20946,6 +24946,24 @@ impl AstNode for WhenClauseList { &self.syntax } } +impl AstNode for WhenCondition { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::WHEN_CONDITION + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + if Self::can_cast(syntax.kind()) { + Some(Self { syntax }) + } else { + None + } + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + &self.syntax + } +} impl AstNode for WhereClause { #[inline] fn can_cast(kind: SyntaxKind) -> bool { @@ -21642,6 +25660,83 @@ impl From for AlterDomainAction { AlterDomainAction::ValidateConstraint(node) } } +impl AstNode for AlterMaterializedViewAction { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + matches!( + kind, + SyntaxKind::DEPENDS_ON_EXTENSION + | SyntaxKind::NO_DEPENDS_ON_EXTENSION + | SyntaxKind::RENAME_COLUMN + | SyntaxKind::RENAME_TO + | SyntaxKind::SET_SCHEMA + ) + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + let res = match syntax.kind() { + SyntaxKind::DEPENDS_ON_EXTENSION => { + AlterMaterializedViewAction::DependsOnExtension(DependsOnExtension { syntax }) + } + SyntaxKind::NO_DEPENDS_ON_EXTENSION => { + AlterMaterializedViewAction::NoDependsOnExtension(NoDependsOnExtension { syntax }) + } + SyntaxKind::RENAME_COLUMN => { + AlterMaterializedViewAction::RenameColumn(RenameColumn { syntax }) + } + SyntaxKind::RENAME_TO => AlterMaterializedViewAction::RenameTo(RenameTo { syntax }), + SyntaxKind::SET_SCHEMA => AlterMaterializedViewAction::SetSchema(SetSchema { syntax }), + _ => { + if let Some(result) = AlterTableAction::cast(syntax) { + return Some(AlterMaterializedViewAction::AlterTableAction(result)); + } + return None; + } + }; + Some(res) + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + match self { + AlterMaterializedViewAction::DependsOnExtension(it) => &it.syntax, + AlterMaterializedViewAction::NoDependsOnExtension(it) => &it.syntax, + AlterMaterializedViewAction::RenameColumn(it) => &it.syntax, + AlterMaterializedViewAction::RenameTo(it) => &it.syntax, + AlterMaterializedViewAction::SetSchema(it) => &it.syntax, + AlterMaterializedViewAction::AlterTableAction(it) => it.syntax(), + } + } +} +impl From for AlterMaterializedViewAction { + #[inline] + fn from(node: DependsOnExtension) -> AlterMaterializedViewAction { + AlterMaterializedViewAction::DependsOnExtension(node) + } +} +impl From for AlterMaterializedViewAction { + #[inline] + fn from(node: NoDependsOnExtension) -> AlterMaterializedViewAction { + AlterMaterializedViewAction::NoDependsOnExtension(node) + } +} +impl From for AlterMaterializedViewAction { + #[inline] + fn from(node: RenameColumn) -> AlterMaterializedViewAction { + AlterMaterializedViewAction::RenameColumn(node) + } +} +impl From for AlterMaterializedViewAction { + #[inline] + fn from(node: RenameTo) -> AlterMaterializedViewAction { + AlterMaterializedViewAction::RenameTo(node) + } +} +impl From for AlterMaterializedViewAction { + #[inline] + fn from(node: SetSchema) -> AlterMaterializedViewAction { + AlterMaterializedViewAction::SetSchema(node) + } +} impl AstNode for AlterTableAction { #[inline] fn can_cast(kind: SyntaxKind) -> bool { @@ -21676,13 +25771,13 @@ impl AstNode for AlterTableAction { | SyntaxKind::OWNER_TO | SyntaxKind::RENAME_COLUMN | SyntaxKind::RENAME_CONSTRAINT - | SyntaxKind::RENAME_TABLE + | SyntaxKind::RENAME_TO | SyntaxKind::REPLICA_IDENTITY - | SyntaxKind::RESET_STORAGE_PARAMS + | SyntaxKind::RESET_OPTIONS | SyntaxKind::SET_ACCESS_METHOD | SyntaxKind::SET_LOGGED + | SyntaxKind::SET_OPTIONS | SyntaxKind::SET_SCHEMA - | SyntaxKind::SET_STORAGE_PARAMS | SyntaxKind::SET_TABLESPACE | SyntaxKind::SET_UNLOGGED | SyntaxKind::SET_WITHOUT_CLUSTER @@ -21746,21 +25841,17 @@ impl AstNode for AlterTableAction { SyntaxKind::RENAME_CONSTRAINT => { AlterTableAction::RenameConstraint(RenameConstraint { syntax }) } - SyntaxKind::RENAME_TABLE => AlterTableAction::RenameTable(RenameTable { syntax }), + SyntaxKind::RENAME_TO => AlterTableAction::RenameTo(RenameTo { syntax }), SyntaxKind::REPLICA_IDENTITY => { AlterTableAction::ReplicaIdentity(ReplicaIdentity { syntax }) } - SyntaxKind::RESET_STORAGE_PARAMS => { - AlterTableAction::ResetStorageParams(ResetStorageParams { syntax }) - } + SyntaxKind::RESET_OPTIONS => AlterTableAction::ResetOptions(ResetOptions { syntax }), SyntaxKind::SET_ACCESS_METHOD => { AlterTableAction::SetAccessMethod(SetAccessMethod { syntax }) } SyntaxKind::SET_LOGGED => AlterTableAction::SetLogged(SetLogged { syntax }), + SyntaxKind::SET_OPTIONS => AlterTableAction::SetOptions(SetOptions { syntax }), SyntaxKind::SET_SCHEMA => AlterTableAction::SetSchema(SetSchema { syntax }), - SyntaxKind::SET_STORAGE_PARAMS => { - AlterTableAction::SetStorageParams(SetStorageParams { syntax }) - } SyntaxKind::SET_TABLESPACE => AlterTableAction::SetTablespace(SetTablespace { syntax }), SyntaxKind::SET_UNLOGGED => AlterTableAction::SetUnlogged(SetUnlogged { syntax }), SyntaxKind::SET_WITHOUT_CLUSTER => { @@ -21810,13 +25901,13 @@ impl AstNode for AlterTableAction { AlterTableAction::OwnerTo(it) => &it.syntax, AlterTableAction::RenameColumn(it) => &it.syntax, AlterTableAction::RenameConstraint(it) => &it.syntax, - AlterTableAction::RenameTable(it) => &it.syntax, + AlterTableAction::RenameTo(it) => &it.syntax, AlterTableAction::ReplicaIdentity(it) => &it.syntax, - AlterTableAction::ResetStorageParams(it) => &it.syntax, + AlterTableAction::ResetOptions(it) => &it.syntax, AlterTableAction::SetAccessMethod(it) => &it.syntax, AlterTableAction::SetLogged(it) => &it.syntax, + AlterTableAction::SetOptions(it) => &it.syntax, AlterTableAction::SetSchema(it) => &it.syntax, - AlterTableAction::SetStorageParams(it) => &it.syntax, AlterTableAction::SetTablespace(it) => &it.syntax, AlterTableAction::SetUnlogged(it) => &it.syntax, AlterTableAction::SetWithoutCluster(it) => &it.syntax, @@ -21999,10 +26090,10 @@ impl From for AlterTableAction { AlterTableAction::RenameConstraint(node) } } -impl From for AlterTableAction { +impl From for AlterTableAction { #[inline] - fn from(node: RenameTable) -> AlterTableAction { - AlterTableAction::RenameTable(node) + fn from(node: RenameTo) -> AlterTableAction { + AlterTableAction::RenameTo(node) } } impl From for AlterTableAction { @@ -22011,10 +26102,10 @@ impl From for AlterTableAction { AlterTableAction::ReplicaIdentity(node) } } -impl From for AlterTableAction { +impl From for AlterTableAction { #[inline] - fn from(node: ResetStorageParams) -> AlterTableAction { - AlterTableAction::ResetStorageParams(node) + fn from(node: ResetOptions) -> AlterTableAction { + AlterTableAction::ResetOptions(node) } } impl From for AlterTableAction { @@ -22029,16 +26120,16 @@ impl From for AlterTableAction { AlterTableAction::SetLogged(node) } } -impl From for AlterTableAction { +impl From for AlterTableAction { #[inline] - fn from(node: SetSchema) -> AlterTableAction { - AlterTableAction::SetSchema(node) + fn from(node: SetOptions) -> AlterTableAction { + AlterTableAction::SetOptions(node) } } -impl From for AlterTableAction { +impl From for AlterTableAction { #[inline] - fn from(node: SetStorageParams) -> AlterTableAction { - AlterTableAction::SetStorageParams(node) + fn from(node: SetSchema) -> AlterTableAction { + AlterTableAction::SetSchema(node) } } impl From for AlterTableAction { @@ -22077,6 +26168,7 @@ impl AstNode for ColumnConstraint { matches!( kind, SyntaxKind::CHECK_CONSTRAINT + | SyntaxKind::DEFAULT_CONSTRAINT | SyntaxKind::EXCLUDE_CONSTRAINT | SyntaxKind::NOT_NULL_CONSTRAINT | SyntaxKind::PRIMARY_KEY_CONSTRAINT @@ -22090,6 +26182,9 @@ impl AstNode for ColumnConstraint { SyntaxKind::CHECK_CONSTRAINT => { ColumnConstraint::CheckConstraint(CheckConstraint { syntax }) } + SyntaxKind::DEFAULT_CONSTRAINT => { + ColumnConstraint::DefaultConstraint(DefaultConstraint { syntax }) + } SyntaxKind::EXCLUDE_CONSTRAINT => { ColumnConstraint::ExcludeConstraint(ExcludeConstraint { syntax }) } @@ -22115,6 +26210,7 @@ impl AstNode for ColumnConstraint { fn syntax(&self) -> &SyntaxNode { match self { ColumnConstraint::CheckConstraint(it) => &it.syntax, + ColumnConstraint::DefaultConstraint(it) => &it.syntax, ColumnConstraint::ExcludeConstraint(it) => &it.syntax, ColumnConstraint::NotNullConstraint(it) => &it.syntax, ColumnConstraint::PrimaryKeyConstraint(it) => &it.syntax, @@ -22129,6 +26225,12 @@ impl From for ColumnConstraint { ColumnConstraint::CheckConstraint(node) } } +impl From for ColumnConstraint { + #[inline] + fn from(node: DefaultConstraint) -> ColumnConstraint { + ColumnConstraint::DefaultConstraint(node) + } +} impl From for ColumnConstraint { #[inline] fn from(node: ExcludeConstraint) -> ColumnConstraint { @@ -23425,6 +27527,111 @@ impl From for PartitionType { PartitionType::PartitionForValuesWith(node) } } +impl AstNode for PreparableStmt { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + matches!( + kind, + SyntaxKind::COMPOUND_SELECT + | SyntaxKind::DELETE + | SyntaxKind::INSERT + | SyntaxKind::MERGE + | SyntaxKind::SELECT + | SyntaxKind::SELECT_INTO + | SyntaxKind::TABLE + | SyntaxKind::UPDATE + | SyntaxKind::VALUES + ) + } + #[inline] + fn cast(syntax: SyntaxNode) -> Option { + let res = match syntax.kind() { + SyntaxKind::COMPOUND_SELECT => { + PreparableStmt::CompoundSelect(CompoundSelect { syntax }) + } + SyntaxKind::DELETE => PreparableStmt::Delete(Delete { syntax }), + SyntaxKind::INSERT => PreparableStmt::Insert(Insert { syntax }), + SyntaxKind::MERGE => PreparableStmt::Merge(Merge { syntax }), + SyntaxKind::SELECT => PreparableStmt::Select(Select { syntax }), + SyntaxKind::SELECT_INTO => PreparableStmt::SelectInto(SelectInto { syntax }), + SyntaxKind::TABLE => PreparableStmt::Table(Table { syntax }), + SyntaxKind::UPDATE => PreparableStmt::Update(Update { syntax }), + SyntaxKind::VALUES => PreparableStmt::Values(Values { syntax }), + _ => { + return None; + } + }; + Some(res) + } + #[inline] + fn syntax(&self) -> &SyntaxNode { + match self { + PreparableStmt::CompoundSelect(it) => &it.syntax, + PreparableStmt::Delete(it) => &it.syntax, + PreparableStmt::Insert(it) => &it.syntax, + PreparableStmt::Merge(it) => &it.syntax, + PreparableStmt::Select(it) => &it.syntax, + PreparableStmt::SelectInto(it) => &it.syntax, + PreparableStmt::Table(it) => &it.syntax, + PreparableStmt::Update(it) => &it.syntax, + PreparableStmt::Values(it) => &it.syntax, + } + } +} +impl From for PreparableStmt { + #[inline] + fn from(node: CompoundSelect) -> PreparableStmt { + PreparableStmt::CompoundSelect(node) + } +} +impl From for PreparableStmt { + #[inline] + fn from(node: Delete) -> PreparableStmt { + PreparableStmt::Delete(node) + } +} +impl From for PreparableStmt { + #[inline] + fn from(node: Insert) -> PreparableStmt { + PreparableStmt::Insert(node) + } +} +impl From for PreparableStmt { + #[inline] + fn from(node: Merge) -> PreparableStmt { + PreparableStmt::Merge(node) + } +} +impl From for WithQuery { #[inline] fn from(node: Select) -> WithQuery { WithQuery::Select(node) } } +impl From for WithQuery { + #[inline] + fn from(node: Table) -> WithQuery { + WithQuery::Table(node) + } +} impl From for WithQuery { #[inline] fn from(node: Update) -> WithQuery { diff --git a/crates/squawk_syntax/src/ast/node_ext.rs b/crates/squawk_syntax/src/ast/node_ext.rs index 8fb20ae3..bb587e2b 100644 --- a/crates/squawk_syntax/src/ast/node_ext.rs +++ b/crates/squawk_syntax/src/ast/node_ext.rs @@ -26,8 +26,12 @@ use std::borrow::Cow; +#[cfg(test)] +use insta::assert_snapshot; use rowan::{GreenNodeData, GreenTokenData, NodeOrToken}; +#[cfg(test)] +use crate::SourceFile; use crate::ast; use crate::ast::AstNode; use crate::{SyntaxNode, TokenText}; @@ -186,6 +190,30 @@ impl ast::CharType { } } +impl ast::OpSig { + #[inline] + pub fn lhs(&self) -> Option { + support::children(self.syntax()).next() + } + + #[inline] + pub fn rhs(&self) -> Option { + support::children(self.syntax()).nth(1) + } +} + +impl ast::CastSig { + #[inline] + pub fn lhs(&self) -> Option { + support::children(self.syntax()).next() + } + + #[inline] + pub fn rhs(&self) -> Option { + support::children(self.syntax()).nth(1) + } +} + pub(crate) fn text_of_first_token(node: &SyntaxNode) -> TokenText<'_> { fn first_token(green_ref: &GreenNodeData) -> &GreenTokenData { green_ref @@ -200,3 +228,276 @@ pub(crate) fn text_of_first_token(node: &SyntaxNode) -> TokenText<'_> { Cow::Owned(green) => TokenText::owned(first_token(&green).to_owned()), } } + +#[test] +fn index_expr() { + let source_code = " + select foo[bar]; + "; + let parse = SourceFile::parse(source_code); + assert!(parse.errors().is_empty()); + let file: SourceFile = parse.tree(); + let stmt = file.stmts().next().unwrap(); + let ast::Stmt::Select(select) = stmt else { + unreachable!() + }; + let select_clause = select.select_clause().unwrap(); + let target = select_clause + .target_list() + .unwrap() + .targets() + .next() + .unwrap(); + let ast::Expr::IndexExpr(index_expr) = target.expr().unwrap() else { + unreachable!() + }; + let base = index_expr.base().unwrap(); + let index = index_expr.index().unwrap(); + assert_eq!(base.syntax().text(), "foo"); + assert_eq!(index.syntax().text(), "bar"); +} + +#[test] +fn slice_expr() { + use insta::assert_snapshot; + let source_code = " + select x[1:2], x[2:], x[:3], x[:]; + "; + let parse = SourceFile::parse(source_code); + assert!(parse.errors().is_empty()); + let file: SourceFile = parse.tree(); + let stmt = file.stmts().next().unwrap(); + let ast::Stmt::Select(select) = stmt else { + unreachable!() + }; + let select_clause = select.select_clause().unwrap(); + let mut targets = select_clause.target_list().unwrap().targets(); + + let ast::Expr::SliceExpr(slice) = targets.next().unwrap().expr().unwrap() else { + unreachable!() + }; + assert_snapshot!(slice.syntax(), @"x[1:2]"); + assert_eq!(slice.base().unwrap().syntax().text(), "x"); + assert_eq!(slice.start().unwrap().syntax().text(), "1"); + assert_eq!(slice.end().unwrap().syntax().text(), "2"); + + let ast::Expr::SliceExpr(slice) = targets.next().unwrap().expr().unwrap() else { + unreachable!() + }; + assert_snapshot!(slice.syntax(), @"x[2:]"); + assert_eq!(slice.base().unwrap().syntax().text(), "x"); + assert_eq!(slice.start().unwrap().syntax().text(), "2"); + assert!(slice.end().is_none()); + + let ast::Expr::SliceExpr(slice) = targets.next().unwrap().expr().unwrap() else { + unreachable!() + }; + assert_snapshot!(slice.syntax(), @"x[:3]"); + assert_eq!(slice.base().unwrap().syntax().text(), "x"); + assert!(slice.start().is_none()); + assert_eq!(slice.end().unwrap().syntax().text(), "3"); + + let ast::Expr::SliceExpr(slice) = targets.next().unwrap().expr().unwrap() else { + unreachable!() + }; + assert_snapshot!(slice.syntax(), @"x[:]"); + assert_eq!(slice.base().unwrap().syntax().text(), "x"); + assert!(slice.start().is_none()); + assert!(slice.end().is_none()); +} + +#[test] +fn field_expr() { + let source_code = " + select foo.bar; + "; + let parse = SourceFile::parse(source_code); + assert!(parse.errors().is_empty()); + let file: SourceFile = parse.tree(); + let stmt = file.stmts().next().unwrap(); + let ast::Stmt::Select(select) = stmt else { + unreachable!() + }; + let select_clause = select.select_clause().unwrap(); + let target = select_clause + .target_list() + .unwrap() + .targets() + .next() + .unwrap(); + let ast::Expr::FieldExpr(field_expr) = target.expr().unwrap() else { + unreachable!() + }; + let base = field_expr.base().unwrap(); + let field = field_expr.field().unwrap(); + assert_eq!(base.syntax().text(), "foo"); + assert_eq!(field.syntax().text(), "bar"); +} + +#[test] +fn between_expr() { + let source_code = " + select 2 between 1 and 3; + "; + let parse = SourceFile::parse(source_code); + assert!(parse.errors().is_empty()); + let file: SourceFile = parse.tree(); + let stmt = file.stmts().next().unwrap(); + let ast::Stmt::Select(select) = stmt else { + unreachable!() + }; + let select_clause = select.select_clause().unwrap(); + let target = select_clause + .target_list() + .unwrap() + .targets() + .next() + .unwrap(); + let ast::Expr::BetweenExpr(between_expr) = target.expr().unwrap() else { + unreachable!() + }; + let target = between_expr.target().unwrap(); + let start = between_expr.start().unwrap(); + let end = between_expr.end().unwrap(); + assert_eq!(target.syntax().text(), "2"); + assert_eq!(start.syntax().text(), "1"); + assert_eq!(end.syntax().text(), "3"); +} + +#[test] +fn cast_expr() { + use insta::assert_snapshot; + + let cast = extract_expr("select cast('123' as int)"); + assert!(cast.expr().is_some()); + assert_snapshot!(cast.expr().unwrap().syntax(), @"'123'"); + assert!(cast.ty().is_some()); + assert_snapshot!(cast.ty().unwrap().syntax(), @"int"); + + let cast = extract_expr("select cast('123' as pg_catalog.int4)"); + assert!(cast.expr().is_some()); + assert_snapshot!(cast.expr().unwrap().syntax(), @"'123'"); + assert!(cast.ty().is_some()); + assert_snapshot!(cast.ty().unwrap().syntax(), @"pg_catalog.int4"); + + let cast = extract_expr("select int '123'"); + assert!(cast.expr().is_some()); + assert_snapshot!(cast.expr().unwrap().syntax(), @"'123'"); + assert!(cast.ty().is_some()); + assert_snapshot!(cast.ty().unwrap().syntax(), @"int"); + + let cast = extract_expr("select pg_catalog.int4 '123'"); + assert!(cast.expr().is_some()); + assert_snapshot!(cast.expr().unwrap().syntax(), @"'123'"); + assert!(cast.ty().is_some()); + assert_snapshot!(cast.ty().unwrap().syntax(), @"pg_catalog.int4"); + + let cast = extract_expr("select '123'::int"); + assert!(cast.expr().is_some()); + assert_snapshot!(cast.expr().unwrap().syntax(), @"'123'"); + assert!(cast.ty().is_some()); + assert_snapshot!(cast.ty().unwrap().syntax(), @"int"); + + let cast = extract_expr("select '123'::int4"); + assert!(cast.expr().is_some()); + assert_snapshot!(cast.expr().unwrap().syntax(), @"'123'"); + assert!(cast.ty().is_some()); + assert_snapshot!(cast.ty().unwrap().syntax(), @"int4"); + + let cast = extract_expr("select '123'::pg_catalog.int4"); + assert!(cast.expr().is_some()); + assert_snapshot!(cast.expr().unwrap().syntax(), @"'123'"); + assert!(cast.ty().is_some()); + assert_snapshot!(cast.ty().unwrap().syntax(), @"pg_catalog.int4"); + + let cast = extract_expr("select '{123}'::pg_catalog.varchar(10)[]"); + assert!(cast.expr().is_some()); + assert_snapshot!(cast.expr().unwrap().syntax(), @"'{123}'"); + assert!(cast.ty().is_some()); + assert_snapshot!(cast.ty().unwrap().syntax(), @"pg_catalog.varchar(10)[]"); + + let cast = extract_expr("select cast('{123}' as pg_catalog.varchar(10)[])"); + assert!(cast.expr().is_some()); + assert_snapshot!(cast.expr().unwrap().syntax(), @"'{123}'"); + assert!(cast.ty().is_some()); + assert_snapshot!(cast.ty().unwrap().syntax(), @"pg_catalog.varchar(10)[]"); + + let cast = extract_expr("select pg_catalog.varchar(10) '{123}'"); + assert!(cast.expr().is_some()); + assert_snapshot!(cast.expr().unwrap().syntax(), @"'{123}'"); + assert!(cast.ty().is_some()); + assert_snapshot!(cast.ty().unwrap().syntax(), @"pg_catalog.varchar(10)"); + + let cast = extract_expr("select interval '1' month"); + assert!(cast.expr().is_some()); + assert_snapshot!(cast.expr().unwrap().syntax(), @"'1'"); + assert!(cast.ty().is_some()); + assert_snapshot!(cast.ty().unwrap().syntax(), @"interval"); + + fn extract_expr(sql: &str) -> ast::CastExpr { + let parse = SourceFile::parse(sql); + assert!(parse.errors().is_empty()); + let file: SourceFile = parse.tree(); + let node = file + .stmts() + .map(|x| match x { + ast::Stmt::Select(select) => select + .select_clause() + .unwrap() + .target_list() + .unwrap() + .targets() + .next() + .unwrap() + .expr() + .unwrap() + .clone(), + _ => unreachable!(), + }) + .next() + .unwrap(); + match node { + ast::Expr::CastExpr(cast) => cast, + _ => unreachable!(), + } + } +} + +#[test] +fn op_sig() { + let source_code = " + alter operator p.+ (int4, int8) + owner to u; + "; + let parse = SourceFile::parse(source_code); + assert!(parse.errors().is_empty()); + let file: SourceFile = parse.tree(); + let stmt = file.stmts().next().unwrap(); + let ast::Stmt::AlterOperator(alter_op) = stmt else { + unreachable!() + }; + let op_sig = alter_op.op_sig().unwrap(); + let lhs = op_sig.lhs().unwrap(); + let rhs = op_sig.rhs().unwrap(); + assert_snapshot!(lhs.syntax().text(), @"int4"); + assert_snapshot!(rhs.syntax().text(), @"int8"); +} + +#[test] +fn cast_sig() { + let source_code = " + drop cast (text as int); + "; + let parse = SourceFile::parse(source_code); + assert!(parse.errors().is_empty()); + let file: SourceFile = parse.tree(); + let stmt = file.stmts().next().unwrap(); + let ast::Stmt::DropCast(alter_op) = stmt else { + unreachable!() + }; + let cast_sig = alter_op.cast_sig().unwrap(); + let lhs = cast_sig.lhs().unwrap(); + let rhs = cast_sig.rhs().unwrap(); + assert_snapshot!(lhs.syntax().text(), @"text"); + assert_snapshot!(rhs.syntax().text(), @"int"); +} diff --git a/crates/squawk_syntax/src/lib.rs b/crates/squawk_syntax/src/lib.rs index ea3aa38c..f0a332dc 100644 --- a/crates/squawk_syntax/src/lib.rs +++ b/crates/squawk_syntax/src/lib.rs @@ -480,237 +480,3 @@ fn create_table() { ] "#) } - -#[test] -fn index_expr() { - let source_code = " - select foo[bar]; - "; - let parse = SourceFile::parse(source_code); - assert!(parse.errors().is_empty()); - let file: SourceFile = parse.tree(); - let stmt = file.stmts().next().unwrap(); - let ast::Stmt::Select(select) = stmt else { - unreachable!() - }; - let select_clause = select.select_clause().unwrap(); - let target = select_clause - .target_list() - .unwrap() - .targets() - .next() - .unwrap(); - let ast::Expr::IndexExpr(index_expr) = target.expr().unwrap() else { - unreachable!() - }; - let base = index_expr.base().unwrap(); - let index = index_expr.index().unwrap(); - assert_eq!(base.syntax().text(), "foo"); - assert_eq!(index.syntax().text(), "bar"); -} - -#[test] -fn slice_expr() { - use insta::assert_snapshot; - let source_code = " - select x[1:2], x[2:], x[:3], x[:]; - "; - let parse = SourceFile::parse(source_code); - assert!(parse.errors().is_empty()); - let file: SourceFile = parse.tree(); - let stmt = file.stmts().next().unwrap(); - let ast::Stmt::Select(select) = stmt else { - unreachable!() - }; - let select_clause = select.select_clause().unwrap(); - let mut targets = select_clause.target_list().unwrap().targets(); - - let ast::Expr::SliceExpr(slice) = targets.next().unwrap().expr().unwrap() else { - unreachable!() - }; - assert_snapshot!(slice.syntax(), @"x[1:2]"); - assert_eq!(slice.base().unwrap().syntax().text(), "x"); - assert_eq!(slice.start().unwrap().syntax().text(), "1"); - assert_eq!(slice.end().unwrap().syntax().text(), "2"); - - let ast::Expr::SliceExpr(slice) = targets.next().unwrap().expr().unwrap() else { - unreachable!() - }; - assert_snapshot!(slice.syntax(), @"x[2:]"); - assert_eq!(slice.base().unwrap().syntax().text(), "x"); - assert_eq!(slice.start().unwrap().syntax().text(), "2"); - assert!(slice.end().is_none()); - - let ast::Expr::SliceExpr(slice) = targets.next().unwrap().expr().unwrap() else { - unreachable!() - }; - assert_snapshot!(slice.syntax(), @"x[:3]"); - assert_eq!(slice.base().unwrap().syntax().text(), "x"); - assert!(slice.start().is_none()); - assert_eq!(slice.end().unwrap().syntax().text(), "3"); - - let ast::Expr::SliceExpr(slice) = targets.next().unwrap().expr().unwrap() else { - unreachable!() - }; - assert_snapshot!(slice.syntax(), @"x[:]"); - assert_eq!(slice.base().unwrap().syntax().text(), "x"); - assert!(slice.start().is_none()); - assert!(slice.end().is_none()); -} - -#[test] -fn field_expr() { - let source_code = " - select foo.bar; - "; - let parse = SourceFile::parse(source_code); - assert!(parse.errors().is_empty()); - let file: SourceFile = parse.tree(); - let stmt = file.stmts().next().unwrap(); - let ast::Stmt::Select(select) = stmt else { - unreachable!() - }; - let select_clause = select.select_clause().unwrap(); - let target = select_clause - .target_list() - .unwrap() - .targets() - .next() - .unwrap(); - let ast::Expr::FieldExpr(field_expr) = target.expr().unwrap() else { - unreachable!() - }; - let base = field_expr.base().unwrap(); - let field = field_expr.field().unwrap(); - assert_eq!(base.syntax().text(), "foo"); - assert_eq!(field.syntax().text(), "bar"); -} - -#[test] -fn between_expr() { - let source_code = " - select 2 between 1 and 3; - "; - let parse = SourceFile::parse(source_code); - assert!(parse.errors().is_empty()); - let file: SourceFile = parse.tree(); - let stmt = file.stmts().next().unwrap(); - let ast::Stmt::Select(select) = stmt else { - unreachable!() - }; - let select_clause = select.select_clause().unwrap(); - let target = select_clause - .target_list() - .unwrap() - .targets() - .next() - .unwrap(); - let ast::Expr::BetweenExpr(between_expr) = target.expr().unwrap() else { - unreachable!() - }; - let target = between_expr.target().unwrap(); - let start = between_expr.start().unwrap(); - let end = between_expr.end().unwrap(); - assert_eq!(target.syntax().text(), "2"); - assert_eq!(start.syntax().text(), "1"); - assert_eq!(end.syntax().text(), "3"); -} - -#[test] -fn cast_expr() { - use insta::assert_snapshot; - - let cast = extract_expr("select cast('123' as int)"); - assert!(cast.expr().is_some()); - assert_snapshot!(cast.expr().unwrap().syntax(), @"'123'"); - assert!(cast.ty().is_some()); - assert_snapshot!(cast.ty().unwrap().syntax(), @"int"); - - let cast = extract_expr("select cast('123' as pg_catalog.int4)"); - assert!(cast.expr().is_some()); - assert_snapshot!(cast.expr().unwrap().syntax(), @"'123'"); - assert!(cast.ty().is_some()); - assert_snapshot!(cast.ty().unwrap().syntax(), @"pg_catalog.int4"); - - let cast = extract_expr("select int '123'"); - assert!(cast.expr().is_some()); - assert_snapshot!(cast.expr().unwrap().syntax(), @"'123'"); - assert!(cast.ty().is_some()); - assert_snapshot!(cast.ty().unwrap().syntax(), @"int"); - - let cast = extract_expr("select pg_catalog.int4 '123'"); - assert!(cast.expr().is_some()); - assert_snapshot!(cast.expr().unwrap().syntax(), @"'123'"); - assert!(cast.ty().is_some()); - assert_snapshot!(cast.ty().unwrap().syntax(), @"pg_catalog.int4"); - - let cast = extract_expr("select '123'::int"); - assert!(cast.expr().is_some()); - assert_snapshot!(cast.expr().unwrap().syntax(), @"'123'"); - assert!(cast.ty().is_some()); - assert_snapshot!(cast.ty().unwrap().syntax(), @"int"); - - let cast = extract_expr("select '123'::int4"); - assert!(cast.expr().is_some()); - assert_snapshot!(cast.expr().unwrap().syntax(), @"'123'"); - assert!(cast.ty().is_some()); - assert_snapshot!(cast.ty().unwrap().syntax(), @"int4"); - - let cast = extract_expr("select '123'::pg_catalog.int4"); - assert!(cast.expr().is_some()); - assert_snapshot!(cast.expr().unwrap().syntax(), @"'123'"); - assert!(cast.ty().is_some()); - assert_snapshot!(cast.ty().unwrap().syntax(), @"pg_catalog.int4"); - - let cast = extract_expr("select '{123}'::pg_catalog.varchar(10)[]"); - assert!(cast.expr().is_some()); - assert_snapshot!(cast.expr().unwrap().syntax(), @"'{123}'"); - assert!(cast.ty().is_some()); - assert_snapshot!(cast.ty().unwrap().syntax(), @"pg_catalog.varchar(10)[]"); - - let cast = extract_expr("select cast('{123}' as pg_catalog.varchar(10)[])"); - assert!(cast.expr().is_some()); - assert_snapshot!(cast.expr().unwrap().syntax(), @"'{123}'"); - assert!(cast.ty().is_some()); - assert_snapshot!(cast.ty().unwrap().syntax(), @"pg_catalog.varchar(10)[]"); - - let cast = extract_expr("select pg_catalog.varchar(10) '{123}'"); - assert!(cast.expr().is_some()); - assert_snapshot!(cast.expr().unwrap().syntax(), @"'{123}'"); - assert!(cast.ty().is_some()); - assert_snapshot!(cast.ty().unwrap().syntax(), @"pg_catalog.varchar(10)"); - - let cast = extract_expr("select interval '1' month"); - assert!(cast.expr().is_some()); - assert_snapshot!(cast.expr().unwrap().syntax(), @"'1'"); - assert!(cast.ty().is_some()); - assert_snapshot!(cast.ty().unwrap().syntax(), @"interval"); - - fn extract_expr(sql: &str) -> ast::CastExpr { - let parse = SourceFile::parse(sql); - assert!(parse.errors().is_empty()); - let file: SourceFile = parse.tree(); - let node = file - .stmts() - .map(|x| match x { - ast::Stmt::Select(select) => select - .select_clause() - .unwrap() - .target_list() - .unwrap() - .targets() - .next() - .unwrap() - .expr() - .unwrap() - .clone(), - _ => unreachable!(), - }) - .next() - .unwrap(); - match node { - ast::Expr::CastExpr(cast) => cast, - _ => unreachable!(), - } - } -} diff --git a/crates/squawk_syntax/src/postgresql.ungram b/crates/squawk_syntax/src/postgresql.ungram index 33a74e6d..71569f25 100644 --- a/crates/squawk_syntax/src/postgresql.ungram +++ b/crates/squawk_syntax/src/postgresql.ungram @@ -303,11 +303,16 @@ ExprType = Expr Role = - ('group'? '#ident') -| 'current_role' | 'current_user' | 'session_user' + 'group'? NameRef +| 'current_role' +| 'current_user' +| 'session_user' + +RoleList = + Role (',' Role)* CheckConstraint = - ('constraint' NameRef) + ('constraint' Name) 'check' '(' Expr ')' NoInherit? @@ -344,6 +349,7 @@ ColumnConstraint = | PrimaryKeyConstraint | ExcludeConstraint | ReferencesConstraint +| DefaultConstraint NullsDistinct = 'nulls' 'distinct' @@ -352,7 +358,7 @@ NullsNotDistinct = 'nulls' 'not' 'distinct' UniqueConstraint = - ('constraint' NameRef) + ('constraint' Name) 'unique' ( UsingIndex @@ -360,8 +366,8 @@ UniqueConstraint = ) PrimaryKeyConstraint = - ('constraint' NameRef) - 'primary' 'key' (UsingIndex | ColumnList PartitionItemList) + ('constraint' Name) + 'primary' 'key' (UsingIndex | ColumnList PartitionItemList?) SetNullColumns = 'set' 'null' ColumnList? @@ -408,6 +414,7 @@ MatchType = ForeignKeyConstraint = + ('constraint' Name) 'foreign' 'key' from_columns:ColumnList 'references' Path to_columns:ColumnList MatchType? OnDeleteAction? @@ -461,16 +468,13 @@ DefaultConstraint = // | 'no' 'maxvalue' // | 'cycle' -// SequenceOptionList = -// '(' SequenceOption SequenceOption* ')' - GeneratedConstraint = ('constraint' NameRef) 'generated' ('always' 'as' '(' Expr ')' 'stored' | ('always' | 'by' 'default') 'as' 'identity' SequenceOptionList? ) ReferencesConstraint = - ('constraint' NameRef) + ('constraint' Name) 'references' Path '(' NameRef ')' MatchType? OnDeleteAction? @@ -510,9 +514,9 @@ AlterTableAction = | SetAccessMethod | SetLogged | SetUnlogged -| SetStorageParams -| ResetStorageParams -| RenameTable +| SetOptions +| ResetOptions +| RenameTo | RenameConstraint | RenameColumn | AlterConstraint @@ -545,10 +549,13 @@ LikeOption = | 'defaults' | 'generated' | 'identity' - | 'indexes') + | 'indexes' + | 'statistics' + | 'storage' + | 'all') LikeClause = - 'like' LikeOption* + 'like' Path LikeOption* WhereClause = 'where' Expr @@ -640,7 +647,7 @@ UsingClause = 'using' (FromItem (',' FromItem)*) UsingOnClause = - 'using' FromItem? 'on' Expr + 'using' FromItem 'on' Expr Alias = 'as'? Name ColumnList? @@ -764,7 +771,10 @@ Commit = 'commit' (('work' | 'transaction')? ('and' 'no'? 'chain') | 'prepared' Literal) Rollback = - 'rollback' | 'abort' + 'rollback' ('work' | 'transaction')? ('and' 'no'? 'chain')? +| 'abort' ('work' | 'transaction')? ('and' 'no'? 'chain')? +| 'rollback' ('work' | 'transaction')? 'to' 'savepoint'? NameRef +| 'rollback' 'prepared' Literal CreateAggregate = 'create' OrReplace? 'aggregate' Path ParamList @@ -951,7 +961,12 @@ AlterTable = 'alter' 'table' RelationName actions:AlterTableAction* Revoke = - 'revoke' + 'revoke' ('grant' 'option' 'for')? + (('all' 'privileges'?) | RevokeCommandList) + 'on' ('table' (Path (',' Path)*) | 'all' 'tables' 'in' 'schema' (NameRef (',' NameRef)*)) + 'from' RoleList + ('granted' 'by' Role)? + ('cascade' | 'restrict')? Row = (Expr (',' Expr)*) @@ -1039,8 +1054,17 @@ Update = ReturningClause = 'returning' + ReturningOptionList TargetList? +ReturningOptionList = + ('with' '(' (ReturningOption (',' ReturningOption)*) ')' ) + +ReturningOption = + ('old' | 'new') + 'as' + Name + Delete = 'delete' 'from' RelationName Alias? UsingClause? @@ -1051,7 +1075,7 @@ WhereCurrentOf = 'where' 'current' 'of' NameRef Notify = - 'notify' + 'notify' NameRef (',' Literal)? MergeWhenMatched = 'when' 'matched' @@ -1096,10 +1120,18 @@ Merge = MergeWhenClause* Declare = - 'declare' + 'declare' Name + 'binary'? + ('asensitive' | 'insensitive')? + ('no'? 'scroll')? + 'cursor' + (('with' | 'without') 'hold')? + 'for' + query:SelectVariant + Execute = - 'execute' + 'execute' NameRef ArgList? WithData = 'with' 'data' @@ -1108,13 +1140,19 @@ WithNoData = 'with' 'no' 'data' CreateTableAs = - 'create' 'table' IfNotExists? Path UsingMethod? WithParams? OnCommit? Tablespace? 'as' Stmt (WithData | WithNoData)? + 'create' 'table' IfNotExists? Path UsingMethod? WithParams? OnCommit? Tablespace? 'as' query:SelectVariant (WithData | WithNoData)? CreateMaterializedView = - 'create' + 'create' 'materialized' 'view' IfNotExists? Path ColumnList? + UsingMethod? + WithParams? + Tablespace? + 'as' + query:SelectVariant + (WithData | WithNoData)? Savepoint = - 'savepoint' + 'savepoint' Name PrepareTransaction = 'prepare' 'transaction' Literal @@ -1225,7 +1263,15 @@ WithoutTimezone = 'without' 'time' 'zone' AttributeOption = - '='? + (Name | Name '.' Name) + ('=' AttributeValue)? + +AttributeValue = + Literal +| 'none' +| 'operator' '(' Op ')' +| Op +| Type AttributeList = '(' ( AttributeOption (',' AttributeOption)* ) ')' @@ -1252,6 +1298,9 @@ WithQuery = | Update | Delete | Merge +| CompoundSelect +| ParenSelect +| Table WithTable = Name ColumnList? 'as'? (Materialized | NotMaterialized)? '(' query:WithQuery ')' @@ -1265,7 +1314,12 @@ SelectClause = TargetList? SelectVariant = - Select | SelectInto | ParenSelect | Table | Values | CompoundSelect + Select +| SelectInto +| ParenSelect +| Table +| Values +| CompoundSelect CompoundSelect = lhs:SelectVariant @@ -1273,6 +1327,7 @@ CompoundSelect = rhs:SelectVariant SelectInto = + WithClause? SelectClause IntoClause FromClause? @@ -1287,7 +1342,7 @@ SelectInto = FilterClause? IntoClause = - 'into' + 'into' Path LockingClause = 'for' @@ -1348,16 +1403,18 @@ ConstraintIndexMethod = 'using' ConstraintExclusionList = - 'exclude' + '(' (ConstraintExclusion (',' ConstraintExclusion)*) ')' ConstraintExclusion = - 'with' + Expr 'with' ConstraintWhereClause = - 'where' + 'where' '(' Expr ')' ExcludeConstraint = + ('constraint' Name) 'exclude' ConstraintIndexMethod? ConstraintExclusionList + ConstraintWhereClause? FrameClause = 'range' | 'rows' | 'groups' @@ -1366,7 +1423,7 @@ WindowSpec = '#ident'? ('partition' 'by' (Expr (',' Expr)*))? OrderByClause? FrameClause? AlterStatistics = - 'alter' 'statistics' NameRef + 'alter' 'statistics' Path AlterServer = 'alter' 'server' NameRef AlterOptionList @@ -1380,79 +1437,261 @@ AlterOption = | 'drop' NameRef AlterSequence = - 'alter' 'sequence' NameRef + 'alter' 'sequence' IfExists? Path AlterSchema = - 'alter' 'schema' NameRef 'rename' 'to' NameRef + 'alter' 'schema' NameRef + (RenameTo + | OwnerTo) AlterRule = - 'alter' 'rule' NameRef 'on' + 'alter' 'rule' NameRef 'on' OnTable RenameTo AlterRoutine = - 'alter' 'routine' + 'alter' 'routine' FunctionSig + ( + RenameTo + | OwnerTo + | SetSchema + | DependsOnExtension + | NoDependsOnExtension + | FuncOptionList + ) + 'restrict'? AlterRole = - 'alter' 'role' + 'alter' 'role' Role AlterPublication = 'alter' 'publication' NameRef AlterProcedure = - 'alter' 'procedure' + 'alter' 'procedure' FunctionSig + ( + RenameTo + | OwnerTo + | SetSchema + | DependsOnExtension + | NoDependsOnExtension + | FuncOptionList + ) + 'restrict'? AlterPolicy = - 'alter' 'policy' NameRef 'on' + 'alter' 'policy' NameRef OnTable + (RenameTo + | 'to' RoleList + | 'using' '(' Expr ')' + | 'with' 'check' '(' Expr ')' + )? AlterOperatorFamily = - 'alter' 'operator' 'family' NameRef 'using' NameRef + 'alter' 'operator' 'family' Path 'using' NameRef + ( + AddOpClassOptions + | DropOpClassOptions + | RenameTo + | OwnerTo + | SetSchema + ) + +DropOpClassOptions = + 'drop' DropOpClassOptionList + +DropOpClassOptionList = + (DropOpClassOption (',' DropOpClassOption)*) + +DropOpClassOption = + 'operator' Literal ParamList? +| 'function' Literal ParamList? + +AddOpClassOptions = + 'add' OperatorClassOptionList + +OpClassOption = + 'operator' Literal Op ('(' Type ',' Type ')')? ('for' 'search' | 'for' 'order' 'by' Path) +| 'function' Literal ParamList? FunctionSig +| 'storage' Type AlterOperatorClass = - 'alter' 'operator' 'class' NameRef 'using' NameRef + 'alter' 'operator' 'class' Path 'using' NameRef + ( + RenameTo + | OwnerTo + | SetSchema + ) AlterOperator = - 'alter' 'operator' + 'alter' 'operator' OpSig + ( + OwnerTo + | SetSchema + | SetOptions + ) + +AlterMaterializedViewAction = + RenameTo +| RenameColumn +| SetSchema +| NoDependsOnExtension +| DependsOnExtension +| AlterTableAction + +NoDependsOnExtension = + 'no' 'depends' 'on' 'extension' NameRef + +DependsOnExtension = + 'depends' 'on' 'extension' NameRef AlterMaterializedView = - 'alter' 'materialized' 'view' NameRef + 'alter' 'materialized' 'view' + ( + 'all' 'in' 'tablespace' NameRef ('owned' 'by' RoleList)? 'set' 'tablespace' Name 'nowait'? + | IfExists? Path action:AlterMaterializedViewAction* + ) AlterLargeObject = 'alter' 'large' 'object' AlterLanguage = 'alter' 'language' NameRef + (RenameTo | OwnerTo)? AlterIndex = - 'alter' 'index' NameRef + 'alter' 'index' IfExists? Path AlterGroup = - 'alter' 'group' NameRef + 'alter' 'group' Role + ( + 'add' 'user' (NameRef (',' NameRef)*) + | 'drop' 'user' (NameRef (',' NameRef)*) + | RenameTo + ) AlterFunction = - 'alter' 'function' + 'alter' 'function' FunctionSig + ( + RenameTo + | OwnerTo + | SetSchema + | DependsOnExtension + | NoDependsOnExtension + | FuncOptionList + ) + 'restrict'? AlterForeignTable = - 'alter' 'foreign' 'table' + 'alter' 'foreign' 'table' IfExists? RelationName + (RenameTo + | RenameColumn + | SetSchema + | AlterTableAction* + ) AlterForeignDataWrapper = - 'alter' 'foreign' 'data' 'wrapper' + 'alter' 'foreign' 'data' 'wrapper' NameRef + (RenameTo + | OwnerTo + | FdwOptionList + )? + +FdwOptionList = + FdwOption* + +FdwOption = + 'options' AlterOptionList +| 'handler' Path +| 'validator' Path +| 'no' 'handler' +| 'no' 'validator' AlterEventTrigger = - 'alter' 'event' 'trigger' + 'alter' 'event' 'trigger' NameRef + ('disable' | 'enable' | 'enable' 'replica' | 'enable' 'always' | OwnerTo | RenameTo)? AlterExtension = 'alter' 'extension' NameRef AlterDefaultPrivileges = 'alter' 'default' 'privileges' + ('for' ('role' | 'user') RoleList)? + ('in' 'schema' (NameRef (',' NameRef)*))? + ( + GrantDefaultPrivileges + | RevokeDefaultPrivileges + )? + +GrantDefaultPrivileges = + 'grant' Privileges 'on' PrivilegeTarget 'to' RoleList ('with' 'grant' 'option')? + +RevokeDefaultPrivileges = + 'revoke' ('grant' 'option' 'for')? Privileges 'on' PrivilegeTarget 'from' RoleList ('cascade' | 'restrict')? + +Privileges = + 'all' 'privileges'? ColumnList? +| RevokeCommandList ColumnList? + +PrivilegeTarget = + 'large' 'objects' +| 'tables' +| 'functions' +| 'routines' +| 'sequences' +| 'types' +| 'schemas' AlterDatabase = 'alter' 'database' NameRef + ( + RenameTo + | OwnerTo + | SetTablespace + | SetConfigParam + | ResetConfigParam + | RefreshCollationVersion + | CreateDatabaseOptionList + )? + +CreateDatabaseOptionList = + 'with'? CreateDatabaseOption* + +CreateDatabaseOption = + ('owner' +| 'template' +| 'encoding' +| '#ident' +| 'tablespace' +| 'connection' 'limit') + '='? + (Literal | 'default') + +SetConfigParam = + 'set' Path + +ResetConfigParam = + 'reset' ('all' | Path) + +RefreshCollationVersion = + 'refresh' 'collation' 'version' AlterConversion = - 'alter' 'conversion' NameRef + 'alter' 'conversion' Path + ( + RenameTo + | OwnerTo + | SetSchema + ) AlterCollation = - 'alter' 'collation' NameRef + 'alter' 'collation' Path + (RenameTo + | RefreshVersion + | OwnerTo + | SetSchema + ) + +RefreshVersion = + 'refresh' 'version' AlterAggregate = 'alter' 'aggregate' Aggregate @@ -1464,74 +1703,132 @@ AlterSystem = 'alter' 'system' 'set' AlterTablespace = - 'alter' 'tablespace' NameRef + 'alter' 'tablespace' Path + ( + RenameTo + | OwnerTo + | SetOptions + | ResetOptions + ) AlterTextSearchParser = - 'alter' 'text' 'search' 'parser' NameRef + 'alter' 'text' 'search' 'parser' Path + (RenameTo | SetSchema) AlterTextSearchDictionary = - 'alter' 'text' 'search' 'dictionary' NameRef + 'alter' 'text' 'search' 'dictionary' Path + ( + RenameTo + | OwnerTo + | SetSchema + | AttributeList + ) AlterTextSearchConfiguration = - 'alter' 'text' 'search' 'configuration' NameRef + 'alter' 'text' 'search' 'configuration' Path + ( + RenameTo + | OwnerTo + | SetSchema + ) AlterTextSearchTemplate = - 'alter' 'text' 'search' 'template' NameRef + 'alter' 'text' 'search' 'template' Path + (RenameTo | SetSchema) AlterTrigger = - 'alter' 'trigger' NameRef 'on' + 'alter' 'trigger' NameRef OnTable + ( + RenameTo + | DependsOnExtension + | NoDependsOnExtension + ) AlterType = - 'alter' 'type' Type + 'alter' 'type' Path AlterUser = - 'alter' 'user' NameRef + 'alter' 'user' Role AlterUserMapping = - 'alter' 'user' 'mapping' 'for' NameRef 'server' NameRef + 'alter' 'user' 'mapping' 'for' Role 'server' NameRef AlterOptionList AlterView = - 'alter' 'view' NameRef + 'alter' 'view' Path Analyze = - 'analyze' 'verbose'? OptionItemList + 'analyze' 'verbose'? OptionItemList? RelationName* // suffix it with `On` to avoid conflicting with comment nodes CommentOn = 'comment' 'on' + ( + // TODO: I think we'll need proper nodes for each variant of comment on + 'table' Path + | 'constraint' NameRef 'on' 'domain'? Path + ) + 'is' + ('null' | Literal) Cluster = - 'cluster' 'verbose'? + 'cluster' + ('verbose' | OptionItemList)? + Path? + UsingMethod? CreateAccessMethod = - 'create' 'access' 'method' NameRef 'type' + 'create' 'access' 'method' name:Path + 'type' ('table' | 'index') + HandlerClause + +HandlerClause = + 'handler' Path CreateCast = - 'create' 'cast' '(' Type 'as' Type ')' + 'create' 'cast' CastSig + ( + 'with' 'function' FunctionSig + | 'without' 'function' + | 'with' 'inout' + ) + ('as' 'assignment' | 'as' 'implicit')? CreateCollation = - 'create' 'collation' NameRef + 'create' 'collation' Path CreateConversion = - 'create' 'conversion' NameRef 'for' + 'create' 'default'? 'conversion' Path + 'for' Literal + 'to' Literal + 'from' Path CreateDatabase = - 'create' 'database' NameRef + 'create' 'database' Name CreateDatabaseOptionList CreateDomain = - 'create' 'domain' NameRef 'as'? Type Collate? Constraint* + 'create' 'domain' Path 'as'? Type Collate? Constraint* CreateEventTrigger = - 'create' 'event' 'trigger' NameRef 'on' + 'create' 'event' 'trigger' Name 'on' NameRef + EventTriggerWhenClause? + 'execute' + ('function' | 'procedure') + CallExpr + +EventTriggerWhenClause = + 'when' (EventTriggerWhen ('and' EventTriggerWhen)*) + +EventTriggerWhen = + NameRef 'in' '(' (Literal (',' Literal)*) ')' CreateForeignDataWrapper = - 'create' 'foreign' 'data' 'wrapper' NameRef + 'create' 'foreign' 'data' 'wrapper' Name CreateForeignTable = - 'create' 'foreign' 'table' IfNotExists? + 'create' 'foreign' 'table' IfNotExists? Path TableArgList? ('server' NameRef)? CreateGroup = - 'create' 'group' NameRef RoleOptionList + 'create' 'group' Name RoleOptionList RoleOptionList = 'with'? RoleOption* @@ -1540,73 +1837,95 @@ RoleOption = 'inherit' CreateLanguage = - 'create' 'language' NameRef + 'create' 'language' Name CreateOperator = - 'create' 'operator' + 'create' 'operator' + Path? + Op + AttributeList CreateOperatorClass = - 'create' 'operator' 'class' NameRef 'default'? 'for' 'type' Type 'using' NameRef + 'create' 'operator' 'class' Path 'default'? 'for' 'type' Type + 'using' NameRef ('family' Path) + 'as' + OperatorClassOptionList + +OperatorClassOptionList = + (OpClassOption (',' OpClassOption)*) CreateOperatorFamily = - 'create' 'operator' 'family' NameRef 'using' NameRef + 'create' 'operator' 'family' Path 'using' NameRef CreatePolicy = - 'create' 'policy' NameRef 'on' + 'create' 'policy' Name OnTable CreateProcedure = - 'create' 'procedure' + 'create' 'procedure' Path ParamList option_list:FuncOptionList CreatePublication = - 'create' 'publication' NameRef + 'create' 'publication' Name CreateRole = - 'create' 'role' NameRef + 'create' 'role' Name CreateRule = - 'create' 'rule' NameRef 'as' 'on' + 'create' OrReplace? 'rule' Name 'as' 'on' ('#ident' | 'select' | 'insert' | 'update' | 'delete') + 'to' Path WhereClause? + 'do' ('also' | 'instead')? ('nothing' | '(' (Stmt (',' Stmt)*) ')' | Stmt) CreateSequence = - 'create' 'sequence' NameRef + 'create' ('temporary' | 'temp' | 'unlogged')? 'sequence' IfNotExists? Path + SequenceOption* CreateServer = - 'create' 'server' NameRef + 'create' 'server' Name CreateStatistics = - 'create' 'statistics' NameRef + 'create' 'statistics' Path ('on' (NameRef (',' NameRef)*))? FromTable? CreateSubscription = - 'create' 'subscription' NameRef + 'create' 'subscription' Name CreateTablespace = - 'create' 'tablespace' NameRef + 'create' 'tablespace' Name + ('owner' Role)? + 'location' Literal + WithParams? CreateTextSearchParser = - 'create' 'text' 'search' 'parser' NameRef + 'create' 'text' 'search' 'parser' Path AttributeList CreateTextSearchDictionary = - 'create' 'text' 'search' 'dictionary' NameRef + 'create' 'text' 'search' 'dictionary' Path AttributeList CreateTextSearchConfiguration = - 'create' 'text' 'search' 'configuration' NameRef AttributeList + 'create' 'text' 'search' 'configuration' Path AttributeList CreateTextSearchTemplate = - 'create' 'text' 'search' 'template' NameRef + 'create' 'text' 'search' 'template' Path AttributeList CreateTransform = - 'create' 'transform' 'for' Type 'language' NameRef + 'create' OrReplace? 'transform' 'for' Type 'language' language:NameRef + '(' from_func:TransformFromFunc ',' to_func:TransformToFunc ')' + +TransformFromFunc = + 'from' 'sql' 'with' 'function' FunctionSig + +TransformToFunc = + 'to' 'sql' 'with' 'function' FunctionSig CreateUserMapping = - 'create' 'user' 'mapping' 'for' NameRef 'server' NameRef + 'create' 'user' 'mapping' 'for' Role 'server' NameRef AlterOptionList? CreateUser = - 'create' 'user' NameRef + 'create' 'user' Name DropLanguage = 'drop' 'language' IfExists? NameRef DropGroup = - 'drop' 'group' IfExists? NameRef + 'drop' 'group' IfExists? (NameRef (',' NameRef)*) DropFunction = 'drop' 'function' IfExists? FunctionSigList @@ -1621,7 +1940,7 @@ DropForeignDataWrapper = 'drop' 'foreign' 'data' 'wrapper' IfExists? NameRef DropForeignTable = - 'drop' 'foreign' 'table' IfExists? + 'drop' 'foreign' 'table' IfExists? Path DropAccessMethod = 'drop' 'access' 'method' IfExists? NameRef @@ -1633,16 +1952,21 @@ DropAggregate = 'drop' 'aggregate' IfExists? (Aggregate (',' Aggregate)*) DropCast = - 'drop' 'cast' IfExists? '(' Type 'as' Type ')' + 'drop' 'cast' IfExists? CastSig + ('cascade' | 'restrict')? + +CastSig = + '(' lhs:Type 'as' rhs:Type ')' DropCollation = - 'drop' 'collation' IfExists? NameRef + 'drop' 'collation' IfExists? (Path (',' Path)*) DropConversion = - 'drop' 'conversion' IfExists? NameRef + 'drop' 'conversion' IfExists? Path ('cascade' | 'restrict') DropDomain = - 'drop' 'domain' IfExists? (Type (',' Type)*) + 'drop' 'domain' IfExists? (Path (',' Path)*) + ('cascade' | 'restrict')? DropEventTrigger = 'drop' 'event' 'trigger' IfExists? NameRef @@ -1651,25 +1975,32 @@ DropExtension = 'drop' 'extension' IfExists? (NameRef (',' NameRef)*) DropMaterializedView = - 'drop' 'materialized' 'view' IfExists? + 'drop' 'materialized' 'view' IfExists? (Path (',' Path)*) + ('cascade' | 'restrict')? DropOperatorFamily = - 'drop' 'operator' 'family' IfExists? + 'drop' 'operator' 'family' IfExists? Path 'using' NameRef ('cascade' | 'restrict') DropOperator = - 'drop' 'operator' IfExists? + 'drop' 'operator' IfExists? OpSigList ('cascade' | 'restrict') + +OpSigList = + (OpSig (',' OpSig)*) + +OpSig = + Op '(' (lhs:Type | 'none') ',' rhs:Type ')' DropOperatorClass = - 'drop' 'operator' 'class' IfExists? NameRef 'using' + 'drop' 'operator' 'class' IfExists? Path 'using' NameRef DropOwned = 'drop' 'owned' 'by' DropPolicy = - 'drop' 'policy' IfExists? NameRef 'on' + 'drop' 'policy' IfExists? NameRef OnTable DropProcedure = - 'drop' 'procedure' IfExists? + 'drop' 'procedure' IfExists? FunctionSigList DropPublication = 'drop' 'publication' IfExists? (NameRef (',' NameRef)*) @@ -1678,19 +2009,19 @@ DropRole = 'drop' 'role' IfExists? (NameRef (',' NameRef)*) DropRoutine = - 'drop' 'routine' IfExists? + 'drop' 'routine' IfExists? FunctionSigList ('cascade' | 'restrict')? DropRule = - 'drop' 'rule' IfExists? NameRef 'on' + 'drop' 'rule' IfExists? NameRef OnTable ('cascade' | 'restrict')? DropSequence = - 'drop' 'sequence' IfExists? (NameRef (',' NameRef)*) + 'drop' 'sequence' IfExists? (Path (',' Path)*) DropServer = 'drop' 'server' IfExists? NameRef DropStatistics = - 'drop' 'statistics' IfExists? NameRef + 'drop' 'statistics' IfExists? (Path (',' Path)*) DropSubscription = 'drop' 'subscription' IfExists? NameRef @@ -1699,28 +2030,28 @@ DropTablespace = 'drop' 'tablespace' IfExists? NameRef DropTextSearchParser = - 'drop' 'text' 'search' 'parser' IfExists? NameRef + 'drop' 'text' 'search' 'parser' IfExists? Path ('cascade' | 'restrict')? DropTextSearchConfig = - 'drop' 'text' 'search' 'configuration' IfExists? + 'drop' 'text' 'search' 'configuration' IfExists? Path ('cascade' | 'restrict')? DropTextSearchDict = - 'drop' 'text' 'search' 'dictionary' IfExists? + 'drop' 'text' 'search' 'dictionary' IfExists? Path ('cascade' | 'restrict')? DropTextSearchTemplate = - 'drop' 'text' 'search' 'template' IfExists? + 'drop' 'text' 'search' 'template' IfExists? Path ('cascade' | 'restrict')? DropTransform = - 'drop' 'transform' IfExists? + 'drop' 'transform' IfExists? 'for' ty:Type 'language' language:NameRef ('cascade' | 'restrict')? DropUser = 'drop' 'user' IfExists? (NameRef (',' NameRef)*) DropUserMapping = - 'drop' 'user' 'mapping' IfExists? 'for' NameRef 'server' NameRef + 'drop' 'user' 'mapping' IfExists? 'for' Role 'server' NameRef DropView = - 'drop' 'view' IfExists? + 'drop' 'view' IfExists? Path Explain = 'explain' @@ -1744,42 +2075,128 @@ ExplainStmt = ImportForeignSchema = 'import' 'foreign' 'schema' NameRef + (LimitToTables | ExceptTables)? + FromServer + IntoSchema + AlterOptionList? + +LimitToTables = + 'limit' 'to' (NameRef (',' NameRef)*) + +ExceptTables = + 'except' (NameRef (',' NameRef)*) + +FromServer = + 'from' 'server' NameRef + +IntoSchema = + 'into' NameRef Lock = - 'lock' 'table'? + 'lock' 'table'? TableList? Reassign = - 'reassign' + 'reassign' 'owned' 'by' old_roles:RoleList 'to' new_roles:RoleList Refresh = - 'refresh' 'materialized' 'view' 'concurrently'? NameRef 'with' 'data'? + 'refresh' 'materialized' 'view' 'concurrently'? Path + (WithData | WithNoData)? Grant = - 'grant' + 'grant' + (('all' 'privileges'?) | RevokeCommandList) + 'on' ('table' (Path (',' Path)*) | 'all' 'tables' 'in' 'schema' (NameRef (',' NameRef)*)) + 'to' RoleList + ('with' 'grant' 'option')? + ('granted' 'by' Role)? + +RevokeCommandList = + (RevokeCommand (',' RevokeCommand)*) + +RevokeCommand = +( Role +| 'alter' 'system' +| ('select' | 'insert' | 'update' | 'delete' | 'truncate' | 'references' | 'trigger' | 'ident' | 'all' | 'alter' | 'create' | 'temporary' | 'temp' | 'execute') +) SecurityLabel = 'security' 'label' + ForProvider? + 'on' + ( + 'table' Path + | 'column' Path + | 'database' Path + | 'domain' Path + | 'publication' Path + | 'role' Path + | 'schema' Path + | 'sequence' Path + | 'subscription' Path + | 'tablespace' Path + | 'type' Path + | 'view' Path + | 'event' 'trigger' Path + | 'foreign' 'table' Path + | 'procedural'? 'language' Path + | 'large' 'object' Literal + | 'materialized' 'view' Path + | 'function' FunctionSig + | 'procedure' FunctionSig + | 'routine' FunctionSig + | 'aggregate' Aggregate + ) + 'is' + ('null' | Literal) + +ForProvider = + 'for' Literal | NameRef SetConstraints = 'set' 'constraints' + ('all' | (Path (',' Path)*)) + 'deferred' | 'immediate' SetRole = - 'set' 'role' + 'set' ('session' | 'local')? 'role' (Role | 'none')? +| 'reset' 'role' SetSessionAuth = - 'set' 'session' 'authorization' + 'set' ('session' | 'local')? 'session' 'authorization' (Role | Literal | 'default') + +ResetSessionAuth = + 'reset' 'session' 'authorization' SetTransaction = - 'set' 'transaction' + 'set' + ( + 'session' 'characteristics' 'as' 'transaction' TransactionModeList + | 'transaction' 'snapshot' Literal + | 'transaction' TransactionModeList + ) Reindex = - 'reindex' + 'reindex' ('table' | 'index' | 'schema' | 'database' | 'system')? Path? CreateView = - 'create' 'view' NameRef + 'create' OrReplace? 'recursive'? 'view' Path ColumnList? + WithParams? + 'as' query:SelectVariant + ('with' ('cascaded' | 'local') 'check' 'option') Prepare = - 'prepare' NameRef + 'prepare' Name 'as' PreparableStmt + +PreparableStmt = + Select +| SelectInto +| CompoundSelect +| Table +| Values +| Insert +| Update +| Delete +| Merge Unlisten = 'unlisten' ('*' | NameRef) @@ -1791,10 +2208,10 @@ Deallocate = 'deallocate' ('prepare' NameRef | 'all') Load = - 'load' + 'load' Literal Listen = - 'listen' NameRef + 'listen' Name Reset = 'reset' (NameRef | 'all') @@ -1806,13 +2223,13 @@ Do = 'do' Move = - 'move' + 'move' ('from' | 'in')? NameRef Fetch = - 'fetch' + 'fetch' ('from' | 'in')? NameRef Close = - 'close' + 'close' NameRef VacuumOptionList = '(' (VacuumOption (',' VacuumOption)*)? ')' @@ -1820,27 +2237,90 @@ VacuumOptionList = Vacuum = 'vacuum' VacuumOptionList? + RelationName VacuumOption = 'full' Copy = - 'copy' + 'copy' + ('(' PreparableStmt ')' | 'binary'? Path ColumnList?) + ( + ('from' ('stdin' | 'program'? Literal)) + | ('to' ('stdout' | 'program'? Literal)) + ) + WhereClause? Call = - 'call' + 'call' Path ArgList + +TriggerEventUpdate = + 'update' + ('of' (NameRef (',' NameRef)*))? + +TriggerEvent = + 'insert' +| 'delete' +| 'truncate' +| TriggerEventUpdate + +Timing = + 'before' +| 'after' +| 'instead' 'of' + +ReferencingTable = + ('old' | 'new') 'table' 'as'? NameRef + +Referencing = + 'referencing' ReferencingTable* CreateTrigger = - 'create' + 'create' OrReplace? 'constraint'? 'trigger' Name + Timing + TriggerEventList + OnTable + FromTable? + DeferrableConstraintOption? + NotDeferrableConstraintOption? + InitiallyDeferredConstraintOption? + InitiallyImmediateConstraintOption? + Referencing? + ('for' 'each'? ('row' | 'statement'))? + WhenCondition? + 'execute' ('function' | 'procedure') CallExpr + +WhenCondition = + 'when' '(' Expr ')' + +FromTable = + 'from' Path + +TriggerEventList = + (TriggerEvent ('or' TriggerEvent)*) DropSchema = - 'drop' 'schema' IfExists? + 'drop' 'schema' IfExists? (NameRef (',' NameRef)*) ('cascade' | 'restrict')? CreateSchema = - 'create' 'schema' + 'create' 'schema' IfNotExists? (SchemaAuthorization | Name) SchemaElement* + +SchemaAuthorization = + 'authorization' Role + +SchemaElement = + CreateTable +| CreateView +| CreateIndex +| CreateSequence +| CreateTrigger +| Grant DropTrigger = - 'drop' 'trigger' IfExists? NameRef 'on' + 'drop' 'trigger' IfExists? Path OnTable ('cascade' | 'restrict')? + +OnTable = + 'on' Path PartitionItem = Expr Collate? @@ -1849,12 +2329,12 @@ PartitionItemList = '(' (PartitionItem (',' PartitionItem)*) ')' CreateType = - 'create' 'type' Type + 'create' 'type' Path - (('as' 'enum' VariantList) -| ('as' 'range' ) -| ('as' '(' ')') -| ('(' ')')) + ('as' 'enum' VariantList +| 'as' 'range' AttributeList +| 'as' ColumnList +| AttributeList) VariantList = '(' @@ -1865,7 +2345,7 @@ Variant = Literal CreateExtension = - 'create' 'extension' + 'create' 'extension' IfNotExists? Name Set = 'set' @@ -2010,7 +2490,7 @@ AttachPartition = 'attach' 'partition' Path PartitionType SetTablespace = - 'set' 'tablespace' NameRef + 'set' 'tablespace' Path SetWithoutCluster = 'set' 'without' 'cluster' @@ -2027,17 +2507,8 @@ SetLogged = SetUnlogged = 'set' 'unlogged' -SetStorageParams = - 'set' AttributeList - -ResetStorageParams = - 'reset' AttributeList - -RenameTable = - 'rename' 'to' NameRef - RenameColumn = - 'rename' 'column'? from:NameRef 'to' to:NameRef + 'rename' 'column'? from:NameRef 'to' to:Name AlterColumnOption = DropDefault @@ -2096,6 +2567,10 @@ SetGeneratedOptions = SetOptionsList = 'set' 'options' AlterOptionList +AlterSetStatistics = + 'set' 'column'? (Literal | NameRef) + 'set' 'statistics' Literal + SetExpression = 'set' 'expression' Expr @@ -2103,7 +2578,7 @@ SetStatistics = 'set' 'statistics' SetOptions = - 'set' '(' ')' + 'set' AttributeList SetStorage = 'set' 'storage' @@ -2294,6 +2769,7 @@ Stmt = | SetConstraints | SetRole | SetSessionAuth +| ResetSessionAuth | SetTransaction | Show // We don't include this and instead merge it into Begin diff --git a/crates/squawk_syntax/src/snapshots/squawk_syntax__test__alter_aggregate_params_validation.snap b/crates/squawk_syntax/src/snapshots/squawk_syntax__test__alter_aggregate_params_validation.snap index b56cd253..f77ef89f 100644 --- a/crates/squawk_syntax/src/snapshots/squawk_syntax__test__alter_aggregate_params_validation.snap +++ b/crates/squawk_syntax/src/snapshots/squawk_syntax__test__alter_aggregate_params_validation.snap @@ -47,11 +47,12 @@ SOURCE_FILE@0..101 WHITESPACE@80..81 " " EQ@81..82 "=" WHITESPACE@82..83 " " - PATH_TYPE@83..84 - PATH@83..84 - PATH_SEGMENT@83..84 - NAME_REF@83..84 - IDENT@83..84 "f" + ATTRIBUTE_VALUE@83..84 + PATH_TYPE@83..84 + PATH@83..84 + PATH_SEGMENT@83..84 + NAME_REF@83..84 + IDENT@83..84 "f" COMMA@84..85 "," WHITESPACE@85..88 "\n " ATTRIBUTE_OPTION@88..97 @@ -60,11 +61,12 @@ SOURCE_FILE@0..101 WHITESPACE@93..94 " " EQ@94..95 "=" WHITESPACE@95..96 " " - PATH_TYPE@96..97 - PATH@96..97 - PATH_SEGMENT@96..97 - NAME_REF@96..97 - IDENT@96..97 "t" + ATTRIBUTE_VALUE@96..97 + PATH_TYPE@96..97 + PATH@96..97 + PATH_SEGMENT@96..97 + NAME_REF@96..97 + IDENT@96..97 "t" WHITESPACE@97..98 "\n" R_PAREN@98..99 ")" SEMICOLON@99..100 ";" diff --git a/crates/squawk_syntax/src/snapshots/squawk_syntax__test__create_aggregate_params_validation.snap b/crates/squawk_syntax/src/snapshots/squawk_syntax__test__create_aggregate_params_validation.snap index ca1253fa..95c0aa57 100644 --- a/crates/squawk_syntax/src/snapshots/squawk_syntax__test__create_aggregate_params_validation.snap +++ b/crates/squawk_syntax/src/snapshots/squawk_syntax__test__create_aggregate_params_validation.snap @@ -40,14 +40,13 @@ SOURCE_FILE@0..91 IDENT@68..69 "u" R_PAREN@69..70 ")" WHITESPACE@70..76 " \n " - SET_KW@76..79 "set" - WHITESPACE@79..80 " " - SCHEMA_KW@80..86 "schema" - WHITESPACE@86..87 " " - PATH@87..88 - PATH_SEGMENT@87..88 - NAME_REF@87..88 - IDENT@87..88 "s" + SET_SCHEMA@76..88 + SET_KW@76..79 "set" + WHITESPACE@79..80 " " + SCHEMA_KW@80..86 "schema" + WHITESPACE@86..87 " " + NAME_REF@87..88 + IDENT@87..88 "s" SEMICOLON@88..89 ";" WHITESPACE@89..91 "\n\n" diff --git a/crates/squawk_syntax/src/validation.rs b/crates/squawk_syntax/src/validation.rs index 5ee45634..e1d708bb 100644 --- a/crates/squawk_syntax/src/validation.rs +++ b/crates/squawk_syntax/src/validation.rs @@ -37,10 +37,10 @@ fn validate_create_table(it: ast::CreateTable, acc: &mut Vec) { for arg in arg_list.args() { match arg { ast::TableArg::Column(column) => { - let Some(col_name) = column.name() else { - continue; - }; - if type_required && column.ty().is_none() { + if let Some(col_name) = column.name() + && type_required + && column.ty().is_none() + { let end = col_name.syntax().text_range().end(); acc.push(SyntaxError::new( "Missing column type", From 26a0f3e651792162e3e8ec572b7476bebef4ffed Mon Sep 17 00:00:00 2001 From: Steve Dignam Date: Sat, 29 Nov 2025 23:22:42 -0500 Subject: [PATCH 2/3] more changes --- crates/squawk_linter/src/analyze.rs | 1 + crates/squawk_linter/src/ignore.rs | 25 +++++++++---------- .../src/rules/adding_field_with_default.rs | 8 +++--- .../squawk_linter/src/rules/ban_char_field.rs | 15 ++++++----- .../src/rules/constraint_missing_not_valid.rs | 12 ++++----- .../src/rules/prefer_robust_stmts.rs | 16 ++++++------ .../squawk_linter/src/rules/renaming_table.rs | 2 +- .../src/rules/require_timeout_settings.rs | 16 ++++++------ 8 files changed, 45 insertions(+), 50 deletions(-) diff --git a/crates/squawk_linter/src/analyze.rs b/crates/squawk_linter/src/analyze.rs index 539dfd9c..6bf35a30 100644 --- a/crates/squawk_linter/src/analyze.rs +++ b/crates/squawk_linter/src/analyze.rs @@ -205,6 +205,7 @@ pub fn possibly_slow_stmt(stmt: &ast::Stmt) -> bool { | ast::Stmt::SetConstraints(_) | ast::Stmt::SetRole(_) | ast::Stmt::SetSessionAuth(_) + | ast::Stmt::ResetSessionAuth(_) | ast::Stmt::SetTransaction(_) | ast::Stmt::Show(_) | ast::Stmt::Table(_) diff --git a/crates/squawk_linter/src/ignore.rs b/crates/squawk_linter/src/ignore.rs index 681c57f4..2d97dd22 100644 --- a/crates/squawk_linter/src/ignore.rs +++ b/crates/squawk_linter/src/ignore.rs @@ -22,20 +22,19 @@ fn comment_body(token: &SyntaxToken) -> Option<(&str, TextRange)> { let range = token.text_range(); if token.kind() == SyntaxKind::COMMENT { let text = token.text(); - if let Some(trimmed) = text.strip_prefix("--") { - if let Some(start) = range.start().checked_add(2.into()) { - let end = range.end(); - let updated_range = TextRange::new(start, end); - return Some((trimmed, updated_range)); - } + if let Some(trimmed) = text.strip_prefix("--") + && let Some(start) = range.start().checked_add(2.into()) + { + let end = range.end(); + let updated_range = TextRange::new(start, end); + return Some((trimmed, updated_range)); } - if let Some(trimmed) = text.strip_prefix("/*").and_then(|x| x.strip_suffix("*/")) { - if let Some(start) = range.start().checked_add(2.into()) { - if let Some(end) = range.end().checked_sub(2.into()) { - let updated_range = TextRange::new(start, end); - return Some((trimmed, updated_range)); - } - } + if let Some(trimmed) = text.strip_prefix("/*").and_then(|x| x.strip_suffix("*/")) + && let Some(start) = range.start().checked_add(2.into()) + && let Some(end) = range.end().checked_sub(2.into()) + { + let updated_range = TextRange::new(start, end); + return Some((trimmed, updated_range)); } } None diff --git a/crates/squawk_linter/src/rules/adding_field_with_default.rs b/crates/squawk_linter/src/rules/adding_field_with_default.rs index 2bd61656..43e86839 100644 --- a/crates/squawk_linter/src/rules/adding_field_with_default.rs +++ b/crates/squawk_linter/src/rules/adding_field_with_default.rs @@ -23,10 +23,10 @@ fn is_non_volatile_or_const(expr: &ast::Expr) -> bool { ast::Expr::Literal(_) => true, ast::Expr::ArrayExpr(_) => true, ast::Expr::BinExpr(bin_expr) => { - if let Some(lhs) = bin_expr.lhs() { - if let Some(rhs) = bin_expr.rhs() { - return is_non_volatile_or_const(&lhs) && is_non_volatile_or_const(&rhs); - } + if let Some(lhs) = bin_expr.lhs() + && let Some(rhs) = bin_expr.rhs() + { + return is_non_volatile_or_const(&lhs) && is_non_volatile_or_const(&rhs); } false } diff --git a/crates/squawk_linter/src/rules/ban_char_field.rs b/crates/squawk_linter/src/rules/ban_char_field.rs index 23ff70e8..6c8eb750 100644 --- a/crates/squawk_linter/src/rules/ban_char_field.rs +++ b/crates/squawk_linter/src/rules/ban_char_field.rs @@ -40,15 +40,14 @@ fn check_path_type(ctx: &mut Linter, path_type: ast::PathType) { .path() .and_then(|x| x.segment()) .and_then(|x| x.name_ref()) + && is_char_type(name_ref.text()) { - if is_char_type(name_ref.text()) { - let fix = create_fix(name_ref.syntax().text_range(), path_type.arg_list()); - ctx.report(Violation::for_node( - Rule::BanCharField, - "Using `character` is likely a mistake and should almost always be replaced by `text` or `varchar`.".into(), - path_type.syntax(), - ).fix(Some(fix))); - } + let fix = create_fix(name_ref.syntax().text_range(), path_type.arg_list()); + ctx.report(Violation::for_node( + Rule::BanCharField, + "Using `character` is likely a mistake and should almost always be replaced by `text` or `varchar`.".into(), + path_type.syntax(), + ).fix(Some(fix))); } } diff --git a/crates/squawk_linter/src/rules/constraint_missing_not_valid.rs b/crates/squawk_linter/src/rules/constraint_missing_not_valid.rs index b422d625..0cb7c7ef 100644 --- a/crates/squawk_linter/src/rules/constraint_missing_not_valid.rs +++ b/crates/squawk_linter/src/rules/constraint_missing_not_valid.rs @@ -67,13 +67,11 @@ fn not_valid_validate_in_transaction( } } ast::AlterTableAction::AddConstraint(add_constraint) => { - if add_constraint.not_valid().is_some() { - if let Some(constraint) = add_constraint.constraint() { - if let Some(constraint_name) = constraint.name() { - not_valid_names - .insert(Identifier::new(&constraint_name.text())); - } - } + if add_constraint.not_valid().is_some() + && let Some(constraint) = add_constraint.constraint() + && let Some(constraint_name) = constraint.name() + { + not_valid_names.insert(Identifier::new(&constraint_name.text())); } } _ => (), diff --git a/crates/squawk_linter/src/rules/prefer_robust_stmts.rs b/crates/squawk_linter/src/rules/prefer_robust_stmts.rs index db677049..9c049f18 100644 --- a/crates/squawk_linter/src/rules/prefer_robust_stmts.rs +++ b/crates/squawk_linter/src/rules/prefer_robust_stmts.rs @@ -91,15 +91,13 @@ pub(crate) fn prefer_robust_stmts(ctx: &mut Linter, parse: &Parse) { } ast::AlterTableAction::AddConstraint(add_constraint) => { let constraint = add_constraint.constraint(); - if let Some(constraint_name) = constraint.and_then(|x| x.name()) { - let name_text = constraint_name.text(); - let name = Identifier::new(name_text.as_str()); - if let Some(constraint) = constraint_names.get_mut(&name) { - if *constraint == Constraint::Dropped { - *constraint = Constraint::Added; - continue; - } - } + if let Some(constraint_name) = constraint.and_then(|x| x.name()) + && let Some(constraint) = constraint_names + .get_mut(&Identifier::new(constraint_name.text().as_str())) + && *constraint == Constraint::Dropped + { + *constraint = Constraint::Added; + continue; } (ActionErrorMessage::None, None) } diff --git a/crates/squawk_linter/src/rules/renaming_table.rs b/crates/squawk_linter/src/rules/renaming_table.rs index df3785a1..07e21bb6 100644 --- a/crates/squawk_linter/src/rules/renaming_table.rs +++ b/crates/squawk_linter/src/rules/renaming_table.rs @@ -10,7 +10,7 @@ pub(crate) fn renaming_table(ctx: &mut Linter, parse: &Parse) { for stmt in file.stmts() { if let ast::Stmt::AlterTable(alter_table) = stmt { for action in alter_table.actions() { - if let ast::AlterTableAction::RenameTable(rename_table) = action { + if let ast::AlterTableAction::RenameTo(rename_table) = action { ctx.report(Violation::for_node( Rule::RenamingTable, "Renaming a table may break existing clients.".into(), diff --git a/crates/squawk_linter/src/rules/require_timeout_settings.rs b/crates/squawk_linter/src/rules/require_timeout_settings.rs index 8b66bd29..8044fa5c 100644 --- a/crates/squawk_linter/src/rules/require_timeout_settings.rs +++ b/crates/squawk_linter/src/rules/require_timeout_settings.rs @@ -59,14 +59,14 @@ pub(crate) fn require_timeout_settings(ctx: &mut Linter, parse: &Parse Date: Sat, 29 Nov 2025 23:28:12 -0500 Subject: [PATCH 3/3] expand selection changes --- crates/squawk_ide/src/expand_selection.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/crates/squawk_ide/src/expand_selection.rs b/crates/squawk_ide/src/expand_selection.rs index a11950ab..e7eee024 100644 --- a/crates/squawk_ide/src/expand_selection.rs +++ b/crates/squawk_ide/src/expand_selection.rs @@ -40,12 +40,19 @@ const DELIMITED_LIST_KINDS: &[SyntaxKind] = &[ SyntaxKind::COLUMN_LIST, SyntaxKind::CONFLICT_INDEX_ITEM_LIST, SyntaxKind::CONSTRAINT_EXCLUSION_LIST, + SyntaxKind::DROP_OP_CLASS_OPTION_LIST, + SyntaxKind::FDW_OPTION_LIST, SyntaxKind::FUNCTION_SIG_LIST, SyntaxKind::GROUP_BY_LIST, SyntaxKind::JSON_TABLE_COLUMN_LIST, + SyntaxKind::OPERATOR_CLASS_OPTION_LIST, SyntaxKind::OPTION_ITEM_LIST, + SyntaxKind::OP_SIG_LIST, SyntaxKind::PARAM_LIST, SyntaxKind::PARTITION_ITEM_LIST, + SyntaxKind::RETURNING_OPTION_LIST, + SyntaxKind::REVOKE_COMMAND_LIST, + SyntaxKind::ROLE_LIST, SyntaxKind::ROW_LIST, SyntaxKind::SET_COLUMN_LIST, SyntaxKind::SET_EXPR_LIST, @@ -540,9 +547,11 @@ $0 #[test] fn list_variants() { let delimited_ws_list_kinds = &[ + SyntaxKind::CREATE_DATABASE_OPTION_LIST, SyntaxKind::FUNC_OPTION_LIST, SyntaxKind::ROLE_OPTION_LIST, SyntaxKind::SEQUENCE_OPTION_LIST, + SyntaxKind::TRIGGER_EVENT_LIST, SyntaxKind::XML_COLUMN_OPTION_LIST, SyntaxKind::WHEN_CLAUSE_LIST, ];