squawk-syntax 2.65.0

Linter for Postgres migrations & SQL
Documentation
---
source: crates/squawk_syntax/src/test.rs
input_file: crates/squawk_syntax/test_data/validation/drop_aggregate_params.sql
---
SOURCE_FILE@0..488
  WHITESPACE@0..1 "\n"
  COMMENT@1..8 "-- full"
  WHITESPACE@8..9 "\n"
  DROP_AGGREGATE@9..223
    DROP_KW@9..13 "drop"
    WHITESPACE@13..14 " "
    AGGREGATE_KW@14..23 "aggregate"
    WHITESPACE@23..27 " \n  "
    IF_EXISTS@27..36
      IF_KW@27..29 "if"
      WHITESPACE@29..30 " "
      EXISTS_KW@30..36 "exists"
    WHITESPACE@36..42 " \n    "
    AGGREGATE@42..46
      PATH_REF@42..43
        PATH_SEGMENT_REF@42..43
          IDENT@42..43 "a"
      PARAM_LIST@43..46
        L_PAREN@43..44 "("
        STAR@44..45 "*"
        R_PAREN@45..46 ")"
    COMMA@46..47 ","
    WHITESPACE@47..53 " \n    "
    AGGREGATE@53..63
      PATH_REF@53..60
        PATH_REF@53..56
          PATH_SEGMENT_REF@53..56
            IDENT@53..56 "foo"
        DOT@56..57 "."
        PATH_SEGMENT_REF@57..60
          IDENT@57..60 "bar"
      PARAM_LIST@60..63
        L_PAREN@60..61 "("
        STAR@61..62 "*"
        R_PAREN@62..63 ")"
    COMMA@63..64 ","
    WHITESPACE@64..70 " \n    "
    AGGREGATE@70..201
      PATH_REF@70..77
        PATH_REF@70..73
          PATH_SEGMENT_REF@70..73
            IDENT@70..73 "foo"
        DOT@73..74 "."
        PATH_SEGMENT_REF@74..77
          IDENT@74..77 "bar"
      PARAM_LIST@77..201
        L_PAREN@77..78 "("
        WHITESPACE@78..87 "\n        "
        PARAM@87..101
          PARAM_IN@87..89
            IN_KW@87..89 "in"
          WHITESPACE@89..90 " "
          PARAM_NAME@90..93
            IDENT@90..93 "foo"
          WHITESPACE@93..94 " "
          PATH_TYPE@94..101
            PATH_REF@94..101
              PATH_SEGMENT_REF@94..101
                INTEGER_KW@94..101 "integer"
        COMMA@101..102 ","
        WHITESPACE@102..111 "\n        "
        PARAM@111..126
          PARAM_OUT@111..114
            OUT_KW@111..114 "out"
          WHITESPACE@114..115 " "
          PARAM_NAME@115..118
            IDENT@115..118 "bar"
          WHITESPACE@118..119 " "
          PATH_TYPE@119..126
            PATH_REF@119..126
              PATH_SEGMENT_REF@119..126
                INTEGER_KW@119..126 "integer"
        COMMA@126..127 ","
        WHITESPACE@127..136 "\n        "
        PARAM@136..153
          PARAM_IN_OUT@136..141
            INOUT_KW@136..141 "inout"
          WHITESPACE@141..142 " "
          PARAM_NAME@142..145
            IDENT@142..145 "baz"
          WHITESPACE@145..146 " "
          PATH_TYPE@146..153
            PATH_REF@146..153
              PATH_SEGMENT_REF@146..153
                INTEGER_KW@146..153 "integer"
        COMMA@153..154 ","
        WHITESPACE@154..163 "\n        "
        PARAM@163..181
          PARAM_IN_OUT@163..169
            IN_KW@163..165 "in"
            WHITESPACE@165..166 " "
            OUT_KW@166..169 "out"
          WHITESPACE@169..170 " "
          PARAM_NAME@170..173
            IDENT@170..173 "qux"
          WHITESPACE@173..174 " "
          PATH_TYPE@174..181
            PATH_REF@174..181
              PATH_SEGMENT_REF@174..181
                INTEGER_KW@174..181 "integer"
        COMMA@181..182 ","
        WHITESPACE@182..191 "\n        "
        PARAM@191..195
          PATH_TYPE@191..195
            PATH_REF@191..195
              PATH_SEGMENT_REF@191..195
                TEXT_KW@191..195 "text"
        WHITESPACE@195..200 "\n    "
        R_PAREN@200..201 ")"
    COMMA@201..202 ","
    WHITESPACE@202..208 " \n    "
    AGGREGATE@208..212
      PATH_REF@208..209
        PATH_SEGMENT_REF@208..209
          IDENT@208..209 "c"
      PARAM_LIST@209..212
        L_PAREN@209..210 "("
        STAR@210..211 "*"
        R_PAREN@211..212 ")"
    WHITESPACE@212..215 "\n  "
    CASCADE@215..222
      CASCADE_KW@215..222 "cascade"
    SEMICOLON@222..223 ";"
  WHITESPACE@223..225 "\n\n"
  COMMENT@225..237 "-- aggregate"
  WHITESPACE@237..238 "\n"
  DROP_AGGREGATE@238..355
    DROP_KW@238..242 "drop"
    WHITESPACE@242..243 " "
    AGGREGATE_KW@243..252 "aggregate"
    WHITESPACE@252..253 " "
    AGGREGATE@253..345
      PATH_REF@253..254
        PATH_SEGMENT_REF@253..254
          IDENT@253..254 "a"
      PARAM_LIST@254..345
        L_PAREN@254..255 "("
        WHITESPACE@255..258 "\n  "
        PARAM@258..265
          PATH_TYPE@258..265
            PATH_REF@258..265
              PATH_SEGMENT_REF@258..265
                INTEGER_KW@258..265 "integer"
        COMMA@265..266 ","
        WHITESPACE@266..269 "\n  "
        PARAM@269..273
          PATH_TYPE@269..273
            PATH_REF@269..273
              PATH_SEGMENT_REF@269..273
                TEXT_KW@269..273 "text"
        COMMA@273..274 ","
        WHITESPACE@274..277 "\n  "
        PARAM@277..284
          PATH_TYPE@277..284
            PATH_REF@277..284
              PATH_SEGMENT_REF@277..284
                NUMERIC_KW@277..284 "numeric"
        WHITESPACE@284..287 "\n  "
        AGGREGATE_ORDER_BY@287..343
          ORDER_KW@287..292 "order"
          WHITESPACE@292..293 " "
          BY_KW@293..295 "by"
          WHITESPACE@295..300 "\n    "
          PARAM@300..314
            PARAM_IN@300..302
              IN_KW@300..302 "in"
            WHITESPACE@302..303 " "
            PARAM_NAME@303..304
              IDENT@303..304 "a"
            WHITESPACE@304..305 " "
            TIMESTAMP_TYPE@305..314
              TIMESTAMP_KW@305..314 "timestamp"
          COMMA@314..315 ","
          WHITESPACE@315..320 "\n    "
          PARAM@320..333
            PARAM_OUT@320..323
              OUT_KW@320..323 "out"
            WHITESPACE@323..324 " "
            PARAM_NAME@324..325
              IDENT@324..325 "b"
            WHITESPACE@325..326 " "
            PATH_TYPE@326..333
              PATH_REF@326..333
                PATH_SEGMENT_REF@326..333
                  NUMERIC_KW@326..333 "numeric"
          COMMA@333..334 ","
          WHITESPACE@334..339 "\n    "
          PARAM@339..343
            PATH_TYPE@339..343
              PATH_REF@339..343
                PATH_SEGMENT_REF@339..343
                  TEXT_KW@339..343 "text"
        WHITESPACE@343..344 "\n"
        R_PAREN@344..345 ")"
    WHITESPACE@345..346 " "
    RESTRICT@346..354
      RESTRICT_KW@346..354 "restrict"
    SEMICOLON@354..355 ";"
  WHITESPACE@355..357 "\n\n"
  DROP_AGGREGATE@357..442
    DROP_KW@357..361 "drop"
    WHITESPACE@361..362 " "
    AGGREGATE_KW@362..371 "aggregate"
    WHITESPACE@371..372 " "
    AGGREGATE@372..441
      PATH_REF@372..379
        PATH_REF@372..375
          PATH_SEGMENT_REF@372..375
            IDENT@372..375 "foo"
        DOT@375..376 "."
        PATH_SEGMENT_REF@376..379
          IDENT@376..379 "bar"
      PARAM_LIST@379..441
        L_PAREN@379..380 "("
        WHITESPACE@380..383 "\n  "
        AGGREGATE_ORDER_BY@383..439
          ORDER_KW@383..388 "order"
          WHITESPACE@388..389 " "
          BY_KW@389..391 "by"
          WHITESPACE@391..396 "\n    "
          PARAM@396..410
            PARAM_IN@396..398
              IN_KW@396..398 "in"
            WHITESPACE@398..399 " "
            PARAM_NAME@399..400
              IDENT@399..400 "a"
            WHITESPACE@400..401 " "
            TIMESTAMP_TYPE@401..410
              TIMESTAMP_KW@401..410 "timestamp"
          COMMA@410..411 ","
          WHITESPACE@411..416 "\n    "
          PARAM@416..429
            PARAM_OUT@416..419
              OUT_KW@416..419 "out"
            WHITESPACE@419..420 " "
            PARAM_NAME@420..421
              IDENT@420..421 "b"
            WHITESPACE@421..422 " "
            PATH_TYPE@422..429
              PATH_REF@422..429
                PATH_SEGMENT_REF@422..429
                  NUMERIC_KW@422..429 "numeric"
          COMMA@429..430 ","
          WHITESPACE@430..435 "\n    "
          PARAM@435..439
            PATH_TYPE@435..439
              PATH_REF@435..439
                PATH_SEGMENT_REF@435..439
                  TEXT_KW@435..439 "text"
        WHITESPACE@439..440 "\n"
        R_PAREN@440..441 ")"
    SEMICOLON@441..442 ";"
  WHITESPACE@442..445 "\n\n\n"
  DROP_AGGREGATE@445..487
    DROP_KW@445..449 "drop"
    WHITESPACE@449..450 " "
    AGGREGATE_KW@450..459 "aggregate"
    WHITESPACE@459..460 " "
    AGGREGATE@460..486
      PATH_REF@460..461
        PATH_SEGMENT_REF@460..461
          IDENT@460..461 "a"
      PARAM_LIST@461..486
        L_PAREN@461..462 "("
        PARAM@462..485
          PARAM_NAME@462..467
            VALUE_KW@462..467 "value"
          WHITESPACE@467..468 " "
          PATH_TYPE@468..475
            PATH_REF@468..475
              PATH_SEGMENT_REF@468..475
                INTEGER_KW@468..475 "integer"
          WHITESPACE@475..476 " "
          PARAM_DEFAULT@476..485
            DEFAULT_KW@476..483 "default"
            WHITESPACE@483..484 " "
            LITERAL@484..485
              INT_NUMBER@484..485 "1"
        R_PAREN@485..486 ")"
    SEMICOLON@486..487 ";"
  WHITESPACE@487..488 "\n"

error[syntax-error]: Out params are not allowed with aggregates.
  ╭▸ 
9 │         out bar integer,
  ╰╴        ━━━
error[syntax-error]: In Out params are not allowed with aggregates.
   ╭▸ 
10 │         inout baz integer,
   ╰╴        ━━━━━
error[syntax-error]: In Out params are not allowed with aggregates.
   ╭▸ 
11 │         in out qux integer,
   ╰╴        ━━━━━━
error[syntax-error]: Out params are not allowed with aggregates.
   ╭▸ 
24 │     out b numeric,
   ╰╴    ━━━
error[syntax-error]: Out params are not allowed with aggregates.
   ╭▸ 
31 │     out b numeric,
   ╰╴    ━━━
error[syntax-error]: Defaults are not allowed.
   ╭▸ 
36 │ drop aggregate a(value integer default 1);
   ╰╴                               ━━━━━━━━━