squawk-parser 2.48.0

Linter for Postgres migrations & SQL
Documentation
---
source: crates/squawk_parser/tests/tests.rs
input_file: crates/squawk_parser/tests/data/ok/drop_aggregate.sql
---
SOURCE_FILE
  COMMENT "-- simple"
  WHITESPACE "\n"
  DROP_AGGREGATE
    DROP_KW "drop"
    WHITESPACE " "
    AGGREGATE_KW "aggregate"
    WHITESPACE " "
    AGGREGATE
      PATH
        PATH_SEGMENT
          NAME_REF
            IDENT "a"
      PARAM_LIST
        L_PAREN "("
        STAR "*"
        R_PAREN ")"
  SEMICOLON ";"
  WHITESPACE "\n\n"
  COMMENT "-- full"
  WHITESPACE "\n"
  DROP_AGGREGATE
    DROP_KW "drop"
    WHITESPACE " "
    AGGREGATE_KW "aggregate"
    WHITESPACE " \n  "
    IF_EXISTS
      IF_KW "if"
      WHITESPACE " "
      EXISTS_KW "exists"
    WHITESPACE " \n    "
    AGGREGATE
      PATH
        PATH_SEGMENT
          NAME_REF
            IDENT "a"
      PARAM_LIST
        L_PAREN "("
        STAR "*"
        R_PAREN ")"
    COMMA ","
    WHITESPACE " \n    "
    AGGREGATE
      PATH
        PATH
          PATH_SEGMENT
            NAME_REF
              IDENT "foo"
        DOT "."
        PATH_SEGMENT
          NAME_REF
            IDENT "bar"
      PARAM_LIST
        L_PAREN "("
        STAR "*"
        R_PAREN ")"
    COMMA ","
    WHITESPACE " \n    "
    AGGREGATE
      PATH
        PATH
          PATH_SEGMENT
            NAME_REF
              IDENT "foo"
        DOT "."
        PATH_SEGMENT
          NAME_REF
            IDENT "bar"
      PARAM_LIST
        L_PAREN "("
        WHITESPACE "\n        "
        PARAM
          PARAM_IN
            IN_KW "in"
          WHITESPACE " "
          NAME
            IDENT "foo"
          WHITESPACE " "
          PATH_TYPE
            PATH
              PATH_SEGMENT
                NAME_REF
                  INTEGER_KW "integer"
        COMMA ","
        WHITESPACE "\n        "
        PARAM
          NAME
            IDENT "bar"
          WHITESPACE " "
          PATH_TYPE
            PATH
              PATH_SEGMENT
                NAME_REF
                  INTEGER_KW "integer"
        COMMA ","
        WHITESPACE "\n        "
        PARAM
          PATH_TYPE
            PATH
              PATH_SEGMENT
                NAME_REF
                  TEXT_KW "text"
        WHITESPACE "\n    "
        R_PAREN ")"
    COMMA ","
    WHITESPACE " \n    "
    AGGREGATE
      PATH
        PATH_SEGMENT
          NAME_REF
            IDENT "c"
      PARAM_LIST
        L_PAREN "("
        STAR "*"
        R_PAREN ")"
    WHITESPACE "\n  "
    CASCADE_KW "cascade"
  SEMICOLON ";"
  WHITESPACE "\n\n"
  COMMENT "-- aggregate"
  WHITESPACE "\n"
  DROP_AGGREGATE
    DROP_KW "drop"
    WHITESPACE " "
    AGGREGATE_KW "aggregate"
    WHITESPACE " "
    AGGREGATE
      PATH
        PATH_SEGMENT
          NAME_REF
            IDENT "a"
      PARAM_LIST
        L_PAREN "("
        WHITESPACE "\n  "
        PARAM
          PATH_TYPE
            PATH
              PATH_SEGMENT
                NAME_REF
                  INTEGER_KW "integer"
        COMMA ","
        WHITESPACE "\n  "
        PARAM
          PATH_TYPE
            PATH
              PATH_SEGMENT
                NAME_REF
                  TEXT_KW "text"
        COMMA ","
        WHITESPACE "\n  "
        PARAM
          PATH_TYPE
            PATH
              PATH_SEGMENT
                NAME_REF
                  NUMERIC_KW "numeric"
        WHITESPACE "\n  "
        ORDER_KW "order"
        WHITESPACE " "
        BY_KW "by"
        WHITESPACE "\n    "
        PARAM
          PARAM_IN
            IN_KW "in"
          WHITESPACE " "
          NAME
            IDENT "a"
          WHITESPACE " "
          TIME_TYPE
            TIMESTAMP_KW "timestamp"
        COMMA ","
        WHITESPACE "\n    "
        PARAM
          NAME
            IDENT "b"
          WHITESPACE " "
          PATH_TYPE
            PATH
              PATH_SEGMENT
                NAME_REF
                  NUMERIC_KW "numeric"
        COMMA ","
        WHITESPACE "\n    "
        PARAM
          PATH_TYPE
            PATH
              PATH_SEGMENT
                NAME_REF
                  TEXT_KW "text"
        WHITESPACE "\n"
        R_PAREN ")"
    WHITESPACE " "
    RESTRICT_KW "restrict"
  SEMICOLON ";"
  WHITESPACE "\n\n"
  DROP_AGGREGATE
    DROP_KW "drop"
    WHITESPACE " "
    AGGREGATE_KW "aggregate"
    WHITESPACE " "
    AGGREGATE
      PATH
        PATH
          PATH_SEGMENT
            NAME_REF
              IDENT "foo"
        DOT "."
        PATH_SEGMENT
          NAME_REF
            IDENT "bar"
      PARAM_LIST
        L_PAREN "("
        WHITESPACE "\n  "
        ORDER_KW "order"
        WHITESPACE " "
        BY_KW "by"
        WHITESPACE "\n    "
        PARAM
          PARAM_IN
            IN_KW "in"
          WHITESPACE " "
          NAME
            IDENT "a"
          WHITESPACE " "
          TIME_TYPE
            TIMESTAMP_KW "timestamp"
        COMMA ","
        WHITESPACE "\n    "
        PARAM
          NAME
            IDENT "b"
          WHITESPACE " "
          PATH_TYPE
            PATH
              PATH_SEGMENT
                NAME_REF
                  NUMERIC_KW "numeric"
        COMMA ","
        WHITESPACE "\n    "
        PARAM
          PATH_TYPE
            PATH
              PATH_SEGMENT
                NAME_REF
                  TEXT_KW "text"
        WHITESPACE "\n"
        R_PAREN ")"
  SEMICOLON ";"
  WHITESPACE "\n\n"