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/create_aggregate_params.sql
---
SOURCE_FILE@0..484
  COMMENT@0..38 "-- can't have out par ..."
  WHITESPACE@38..39 "\n"
  CREATE_AGGREGATE@39..119
    CREATE_KW@39..45 "create"
    WHITESPACE@45..46 " "
    AGGREGATE_KW@46..55 "aggregate"
    WHITESPACE@55..56 " "
    AGGREGATE_NAME@56..57
      PATH@56..57
        PATH_SEGMENT@56..57
          IDENT@56..57 "a"
    PARAM_LIST@57..89
      L_PAREN@57..58 "("
      PARAM@58..62
        PARAM_IN@58..60
          IN_KW@58..60 "in"
        WHITESPACE@60..61 " "
        PATH_TYPE@61..62
          PATH_REF@61..62
            PATH_SEGMENT_REF@61..62
              IDENT@61..62 "x"
      COMMA@62..63 ","
      WHITESPACE@63..64 " "
      PARAM@64..69
        PARAM_OUT@64..67
          OUT_KW@64..67 "out"
        WHITESPACE@67..68 " "
        PATH_TYPE@68..69
          PATH_REF@68..69
            PATH_SEGMENT_REF@68..69
              IDENT@68..69 "y"
      COMMA@69..70 ","
      WHITESPACE@70..71 " "
      PARAM@71..78
        PARAM_IN_OUT@71..76
          INOUT_KW@71..76 "inout"
        WHITESPACE@76..77 " "
        PATH_TYPE@77..78
          PATH_REF@77..78
            PATH_SEGMENT_REF@77..78
              IDENT@77..78 "z"
      COMMA@78..79 ","
      WHITESPACE@79..80 " "
      PARAM@80..88
        PARAM_IN_OUT@80..86
          IN_KW@80..82 "in"
          WHITESPACE@82..83 " "
          OUT_KW@83..86 "out"
        WHITESPACE@86..87 " "
        PATH_TYPE@87..88
          PATH_REF@87..88
            PATH_SEGMENT_REF@87..88
              IDENT@87..88 "w"
      R_PAREN@88..89 ")"
    WHITESPACE@89..90 " "
    ATTRIBUTE_LIST@90..118
      L_PAREN@90..91 "("
      WHITESPACE@91..94 "\n  "
      ATTRIBUTE_OPTION@94..103
        ATTRIBUTE_NAME@94..99
          IDENT@94..99 "sfunc"
        WHITESPACE@99..100 " "
        EQ@100..101 "="
        WHITESPACE@101..102 " "
        ATTRIBUTE_VALUE@102..103
          PATH_TYPE@102..103
            PATH_REF@102..103
              PATH_SEGMENT_REF@102..103
                IDENT@102..103 "f"
      COMMA@103..104 ","
      WHITESPACE@104..107 "\n  "
      ATTRIBUTE_OPTION@107..116
        ATTRIBUTE_NAME@107..112
          IDENT@107..112 "stype"
        WHITESPACE@112..113 " "
        EQ@113..114 "="
        WHITESPACE@114..115 " "
        ATTRIBUTE_VALUE@115..116
          PATH_TYPE@115..116
            PATH_REF@115..116
              PATH_SEGMENT_REF@115..116
                IDENT@115..116 "t"
      WHITESPACE@116..117 "\n"
      R_PAREN@117..118 ")"
    SEMICOLON@118..119 ";"
  WHITESPACE@119..121 "\n\n"
  CREATE_AGGREGATE@121..231
    CREATE_KW@121..127 "create"
    WHITESPACE@127..128 " "
    AGGREGATE_KW@128..137 "aggregate"
    WHITESPACE@137..138 " "
    AGGREGATE_NAME@138..160
      PATH@138..160
        PATH_SEGMENT@138..160
          IDENT@138..160 "aggregate_with_default"
    PARAM_LIST@160..185
      L_PAREN@160..161 "("
      PARAM@161..184
        PARAM_NAME@161..166
          VALUE_KW@161..166 "value"
        WHITESPACE@166..167 " "
        PATH_TYPE@167..174
          PATH_REF@167..174
            PATH_SEGMENT_REF@167..174
              INTEGER_KW@167..174 "integer"
        WHITESPACE@174..175 " "
        PARAM_DEFAULT@175..184
          DEFAULT_KW@175..182 "default"
          WHITESPACE@182..183 " "
          LITERAL@183..184
            INT_NUMBER@183..184 "1"
      R_PAREN@184..185 ")"
    WHITESPACE@185..186 " "
    ATTRIBUTE_LIST@186..230
      L_PAREN@186..187 "("
      WHITESPACE@187..190 "\n  "
      ATTRIBUTE_OPTION@190..209
        ATTRIBUTE_NAME@190..195
          IDENT@190..195 "sfunc"
        WHITESPACE@195..196 " "
        EQ@196..197 "="
        WHITESPACE@197..198 " "
        ATTRIBUTE_VALUE@198..209
          PATH_TYPE@198..209
            PATH_REF@198..209
              PATH_SEGMENT_REF@198..209
                IDENT@198..209 "integer_sum"
      COMMA@209..210 ","
      WHITESPACE@210..213 "\n  "
      ATTRIBUTE_OPTION@213..228
        ATTRIBUTE_NAME@213..218
          IDENT@213..218 "stype"
        WHITESPACE@218..219 " "
        EQ@219..220 "="
        WHITESPACE@220..221 " "
        ATTRIBUTE_VALUE@221..228
          PATH_TYPE@221..228
            PATH_REF@221..228
              PATH_SEGMENT_REF@221..228
                INTEGER_KW@221..228 "integer"
      WHITESPACE@228..229 "\n"
      R_PAREN@229..230 ")"
    SEMICOLON@230..231 ";"
  WHITESPACE@231..233 "\n\n"
  CREATE_AGGREGATE@233..349
    CREATE_KW@233..239 "create"
    WHITESPACE@239..240 " "
    AGGREGATE_KW@240..249 "aggregate"
    WHITESPACE@249..250 " "
    AGGREGATE_NAME@250..266
      PATH@250..266
        PATH_SEGMENT@250..266
          IDENT@250..266 "invalid_variadic"
    PARAM_LIST@266..303
      L_PAREN@266..267 "("
      PARAM@267..287
        PARAM_VARIADIC@267..275
          VARIADIC_KW@267..275 "variadic"
        WHITESPACE@275..276 " "
        PARAM_NAME@276..281
          IDENT@276..281 "items"
        WHITESPACE@281..282 " "
        ARRAY_TYPE@282..287
          PATH_TYPE@282..285
            PATH_REF@282..285
              PATH_SEGMENT_REF@282..285
                INT_KW@282..285 "int"
          ARRAY_BOUND@285..287
            L_BRACK@285..286 "["
            R_BRACK@286..287 "]"
      COMMA@287..288 ","
      WHITESPACE@288..289 " "
      PARAM@289..302
        PARAM_NAME@289..298
          FOLLOWING_KW@289..298 "following"
        WHITESPACE@298..299 " "
        PATH_TYPE@299..302
          PATH_REF@299..302
            PATH_SEGMENT_REF@299..302
              INT_KW@299..302 "int"
      R_PAREN@302..303 ")"
    WHITESPACE@303..304 " "
    ATTRIBUTE_LIST@304..348
      L_PAREN@304..305 "("
      WHITESPACE@305..308 "\n  "
      ATTRIBUTE_OPTION@308..327
        ATTRIBUTE_NAME@308..313
          IDENT@308..313 "sfunc"
        WHITESPACE@313..314 " "
        EQ@314..315 "="
        WHITESPACE@315..316 " "
        ATTRIBUTE_VALUE@316..327
          PATH_TYPE@316..327
            PATH_REF@316..327
              PATH_SEGMENT_REF@316..327
                IDENT@316..327 "integer_sum"
      COMMA@327..328 ","
      WHITESPACE@328..331 "\n  "
      ATTRIBUTE_OPTION@331..346
        ATTRIBUTE_NAME@331..336
          IDENT@331..336 "stype"
        WHITESPACE@336..337 " "
        EQ@337..338 "="
        WHITESPACE@338..339 " "
        ATTRIBUTE_VALUE@339..346
          PATH_TYPE@339..346
            PATH_REF@339..346
              PATH_SEGMENT_REF@339..346
                INTEGER_KW@339..346 "integer"
      WHITESPACE@346..347 "\n"
      R_PAREN@347..348 ")"
    SEMICOLON@348..349 ";"
  WHITESPACE@349..351 "\n\n"
  CREATE_AGGREGATE@351..483
    CREATE_KW@351..357 "create"
    WHITESPACE@357..358 " "
    AGGREGATE_KW@358..367 "aggregate"
    WHITESPACE@367..368 " "
    AGGREGATE_NAME@368..385
      PATH@368..385
        PATH_SEGMENT@368..385
          IDENT@368..385 "ordered_aggregate"
    PARAM_LIST@385..437
      L_PAREN@385..386 "("
      WHITESPACE@386..389 "\n  "
      PARAM@389..403
        PARAM_NAME@389..395
          IDENT@389..395 "direct"
        WHITESPACE@395..396 " "
        PATH_TYPE@396..403
          PATH_REF@396..403
            PATH_SEGMENT_REF@396..403
              INTEGER_KW@396..403 "integer"
      WHITESPACE@403..404 " "
      AGGREGATE_ORDER_BY@404..435
        ORDER_KW@404..409 "order"
        WHITESPACE@409..410 " "
        BY_KW@410..412 "by"
        WHITESPACE@412..413 " "
        PARAM@413..435
          PARAM_NAME@413..423
            IDENT@413..423 "aggregated"
          WHITESPACE@423..424 " "
          PATH_TYPE@424..431
            PATH_REF@424..431
              PATH_SEGMENT_REF@424..431
                INTEGER_KW@424..431 "integer"
          WHITESPACE@431..432 " "
          PARAM_DEFAULT@432..435
            EQ@432..433 "="
            WHITESPACE@433..434 " "
            LITERAL@434..435
              INT_NUMBER@434..435 "1"
      WHITESPACE@435..436 "\n"
      R_PAREN@436..437 ")"
    WHITESPACE@437..438 " "
    ATTRIBUTE_LIST@438..482
      L_PAREN@438..439 "("
      WHITESPACE@439..442 "\n  "
      ATTRIBUTE_OPTION@442..461
        ATTRIBUTE_NAME@442..447
          IDENT@442..447 "sfunc"
        WHITESPACE@447..448 " "
        EQ@448..449 "="
        WHITESPACE@449..450 " "
        ATTRIBUTE_VALUE@450..461
          PATH_TYPE@450..461
            PATH_REF@450..461
              PATH_SEGMENT_REF@450..461
                IDENT@450..461 "integer_sum"
      COMMA@461..462 ","
      WHITESPACE@462..465 "\n  "
      ATTRIBUTE_OPTION@465..480
        ATTRIBUTE_NAME@465..470
          IDENT@465..470 "stype"
        WHITESPACE@470..471 " "
        EQ@471..472 "="
        WHITESPACE@472..473 " "
        ATTRIBUTE_VALUE@473..480
          PATH_TYPE@473..480
            PATH_REF@473..480
              PATH_SEGMENT_REF@473..480
                INTEGER_KW@473..480 "integer"
      WHITESPACE@480..481 "\n"
      R_PAREN@481..482 ")"
    SEMICOLON@482..483 ";"
  WHITESPACE@483..484 "\n"

error[syntax-error]: Out params are not allowed with aggregates.
  ╭▸ 
2 │ create aggregate a(in x, out y, inout z, in out w) (
  ╰╴                         ━━━
error[syntax-error]: In Out params are not allowed with aggregates.
  ╭▸ 
2 │ create aggregate a(in x, out y, inout z, in out w) (
  ╰╴                                ━━━━━
error[syntax-error]: In Out params are not allowed with aggregates.
  ╭▸ 
2 │ create aggregate a(in x, out y, inout z, in out w) (
  ╰╴                                         ━━━━━━
error[syntax-error]: Defaults are not allowed.
  ╭▸ 
7 │ create aggregate aggregate_with_default(value integer default 1) (
  ╰╴                                                      ━━━━━━━━━
error[syntax-error]: VARIADIC param must be last input param.
   ╭▸ 
12 │ create aggregate invalid_variadic(variadic items int[], following int) (
   ╰╴                                                        ━━━━━━━━━━━━━
error[syntax-error]: Defaults are not allowed.
   ╭▸ 
18 │   direct integer order by aggregated integer = 1
   ╰╴                                             ━━━