squawk-syntax 2.62.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..389
  WHITESPACE@0..1 "\n"
  COMMENT@1..8 "-- full"
  WHITESPACE@8..9 "\n"
  DROP_AGGREGATE@9..168
    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..146
      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..146
        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..140
          PATH_TYPE@136..140
            PATH_REF@136..140
              PATH_SEGMENT_REF@136..140
                TEXT_KW@136..140 "text"
        WHITESPACE@140..145 "\n    "
        R_PAREN@145..146 ")"
    COMMA@146..147 ","
    WHITESPACE@147..153 " \n    "
    AGGREGATE@153..157
      PATH_REF@153..154
        PATH_SEGMENT_REF@153..154
          IDENT@153..154 "c"
      PARAM_LIST@154..157
        L_PAREN@154..155 "("
        STAR@155..156 "*"
        R_PAREN@156..157 ")"
    WHITESPACE@157..160 "\n  "
    CASCADE_KW@160..167 "cascade"
    SEMICOLON@167..168 ";"
  WHITESPACE@168..170 "\n\n"
  COMMENT@170..182 "-- aggregate"
  WHITESPACE@182..183 "\n"
  DROP_AGGREGATE@183..300
    DROP_KW@183..187 "drop"
    WHITESPACE@187..188 " "
    AGGREGATE_KW@188..197 "aggregate"
    WHITESPACE@197..198 " "
    AGGREGATE@198..290
      PATH_REF@198..199
        PATH_SEGMENT_REF@198..199
          IDENT@198..199 "a"
      PARAM_LIST@199..290
        L_PAREN@199..200 "("
        WHITESPACE@200..203 "\n  "
        PARAM@203..210
          PATH_TYPE@203..210
            PATH_REF@203..210
              PATH_SEGMENT_REF@203..210
                INTEGER_KW@203..210 "integer"
        COMMA@210..211 ","
        WHITESPACE@211..214 "\n  "
        PARAM@214..218
          PATH_TYPE@214..218
            PATH_REF@214..218
              PATH_SEGMENT_REF@214..218
                TEXT_KW@214..218 "text"
        COMMA@218..219 ","
        WHITESPACE@219..222 "\n  "
        PARAM@222..229
          PATH_TYPE@222..229
            PATH_REF@222..229
              PATH_SEGMENT_REF@222..229
                NUMERIC_KW@222..229 "numeric"
        WHITESPACE@229..232 "\n  "
        ORDER_KW@232..237 "order"
        WHITESPACE@237..238 " "
        BY_KW@238..240 "by"
        WHITESPACE@240..245 "\n    "
        PARAM@245..259
          PARAM_IN@245..247
            IN_KW@245..247 "in"
          WHITESPACE@247..248 " "
          PARAM_NAME@248..249
            IDENT@248..249 "a"
          WHITESPACE@249..250 " "
          TIME_TYPE@250..259
            TIMESTAMP_KW@250..259 "timestamp"
        COMMA@259..260 ","
        WHITESPACE@260..265 "\n    "
        PARAM@265..278
          PARAM_OUT@265..268
            OUT_KW@265..268 "out"
          WHITESPACE@268..269 " "
          PARAM_NAME@269..270
            IDENT@269..270 "b"
          WHITESPACE@270..271 " "
          PATH_TYPE@271..278
            PATH_REF@271..278
              PATH_SEGMENT_REF@271..278
                NUMERIC_KW@271..278 "numeric"
        COMMA@278..279 ","
        WHITESPACE@279..284 "\n    "
        PARAM@284..288
          PATH_TYPE@284..288
            PATH_REF@284..288
              PATH_SEGMENT_REF@284..288
                TEXT_KW@284..288 "text"
        WHITESPACE@288..289 "\n"
        R_PAREN@289..290 ")"
    WHITESPACE@290..291 " "
    RESTRICT_KW@291..299 "restrict"
    SEMICOLON@299..300 ";"
  WHITESPACE@300..302 "\n\n"
  DROP_AGGREGATE@302..387
    DROP_KW@302..306 "drop"
    WHITESPACE@306..307 " "
    AGGREGATE_KW@307..316 "aggregate"
    WHITESPACE@316..317 " "
    AGGREGATE@317..386
      PATH_REF@317..324
        PATH_REF@317..320
          PATH_SEGMENT_REF@317..320
            IDENT@317..320 "foo"
        DOT@320..321 "."
        PATH_SEGMENT_REF@321..324
          IDENT@321..324 "bar"
      PARAM_LIST@324..386
        L_PAREN@324..325 "("
        WHITESPACE@325..328 "\n  "
        ORDER_KW@328..333 "order"
        WHITESPACE@333..334 " "
        BY_KW@334..336 "by"
        WHITESPACE@336..341 "\n    "
        PARAM@341..355
          PARAM_IN@341..343
            IN_KW@341..343 "in"
          WHITESPACE@343..344 " "
          PARAM_NAME@344..345
            IDENT@344..345 "a"
          WHITESPACE@345..346 " "
          TIME_TYPE@346..355
            TIMESTAMP_KW@346..355 "timestamp"
        COMMA@355..356 ","
        WHITESPACE@356..361 "\n    "
        PARAM@361..374
          PARAM_OUT@361..364
            OUT_KW@361..364 "out"
          WHITESPACE@364..365 " "
          PARAM_NAME@365..366
            IDENT@365..366 "b"
          WHITESPACE@366..367 " "
          PATH_TYPE@367..374
            PATH_REF@367..374
              PATH_SEGMENT_REF@367..374
                NUMERIC_KW@367..374 "numeric"
        COMMA@374..375 ","
        WHITESPACE@375..380 "\n    "
        PARAM@380..384
          PATH_TYPE@380..384
            PATH_REF@380..384
              PATH_SEGMENT_REF@380..384
                TEXT_KW@380..384 "text"
        WHITESPACE@384..385 "\n"
        R_PAREN@385..386 ")"
    SEMICOLON@386..387 ";"
  WHITESPACE@387..389 "\n\n"

error[syntax-error]: Out params are not allowed with aggregates.
  ╭▸ 
9 │         out bar integer,
  ╰╴        ━━━
error[syntax-error]: Out params are not allowed with aggregates.
   ╭▸ 
22 │     out b numeric,
   ╰╴    ━━━
error[syntax-error]: Out params are not allowed with aggregates.
   ╭▸ 
29 │     out b numeric,
   ╰╴    ━━━