From ce68c517f7c3df4a9a03c9d211334c7851b155b7 Mon Sep 17 00:00:00 2001 From: Steve Dignam Date: Sat, 13 Jun 2026 20:31:54 -0400 Subject: [PATCH] parser: surface variadic token in Arg AST --- crates/squawk_fmt/src/fmt.rs | 1 + crates/squawk_ide/src/column_name.rs | 2 +- crates/squawk_ide/src/resolve.rs | 4 +- .../src/generated/syntax_kind.rs | 1 + crates/squawk_parser/src/grammar.rs | 16 +- .../snapshots/tests__alter_extension_ok.snap | 45 +- .../tests__alter_operator_family_ok.snap | 5 +- .../snapshots/tests__alter_sequence_ok.snap | 5 +- .../snapshots/tests__alter_table_ok.snap | 35 +- .../tests/snapshots/tests__alter_type_ok.snap | 10 +- .../tests/snapshots/tests__call_ok.snap | 44 +- .../tests/snapshots/tests__comment_ok.snap | 10 +- .../snapshots/tests__create_domain_ok.snap | 5 +- .../snapshots/tests__create_function_ok.snap | 15 +- .../snapshots/tests__create_index_ok.snap | 20 +- .../tests__create_operator_class_ok.snap | 15 +- .../snapshots/tests__create_operator_ok.snap | 5 +- .../snapshots/tests__create_sequence_ok.snap | 5 +- .../tests__create_statistics_ok.snap | 20 +- .../snapshots/tests__create_table_as_ok.snap | 5 +- .../snapshots/tests__create_table_ok.snap | 23 +- .../snapshots/tests__create_transform_ok.snap | 5 +- .../snapshots/tests__create_trigger_ok.snap | 20 +- .../snapshots/tests__create_view_ok.snap | 26 +- .../tests/snapshots/tests__delete_ok.snap | 5 +- .../snapshots/tests__drop_transform_ok.snap | 5 +- .../tests/snapshots/tests__execute_ok.snap | 30 +- .../tests/snapshots/tests__explain_ok.snap | 30 +- .../tests/snapshots/tests__merge_ok.snap | 10 +- .../tests/snapshots/tests__misc_ok.snap | 1261 +++++++++-------- .../snapshots/tests__select_casts_ok.snap | 285 ++-- ...ests__select_compound_union_select_ok.snap | 10 +- .../tests/snapshots/tests__select_err.snap | 40 +- .../snapshots/tests__select_funcs_ok.snap | 652 +++++---- .../tests/snapshots/tests__select_ok.snap | 213 +-- .../snapshots/tests__select_operators_ok.snap | 355 +++-- .../tests/snapshots/tests__select_xml_ok.snap | 20 +- .../tests/snapshots/tests__sql_pgq_ok.snap | 5 +- .../tests/snapshots/tests__update_ok.snap | 20 +- .../squawk_syntax/src/ast/generated/nodes.rs | 95 +- crates/squawk_syntax/src/ast/node_ext.rs | 2 + crates/squawk_syntax/src/postgresql.ungram | 21 +- ...ntax__test__alter_table_ok_validation.snap | 76 +- ...uawk_syntax__test__default_validation.snap | 5 +- 44 files changed, 1965 insertions(+), 1517 deletions(-) diff --git a/crates/squawk_fmt/src/fmt.rs b/crates/squawk_fmt/src/fmt.rs index c64d474e..deba6fc7 100644 --- a/crates/squawk_fmt/src/fmt.rs +++ b/crates/squawk_fmt/src/fmt.rs @@ -445,6 +445,7 @@ fn build_op<'a>(op: ast::BinOp) -> Doc<'a> { ast::BinOp::ColonEq(_) => Doc::text(":="), ast::BinOp::CustomOp(custom_op) => Doc::text(custom_op.syntax().to_string()), ast::BinOp::Eq(_) => Doc::text("="), + ast::BinOp::Escape(_) => Doc::text("escape"), ast::BinOp::FatArrow(_) => Doc::text("=>"), ast::BinOp::Gteq(_) => Doc::text(">="), ast::BinOp::Ilike(_) => Doc::text("ilike"), diff --git a/crates/squawk_ide/src/column_name.rs b/crates/squawk_ide/src/column_name.rs index 92e718e7..2133ef50 100644 --- a/crates/squawk_ide/src/column_name.rs +++ b/crates/squawk_ide/src/column_name.rs @@ -188,7 +188,7 @@ fn name_from_name_ref( SyntaxKind::FLOAT_KW => { let precision = arg_list.and_then(|arg| { arg.args().find_map(|arg| { - if let ast::Arg::Expr(ast::Expr::Literal(lit)) = arg { + if let Some(ast::Expr::Literal(lit)) = arg.expr() { lit.syntax().text().to_string().parse::().ok() } else { None diff --git a/crates/squawk_ide/src/resolve.rs b/crates/squawk_ide/src/resolve.rs index 3dc82d56..5d8e57b4 100644 --- a/crates/squawk_ide/src/resolve.rs +++ b/crates/squawk_ide/src/resolve.rs @@ -749,11 +749,11 @@ fn fallback_type_alias(type_name: &Name) -> Option { fn resolve_float_precision(name_ref: &ast::NameRef, type_name: Name) -> Name { if type_name.0.as_str() == "float" - && let Some(ast::Arg::Expr(ast::Expr::Literal(lit))) = name_ref + && let Some(ast::Expr::Literal(lit)) = name_ref .syntax() .ancestors() .find_map(ast::PathType::cast) - .and_then(|x| x.arg_list()?.args().next()) + .and_then(|x| x.arg_list()?.args().next()?.expr()) { let precision: u32 = lit.syntax().text().to_string().parse().unwrap_or(0); return Name::from_string(if precision <= 24 { "float4" } else { "float8" }); diff --git a/crates/squawk_parser/src/generated/syntax_kind.rs b/crates/squawk_parser/src/generated/syntax_kind.rs index 9399826a..604e0b46 100644 --- a/crates/squawk_parser/src/generated/syntax_kind.rs +++ b/crates/squawk_parser/src/generated/syntax_kind.rs @@ -634,6 +634,7 @@ pub enum SyntaxKind { ALTER_VIEW, ANALYZE, ANY_FN, + ARG, ARG_LIST, ARRAY_EXPR, ARRAY_TYPE, diff --git a/crates/squawk_parser/src/grammar.rs b/crates/squawk_parser/src/grammar.rs index 3423b0e8..d2b9b542 100644 --- a/crates/squawk_parser/src/grammar.rs +++ b/crates/squawk_parser/src/grammar.rs @@ -1799,8 +1799,8 @@ fn type_mods( R_PAREN, COMMA, || "unexpected comma".to_string(), - EXPR_FIRST, - |p| expr(p).is_some(), + EXPR_FIRST.union(TokenSet::new(&[VARIADIC_KW])), + |p| arg_expr(p).is_some(), ); m.complete(p, ARG_LIST); } @@ -1963,13 +1963,19 @@ fn simple_type_name(p: &mut Parser<'_>) { fn arg_expr(p: &mut Parser<'_>) -> Option { // https://www.postgresql.org/docs/17/typeconv-func.html + let m = p.start(); p.eat(VARIADIC_KW); let r = Restrictions { order_by_allowed: true, - as_allowed: true, ..Restrictions::default() }; - expr_bp(p, 1, &r) + match expr_bp(p, 1, &r) { + Some(_) => Some(m.complete(p, ARG)), + None => { + m.abandon(p); + None + } + } } fn arg_list(p: &mut Parser<'_>) { @@ -2457,7 +2463,6 @@ fn current_op(p: &Parser<'_>, r: &Restrictions) -> (u8, SyntaxKind, Associativit PERCENT if p.next_not_joined_op(0) => (9, PERCENT, Left), // symbol // and AND_KW if !r.and_disabled => (2, AND_KW, Left), - AS_KW if r.as_allowed => (7, AS_KW, Left), // / SLASH if p.next_not_joined_op(0) => (9, SLASH, Left), // symbol // * @@ -2484,7 +2489,6 @@ const OVERLAPPING_TOKENS: TokenSet = TokenSet::new(&[OR_KW, AND_KW, IS_KW, COLLA #[derive(Default)] struct Restrictions { order_by_allowed: bool, - as_allowed: bool, in_disabled: bool, is_disabled: bool, not_disabled: bool, 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 abc1bb94..008d6518 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_extension_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_extension_ok.snap @@ -236,8 +236,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" WHITESPACE " " AS_KW "as" @@ -677,8 +678,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" COMMA "," WHITESPACE " " @@ -759,8 +761,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" R_PAREN ")" SEMICOLON ";" @@ -888,8 +891,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" R_PAREN ")" SEMICOLON ";" @@ -923,8 +927,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" R_PAREN ")" SEMICOLON ";" @@ -1148,8 +1153,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" COMMA "," WHITESPACE " " @@ -1230,8 +1236,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" R_PAREN ")" SEMICOLON ";" @@ -1289,8 +1296,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" COMMA "," WHITESPACE " " @@ -1371,8 +1379,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" R_PAREN ")" SEMICOLON ";" 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 346d5eb7..b2eed755 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 @@ -173,8 +173,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" R_PAREN ")" WHITESPACE " " 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 c6050946..30b4a301 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_sequence_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_sequence_ok.snap @@ -32,8 +32,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" WHITESPACE "\n " SEQUENCE_OPTION 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 b45b9a33..30512260 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_table_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_table_ok.snap @@ -62,12 +62,14 @@ SOURCE_FILE NUMERIC_KW "numeric" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n\n" @@ -2548,12 +2550,14 @@ SOURCE_FILE IDENT "tsrange" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "b" + ARG + NAME_REF + IDENT "b" COMMA "," WHITESPACE " " - NAME_REF - IDENT "c" + ARG + NAME_REF + IDENT "c" R_PAREN ")" WHITESPACE " " WITH_KW "with" @@ -2608,12 +2612,14 @@ SOURCE_FILE IDENT "tsrange" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "b" + ARG + NAME_REF + IDENT "b" COMMA "," WHITESPACE " " - NAME_REF - IDENT "c" + ARG + NAME_REF + IDENT "c" R_PAREN ")" WHITESPACE " " WITH_KW "with" @@ -3838,8 +3844,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "30" + ARG + LITERAL + INT_NUMBER "30" R_PAREN ")" WHITESPACE " " DEFAULT_CONSTRAINT 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 9e34b41e..35881773 100644 --- a/crates/squawk_parser/tests/snapshots/tests__alter_type_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__alter_type_ok.snap @@ -479,8 +479,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" WHITESPACE " " RESTRICT_KW "restrict" @@ -623,8 +624,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" WHITESPACE " " COLLATE diff --git a/crates/squawk_parser/tests/snapshots/tests__call_ok.snap b/crates/squawk_parser/tests/snapshots/tests__call_ok.snap index 530df8dd..b5d0f73f 100644 --- a/crates/squawk_parser/tests/snapshots/tests__call_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__call_ok.snap @@ -33,8 +33,9 @@ SOURCE_FILE IDENT "partition_data_proc" ARG_LIST L_PAREN "(" - LITERAL - STRING "'partman_test.time_taptest_table'" + ARG + LITERAL + STRING "'partman_test.time_taptest_table'" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -49,28 +50,31 @@ SOURCE_FILE IDENT "do_db_maintenance" ARG_LIST L_PAREN "(" - NAMED_ARG - NAME_REF - IDENT "x" - WHITESPACE " " - FAT_ARROW "=>" - WHITESPACE " " - LITERAL - STRING "'1'" + ARG + NAMED_ARG + NAME_REF + IDENT "x" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + LITERAL + STRING "'1'" COMMA "," WHITESPACE " " - LITERAL - NULL_KW "null" + ARG + LITERAL + NULL_KW "null" COMMA "," WHITESPACE " " - NAMED_ARG - NAME_REF - IDENT "b" - WHITESPACE " " - FAT_ARROW "=>" - WHITESPACE " " - LITERAL - STRING "'d'" + ARG + NAMED_ARG + NAME_REF + IDENT "b" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + LITERAL + STRING "'d'" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__comment_ok.snap b/crates/squawk_parser/tests/snapshots/tests__comment_ok.snap index c7f8cfd2..57363e7d 100644 --- a/crates/squawk_parser/tests/snapshots/tests__comment_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__comment_ok.snap @@ -637,8 +637,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" COMMA "," WHITESPACE " " @@ -646,8 +647,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "200" + ARG + LITERAL + INT_NUMBER "200" R_PAREN ")" R_PAREN ")" WHITESPACE " " 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 8e940de6..d1a97478 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_domain_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_domain_ok.snap @@ -40,8 +40,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" WHITESPACE "\n " COLLATE 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 56954606..7007b808 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_function_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_function_ok.snap @@ -614,8 +614,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "255" + ARG + LITERAL + INT_NUMBER "255" R_PAREN ")" WHITESPACE "\n" FUNC_OPTION_LIST @@ -630,8 +631,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" WHITESPACE "\n" AS_FUNC_OPTION @@ -2183,8 +2185,9 @@ SOURCE_FILE BIT_KW "bit" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "8" + ARG + LITERAL + INT_NUMBER "8" R_PAREN ")" R_PAREN ")" WHITESPACE "\n" 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 8e013bc7..b5c039dc 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_index_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_index_ok.snap @@ -239,8 +239,9 @@ SOURCE_FILE IDENT "f" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "c" + ARG + NAME_REF + IDENT "c" R_PAREN ")" WHITESPACE " " PLUS "+" @@ -544,8 +545,9 @@ SOURCE_FILE IDENT "lower" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "title" + ARG + NAME_REF + IDENT "title" R_PAREN ")" R_PAREN ")" R_PAREN ")" @@ -758,11 +760,13 @@ SOURCE_FILE IDENT "box" ARG_LIST L_PAREN "(" - NAME_REF - LOCATION_KW "location" + ARG + NAME_REF + LOCATION_KW "location" COMMA "," - NAME_REF - LOCATION_KW "location" + ARG + NAME_REF + LOCATION_KW "location" R_PAREN ")" R_PAREN ")" SEMICOLON ";" 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 94f84238..e51a1e16 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 @@ -72,8 +72,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" WHITESPACE "\n " USING_KW "using" @@ -171,8 +172,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" COMMA "," WHITESPACE " " @@ -180,8 +182,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" R_PAREN ")" WHITESPACE " " 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 601a6f8f..168342e7 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_operator_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_operator_ok.snap @@ -126,8 +126,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" COMMA "," WHITESPACE "\n " diff --git a/crates/squawk_parser/tests/snapshots/tests__create_sequence_ok.snap b/crates/squawk_parser/tests/snapshots/tests__create_sequence_ok.snap index 852a4951..72569c9d 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_sequence_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_sequence_ok.snap @@ -45,8 +45,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" WHITESPACE "\n " SEQUENCE_OPTION 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 ad20e9c7..7e03ce37 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_statistics_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_statistics_ok.snap @@ -200,12 +200,14 @@ SOURCE_FILE IDENT "date_trunc" ARG_LIST L_PAREN "(" - LITERAL - STRING "'month'" + ARG + LITERAL + STRING "'month'" COMMA "," WHITESPACE " " - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" R_PAREN ")" COMMA "," WHITESPACE " " @@ -214,12 +216,14 @@ SOURCE_FILE IDENT "date_trunc" ARG_LIST L_PAREN "(" - LITERAL - STRING "'day'" + ARG + LITERAL + STRING "'day'" COMMA "," WHITESPACE " " - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" R_PAREN ")" WHITESPACE " " FROM_TABLE 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 feb23a72..9b9ef35c 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 @@ -35,8 +35,9 @@ SOURCE_FILE IDENT "f" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" 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 e851df9f..e7ad94af 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_table_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_table_ok.snap @@ -3964,20 +3964,23 @@ SOURCE_FILE IDENT "tstzrange" ARG_LIST L_PAREN "(" - CALL_EXPR - NAME_REF - IDENT "now" - ARG_LIST - L_PAREN "(" - R_PAREN ")" + ARG + CALL_EXPR + NAME_REF + IDENT "now" + ARG_LIST + L_PAREN "(" + R_PAREN ")" COMMA "," WHITESPACE " " - LITERAL - STRING "'infinity'" + ARG + LITERAL + STRING "'infinity'" COMMA "," WHITESPACE " " - LITERAL - STRING "'[)'" + ARG + LITERAL + STRING "'[)'" R_PAREN ")" COMMA "," WHITESPACE "\n " 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 de4e2548..dd0c2f68 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_transform_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_transform_ok.snap @@ -85,8 +85,9 @@ SOURCE_FILE IDENT "t" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10231" + ARG + LITERAL + INT_NUMBER "10231" R_PAREN ")" WHITESPACE " " LANGUAGE_KW "language" 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 15943e2a..cd246b2b 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_trigger_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_trigger_ok.snap @@ -168,14 +168,17 @@ SOURCE_FILE IDENT "z" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" COMMA "," - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" COMMA "," - LITERAL - STRING "'3'" + ARG + LITERAL + STRING "'3'" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -300,8 +303,9 @@ SOURCE_FILE IDENT "foo" ARG_LIST L_PAREN "(" - LITERAL - STRING "'bar'" + ARG + LITERAL + STRING "'bar'" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" 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 f028d256..98fd5121 100644 --- a/crates/squawk_parser/tests/snapshots/tests__create_view_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__create_view_ok.snap @@ -229,12 +229,13 @@ SOURCE_FILE IDENT "country_code_to_name" ARG_LIST L_PAREN "(" - FIELD_EXPR - NAME_REF - IDENT "f" - DOT "." - NAME_REF - IDENT "country_code" + ARG + FIELD_EXPR + NAME_REF + IDENT "f" + DOT "." + NAME_REF + IDENT "country_code" R_PAREN ")" WHITESPACE " " AS_NAME @@ -258,12 +259,13 @@ SOURCE_FILE IDENT "avg" ARG_LIST L_PAREN "(" - FIELD_EXPR - NAME_REF - IDENT "r" - DOT "." - NAME_REF - IDENT "rating" + ARG + FIELD_EXPR + NAME_REF + IDENT "r" + DOT "." + NAME_REF + IDENT "rating" R_PAREN ")" WHITESPACE "\n " FROM_CLAUSE diff --git a/crates/squawk_parser/tests/snapshots/tests__delete_ok.snap b/crates/squawk_parser/tests/snapshots/tests__delete_ok.snap index 2fb28dfd..6600df52 100644 --- a/crates/squawk_parser/tests/snapshots/tests__delete_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__delete_ok.snap @@ -304,8 +304,9 @@ SOURCE_FILE IDENT "max" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "login_time" + ARG + NAME_REF + IDENT "login_time" R_PAREN ")" WHITESPACE " " AS_NAME diff --git a/crates/squawk_parser/tests/snapshots/tests__drop_transform_ok.snap b/crates/squawk_parser/tests/snapshots/tests__drop_transform_ok.snap index ff65e592..e8190c50 100644 --- a/crates/squawk_parser/tests/snapshots/tests__drop_transform_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__drop_transform_ok.snap @@ -65,8 +65,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" WHITESPACE " " LANGUAGE_KW "language" diff --git a/crates/squawk_parser/tests/snapshots/tests__execute_ok.snap b/crates/squawk_parser/tests/snapshots/tests__execute_ok.snap index 981e322b..d612ca79 100644 --- a/crates/squawk_parser/tests/snapshots/tests__execute_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__execute_ok.snap @@ -12,20 +12,24 @@ SOURCE_FILE IDENT "fooplan" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE " " - LITERAL - STRING "'Hunter Valley'" + ARG + LITERAL + STRING "'Hunter Valley'" COMMA "," WHITESPACE " " - LITERAL - STRING "'t'" + ARG + LITERAL + STRING "'t'" COMMA "," WHITESPACE " " - LITERAL - NUMERIC_NUMBER "200.00" + ARG + LITERAL + NUMERIC_NUMBER "200.00" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -36,12 +40,14 @@ SOURCE_FILE IDENT "usrrptplan" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE " " - NAME_REF - CURRENT_DATE_KW "current_date" + ARG + NAME_REF + CURRENT_DATE_KW "current_date" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__explain_ok.snap b/crates/squawk_parser/tests/snapshots/tests__explain_ok.snap index 1c435145..9bd20a47 100644 --- a/crates/squawk_parser/tests/snapshots/tests__explain_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__explain_ok.snap @@ -414,8 +414,9 @@ SOURCE_FILE IDENT "sum" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "i" + ARG + NAME_REF + IDENT "i" R_PAREN ")" WHITESPACE " " FROM_CLAUSE @@ -476,8 +477,9 @@ SOURCE_FILE IDENT "sum" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "bar" + ARG + NAME_REF + IDENT "bar" R_PAREN ")" WHITESPACE " " FROM_CLAUSE @@ -534,12 +536,14 @@ SOURCE_FILE IDENT "query" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "200" + ARG + LITERAL + INT_NUMBER "200" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -566,8 +570,9 @@ SOURCE_FILE IDENT "sum" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "bar" + ARG + NAME_REF + IDENT "bar" R_PAREN ")" WHITESPACE " " FROM_CLAUSE @@ -635,8 +640,9 @@ SOURCE_FILE IDENT "sum" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "bar" + ARG + NAME_REF + IDENT "bar" R_PAREN ")" WHITESPACE " " FROM_CLAUSE diff --git a/crates/squawk_parser/tests/snapshots/tests__merge_ok.snap b/crates/squawk_parser/tests/snapshots/tests__merge_ok.snap index f26bcf92..68fdd400 100644 --- a/crates/squawk_parser/tests/snapshots/tests__merge_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__merge_ok.snap @@ -148,12 +148,14 @@ SOURCE_FILE IDENT "f" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" R_PAREN ")" R_PAREN ")" WHITESPACE "\n " diff --git a/crates/squawk_parser/tests/snapshots/tests__misc_ok.snap b/crates/squawk_parser/tests/snapshots/tests__misc_ok.snap index d148f423..ecbb8030 100644 --- a/crates/squawk_parser/tests/snapshots/tests__misc_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__misc_ok.snap @@ -98,52 +98,55 @@ SOURCE_FILE ARG_LIST L_PAREN "(" WHITESPACE "\n " - CAST_EXPR - LITERAL - POSITIONAL_PARAM "$1" - COLON_COLON - COLON ":" - COLON ":" - ARRAY_TYPE - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "timestamptz" - L_BRACK "[" - R_BRACK "]" + ARG + CAST_EXPR + LITERAL + POSITIONAL_PARAM "$1" + COLON_COLON + COLON ":" + COLON ":" + ARRAY_TYPE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "timestamptz" + L_BRACK "[" + R_BRACK "]" COMMA "," WHITESPACE " \n " - CAST_EXPR - LITERAL - POSITIONAL_PARAM "$2" - COLON_COLON - COLON ":" - COLON ":" - ARRAY_TYPE - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - TEXT_KW "text" - L_BRACK "[" - R_BRACK "]" + ARG + CAST_EXPR + LITERAL + POSITIONAL_PARAM "$2" + COLON_COLON + COLON ":" + COLON ":" + ARRAY_TYPE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" + L_BRACK "[" + R_BRACK "]" COMMA "," WHITESPACE " \n " - CAST_EXPR - LITERAL - POSITIONAL_PARAM "$3" - COLON_COLON - COLON ":" - COLON ":" - ARRAY_TYPE - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "float8" - L_BRACK "[" - R_BRACK "]" + ARG + CAST_EXPR + LITERAL + POSITIONAL_PARAM "$3" + COLON_COLON + COLON ":" + COLON ":" + ARRAY_TYPE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "float8" + L_BRACK "[" + R_BRACK "]" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -259,58 +262,67 @@ SOURCE_FILE ARG_LIST L_PAREN "(" WHITESPACE "\n " - LITERAL - STRING "'embed-english-v3.0'" + ARG + LITERAL + STRING "'embed-english-v3.0'" WHITESPACE "\n " COMMA "," WHITESPACE " " - CALL_EXPR - NAME_REF - IDENT "CONCAT_WS" - ARG_LIST - L_PAREN "(" - LITERAL - STRING "'. '" - COMMA "," - WHITESPACE "\n " + ARG + CALL_EXPR NAME_REF - IDENT "title" - COMMA "," - WHITESPACE "\n " - CALL_EXPR - NAME_REF - COALESCE_KW "COALESCE" - ARG_LIST - L_PAREN "(" - NAME_REF - IDENT "overview" - COMMA "," - WHITESPACE " " + IDENT "CONCAT_WS" + ARG_LIST + L_PAREN "(" + ARG LITERAL - STRING "''" - R_PAREN ")" - WHITESPACE "\n " - R_PAREN ")" + STRING "'. '" + COMMA "," + WHITESPACE "\n " + ARG + NAME_REF + IDENT "title" + COMMA "," + WHITESPACE "\n " + ARG + CALL_EXPR + NAME_REF + COALESCE_KW "COALESCE" + ARG_LIST + L_PAREN "(" + ARG + NAME_REF + IDENT "overview" + COMMA "," + WHITESPACE " " + ARG + LITERAL + STRING "''" + R_PAREN ")" + WHITESPACE "\n " + R_PAREN ")" WHITESPACE "\n " COMMA "," WHITESPACE " " - NAMED_ARG - NAME_REF - IDENT "input_type" - FAT_ARROW "=>" - LITERAL - STRING "'search_document'" + ARG + NAMED_ARG + NAME_REF + IDENT "input_type" + FAT_ARROW "=>" + LITERAL + STRING "'search_document'" WHITESPACE "\n " COMMENT "-- , api_key=>%s" WHITESPACE "\n " COMMA "," WHITESPACE " " - NAMED_ARG - NAME_REF - IDENT "api_key" - FAT_ARROW "=>" - LITERAL - POSITIONAL_PARAM "$1" + ARG + NAMED_ARG + NAME_REF + IDENT "api_key" + FAT_ARROW "=>" + LITERAL + POSITIONAL_PARAM "$1" WHITESPACE "\n" R_PAREN ")" WHITESPACE " " @@ -355,12 +367,14 @@ SOURCE_FILE IDENT "plainto_tsquery" ARG_LIST L_PAREN "(" - LITERAL - STRING "'english'" + ARG + LITERAL + STRING "'english'" COMMA "," WHITESPACE " " - LITERAL - POSITIONAL_PARAM "$1" + ARG + LITERAL + POSITIONAL_PARAM "$1" R_PAREN ")" WHITESPACE " " ALIAS @@ -376,38 +390,42 @@ SOURCE_FILE IDENT "to_tsvector" ARG_LIST L_PAREN "(" - LITERAL - STRING "'english'" + ARG + LITERAL + STRING "'english'" COMMA "," WHITESPACE " " - BIN_EXPR - NAME_REF - IDENT "title" - WHITESPACE " " - CUSTOM_OP - PIPE "|" - PIPE "|" - WHITESPACE " " + ARG BIN_EXPR - LITERAL - STRING "' '" + NAME_REF + IDENT "title" WHITESPACE " " CUSTOM_OP PIPE "|" PIPE "|" WHITESPACE " " - CALL_EXPR - NAME_REF - COALESCE_KW "COALESCE" - ARG_LIST - L_PAREN "(" + BIN_EXPR + LITERAL + STRING "' '" + WHITESPACE " " + CUSTOM_OP + PIPE "|" + PIPE "|" + WHITESPACE " " + CALL_EXPR NAME_REF - IDENT "overview" - COMMA "," - WHITESPACE " " - LITERAL - STRING "''" - R_PAREN ")" + COALESCE_KW "COALESCE" + ARG_LIST + L_PAREN "(" + ARG + NAME_REF + IDENT "overview" + COMMA "," + WHITESPACE " " + ARG + LITERAL + STRING "''" + R_PAREN ")" R_PAREN ")" WHITESPACE " " CUSTOM_OP @@ -429,48 +447,54 @@ SOURCE_FILE IDENT "ts_rank_cd" ARG_LIST L_PAREN "(" - CALL_EXPR - NAME_REF - IDENT "to_tsvector" - ARG_LIST - L_PAREN "(" - LITERAL - STRING "'english'" - COMMA "," - WHITESPACE " " - BIN_EXPR - NAME_REF - IDENT "title" - WHITESPACE " " - CUSTOM_OP - PIPE "|" - PIPE "|" - WHITESPACE " " - BIN_EXPR + ARG + CALL_EXPR + NAME_REF + IDENT "to_tsvector" + ARG_LIST + L_PAREN "(" + ARG LITERAL - STRING "' '" - WHITESPACE " " - CUSTOM_OP - PIPE "|" - PIPE "|" - WHITESPACE " " - CALL_EXPR + STRING "'english'" + COMMA "," + WHITESPACE " " + ARG + BIN_EXPR NAME_REF - COALESCE_KW "COALESCE" - ARG_LIST - L_PAREN "(" - NAME_REF - IDENT "overview" - COMMA "," - WHITESPACE " " + IDENT "title" + WHITESPACE " " + CUSTOM_OP + PIPE "|" + PIPE "|" + WHITESPACE " " + BIN_EXPR LITERAL - STRING "''" - R_PAREN ")" - R_PAREN ")" + STRING "' '" + WHITESPACE " " + CUSTOM_OP + PIPE "|" + PIPE "|" + WHITESPACE " " + CALL_EXPR + NAME_REF + COALESCE_KW "COALESCE" + ARG_LIST + L_PAREN "(" + ARG + NAME_REF + IDENT "overview" + COMMA "," + WHITESPACE " " + ARG + LITERAL + STRING "''" + R_PAREN ")" + R_PAREN ")" COMMA "," WHITESPACE " " - NAME_REF - IDENT "query" + ARG + NAME_REF + IDENT "query" R_PAREN ")" WHITESPACE " " SORT_DESC @@ -507,33 +531,37 @@ SOURCE_FILE ARG_LIST L_PAREN "(" WHITESPACE "\n " - LITERAL - STRING "'embed-english-v3.0'" + ARG + LITERAL + STRING "'embed-english-v3.0'" WHITESPACE "\n " COMMA "," WHITESPACE " " - LITERAL - POSITIONAL_PARAM "$1" + ARG + LITERAL + POSITIONAL_PARAM "$1" WHITESPACE "\n " COMMA "," WHITESPACE " " - NAMED_ARG - NAME_REF - IDENT "_input_type" - FAT_ARROW "=>" - LITERAL - STRING "'search_query'" + ARG + NAMED_ARG + NAME_REF + IDENT "_input_type" + FAT_ARROW "=>" + LITERAL + STRING "'search_query'" WHITESPACE "\n " COMMENT "-- , _api_key=>%s" WHITESPACE "\n " COMMA "," WHITESPACE " " - NAMED_ARG - NAME_REF - IDENT "_api_key" - FAT_ARROW "=>" - LITERAL - POSITIONAL_PARAM "$2" + ARG + NAMED_ARG + NAME_REF + IDENT "_api_key" + FAT_ARROW "=>" + LITERAL + POSITIONAL_PARAM "$2" WHITESPACE "\n " R_PAREN ")" WHITESPACE " " @@ -658,67 +686,73 @@ SOURCE_FILE ARG_LIST L_PAREN "(" WHITESPACE "\n " - BIN_EXPR - CALL_EXPR - FIELD_EXPR - NAME_REF - IDENT "ai" - DOT "." - NAME_REF - IDENT "cohere_rerank" - ARG_LIST - L_PAREN "(" - WHITESPACE "\n " - LITERAL - STRING "'rerank-english-v3.0'" - COMMA "," - WHITESPACE "\n " - COMMENT "-- %s," - WHITESPACE "\n " - LITERAL - POSITIONAL_PARAM "$1" - COMMA "," - WHITESPACE "\n " - COMMENT "-- %s::jsonb," - WHITESPACE "\n " - CAST_EXPR - LITERAL - POSITIONAL_PARAM "$2" - COLON_COLON - COLON ":" - COLON ":" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "jsonb" - COMMA "," - WHITESPACE "\n " - NAMED_ARG + ARG + BIN_EXPR + CALL_EXPR + FIELD_EXPR NAME_REF - IDENT "return_documents" - WHITESPACE " " - FAT_ARROW "=>" - WHITESPACE " " - LITERAL - TRUE_KW "true" - COMMA "," - WHITESPACE "\n " - COMMENT "-- api_key=>%s" - WHITESPACE "\n " - NAMED_ARG + IDENT "ai" + DOT "." NAME_REF - IDENT "api_key" - FAT_ARROW "=>" - LITERAL - POSITIONAL_PARAM "$3" - WHITESPACE "\n " - R_PAREN ")" - CUSTOM_OP - MINUS "-" - R_ANGLE ">" - LITERAL - STRING "'results'" + IDENT "cohere_rerank" + ARG_LIST + L_PAREN "(" + WHITESPACE "\n " + ARG + LITERAL + STRING "'rerank-english-v3.0'" + COMMA "," + WHITESPACE "\n " + COMMENT "-- %s," + WHITESPACE "\n " + ARG + LITERAL + POSITIONAL_PARAM "$1" + COMMA "," + WHITESPACE "\n " + COMMENT "-- %s::jsonb," + WHITESPACE "\n " + ARG + CAST_EXPR + LITERAL + POSITIONAL_PARAM "$2" + COLON_COLON + COLON ":" + COLON ":" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "jsonb" + COMMA "," + WHITESPACE "\n " + ARG + NAMED_ARG + NAME_REF + IDENT "return_documents" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + LITERAL + TRUE_KW "true" + COMMA "," + WHITESPACE "\n " + COMMENT "-- api_key=>%s" + WHITESPACE "\n " + ARG + NAMED_ARG + NAME_REF + IDENT "api_key" + FAT_ARROW "=>" + LITERAL + POSITIONAL_PARAM "$3" + WHITESPACE "\n " + R_PAREN ")" + CUSTOM_OP + MINUS "-" + R_ANGLE ">" + LITERAL + STRING "'results'" WHITESPACE "\n" R_PAREN ")" WHITESPACE " " @@ -879,16 +913,19 @@ SOURCE_FILE ARG_LIST L_PAREN "(" 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}'" + ARG + 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}'" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "15" + ARG + LITERAL + INT_NUMBER "15" WHITESPACE " " R_PAREN ")" SEMICOLON ";" @@ -991,12 +1028,14 @@ SOURCE_FILE ARG_LIST L_PAREN "(" WHITESPACE " " - LITERAL - STRING "'day'" + ARG + LITERAL + STRING "'day'" COMMA "," WHITESPACE " " - NAME_REF - IDENT "interaction_ts" + ARG + NAME_REF + IDENT "interaction_ts" WHITESPACE " " R_PAREN ")" WHITESPACE " " @@ -1014,31 +1053,33 @@ SOURCE_FILE ARG_LIST L_PAREN "(" WHITESPACE " " - CAST_EXPR - CALL_EXPR - EXTRACT_FN - EXTRACT_KW "EXTRACT" - L_PAREN "(" - WHITESPACE " " - STRING "'hour'" - WHITESPACE " " - FROM_KW "FROM" - WHITESPACE " " - NAME_REF - IDENT "interaction_ts" - R_PAREN ")" - COLON_COLON - COLON ":" - COLON ":" - PATH_TYPE - PATH - PATH_SEGMENT + ARG + CAST_EXPR + CALL_EXPR + EXTRACT_FN + EXTRACT_KW "EXTRACT" + L_PAREN "(" + WHITESPACE " " + STRING "'hour'" + WHITESPACE " " + FROM_KW "FROM" + WHITESPACE " " NAME_REF - IDENT "int4" + IDENT "interaction_ts" + R_PAREN ")" + COLON_COLON + COLON ":" + COLON ":" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "int4" COMMA "," WHITESPACE " " - NAME_REF - IDENT "interaction_count" + ARG + NAME_REF + IDENT "interaction_count" WHITESPACE " " R_PAREN ")" WHITESPACE " " @@ -1072,31 +1113,33 @@ SOURCE_FILE ARG_LIST L_PAREN "(" WHITESPACE " " - CAST_EXPR - CALL_EXPR - EXTRACT_FN - EXTRACT_KW "EXTRACT" - L_PAREN "(" - WHITESPACE " " - STRING "'hour'" - WHITESPACE " " - FROM_KW "FROM" - WHITESPACE " " - NAME_REF - IDENT "interaction_ts" - R_PAREN ")" - COLON_COLON - COLON ":" - COLON ":" - PATH_TYPE - PATH - PATH_SEGMENT + ARG + CAST_EXPR + CALL_EXPR + EXTRACT_FN + EXTRACT_KW "EXTRACT" + L_PAREN "(" + WHITESPACE " " + STRING "'hour'" + WHITESPACE " " + FROM_KW "FROM" + WHITESPACE " " NAME_REF - IDENT "int4" + IDENT "interaction_ts" + R_PAREN ")" + COLON_COLON + COLON ":" + COLON ":" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "int4" COMMA "," WHITESPACE " " - NAME_REF - IDENT "interaction_count" + ARG + NAME_REF + IDENT "interaction_count" WHITESPACE " " R_PAREN ")" WHITESPACE " " @@ -1838,8 +1881,9 @@ SOURCE_FILE IDENT "check_default" ARG_LIST L_PAREN "(" - LITERAL - FALSE_KW "false" + ARG + LITERAL + FALSE_KW "false" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -1877,8 +1921,9 @@ SOURCE_FILE IDENT "partition_data_proc" ARG_LIST L_PAREN "(" - LITERAL - STRING "'partman_test.time_taptest_table'" + ARG + LITERAL + STRING "'partman_test.time_taptest_table'" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -1922,8 +1967,9 @@ SOURCE_FILE IDENT "partition_gap_fill" ARG_LIST L_PAREN "(" - LITERAL - STRING "'partman_test.time_taptest_table'" + ARG + LITERAL + STRING "'partman_test.time_taptest_table'" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n\n" @@ -1945,12 +1991,14 @@ SOURCE_FILE ARG_LIST L_PAREN "(" WHITESPACE "\n " - LITERAL - STRING "'You are a science fiction expert!'" + ARG + LITERAL + STRING "'You are a science fiction expert!'" COMMA "," WHITESPACE "\n " - LITERAL - STRING "'What is the Star Trek episode where Deanna and her\n mother are kidnapped?'" + ARG + LITERAL + STRING "'What is the Star Trek episode where Deanna and her\n mother are kidnapped?'" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -2113,24 +2161,25 @@ SOURCE_FILE IDENT "vector" ARG_LIST L_PAREN "(" - BIN_EXPR - NAME_REF - IDENT "title" - WHITESPACE " " - CUSTOM_OP - PIPE "|" - PIPE "|" - WHITESPACE " " + ARG BIN_EXPR - LITERAL - STRING "' -- '" + NAME_REF + IDENT "title" WHITESPACE " " CUSTOM_OP PIPE "|" PIPE "|" WHITESPACE " " - NAME_REF - IDENT "plot" + BIN_EXPR + LITERAL + STRING "' -- '" + WHITESPACE " " + CUSTOM_OP + PIPE "|" + PIPE "|" + WHITESPACE " " + NAME_REF + IDENT "plot" R_PAREN ")" COLON_COLON COLON ":" @@ -2192,8 +2241,9 @@ SOURCE_FILE IDENT "vector" ARG_LIST L_PAREN "(" - LITERAL - STRING "'What is the Star Trek episode where Deanna and her mother are kidnapped?'" + ARG + LITERAL + STRING "'What is the Star Trek episode where Deanna and her mother are kidnapped?'" R_PAREN ")" COLON_COLON COLON ":" @@ -2273,8 +2323,9 @@ SOURCE_FILE IDENT "trektrivia" ARG_LIST L_PAREN "(" - LITERAL - STRING "'What is the Star Trek episode where Deanna and her mother are kidnapped?'" + ARG + LITERAL + STRING "'What is the Star Trek episode where Deanna and her mother are kidnapped?'" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n\n" @@ -2506,11 +2557,13 @@ SOURCE_FILE IDENT "generate_series" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" COMMA "," - LITERAL - INT_NUMBER "1000000" + ARG + LITERAL + INT_NUMBER "1000000" R_PAREN ")" WHITESPACE " " ALIAS @@ -2535,16 +2588,19 @@ SOURCE_FILE IDENT "create_sequence_pipeline" ARG_LIST L_PAREN "(" - LITERAL - STRING "'view-count-pipeline'" + ARG + LITERAL + STRING "'view-count-pipeline'" COMMA "," WHITESPACE " " - LITERAL - STRING "'events'" + ARG + LITERAL + STRING "'events'" COMMA "," WHITESPACE "\n " - LITERAL - DOLLAR_QUOTED_STRING "$$\n insert into view_counts\n select date_trunc('day', event_time), user_id, count(*)\n from events where event_id between $1 and $2\n group by 1, 2\n on conflict (day, user_id) do update set count = view_counts.count + EXCLUDED.count;\n $$" + ARG + LITERAL + DOLLAR_QUOTED_STRING "$$\n insert into view_counts\n select date_trunc('day', event_time), user_id, count(*)\n from events where event_id between $1 and $2\n group by 1, 2\n on conflict (day, user_id) do update set count = view_counts.count + EXCLUDED.count;\n $$" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -2567,8 +2623,9 @@ SOURCE_FILE IDENT "sum" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "count" + ARG + NAME_REF + IDENT "count" R_PAREN ")" WHITESPACE " " FROM_CLAUSE @@ -2729,16 +2786,19 @@ SOURCE_FILE IDENT "create_sequence_pipeline" ARG_LIST L_PAREN "(" - LITERAL - STRING "'unpack-json-pipeline'" + ARG + LITERAL + STRING "'unpack-json-pipeline'" COMMA "," WHITESPACE " " - LITERAL - STRING "'events_json'" + ARG + LITERAL + STRING "'events_json'" COMMA "," WHITESPACE "\n " - LITERAL - DOLLAR_QUOTED_STRING "$$\n insert into events (event_id, event_time, user_id, response_time)\n select\n nextval('events_event_id_seq'),\n (payload->>'created_at')::timestamptz,\n (payload->'actor'->>'id')::bigint,\n (payload->>'response_time')::double precision\n from events_json\n where id between $1 and $2\n $$" + ARG + LITERAL + DOLLAR_QUOTED_STRING "$$\n insert into events (event_id, event_time, user_id, response_time)\n select\n nextval('events_event_id_seq'),\n (payload->>'created_at')::timestamptz,\n (payload->'actor'->>'id')::bigint,\n (payload->>'response_time')::double precision\n from events_json\n where id between $1 and $2\n $$" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -2839,16 +2899,19 @@ SOURCE_FILE IDENT "create_time_interval_pipeline" ARG_LIST L_PAREN "(" - LITERAL - STRING "'distinct-user-count'" + ARG + LITERAL + STRING "'distinct-user-count'" COMMA "," WHITESPACE " " - LITERAL - STRING "'1 hour'" + ARG + LITERAL + STRING "'1 hour'" COMMA "," WHITESPACE "\n " - LITERAL - DOLLAR_QUOTED_STRING "$$\n insert into view_counts\n select date_trunc('hour', event_time), count(distinct user_id)\n from events where event_time >= $1 and event_time < $2\n group by 1\n $$" + ARG + LITERAL + DOLLAR_QUOTED_STRING "$$\n insert into view_counts\n select date_trunc('hour', event_time), count(distinct user_id)\n from events where event_time >= $1 and event_time < $2\n group by 1\n $$" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -2967,50 +3030,56 @@ SOURCE_FILE ARG_LIST L_PAREN "(" WHITESPACE "\n " - LITERAL - STRING "'export-events'" + ARG + LITERAL + STRING "'export-events'" COMMA "," WHITESPACE "\n " - LITERAL - STRING "'1 day'" + ARG + LITERAL + STRING "'1 day'" COMMA "," WHITESPACE "\n " - LITERAL - STRING "'select export_events($1, $2)'" + ARG + LITERAL + STRING "'select export_events($1, $2)'" COMMA "," WHITESPACE "\n\n " - NAMED_ARG - NAME_REF - IDENT "source_table_name" - WHITESPACE " " - COLON_EQ ":=" - WHITESPACE " " - LITERAL - STRING "'events'" + ARG + NAMED_ARG + NAME_REF + IDENT "source_table_name" + WHITESPACE " " + COLON_EQ ":=" + WHITESPACE " " + LITERAL + STRING "'events'" COMMA "," WHITESPACE " " COMMENT "/* wait for writes on events to finish */" WHITESPACE "\n " - NAMED_ARG - NAME_REF - IDENT "batched" - WHITESPACE " " - COLON_EQ ":=" - WHITESPACE " " - LITERAL - FALSE_KW "false" + ARG + NAMED_ARG + NAME_REF + IDENT "batched" + WHITESPACE " " + COLON_EQ ":=" + WHITESPACE " " + LITERAL + FALSE_KW "false" COMMA "," WHITESPACE " " COMMENT "/* separate execution for each day */" WHITESPACE "\n " - NAMED_ARG - NAME_REF - IDENT "start_time" - WHITESPACE " " - COLON_EQ ":=" - WHITESPACE " " - LITERAL - STRING "'2024-01-01'" + ARG + NAMED_ARG + NAME_REF + IDENT "start_time" + WHITESPACE " " + COLON_EQ ":=" + WHITESPACE " " + LITERAL + STRING "'2024-01-01'" WHITESPACE " " COMMENT "/* export all days from Jan 1st now */" WHITESPACE "\n" @@ -3086,16 +3155,19 @@ SOURCE_FILE ARG_LIST L_PAREN "(" WHITESPACE "\n " - LITERAL - STRING "'import-events'" + ARG + LITERAL + STRING "'import-events'" COMMA "," WHITESPACE "\n " - LITERAL - STRING "'s3://mybucket/events/*.csv'" + ARG + LITERAL + STRING "'s3://mybucket/events/*.csv'" COMMA "," WHITESPACE "\n " - LITERAL - STRING "'select import_events($1)'" + ARG + LITERAL + STRING "'select import_events($1)'" WHITESPACE "\n" R_PAREN ")" SEMICOLON ";" @@ -3511,55 +3583,18 @@ SOURCE_FILE IDENT "json_array_elements" ARG_LIST L_PAREN "(" - CAST_EXPR - PAREN_EXPR - L_PAREN "(" - BIN_EXPR - NAME_REF - IDENT "attrs" - CUSTOM_OP - MINUS "-" - R_ANGLE ">" - LITERAL - STRING "'eventTypeGroups'" - R_PAREN ")" - COLON_COLON - COLON ":" - COLON ":" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - JSON_KW "json" - R_PAREN ")" - WHITESPACE " " - ALIAS - NAME - IDENT "etg" - WHITESPACE "\n " - JOIN - JOIN_CROSS - CROSS_KW "cross" - WHITESPACE " " - JOIN_KW "join" - WHITESPACE " " - FROM_ITEM - CALL_EXPR - NAME_REF - IDENT "json_array_elements" - ARG_LIST - L_PAREN "(" + ARG CAST_EXPR PAREN_EXPR L_PAREN "(" BIN_EXPR NAME_REF - IDENT "etg" + IDENT "attrs" CUSTOM_OP MINUS "-" R_ANGLE ">" LITERAL - STRING "'eventTypes'" + STRING "'eventTypeGroups'" R_PAREN ")" COLON_COLON COLON ":" @@ -3568,7 +3603,46 @@ SOURCE_FILE PATH PATH_SEGMENT NAME_REF - JSON_KW "json" + JSON_KW "json" + R_PAREN ")" + WHITESPACE " " + ALIAS + NAME + IDENT "etg" + WHITESPACE "\n " + JOIN + JOIN_CROSS + CROSS_KW "cross" + WHITESPACE " " + JOIN_KW "join" + WHITESPACE " " + FROM_ITEM + CALL_EXPR + NAME_REF + IDENT "json_array_elements" + ARG_LIST + L_PAREN "(" + ARG + CAST_EXPR + PAREN_EXPR + L_PAREN "(" + BIN_EXPR + NAME_REF + IDENT "etg" + CUSTOM_OP + MINUS "-" + R_ANGLE ">" + LITERAL + STRING "'eventTypes'" + R_PAREN ")" + COLON_COLON + COLON ":" + COLON ":" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + JSON_KW "json" R_PAREN ")" WHITESPACE " " ALIAS @@ -3688,26 +3762,27 @@ SOURCE_FILE IDENT "json_array_elements" ARG_LIST L_PAREN "(" - CAST_EXPR - PAREN_EXPR - L_PAREN "(" - BIN_EXPR - NAME_REF - IDENT "attrs" - CUSTOM_OP - MINUS "-" - R_ANGLE ">" - LITERAL - STRING "'bookings'" - R_PAREN ")" - COLON_COLON - COLON ":" - COLON ":" - PATH_TYPE - PATH - PATH_SEGMENT + ARG + CAST_EXPR + PAREN_EXPR + L_PAREN "(" + BIN_EXPR NAME_REF - JSON_KW "json" + IDENT "attrs" + CUSTOM_OP + MINUS "-" + R_ANGLE ">" + LITERAL + STRING "'bookings'" + R_PAREN ")" + COLON_COLON + COLON ":" + COLON ":" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + JSON_KW "json" R_PAREN ")" WHITESPACE " " ALIAS @@ -3787,12 +3862,14 @@ SOURCE_FILE IDENT "date_trunc" ARG_LIST L_PAREN "(" - LITERAL - STRING "'hour'" + ARG + LITERAL + STRING "'hour'" COMMA "," WHITESPACE " " - NAME_REF - IDENT "event_time" + ARG + NAME_REF + IDENT "event_time" R_PAREN ")" WHITESPACE " " AS_NAME @@ -3826,8 +3903,9 @@ SOURCE_FILE L_PAREN "(" DISTINCT_KW "distinct" WHITESPACE " " - NAME_REF - IDENT "user_id" + ARG + NAME_REF + IDENT "user_id" R_PAREN ")" WHITESPACE " " AS_NAME @@ -4697,8 +4775,9 @@ SOURCE_FILE IDENT "AVG" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "revenue" + ARG + NAME_REF + IDENT "revenue" R_PAREN ")" WHITESPACE " \n " FROM_CLAUSE @@ -4805,8 +4884,9 @@ SOURCE_FILE IDENT "AVG" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "revenue" + ARG + NAME_REF + IDENT "revenue" R_PAREN ")" WHITESPACE " " OVER_CLAUSE @@ -4871,12 +4951,14 @@ SOURCE_FILE IDENT "date_trunc" ARG_LIST L_PAREN "(" - LITERAL - STRING "'month'" + ARG + LITERAL + STRING "'month'" COMMA "," WHITESPACE " " - NAME_REF - TIMESTAMP_KW "timestamp" + ARG + NAME_REF + TIMESTAMP_KW "timestamp" R_PAREN ")" WHITESPACE " " AS_NAME @@ -4897,8 +4979,9 @@ SOURCE_FILE IDENT "SUM" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "revenue" + ARG + NAME_REF + IDENT "revenue" R_PAREN ")" WHITESPACE " " AS_NAME @@ -4914,14 +4997,16 @@ SOURCE_FILE IDENT "SUM" ARG_LIST L_PAREN "(" - CALL_EXPR - NAME_REF - IDENT "SUM" - ARG_LIST - L_PAREN "(" + ARG + CALL_EXPR NAME_REF - IDENT "revenue" - R_PAREN ")" + IDENT "SUM" + ARG_LIST + L_PAREN "(" + ARG + NAME_REF + IDENT "revenue" + R_PAREN ")" R_PAREN ")" WHITESPACE " " OVER_CLAUSE @@ -4949,12 +5034,14 @@ SOURCE_FILE IDENT "date_trunc" ARG_LIST L_PAREN "(" - LITERAL - STRING "'month'" + ARG + LITERAL + STRING "'month'" COMMA "," WHITESPACE " " - NAME_REF - TIMESTAMP_KW "timestamp" + ARG + NAME_REF + TIMESTAMP_KW "timestamp" R_PAREN ")" WHITESPACE "\n " R_PAREN ")" @@ -5013,12 +5100,14 @@ SOURCE_FILE IDENT "date_trunc" ARG_LIST L_PAREN "(" - LITERAL - STRING "'month'" + ARG + LITERAL + STRING "'month'" COMMA "," WHITESPACE " " - NAME_REF - TIMESTAMP_KW "timestamp" + ARG + NAME_REF + TIMESTAMP_KW "timestamp" R_PAREN ")" WHITESPACE " " AS_NAME @@ -5036,8 +5125,9 @@ SOURCE_FILE L_PAREN "(" DISTINCT_KW "DISTINCT" WHITESPACE " " - NAME_REF - IDENT "user_id" + ARG + NAME_REF + IDENT "user_id" R_PAREN ")" WHITESPACE " " AS_NAME @@ -5053,8 +5143,9 @@ SOURCE_FILE IDENT "SUM" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "revenue" + ARG + NAME_REF + IDENT "revenue" R_PAREN ")" WHITESPACE " " AS_NAME @@ -5211,12 +5302,13 @@ SOURCE_FILE L_PAREN "(" DISTINCT_KW "DISTINCT" WHITESPACE " " - FIELD_EXPR - NAME_REF - IDENT "e" - DOT "." - NAME_REF - IDENT "user_id" + ARG + FIELD_EXPR + NAME_REF + IDENT "e" + DOT "." + NAME_REF + IDENT "user_id" R_PAREN ")" WHITESPACE " " AS_NAME @@ -5232,8 +5324,9 @@ SOURCE_FILE IDENT "SUM" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "revenue" + ARG + NAME_REF + IDENT "revenue" R_PAREN ")" WHITESPACE " " AS_NAME @@ -5318,12 +5411,14 @@ SOURCE_FILE IDENT "date_trunc" ARG_LIST L_PAREN "(" - LITERAL - STRING "'month'" + ARG + LITERAL + STRING "'month'" COMMA "," WHITESPACE " " - NAME_REF - TIMESTAMP_KW "timestamp" + ARG + NAME_REF + TIMESTAMP_KW "timestamp" R_PAREN ")" WHITESPACE " " AS_NAME @@ -5357,8 +5452,9 @@ SOURCE_FILE L_PAREN "(" DISTINCT_KW "DISTINCT" WHITESPACE " " - NAME_REF - IDENT "user_id" + ARG + NAME_REF + IDENT "user_id" R_PAREN ")" WHITESPACE " " AS_NAME @@ -5681,8 +5777,9 @@ SOURCE_FILE IDENT "MAX" ARG_LIST L_PAREN "(" - NAME_REF - TIMESTAMP_KW "timestamp" + ARG + NAME_REF + TIMESTAMP_KW "timestamp" R_PAREN ")" WHITESPACE "\n " FROM_CLAUSE @@ -5782,12 +5879,14 @@ SOURCE_FILE IDENT "date_trunc" ARG_LIST L_PAREN "(" - LITERAL - STRING "'month'" + ARG + LITERAL + STRING "'month'" COMMA "," WHITESPACE " " - NAME_REF - TIMESTAMP_KW "timestamp" + ARG + NAME_REF + TIMESTAMP_KW "timestamp" R_PAREN ")" WHITESPACE "\n" R_PAREN ")" @@ -5849,10 +5948,19 @@ SOURCE_FILE IDENT "corr" ARG_LIST L_PAREN "(" - CAST_EXPR + ARG CAST_EXPR - NAME_REF - IDENT "ctid" + CAST_EXPR + NAME_REF + IDENT "ctid" + COLON_COLON + COLON ":" + COLON ":" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" COLON_COLON COLON ":" COLON ":" @@ -5860,21 +5968,22 @@ SOURCE_FILE PATH PATH_SEGMENT NAME_REF - TEXT_KW "text" - COLON_COLON - COLON ":" - COLON ":" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "float8" + IDENT "float8" COMMA "," WHITESPACE " " - CAST_EXPR + ARG CAST_EXPR - NAME_REF - TIMESTAMP_KW "timestamp" + CAST_EXPR + NAME_REF + TIMESTAMP_KW "timestamp" + COLON_COLON + COLON ":" + COLON ":" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + TEXT_KW "text" COLON_COLON COLON ":" COLON ":" @@ -5882,15 +5991,7 @@ SOURCE_FILE PATH PATH_SEGMENT NAME_REF - TEXT_KW "text" - COLON_COLON - COLON ":" - COLON ":" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "float8" + IDENT "float8" R_PAREN ")" WHITESPACE " " FROM_CLAUSE @@ -5937,12 +6038,13 @@ SOURCE_FILE IDENT "SUM" ARG_LIST L_PAREN "(" - FIELD_EXPR - NAME_REF - IDENT "po" - DOT "." - NAME_REF - IDENT "qty" + ARG + FIELD_EXPR + NAME_REF + IDENT "po" + DOT "." + NAME_REF + IDENT "qty" R_PAREN ")" WHITESPACE " " AS_NAME @@ -6259,12 +6361,14 @@ SOURCE_FILE IDENT "create_hypertable" ARG_LIST L_PAREN "(" - LITERAL - STRING "'solar_panel_metrics'" + ARG + LITERAL + STRING "'solar_panel_metrics'" COMMA "," WHITESPACE " " - LITERAL - STRING "'time'" + ARG + LITERAL + STRING "'time'" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -6281,12 +6385,14 @@ SOURCE_FILE IDENT "time_bucket" ARG_LIST L_PAREN "(" - LITERAL - STRING "'1 day'" + ARG + LITERAL + STRING "'1 day'" COMMA "," WHITESPACE " " - NAME_REF - TIME_KW "time" + ARG + NAME_REF + TIME_KW "time" R_PAREN ")" WHITESPACE " " AS_NAME @@ -6307,14 +6413,15 @@ SOURCE_FILE IDENT "avg" ARG_LIST L_PAREN "(" - BIN_EXPR - NAME_REF - IDENT "voltage" - WHITESPACE " " - STAR "*" - WHITESPACE " " - NAME_REF - CURRENT_KW "current" + ARG + BIN_EXPR + NAME_REF + IDENT "voltage" + WHITESPACE " " + STAR "*" + WHITESPACE " " + NAME_REF + CURRENT_KW "current" R_PAREN ")" WHITESPACE " " AS_NAME @@ -6341,14 +6448,15 @@ SOURCE_FILE IDENT "avg" ARG_LIST L_PAREN "(" - BIN_EXPR - NAME_REF - IDENT "voltage" - WHITESPACE " " - STAR "*" - WHITESPACE " " - NAME_REF - CURRENT_KW "current" + ARG + BIN_EXPR + NAME_REF + IDENT "voltage" + WHITESPACE " " + STAR "*" + WHITESPACE " " + NAME_REF + CURRENT_KW "current" R_PAREN ")" WHITESPACE " " SLASH "/" @@ -6486,8 +6594,9 @@ SOURCE_FILE IDENT "avg" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "vibration_level" + ARG + NAME_REF + IDENT "vibration_level" R_PAREN ")" WHITESPACE " " AS_NAME @@ -6503,8 +6612,9 @@ SOURCE_FILE IDENT "stddev" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "vibration_level" + ARG + NAME_REF + IDENT "vibration_level" R_PAREN ")" WHITESPACE " " AS_NAME @@ -6568,12 +6678,14 @@ SOURCE_FILE IDENT "time_bucket" ARG_LIST L_PAREN "(" - LITERAL - STRING "'5 minutes'" + ARG + LITERAL + STRING "'5 minutes'" COMMA "," WHITESPACE " " - NAME_REF - TIME_KW "time" + ARG + NAME_REF + TIME_KW "time" R_PAREN ")" WHITESPACE " " AS_NAME @@ -6687,23 +6799,24 @@ SOURCE_FILE IDENT "abs" ARG_LIST L_PAREN "(" - BIN_EXPR - PAREN_EXPR - L_PAREN "(" - BIN_EXPR - NAME_REF - IDENT "vibration_level" - WHITESPACE " " - MINUS "-" - WHITESPACE " " - NAME_REF - IDENT "avg_vibration" - R_PAREN ")" - WHITESPACE " " - SLASH "/" - WHITESPACE " " - NAME_REF - IDENT "stddev_vibration" + ARG + BIN_EXPR + PAREN_EXPR + L_PAREN "(" + BIN_EXPR + NAME_REF + IDENT "vibration_level" + WHITESPACE " " + MINUS "-" + WHITESPACE " " + NAME_REF + IDENT "avg_vibration" + R_PAREN ")" + WHITESPACE " " + SLASH "/" + WHITESPACE " " + NAME_REF + IDENT "stddev_vibration" R_PAREN ")" WHITESPACE " " R_ANGLE ">" @@ -6725,12 +6838,14 @@ SOURCE_FILE IDENT "time_bucket" ARG_LIST L_PAREN "(" - LITERAL - STRING "'5 minutes'" + ARG + LITERAL + STRING "'5 minutes'" COMMA "," WHITESPACE " " - NAME_REF - TIME_KW "time" + ARG + NAME_REF + TIME_KW "time" R_PAREN ")" WHITESPACE " " AS_NAME @@ -6751,8 +6866,9 @@ SOURCE_FILE IDENT "sum" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "available_power" + ARG + NAME_REF + IDENT "available_power" R_PAREN ")" WHITESPACE " " AS_NAME @@ -6768,8 +6884,9 @@ SOURCE_FILE IDENT "sum" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "storage_capacity" + ARG + NAME_REF + IDENT "storage_capacity" R_PAREN ")" WHITESPACE " " AS_NAME @@ -6865,12 +6982,14 @@ SOURCE_FILE IDENT "time_bucket" ARG_LIST L_PAREN "(" - LITERAL - STRING "'1 hour'" + ARG + LITERAL + STRING "'1 hour'" COMMA "," WHITESPACE " " - NAME_REF - TIME_KW "time" + ARG + NAME_REF + TIME_KW "time" R_PAREN ")" WHITESPACE " " AS_NAME @@ -6886,8 +7005,9 @@ SOURCE_FILE IDENT "avg" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "price" + ARG + NAME_REF + IDENT "price" R_PAREN ")" WHITESPACE " " AS_NAME @@ -6903,8 +7023,9 @@ SOURCE_FILE IDENT "percentile_cont" ARG_LIST L_PAREN "(" - LITERAL - NUMERIC_NUMBER "0.75" + ARG + LITERAL + NUMERIC_NUMBER "0.75" R_PAREN ")" WHITESPACE " " WITHIN_CLAUSE diff --git a/crates/squawk_parser/tests/snapshots/tests__select_casts_ok.snap b/crates/squawk_parser/tests/snapshots/tests__select_casts_ok.snap index 30021736..28dc265f 100644 --- a/crates/squawk_parser/tests/snapshots/tests__select_casts_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__select_casts_ok.snap @@ -74,8 +74,9 @@ SOURCE_FILE IDENT "int8" ARG_LIST L_PAREN "(" - LITERAL - STRING "'1234'" + ARG + LITERAL + STRING "'1234'" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -95,8 +96,9 @@ SOURCE_FILE BIT_KW "bit" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "3" + ARG + LITERAL + INT_NUMBER "3" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -120,8 +122,9 @@ SOURCE_FILE BIT_KW "bit" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "12" + ARG + LITERAL + INT_NUMBER "12" R_PAREN ")" R_PAREN ")" SEMICOLON ";" @@ -143,8 +146,9 @@ SOURCE_FILE BIT_KW "bit" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "4" + ARG + LITERAL + INT_NUMBER "4" R_PAREN ")" COLON_COLON COLON ":" @@ -181,8 +185,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" R_PAREN ")" L_BRACK "[" R_BRACK "]" @@ -440,8 +445,9 @@ SOURCE_FILE VARYING_KW "varying" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "4" + ARG + LITERAL + INT_NUMBER "4" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -1659,12 +1665,14 @@ SOURCE_FILE IDENT "bar" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "buzz" + ARG + NAME_REF + IDENT "buzz" COMMA "," WHITESPACE " " - NAME_REF - IDENT "bizz" + ARG + NAME_REF + IDENT "bizz" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -1700,8 +1708,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "5" + ARG + LITERAL + INT_NUMBER "5" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -1722,8 +1731,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "255" + ARG + LITERAL + INT_NUMBER "255" R_PAREN ")" L_BRACK "[" R_BRACK "]" @@ -1770,8 +1780,9 @@ SOURCE_FILE IDENT "t" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "255" + ARG + LITERAL + INT_NUMBER "255" R_PAREN ")" L_BRACK "[" R_BRACK "]" @@ -1801,8 +1812,9 @@ SOURCE_FILE IDENT "buzz" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "5" + ARG + LITERAL + INT_NUMBER "5" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -1870,8 +1882,9 @@ SOURCE_FILE IDENT "buzz" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "255" + ARG + LITERAL + INT_NUMBER "255" R_PAREN ")" L_BRACK "[" R_BRACK "]" @@ -1993,8 +2006,9 @@ SOURCE_FILE FLOAT_KW "float" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -2054,16 +2068,19 @@ SOURCE_FILE DECIMAL_KW "decimal" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "3" + ARG + LITERAL + INT_NUMBER "3" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -2105,16 +2122,19 @@ SOURCE_FILE DEC_KW "dec" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "3" + ARG + LITERAL + INT_NUMBER "3" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -2156,12 +2176,14 @@ SOURCE_FILE NUMERIC_KW "numeric" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -2204,11 +2226,13 @@ SOURCE_FILE NUMERIC_KW "numeric" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" COMMA "," - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" R_PAREN ")" L_BRACK "[" LITERAL @@ -2545,8 +2569,9 @@ SOURCE_FILE CHAR_KW "char" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" R_PAREN ")" WHITESPACE " " COLLATE_KW "collate" @@ -2573,8 +2598,9 @@ SOURCE_FILE CHAR_KW "CHAR" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" R_PAREN ")" WHITESPACE " " COLLATE_KW "collate" @@ -2594,8 +2620,9 @@ SOURCE_FILE CHAR_KW "CHAR" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -2855,8 +2882,9 @@ SOURCE_FILE BIT_KW "bit" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" SEMICOLON ";" WHITESPACE " " @@ -2878,8 +2906,9 @@ SOURCE_FILE BIT_KW "bit" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "3" + ARG + LITERAL + INT_NUMBER "3" R_PAREN ")" SEMICOLON ";" WHITESPACE " " @@ -2905,8 +2934,9 @@ SOURCE_FILE BIT_KW "bit" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "12" + ARG + LITERAL + INT_NUMBER "12" R_PAREN ")" R_PAREN ")" SEMICOLON ";" @@ -2930,8 +2960,9 @@ SOURCE_FILE BIT_KW "bit" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "4" + ARG + LITERAL + INT_NUMBER "4" R_PAREN ")" COLON_COLON COLON ":" @@ -3052,8 +3083,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" R_PAREN ")" L_BRACK "[" R_BRACK "]" @@ -3380,8 +3412,9 @@ SOURCE_FILE VARYING_KW "varying" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" WHITESPACE " " LITERAL @@ -3400,8 +3433,9 @@ SOURCE_FILE CHARACTER_KW "character" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" WHITESPACE " " LITERAL @@ -3422,8 +3456,9 @@ SOURCE_FILE VARYING_KW "varying" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" WHITESPACE " " LITERAL @@ -3442,8 +3477,9 @@ SOURCE_FILE CHAR_KW "char" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" WHITESPACE " " LITERAL @@ -3462,8 +3498,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" WHITESPACE " " LITERAL @@ -3486,8 +3523,9 @@ SOURCE_FILE VARYING_KW "varying" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" WHITESPACE " " LITERAL @@ -3508,8 +3546,9 @@ SOURCE_FILE CHARACTER_KW "character" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" WHITESPACE " " LITERAL @@ -3532,8 +3571,9 @@ SOURCE_FILE VARYING_KW "varying" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" WHITESPACE " " LITERAL @@ -3554,8 +3594,9 @@ SOURCE_FILE CHAR_KW "char" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" WHITESPACE " " LITERAL @@ -3576,8 +3617,9 @@ SOURCE_FILE VARYING_KW "varying" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" WHITESPACE " " LITERAL @@ -3596,8 +3638,9 @@ SOURCE_FILE NCHAR_KW "nchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" WHITESPACE " " LITERAL @@ -3618,8 +3661,9 @@ SOURCE_FILE VARYING_KW "varying" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" WHITESPACE " " LITERAL @@ -3638,8 +3682,9 @@ SOURCE_FILE BIT_KW "bit" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" WHITESPACE " " LITERAL @@ -3790,8 +3835,9 @@ SOURCE_FILE FLOAT_KW "float" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "8" + ARG + LITERAL + INT_NUMBER "8" R_PAREN ")" WHITESPACE " " LITERAL @@ -3826,12 +3872,14 @@ SOURCE_FILE DECIMAL_KW "decimal" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" R_PAREN ")" WHITESPACE " " LITERAL @@ -3867,12 +3915,14 @@ SOURCE_FILE DEC_KW "dec" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" R_PAREN ")" WHITESPACE " " LITERAL @@ -3908,12 +3958,14 @@ SOURCE_FILE NUMERIC_KW "numeric" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" R_PAREN ")" WHITESPACE " " LITERAL @@ -3990,12 +4042,14 @@ SOURCE_FILE IDENT "bar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" R_PAREN ")" WHITESPACE " " LITERAL @@ -4019,8 +4073,9 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" R_PAREN ")" WHITESPACE " " LITERAL @@ -4049,12 +4104,14 @@ SOURCE_FILE IDENT "bar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" R_PAREN ")" WHITESPACE " " LITERAL diff --git a/crates/squawk_parser/tests/snapshots/tests__select_compound_union_select_ok.snap b/crates/squawk_parser/tests/snapshots/tests__select_compound_union_select_ok.snap index 0683e14d..2e680487 100644 --- a/crates/squawk_parser/tests/snapshots/tests__select_compound_union_select_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__select_compound_union_select_ok.snap @@ -53,8 +53,9 @@ SOURCE_FILE CHAR_KW "char" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "4" + ARG + LITERAL + INT_NUMBER "4" R_PAREN ")" WHITESPACE " " ORDER_BY_CLAUSE @@ -190,8 +191,9 @@ SOURCE_FILE CHAR_KW "char" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "4" + ARG + LITERAL + INT_NUMBER "4" R_PAREN ")" WHITESPACE " " ORDER_BY_CLAUSE diff --git a/crates/squawk_parser/tests/snapshots/tests__select_err.snap b/crates/squawk_parser/tests/snapshots/tests__select_err.snap index 5a7333ae..58301b99 100644 --- a/crates/squawk_parser/tests/snapshots/tests__select_err.snap +++ b/crates/squawk_parser/tests/snapshots/tests__select_err.snap @@ -341,8 +341,9 @@ SOURCE_FILE IDENT "f" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" ERROR COMMA "," R_PAREN ")" @@ -361,8 +362,9 @@ SOURCE_FILE IDENT "f" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," ERROR COMMA "," @@ -532,11 +534,13 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" WHITESPACE " " - LITERAL - INT_NUMBER "200" + ARG + LITERAL + INT_NUMBER "200" R_PAREN ")" R_PAREN ")" SEMICOLON ";" @@ -559,15 +563,17 @@ SOURCE_FILE VARCHAR_KW "varchar" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" COMMA "," WHITESPACE " " ERROR COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "200" + ARG + LITERAL + INT_NUMBER "200" R_PAREN ")" R_PAREN ")" SEMICOLON ";" @@ -593,12 +599,14 @@ SOURCE_FILE IDENT "t" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," WHITESPACE " " - NAME_REF - IDENT "b" + ARG + NAME_REF + IDENT "b" ERROR COMMA "," R_PAREN ")" diff --git a/crates/squawk_parser/tests/snapshots/tests__select_funcs_ok.snap b/crates/squawk_parser/tests/snapshots/tests__select_funcs_ok.snap index 3a273b88..dfaf7a6b 100644 --- a/crates/squawk_parser/tests/snapshots/tests__select_funcs_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__select_funcs_ok.snap @@ -16,14 +16,15 @@ SOURCE_FILE NORMALIZE_KW "normalize" ARG_LIST L_PAREN "(" - BIN_EXPR - LITERAL - STRING "'a'" - WHITESPACE " " - PLUS "+" - WHITESPACE " " - LITERAL - STRING "'b'" + ARG + BIN_EXPR + LITERAL + STRING "'a'" + WHITESPACE " " + PLUS "+" + WHITESPACE " " + LITERAL + STRING "'b'" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -38,20 +39,22 @@ SOURCE_FILE NORMALIZE_KW "normalize" ARG_LIST L_PAREN "(" - BIN_EXPR - LITERAL - STRING "'a'" - WHITESPACE " " - CUSTOM_OP - PIPE "|" - PIPE "|" - WHITESPACE " " - LITERAL - STRING "'b'" + ARG + BIN_EXPR + LITERAL + STRING "'a'" + WHITESPACE " " + CUSTOM_OP + PIPE "|" + PIPE "|" + WHITESPACE " " + LITERAL + STRING "'b'" COMMA "," WHITESPACE " " - NAME_REF - NFC_KW "nfc" + ARG + NAME_REF + NFC_KW "nfc" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -66,12 +69,14 @@ SOURCE_FILE NORMALIZE_KW "normalize" ARG_LIST L_PAREN "(" - LITERAL - STRING "'c'" + ARG + LITERAL + STRING "'c'" COMMA "," WHITESPACE " " - NAME_REF - NFD_KW "nfd" + ARG + NAME_REF + NFD_KW "nfd" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -86,12 +91,14 @@ SOURCE_FILE NORMALIZE_KW "normalize" ARG_LIST L_PAREN "(" - LITERAL - STRING "'d'" + ARG + LITERAL + STRING "'d'" COMMA "," WHITESPACE " " - NAME_REF - NFKC_KW "nfkc" + ARG + NAME_REF + NFKC_KW "nfkc" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -106,12 +113,14 @@ SOURCE_FILE NORMALIZE_KW "normalize" ARG_LIST L_PAREN "(" - LITERAL - STRING "'e'" + ARG + LITERAL + STRING "'e'" COMMA "," WHITESPACE " " - NAME_REF - NFKD_KW "nfkd" + ARG + NAME_REF + NFKD_KW "nfkd" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -128,12 +137,14 @@ SOURCE_FILE NULLIF_KW "nullif" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," WHITESPACE " " - NAME_REF - IDENT "b" + ARG + NAME_REF + IDENT "b" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -150,12 +161,14 @@ SOURCE_FILE COALESCE_KW "coalesce" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -170,24 +183,29 @@ SOURCE_FILE COALESCE_KW "coalesce" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," WHITESPACE " " - NAME_REF - IDENT "b" + ARG + NAME_REF + IDENT "b" COMMA "," WHITESPACE " " - NAME_REF - IDENT "c" + ARG + NAME_REF + IDENT "c" COMMA "," WHITESPACE " " - NAME_REF - IDENT "d" + ARG + NAME_REF + IDENT "d" COMMA "," WHITESPACE " " - LITERAL - STRING "'foo'" + ARG + LITERAL + STRING "'foo'" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -204,12 +222,14 @@ SOURCE_FILE IDENT "greater" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -224,24 +244,29 @@ SOURCE_FILE IDENT "greater" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," WHITESPACE " " - NAME_REF - IDENT "b" + ARG + NAME_REF + IDENT "b" COMMA "," WHITESPACE " " - NAME_REF - IDENT "c" + ARG + NAME_REF + IDENT "c" COMMA "," WHITESPACE " " - NAME_REF - IDENT "d" + ARG + NAME_REF + IDENT "d" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "0" + ARG + LITERAL + INT_NUMBER "0" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -258,12 +283,14 @@ SOURCE_FILE LEAST_KW "least" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -278,24 +305,29 @@ SOURCE_FILE LEAST_KW "least" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," WHITESPACE " " - NAME_REF - IDENT "b" + ARG + NAME_REF + IDENT "b" COMMA "," WHITESPACE " " - NAME_REF - IDENT "c" + ARG + NAME_REF + IDENT "c" COMMA "," WHITESPACE " " - NAME_REF - IDENT "d" + ARG + NAME_REF + IDENT "d" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "0" + ARG + LITERAL + INT_NUMBER "0" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -802,12 +834,14 @@ SOURCE_FILE XMLCONCAT_KW "xmlconcat" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," WHITESPACE " " - NAME_REF - IDENT "b" + ARG + NAME_REF + IDENT "b" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -2594,12 +2628,14 @@ SOURCE_FILE IDENT "buzz" ARG_LIST L_PAREN "(" - LITERAL - STRING "'x'" + ARG + LITERAL + STRING "'x'" COMMA "," WHITESPACE " " - LITERAL - STRING "'y'" + ARG + LITERAL + STRING "'y'" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -2616,24 +2652,26 @@ SOURCE_FILE IDENT "f" ARG_LIST L_PAREN "(" - NAMED_ARG - NAME_REF - IDENT "a" - WHITESPACE " " - FAT_ARROW "=>" - WHITESPACE " " - LITERAL - STRING "'foo'" + ARG + NAMED_ARG + NAME_REF + IDENT "a" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + LITERAL + STRING "'foo'" COMMA "," WHITESPACE " " - NAMED_ARG - NAME_REF - IDENT "b" - WHITESPACE " " - FAT_ARROW "=>" - WHITESPACE " " - LITERAL - STRING "'bar'" + ARG + NAMED_ARG + NAME_REF + IDENT "b" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + LITERAL + STRING "'bar'" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -2650,22 +2688,25 @@ SOURCE_FILE IDENT "foo" ARG_LIST L_PAREN "(" - LITERAL - STRING "'bar'" + ARG + LITERAL + STRING "'bar'" COMMA "," WHITESPACE " " - LITERAL - STRING "'buzz'" + ARG + LITERAL + STRING "'buzz'" COMMA "," WHITESPACE " " - NAMED_ARG - NAME_REF - IDENT "boo" - WHITESPACE " " - FAT_ARROW "=>" - WHITESPACE " " - LITERAL - TRUE_KW "true" + ARG + NAMED_ARG + NAME_REF + IDENT "boo" + WHITESPACE " " + FAT_ARROW "=>" + WHITESPACE " " + LITERAL + TRUE_KW "true" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -2682,18 +2723,20 @@ SOURCE_FILE IDENT "f" ARG_LIST L_PAREN "(" - LITERAL - STRING "'b'" + ARG + LITERAL + STRING "'b'" COMMA "," WHITESPACE " " - NAMED_ARG - NAME_REF - IDENT "a" - WHITESPACE " " - COLON_EQ ":=" - WHITESPACE " " - LITERAL - TRUE_KW "true" + ARG + NAMED_ARG + NAME_REF + IDENT "a" + WHITESPACE " " + COLON_EQ ":=" + WHITESPACE " " + LITERAL + TRUE_KW "true" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -3133,8 +3176,9 @@ SOURCE_FILE IDENT "pg_sleep" ARG_LIST L_PAREN "(" - LITERAL - NUMERIC_NUMBER "1.5" + ARG + LITERAL + NUMERIC_NUMBER "1.5" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -3149,8 +3193,9 @@ SOURCE_FILE IDENT "pg_sleep_for" ARG_LIST L_PAREN "(" - LITERAL - STRING "'5 minutes'" + ARG + LITERAL + STRING "'5 minutes'" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -3165,8 +3210,9 @@ SOURCE_FILE IDENT "pg_sleep_until" ARG_LIST L_PAREN "(" - LITERAL - STRING "'tomorrow 03:00'" + ARG + LITERAL + STRING "'tomorrow 03:00'" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -3185,21 +3231,22 @@ SOURCE_FILE IDENT "array_agg" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "v" - WHITESPACE " " - ORDER_BY_CLAUSE - ORDER_KW "order" - WHITESPACE " " - BY_KW "by" + ARG + NAME_REF + IDENT "v" WHITESPACE " " - SORT_BY_LIST - SORT_BY - NAME_REF - IDENT "v" - WHITESPACE " " - SORT_DESC - DESC_KW "desc" + ORDER_BY_CLAUSE + ORDER_KW "order" + WHITESPACE " " + BY_KW "by" + WHITESPACE " " + SORT_BY_LIST + SORT_BY + NAME_REF + IDENT "v" + WHITESPACE " " + SORT_DESC + DESC_KW "desc" R_PAREN ")" WHITESPACE " " FROM_CLAUSE @@ -3223,22 +3270,24 @@ SOURCE_FILE IDENT "jsonb_object_agg" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "k" + ARG + NAME_REF + IDENT "k" COMMA "," WHITESPACE " " - NAME_REF - IDENT "v" - WHITESPACE " " - ORDER_BY_CLAUSE - ORDER_KW "order" - WHITESPACE " " - BY_KW "by" + ARG + NAME_REF + IDENT "v" WHITESPACE " " - SORT_BY_LIST - SORT_BY - NAME_REF - IDENT "v" + ORDER_BY_CLAUSE + ORDER_KW "order" + WHITESPACE " " + BY_KW "by" + WHITESPACE " " + SORT_BY_LIST + SORT_BY + NAME_REF + IDENT "v" R_PAREN ")" WHITESPACE " " FROM_CLAUSE @@ -3262,22 +3311,24 @@ SOURCE_FILE IDENT "string_agg" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," WHITESPACE " " - LITERAL - STRING "','" - WHITESPACE " " - ORDER_BY_CLAUSE - ORDER_KW "order" - WHITESPACE " " - BY_KW "by" + ARG + LITERAL + STRING "','" WHITESPACE " " - SORT_BY_LIST - SORT_BY - NAME_REF - IDENT "a" + ORDER_BY_CLAUSE + ORDER_KW "order" + WHITESPACE " " + BY_KW "by" + WHITESPACE " " + SORT_BY_LIST + SORT_BY + NAME_REF + IDENT "a" R_PAREN ")" WHITESPACE " " FROM_CLAUSE @@ -3301,23 +3352,24 @@ SOURCE_FILE IDENT "string_agg" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" - WHITESPACE " " - ORDER_BY_CLAUSE - ORDER_KW "order" - WHITESPACE " " - BY_KW "by" + ARG + NAME_REF + IDENT "a" WHITESPACE " " - SORT_BY_LIST - SORT_BY - NAME_REF - IDENT "a" - COMMA "," + ORDER_BY_CLAUSE + ORDER_KW "order" WHITESPACE " " - SORT_BY - LITERAL - STRING "','" + BY_KW "by" + WHITESPACE " " + SORT_BY_LIST + SORT_BY + NAME_REF + IDENT "a" + COMMA "," + WHITESPACE " " + SORT_BY + LITERAL + STRING "','" R_PAREN ")" WHITESPACE " " FROM_CLAUSE @@ -3343,12 +3395,14 @@ SOURCE_FILE L_PAREN "(" DISTINCT_KW "distinct" WHITESPACE " " - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," WHITESPACE " " - NAME_REF - IDENT "b" + ARG + NAME_REF + IDENT "b" R_PAREN ")" WHITESPACE " " FROM_CLAUSE @@ -3374,18 +3428,19 @@ SOURCE_FILE L_PAREN "(" DISTINCT_KW "distinct" WHITESPACE " " - NAME_REF - IDENT "v" - WHITESPACE " " - ORDER_BY_CLAUSE - ORDER_KW "order" - WHITESPACE " " - BY_KW "by" + ARG + NAME_REF + IDENT "v" WHITESPACE " " - SORT_BY_LIST - SORT_BY - NAME_REF - IDENT "v" + ORDER_BY_CLAUSE + ORDER_KW "order" + WHITESPACE " " + BY_KW "by" + WHITESPACE " " + SORT_BY_LIST + SORT_BY + NAME_REF + IDENT "v" R_PAREN ")" WHITESPACE " " FROM_CLAUSE @@ -3409,8 +3464,9 @@ SOURCE_FILE IDENT "foo" ARG_LIST L_PAREN "(" - LITERAL - NUMERIC_NUMBER "0.5" + ARG + LITERAL + NUMERIC_NUMBER "0.5" R_PAREN ")" WHITESPACE " " WITHIN_CLAUSE @@ -3541,12 +3597,14 @@ SOURCE_FILE IDENT "generate_series" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" WHITESPACE " " ALIAS @@ -3575,8 +3633,9 @@ SOURCE_FILE L_PAREN "(" ALL_KW "all" WHITESPACE " " - NAME_REF - IDENT "c" + ARG + NAME_REF + IDENT "c" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -3593,8 +3652,9 @@ SOURCE_FILE L_PAREN "(" DISTINCT_KW "distinct" WHITESPACE " " - NAME_REF - IDENT "b" + ARG + NAME_REF + IDENT "b" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -3613,10 +3673,11 @@ SOURCE_FILE IDENT "f" ARG_LIST L_PAREN "(" - VARIADIC_KW "variadic" - WHITESPACE " " - NAME_REF - IDENT "foo" + ARG + VARIADIC_KW "variadic" + WHITESPACE " " + NAME_REF + IDENT "foo" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -3631,22 +3692,23 @@ SOURCE_FILE IDENT "f" ARG_LIST L_PAREN "(" - VARIADIC_KW "variadic" - WHITESPACE " " - ARRAY_EXPR - ARRAY_KW "array" - L_BRACK "[" - LITERAL - INT_NUMBER "1" - COMMA "," + ARG + VARIADIC_KW "variadic" WHITESPACE " " - LITERAL - INT_NUMBER "2" - COMMA "," - WHITESPACE " " - LITERAL - INT_NUMBER "3" - R_BRACK "]" + ARRAY_EXPR + ARRAY_KW "array" + L_BRACK "[" + LITERAL + INT_NUMBER "1" + COMMA "," + WHITESPACE " " + LITERAL + INT_NUMBER "2" + COMMA "," + WHITESPACE " " + LITERAL + INT_NUMBER "3" + R_BRACK "]" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -3663,24 +3725,25 @@ SOURCE_FILE IDENT "b" ARG_LIST L_PAREN "(" - VARIADIC_KW "variadic" - WHITESPACE " " - CAST_EXPR - ARRAY_EXPR - ARRAY_KW "array" - L_BRACK "[" - R_BRACK "]" - COLON_COLON - COLON ":" - COLON ":" - ARRAY_TYPE - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - NUMERIC_KW "numeric" - L_BRACK "[" - R_BRACK "]" + ARG + VARIADIC_KW "variadic" + WHITESPACE " " + CAST_EXPR + ARRAY_EXPR + ARRAY_KW "array" + L_BRACK "[" + R_BRACK "]" + COLON_COLON + COLON ":" + COLON ":" + ARRAY_TYPE + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + NUMERIC_KW "numeric" + L_BRACK "[" + R_BRACK "]" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -3697,28 +3760,29 @@ SOURCE_FILE IDENT "c" ARG_LIST L_PAREN "(" - VARIADIC_KW "variadic" - WHITESPACE " " - NAMED_ARG - NAME_REF - IDENT "arr" + ARG + VARIADIC_KW "variadic" WHITESPACE " " - FAT_ARROW "=>" - WHITESPACE " " - ARRAY_EXPR - ARRAY_KW "array" - L_BRACK "[" - LITERAL - INT_NUMBER "1" - COMMA "," + NAMED_ARG + NAME_REF + IDENT "arr" WHITESPACE " " - LITERAL - INT_NUMBER "2" - COMMA "," + FAT_ARROW "=>" WHITESPACE " " - LITERAL - INT_NUMBER "3" - R_BRACK "]" + ARRAY_EXPR + ARRAY_KW "array" + L_BRACK "[" + LITERAL + INT_NUMBER "1" + COMMA "," + WHITESPACE " " + LITERAL + INT_NUMBER "2" + COMMA "," + WHITESPACE " " + LITERAL + INT_NUMBER "3" + R_BRACK "]" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -3735,34 +3799,38 @@ SOURCE_FILE IDENT "f" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," WHITESPACE " " - NAME_REF - IDENT "b" + ARG + NAME_REF + IDENT "b" COMMA "," WHITESPACE " " - NAME_REF - IDENT "c" + ARG + NAME_REF + IDENT "c" COMMA "," WHITESPACE " " - VARIADIC_KW "variadic" - WHITESPACE " " - ARRAY_EXPR - ARRAY_KW "array" - L_BRACK "[" - LITERAL - INT_NUMBER "1" - COMMA "," - WHITESPACE " " - LITERAL - INT_NUMBER "2" - COMMA "," + ARG + VARIADIC_KW "variadic" WHITESPACE " " - LITERAL - INT_NUMBER "3" - R_BRACK "]" + ARRAY_EXPR + ARRAY_KW "array" + L_BRACK "[" + LITERAL + INT_NUMBER "1" + COMMA "," + WHITESPACE " " + LITERAL + INT_NUMBER "2" + COMMA "," + WHITESPACE " " + LITERAL + INT_NUMBER "3" + R_BRACK "]" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n\n" @@ -3781,8 +3849,9 @@ SOURCE_FILE IDENT "max" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" R_PAREN ")" WHITESPACE " " OVER_CLAUSE @@ -3825,8 +3894,9 @@ SOURCE_FILE IDENT "max" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" R_PAREN ")" WHITESPACE " " OVER_CLAUSE diff --git a/crates/squawk_parser/tests/snapshots/tests__select_ok.snap b/crates/squawk_parser/tests/snapshots/tests__select_ok.snap index 0b5573fa..ae55cd20 100644 --- a/crates/squawk_parser/tests/snapshots/tests__select_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__select_ok.snap @@ -427,8 +427,9 @@ SOURCE_FILE CURRENT_TIME_KW "current_time" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -455,8 +456,9 @@ SOURCE_FILE CURRENT_TIMESTAMP_KW "current_timestamp" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "5" + ARG + LITERAL + INT_NUMBER "5" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -483,8 +485,9 @@ SOURCE_FILE LOCALTIME_KW "localtime" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "5" + ARG + LITERAL + INT_NUMBER "5" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -511,8 +514,9 @@ SOURCE_FILE LOCALTIMESTAMP_KW "localtimestamp" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "5" + ARG + LITERAL + INT_NUMBER "5" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -1180,11 +1184,13 @@ SOURCE_FILE IDENT "rowfunction" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," - NAME_REF - IDENT "b" + ARG + NAME_REF + IDENT "b" R_PAREN ")" R_PAREN ")" DOT "." @@ -1737,16 +1743,19 @@ SOURCE_FILE WHITESPACE " " ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "23" + ARG + LITERAL + INT_NUMBER "23" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "50" + ARG + LITERAL + INT_NUMBER "50" R_PAREN ")" WHITESPACE " " REPEATABLE_CLAUSE @@ -1859,12 +1868,14 @@ SOURCE_FILE IDENT "foo" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "bar" + ARG + NAME_REF + IDENT "bar" COMMA "," WHITESPACE " " - NAME_REF - IDENT "buzz" + ARG + NAME_REF + IDENT "buzz" R_PAREN ")" WHITESPACE " " WITH_KW "with" @@ -1912,12 +1923,14 @@ SOURCE_FILE IDENT "foo" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "bar" + ARG + NAME_REF + IDENT "bar" COMMA "," WHITESPACE " " - NAME_REF - IDENT "buzz" + ARG + NAME_REF + IDENT "buzz" R_PAREN ")" WHITESPACE " " WITH_KW "with" @@ -1959,12 +1972,14 @@ SOURCE_FILE IDENT "foo" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "bar" + ARG + NAME_REF + IDENT "bar" COMMA "," WHITESPACE " " - NAME_REF - IDENT "buzz" + ARG + NAME_REF + IDENT "buzz" R_PAREN ")" WHITESPACE " " ALIAS @@ -1991,12 +2006,14 @@ SOURCE_FILE IDENT "foo" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "bar" + ARG + NAME_REF + IDENT "bar" COMMA "," WHITESPACE " " - NAME_REF - IDENT "buzz" + ARG + NAME_REF + IDENT "buzz" R_PAREN ")" WHITESPACE " " ALIAS @@ -2021,12 +2038,14 @@ SOURCE_FILE IDENT "foo" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "bar" + ARG + NAME_REF + IDENT "bar" COMMA "," WHITESPACE " " - NAME_REF - IDENT "buzz" + ARG + NAME_REF + IDENT "buzz" R_PAREN ")" WHITESPACE " " ALIAS @@ -2064,12 +2083,14 @@ SOURCE_FILE IDENT "foo" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "bar" + ARG + NAME_REF + IDENT "bar" COMMA "," WHITESPACE " " - NAME_REF - IDENT "buzz" + ARG + NAME_REF + IDENT "buzz" R_PAREN ")" WHITESPACE " " ALIAS @@ -2107,8 +2128,9 @@ SOURCE_FILE IDENT "json_to_record" ARG_LIST L_PAREN "(" - LITERAL - STRING "'{\"a\": 1, \"b\": \"c\"}'" + ARG + LITERAL + STRING "'{\"a\": 1, \"b\": \"c\"}'" R_PAREN ")" WHITESPACE " " ALIAS @@ -3067,12 +3089,14 @@ SOURCE_FILE IDENT "f" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," WHITESPACE " " - NAME_REF - IDENT "b" + ARG + NAME_REF + IDENT "b" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -3197,12 +3221,14 @@ SOURCE_FILE IDENT "f" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," WHITESPACE " " - NAME_REF - IDENT "b" + ARG + NAME_REF + IDENT "b" R_PAREN ")" R_PAREN ")" WHITESPACE " " @@ -3266,12 +3292,14 @@ SOURCE_FILE IDENT "f" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," WHITESPACE " " - NAME_REF - IDENT "b" + ARG + NAME_REF + IDENT "b" R_PAREN ")" R_PAREN ")" SEMICOLON ";" @@ -4532,16 +4560,19 @@ SOURCE_FILE ROW_KW "row" ARG_LIST L_PAREN "(" - LITERAL - STRING "'fuzzy dice'" + ARG + LITERAL + STRING "'fuzzy dice'" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "42" + ARG + LITERAL + INT_NUMBER "42" COMMA "," WHITESPACE " " - LITERAL - NUMERIC_NUMBER "1.99" + ARG + LITERAL + NUMERIC_NUMBER "1.99" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n" @@ -5369,12 +5400,13 @@ SOURCE_FILE IDENT "get_product_names" ARG_LIST L_PAREN "(" - FIELD_EXPR - NAME_REF - IDENT "m" - DOT "." - NAME_REF - IDENT "id" + ARG + FIELD_EXPR + NAME_REF + IDENT "m" + DOT "." + NAME_REF + IDENT "id" R_PAREN ")" WHITESPACE " " ALIAS @@ -6121,12 +6153,14 @@ SOURCE_FILE IDENT "DATE_TRUNC" ARG_LIST L_PAREN "(" - LITERAL - STRING "'day'" + ARG + LITERAL + STRING "'day'" COMMA "," WHITESPACE " " - NAME_REF - IDENT "ts" + ARG + NAME_REF + IDENT "ts" R_PAREN ")" WHITESPACE " " AS_NAME @@ -6142,8 +6176,9 @@ SOURCE_FILE IDENT "MAX" ARG_LIST L_PAREN "(" - NAME_REF - VALUE_KW "value" + ARG + NAME_REF + VALUE_KW "value" R_PAREN ")" WHITESPACE " " AS_NAME @@ -6159,8 +6194,9 @@ SOURCE_FILE IDENT "MIN" ARG_LIST L_PAREN "(" - NAME_REF - VALUE_KW "value" + ARG + NAME_REF + VALUE_KW "value" R_PAREN ")" WHITESPACE " " AS_NAME @@ -6231,12 +6267,14 @@ SOURCE_FILE IDENT "DATE_TRUNC" ARG_LIST L_PAREN "(" - LITERAL - STRING "'day'" + ARG + LITERAL + STRING "'day'" COMMA "," WHITESPACE " " - NAME_REF - IDENT "ts" + ARG + NAME_REF + IDENT "ts" R_PAREN ")" WHITESPACE "\n" ORDER_BY_CLAUSE @@ -6391,12 +6429,14 @@ SOURCE_FILE L_PAREN "(" DISTINCT_KW "distinct" WHITESPACE " " - NAME_REF - IDENT "f1" + ARG + NAME_REF + IDENT "f1" COMMA "," WHITESPACE " " - LITERAL - STRING "','" + ARG + LITERAL + STRING "','" R_PAREN ")" WHITESPACE " " FILTER_CLAUSE @@ -6411,8 +6451,9 @@ SOURCE_FILE IDENT "length" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "f1" + ARG + NAME_REF + IDENT "f1" R_PAREN ")" WHITESPACE " " R_ANGLE ">" diff --git a/crates/squawk_parser/tests/snapshots/tests__select_operators_ok.snap b/crates/squawk_parser/tests/snapshots/tests__select_operators_ok.snap index 6725af12..3059181a 100644 --- a/crates/squawk_parser/tests/snapshots/tests__select_operators_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__select_operators_ok.snap @@ -247,24 +247,28 @@ SOURCE_FILE IDENT "point" ARG_LIST L_PAREN "(" - CALL_EXPR - NAME_REF - IDENT "cosd" - ARG_LIST - L_PAREN "(" - LITERAL - INT_NUMBER "45" - R_PAREN ")" + ARG + CALL_EXPR + NAME_REF + IDENT "cosd" + ARG_LIST + L_PAREN "(" + ARG + LITERAL + INT_NUMBER "45" + R_PAREN ")" COMMA "," WHITESPACE " " - CALL_EXPR - NAME_REF - IDENT "sind" - ARG_LIST - L_PAREN "(" - LITERAL - INT_NUMBER "45" - R_PAREN ")" + ARG + CALL_EXPR + NAME_REF + IDENT "sind" + ARG_LIST + L_PAREN "(" + ARG + LITERAL + INT_NUMBER "45" + R_PAREN ")" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -324,24 +328,28 @@ SOURCE_FILE IDENT "point" ARG_LIST L_PAREN "(" - CALL_EXPR - NAME_REF - IDENT "cosd" - ARG_LIST - L_PAREN "(" - LITERAL - INT_NUMBER "45" - R_PAREN ")" + ARG + CALL_EXPR + NAME_REF + IDENT "cosd" + ARG_LIST + L_PAREN "(" + ARG + LITERAL + INT_NUMBER "45" + R_PAREN ")" COMMA "," WHITESPACE " " - CALL_EXPR - NAME_REF - IDENT "sind" - ARG_LIST - L_PAREN "(" - LITERAL - INT_NUMBER "45" - R_PAREN ")" + ARG + CALL_EXPR + NAME_REF + IDENT "sind" + ARG_LIST + L_PAREN "(" + ARG + LITERAL + INT_NUMBER "45" + R_PAREN ")" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -3415,12 +3423,14 @@ SOURCE_FILE IDENT "int4range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "4" + ARG + LITERAL + INT_NUMBER "4" R_PAREN ")" WHITESPACE " " CUSTOM_OP @@ -3432,12 +3442,14 @@ SOURCE_FILE IDENT "int4range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "7" + ARG + LITERAL + INT_NUMBER "7" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -3992,17 +4004,18 @@ SOURCE_FILE IDENT "jsonb_build_array" ARG_LIST L_PAREN "(" - CAST_EXPR - LITERAL - STRING "'[3, 4]'" - COLON_COLON - COLON ":" - COLON ":" - PATH_TYPE - PATH - PATH_SEGMENT - NAME_REF - IDENT "jsonb" + ARG + CAST_EXPR + LITERAL + STRING "'[3, 4]'" + COLON_COLON + COLON ":" + COLON ":" + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "jsonb" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -4405,11 +4418,13 @@ SOURCE_FILE IDENT "arrayfunction" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "a" + ARG + NAME_REF + IDENT "a" COMMA "," - NAME_REF - IDENT "b" + ARG + NAME_REF + IDENT "b" R_PAREN ")" R_PAREN ")" L_BRACK "[" @@ -4924,12 +4939,14 @@ SOURCE_FILE IDENT "int4range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "4" + ARG + LITERAL + INT_NUMBER "4" R_PAREN ")" WHITESPACE " " CUSTOM_OP @@ -4941,12 +4958,14 @@ SOURCE_FILE IDENT "int4range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "3" + ARG + LITERAL + INT_NUMBER "3" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -4999,12 +5018,14 @@ SOURCE_FILE IDENT "int4range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "4" + ARG + LITERAL + INT_NUMBER "4" R_PAREN ")" WHITESPACE " " CUSTOM_OP @@ -5016,12 +5037,14 @@ SOURCE_FILE IDENT "int4range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "7" + ARG + LITERAL + INT_NUMBER "7" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -5046,12 +5069,14 @@ SOURCE_FILE IDENT "int4range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "7" + ARG + LITERAL + INT_NUMBER "7" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -5069,12 +5094,14 @@ SOURCE_FILE IDENT "int8range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "3" + ARG + LITERAL + INT_NUMBER "3" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "7" + ARG + LITERAL + INT_NUMBER "7" R_PAREN ")" WHITESPACE " " CUSTOM_OP @@ -5086,12 +5113,14 @@ SOURCE_FILE IDENT "int8range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "4" + ARG + LITERAL + INT_NUMBER "4" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "12" + ARG + LITERAL + INT_NUMBER "12" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -5109,12 +5138,14 @@ SOURCE_FILE IDENT "int8range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" WHITESPACE " " CUSTOM_OP @@ -5126,12 +5157,14 @@ SOURCE_FILE IDENT "int8range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "100" + ARG + LITERAL + INT_NUMBER "100" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "110" + ARG + LITERAL + INT_NUMBER "110" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -5149,12 +5182,14 @@ SOURCE_FILE IDENT "int8range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "50" + ARG + LITERAL + INT_NUMBER "50" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "60" + ARG + LITERAL + INT_NUMBER "60" R_PAREN ")" WHITESPACE " " CUSTOM_OP @@ -5166,12 +5201,14 @@ SOURCE_FILE IDENT "int8range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "20" + ARG + LITERAL + INT_NUMBER "20" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "30" + ARG + LITERAL + INT_NUMBER "30" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -5189,12 +5226,14 @@ SOURCE_FILE IDENT "int8range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "1" + ARG + LITERAL + INT_NUMBER "1" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "20" + ARG + LITERAL + INT_NUMBER "20" R_PAREN ")" WHITESPACE " " CUSTOM_OP @@ -5206,12 +5245,14 @@ SOURCE_FILE IDENT "int8range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "18" + ARG + LITERAL + INT_NUMBER "18" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "20" + ARG + LITERAL + INT_NUMBER "20" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -5229,12 +5270,14 @@ SOURCE_FILE IDENT "int8range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "7" + ARG + LITERAL + INT_NUMBER "7" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "20" + ARG + LITERAL + INT_NUMBER "20" R_PAREN ")" WHITESPACE " " CUSTOM_OP @@ -5246,12 +5289,14 @@ SOURCE_FILE IDENT "int8range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "5" + ARG + LITERAL + INT_NUMBER "5" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -5269,12 +5314,14 @@ SOURCE_FILE IDENT "numrange" ARG_LIST L_PAREN "(" - LITERAL - NUMERIC_NUMBER "1.1" + ARG + LITERAL + NUMERIC_NUMBER "1.1" COMMA "," WHITESPACE " " - LITERAL - NUMERIC_NUMBER "2.2" + ARG + LITERAL + NUMERIC_NUMBER "2.2" R_PAREN ")" WHITESPACE " " CUSTOM_OP @@ -5287,12 +5334,14 @@ SOURCE_FILE IDENT "numrange" ARG_LIST L_PAREN "(" - LITERAL - NUMERIC_NUMBER "2.2" + ARG + LITERAL + NUMERIC_NUMBER "2.2" COMMA "," WHITESPACE " " - LITERAL - NUMERIC_NUMBER "3.3" + ARG + LITERAL + NUMERIC_NUMBER "3.3" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -5310,12 +5359,14 @@ SOURCE_FILE IDENT "numrange" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "5" + ARG + LITERAL + INT_NUMBER "5" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "15" + ARG + LITERAL + INT_NUMBER "15" R_PAREN ")" WHITESPACE " " PLUS "+" @@ -5325,12 +5376,14 @@ SOURCE_FILE IDENT "numrange" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "20" + ARG + LITERAL + INT_NUMBER "20" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -5348,12 +5401,14 @@ SOURCE_FILE IDENT "int8range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "5" + ARG + LITERAL + INT_NUMBER "5" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "15" + ARG + LITERAL + INT_NUMBER "15" R_PAREN ")" WHITESPACE " " STAR "*" @@ -5363,12 +5418,14 @@ SOURCE_FILE IDENT "int8range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "20" + ARG + LITERAL + INT_NUMBER "20" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" @@ -5386,12 +5443,14 @@ SOURCE_FILE IDENT "int8range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "5" + ARG + LITERAL + INT_NUMBER "5" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "15" + ARG + LITERAL + INT_NUMBER "15" R_PAREN ")" WHITESPACE " " MINUS "-" @@ -5401,12 +5460,14 @@ SOURCE_FILE IDENT "int8range" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "10" + ARG + LITERAL + INT_NUMBER "10" COMMA "," WHITESPACE " " - LITERAL - INT_NUMBER "20" + ARG + LITERAL + INT_NUMBER "20" R_PAREN ")" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__select_xml_ok.snap b/crates/squawk_parser/tests/snapshots/tests__select_xml_ok.snap index d87cd3ad..8111c686 100644 --- a/crates/squawk_parser/tests/snapshots/tests__select_xml_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__select_xml_ok.snap @@ -146,11 +146,13 @@ SOURCE_FILE NUMERIC_KW "numeric" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "5" + ARG + LITERAL + INT_NUMBER "5" COMMA "," - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" R_PAREN ")" WHITESPACE " " XML_COLUMN_OPTION_LIST @@ -178,11 +180,13 @@ SOURCE_FILE NUMERIC_KW "numeric" ARG_LIST L_PAREN "(" - LITERAL - INT_NUMBER "5" + ARG + LITERAL + INT_NUMBER "5" COMMA "," - LITERAL - INT_NUMBER "2" + ARG + LITERAL + INT_NUMBER "2" R_PAREN ")" WHITESPACE " " XML_COLUMN_OPTION_LIST diff --git a/crates/squawk_parser/tests/snapshots/tests__sql_pgq_ok.snap b/crates/squawk_parser/tests/snapshots/tests__sql_pgq_ok.snap index fc61106c..7e76d057 100644 --- a/crates/squawk_parser/tests/snapshots/tests__sql_pgq_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__sql_pgq_ok.snap @@ -1816,8 +1816,9 @@ SOURCE_FILE IDENT "SUM" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "amount" + ARG + NAME_REF + IDENT "amount" R_PAREN ")" WHITESPACE " " AS_NAME diff --git a/crates/squawk_parser/tests/snapshots/tests__update_ok.snap b/crates/squawk_parser/tests/snapshots/tests__update_ok.snap index 6cf93dcd..80da2a16 100644 --- a/crates/squawk_parser/tests/snapshots/tests__update_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__update_ok.snap @@ -1060,8 +1060,9 @@ SOURCE_FILE IDENT "sum" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "x" + ARG + NAME_REF + IDENT "x" R_PAREN ")" COMMA "," WHITESPACE " " @@ -1071,8 +1072,9 @@ SOURCE_FILE IDENT "sum" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "y" + ARG + NAME_REF + IDENT "y" R_PAREN ")" COMMA "," WHITESPACE " " @@ -1082,8 +1084,9 @@ SOURCE_FILE IDENT "avg" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "x" + ARG + NAME_REF + IDENT "x" R_PAREN ")" COMMA "," WHITESPACE " " @@ -1093,8 +1096,9 @@ SOURCE_FILE IDENT "avg" ARG_LIST L_PAREN "(" - NAME_REF - IDENT "y" + ARG + NAME_REF + IDENT "y" R_PAREN ")" WHITESPACE " " FROM_CLAUSE diff --git a/crates/squawk_syntax/src/ast/generated/nodes.rs b/crates/squawk_syntax/src/ast/generated/nodes.rs index 9b35717a..aff7f473 100644 --- a/crates/squawk_syntax/src/ast/generated/nodes.rs +++ b/crates/squawk_syntax/src/ast/generated/nodes.rs @@ -3046,19 +3046,38 @@ impl AnyFn { } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct ArgList { +pub struct Arg { pub(crate) syntax: SyntaxNode, } -impl ArgList { +impl Arg { #[inline] - pub fn args(&self) -> AstChildren { - support::children(&self.syntax) + pub fn expr(&self) -> Option { + support::child(&self.syntax) + } + #[inline] + pub fn named_arg(&self) -> Option { + support::child(&self.syntax) } #[inline] pub fn order_by_clause(&self) -> Option { support::child(&self.syntax) } #[inline] + pub fn variadic_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::VARIADIC_KW) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct ArgList { + pub(crate) syntax: SyntaxNode, +} +impl ArgList { + #[inline] + pub fn args(&self) -> AstChildren { + support::children(&self.syntax) + } + #[inline] pub fn l_paren_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::L_PAREN) } @@ -3078,10 +3097,6 @@ impl ArgList { pub fn distinct_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::DISTINCT_KW) } - #[inline] - pub fn variadic_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::VARIADIC_KW) - } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -15068,6 +15083,10 @@ impl Op { support::token(&self.syntax, SyntaxKind::COLLATE_KW) } #[inline] + pub fn escape_token(&self) -> Option { + support::token(&self.syntax, SyntaxKind::ESCAPE_KW) + } + #[inline] pub fn ilike_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::ILIKE_KW) } @@ -19769,10 +19788,6 @@ impl SubstringFn { support::token(&self.syntax, SyntaxKind::R_PAREN) } #[inline] - pub fn escape_token(&self) -> Option { - support::token(&self.syntax, SyntaxKind::ESCAPE_KW) - } - #[inline] pub fn for_token(&self) -> Option { support::token(&self.syntax, SyntaxKind::FOR_KW) } @@ -21941,12 +21956,6 @@ pub enum AlterTypeAction { DropAttribute(DropAttribute), } -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum Arg { - NamedArg(NamedArg), - Expr(Expr), -} - #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum BeginFuncOption { ReturnFuncOption(ReturnFuncOption), @@ -23762,6 +23771,24 @@ impl AstNode for AnyFn { &self.syntax } } +impl AstNode for Arg { + #[inline] + fn can_cast(kind: SyntaxKind) -> bool { + kind == SyntaxKind::ARG + } + #[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 ArgList { #[inline] fn can_cast(kind: SyntaxKind) -> bool { @@ -37161,38 +37188,6 @@ impl From for AlterTypeAction { AlterTypeAction::DropAttribute(node) } } -impl AstNode for Arg { - #[inline] - fn can_cast(kind: SyntaxKind) -> bool { - matches!(kind, SyntaxKind::NAMED_ARG) - } - #[inline] - fn cast(syntax: SyntaxNode) -> Option { - let res = match syntax.kind() { - SyntaxKind::NAMED_ARG => Arg::NamedArg(NamedArg { syntax }), - _ => { - if let Some(result) = Expr::cast(syntax) { - return Some(Arg::Expr(result)); - } - return None; - } - }; - Some(res) - } - #[inline] - fn syntax(&self) -> &SyntaxNode { - match self { - Arg::NamedArg(it) => &it.syntax, - Arg::Expr(it) => it.syntax(), - } - } -} -impl From for Arg { - #[inline] - fn from(node: NamedArg) -> Arg { - Arg::NamedArg(node) - } -} impl AstNode for BeginFuncOption { #[inline] fn can_cast(kind: SyntaxKind) -> bool { diff --git a/crates/squawk_syntax/src/ast/node_ext.rs b/crates/squawk_syntax/src/ast/node_ext.rs index c19e4707..0487d7d8 100644 --- a/crates/squawk_syntax/src/ast/node_ext.rs +++ b/crates/squawk_syntax/src/ast/node_ext.rs @@ -98,6 +98,7 @@ pub enum BinOp { ColonEq(SyntaxToken), CustomOp(ast::CustomOp), Eq(SyntaxToken), + Escape(SyntaxToken), FatArrow(SyntaxToken), Gteq(SyntaxToken), Ilike(SyntaxToken), @@ -168,6 +169,7 @@ impl ast::BinExpr { SyntaxKind::COLLATE_KW => BinOp::Collate(token), SyntaxKind::COLON_EQ => BinOp::ColonEq(token), SyntaxKind::EQ => BinOp::Eq(token), + SyntaxKind::ESCAPE_KW => BinOp::Escape(token), SyntaxKind::FAT_ARROW => BinOp::FatArrow(token), SyntaxKind::GTEQ => BinOp::Gteq(token), SyntaxKind::ILIKE_KW => BinOp::Ilike(token), diff --git a/crates/squawk_syntax/src/postgresql.ungram b/crates/squawk_syntax/src/postgresql.ungram index 1c7ff10a..392eecf8 100644 --- a/crates/squawk_syntax/src/postgresql.ungram +++ b/crates/squawk_syntax/src/postgresql.ungram @@ -62,7 +62,7 @@ ParamList = ArgList = '(' '*' ')' -| '(' ('distinct' | 'all')? 'variadic'? args:(Arg (',' Arg)*)? OrderByClause? ')' +| '(' ('distinct' | 'all')? args:(Arg (',' Arg)*)? ')' CallExpr = Expr ArgList WithinClause? FilterClause? OverClause? @@ -241,9 +241,9 @@ JsonValueFn = SubstringFn = 'substring' '(' - Expr 'for' Expr ('from' Expr) - | Expr 'from' Expr ('for' Expr) - | Expr 'similar' Expr 'escape' Expr + Expr 'for' Expr ('from' Expr)? + | Expr 'from' Expr ('for' Expr)? + | Expr 'similar' Expr | (Expr (',' Expr)*) ')' @@ -460,9 +460,10 @@ Op = | '<' | '=' | '>' -| 'and' -| 'collate' -| 'ilike' +| 'and' +| 'collate' +| 'escape' +| 'ilike' | 'in' | 'is' | 'isnull' @@ -630,8 +631,8 @@ Type = | IntervalType Arg = - Expr -| NamedArg + 'variadic'? + (Expr | NamedArg) OrderByClause? // For when we're parsing expressions and then later we realize they're types. // e.g., `select pg_catalog.varchar(10) 'foo'` @@ -1594,7 +1595,7 @@ ReleaseSavepoint = 'release' 'savepoint' NameRef ';'? ParenExpr = - '(' Expr | Select | FromItem ')' + '(' (Expr | Select | FromItem) ')' TupleExpr = '(' (Expr (',' Expr)*) ')' diff --git a/crates/squawk_syntax/src/snapshots/squawk_syntax__test__alter_table_ok_validation.snap b/crates/squawk_syntax/src/snapshots/squawk_syntax__test__alter_table_ok_validation.snap index 40b80fc0..93a8fabe 100644 --- a/crates/squawk_syntax/src/snapshots/squawk_syntax__test__alter_table_ok_validation.snap +++ b/crates/squawk_syntax/src/snapshots/squawk_syntax__test__alter_table_ok_validation.snap @@ -44,26 +44,28 @@ SOURCE_FILE@0..470 IDENT@156..178 "is_widget_config_valid" ARG_LIST@178..229 L_PAREN@178..179 "(" - CAST_EXPR@179..220 - LITERAL@179..187 - STRING@179..187 "'widget'" - COLON_COLON@187..189 - COLON@187..188 ":" - COLON@188..189 ":" - PATH_TYPE@189..220 - PATH@189..220 - PATH@189..201 - PATH_SEGMENT@189..201 - NAME_REF@189..201 - IDENT@189..201 "custom_types" - DOT@201..202 "." - PATH_SEGMENT@202..220 - NAME_REF@202..220 - IDENT@202..220 "widget_schema_type" + ARG@179..220 + CAST_EXPR@179..220 + LITERAL@179..187 + STRING@179..187 "'widget'" + COLON_COLON@187..189 + COLON@187..188 ":" + COLON@188..189 ":" + PATH_TYPE@189..220 + PATH@189..220 + PATH@189..201 + PATH_SEGMENT@189..201 + NAME_REF@189..201 + IDENT@189..201 "custom_types" + DOT@201..202 "." + PATH_SEGMENT@202..220 + NAME_REF@202..220 + IDENT@202..220 "widget_schema_type" COMMA@220..221 "," WHITESPACE@221..222 " " - NAME_REF@222..228 - IDENT@222..228 "config" + ARG@222..228 + NAME_REF@222..228 + IDENT@222..228 "config" R_PAREN@228..229 ")" WHITESPACE@229..232 "\n " R_PAREN@232..233 ")" @@ -113,26 +115,28 @@ SOURCE_FILE@0..470 IDENT@363..385 "is_widget_config_valid" ARG_LIST@385..455 L_PAREN@385..386 "(" - CAST_EXPR@386..436 - LITERAL@386..403 - STRING@386..403 "'widget_instance'" - COLON_COLON@403..405 - COLON@403..404 ":" - COLON@404..405 ":" - PATH_TYPE@405..436 - PATH@405..436 - PATH@405..417 - PATH_SEGMENT@405..417 - NAME_REF@405..417 - IDENT@405..417 "custom_types" - DOT@417..418 "." - PATH_SEGMENT@418..436 - NAME_REF@418..436 - IDENT@418..436 "widget_schema_type" + ARG@386..436 + CAST_EXPR@386..436 + LITERAL@386..403 + STRING@386..403 "'widget_instance'" + COLON_COLON@403..405 + COLON@403..404 ":" + COLON@404..405 ":" + PATH_TYPE@405..436 + PATH@405..436 + PATH@405..417 + PATH_SEGMENT@405..417 + NAME_REF@405..417 + IDENT@405..417 "custom_types" + DOT@417..418 "." + PATH_SEGMENT@418..436 + NAME_REF@418..436 + IDENT@418..436 "widget_schema_type" COMMA@436..437 "," WHITESPACE@437..438 " " - NAME_REF@438..454 - IDENT@438..454 "config_overrides" + ARG@438..454 + NAME_REF@438..454 + IDENT@438..454 "config_overrides" R_PAREN@454..455 ")" WHITESPACE@455..458 "\n " R_PAREN@458..459 ")" diff --git a/crates/squawk_syntax/src/snapshots/squawk_syntax__test__default_validation.snap b/crates/squawk_syntax/src/snapshots/squawk_syntax__test__default_validation.snap index 3ba19249..5a5da97d 100644 --- a/crates/squawk_syntax/src/snapshots/squawk_syntax__test__default_validation.snap +++ b/crates/squawk_syntax/src/snapshots/squawk_syntax__test__default_validation.snap @@ -24,8 +24,9 @@ SOURCE_FILE@0..170 IDENT@22..25 "foo" ARG_LIST@25..34 L_PAREN@25..26 "(" - LITERAL@26..33 - DEFAULT_KW@26..33 "DEFAULT" + ARG@26..33 + LITERAL@26..33 + DEFAULT_KW@26..33 "DEFAULT" R_PAREN@33..34 ")" R_PAREN@34..35 ")" SEMICOLON@35..36 ";"