squawk-parser 2.49.0

Linter for Postgres migrations & SQL
Documentation
---
source: crates/squawk_parser/tests/tests.rs
input_file: crates/squawk_parser/tests/data/err/alter_table.sql
---
SOURCE_FILE
  COMMENT "-- missing alter_table"
  WHITESPACE "\n"
  ERROR
    ADD_KW "add"
  WHITESPACE " "
  ERROR
    COLUMN_KW "column"
  WHITESPACE " "
  ERROR
    IDENT "foo"
  WHITESPACE " "
  ERROR
    BOOLEAN_KW "boolean"
  SEMICOLON ";"
  WHITESPACE "\n\n"
  COMMENT "-- mismatch options"
  WHITESPACE "\n"
  ALTER_TABLE
    ALTER_KW "alter"
    WHITESPACE " "
    TABLE_KW "table"
    WHITESPACE " "
    RELATION_NAME
      PATH
        PATH_SEGMENT
          NAME_REF
            IDENT "t"
    WHITESPACE " "
    ALTER_CONSTRAINT
      ALTER_KW "alter"
      WHITESPACE " "
      CONSTRAINT_KW "constraint"
      WHITESPACE " "
      NAME_REF
        IDENT "c"
      WHITESPACE " "
      NOT_DEFERRABLE_CONSTRAINT_OPTION
        NOT_KW "not"
        WHITESPACE " "
        DEFERRABLE_KW "deferrable"
      WHITESPACE " "
      INITIALLY_DEFERRED_CONSTRAINT_OPTION
        INITIALLY_KW "initially"
        WHITESPACE " "
        DEFERRED_KW "deferred"
  SEMICOLON ";"
  WHITESPACE "\n\n"
  ALTER_TABLE
    ALTER_KW "alter"
    WHITESPACE " "
    TABLE_KW "table"
    WHITESPACE " "
    RELATION_NAME
      PATH
        PATH_SEGMENT
          NAME_REF
            IDENT "t"
    WHITESPACE " \n"
    VALIDATE_CONSTRAINT
      VALIDATE_KW "validate"
      WHITESPACE " "
      CONSTRAINT_KW "constraint"
      WHITESPACE " "
      NAME_REF
        IDENT "foo"
    WHITESPACE " "
    VALIDATE_CONSTRAINT
      VALIDATE_KW "validate"
      WHITESPACE " "
      CONSTRAINT_KW "constraint"
      WHITESPACE " "
      NAME_REF
        IDENT "b"
  WHITESPACE " "
  SEMICOLON ";"
  WHITESPACE "\n"
  COMMENT "--                     ^ missing comma"
  WHITESPACE "\n\n"
  COMMENT "-- pg 18 only, via: https://www.depesz.com/2025/05/01/waiting-for-postgresql-18-allow-not-null-constraints-to-be-added-as-not-valid/"
  WHITESPACE "\n"
  ALTER_TABLE
    ALTER_KW "alter"
    WHITESPACE " "
    TABLE_KW "table"
    WHITESPACE " "
    RELATION_NAME
      PATH
        PATH
          PATH_SEGMENT
            NAME_REF
              IDENT "public"
        DOT "."
        PATH_SEGMENT
          NAME_REF
            IDENT "copy_2"
    WHITESPACE " "
    ADD_CONSTRAINT
      ADD_KW "add"
      WHITESPACE " "
      NOT_NULL_CONSTRAINT
        CONSTRAINT_NAME
          CONSTRAINT_KW "constraint"
          WHITESPACE " "
          NAME
            IDENT "id_not_null"
        WHITESPACE " "
        NOT_KW "not"
        WHITESPACE " "
        NULL_KW "null"
        WHITESPACE " "
        NAME_REF
          IDENT "id"
      WHITESPACE " "
      NOT_VALID
        NOT_KW "not"
        WHITESPACE " "
        VALID_KW "valid"
  SEMICOLON ";"
  WHITESPACE "\n\n"
  COMMENT "-- missing comma"
  WHITESPACE "\n"
  ALTER_FOREIGN_TABLE
    ALTER_KW "alter"
    WHITESPACE " "
    FOREIGN_KW "foreign"
    WHITESPACE " "
    TABLE_KW "table"
    WHITESPACE " "
    RELATION_NAME
      PATH
        PATH_SEGMENT
          NAME_REF
            IDENT "t"
    WHITESPACE "\n  "
    ALTER_COLUMN
      ALTER_KW "alter"
      WHITESPACE " "
      NAME_REF
        IDENT "c"
      WHITESPACE " "
      SET_OPTIONS
        SET_KW "set"
        WHITESPACE " "
        ATTRIBUTE_LIST
          L_PAREN "("
          ATTRIBUTE_OPTION
            NAME
              IDENT "a"
          WHITESPACE " "
          ATTRIBUTE_OPTION
            NAME
              IDENT "b"
            WHITESPACE " "
            EQ "="
            WHITESPACE " "
            ATTRIBUTE_VALUE
              LITERAL
                INT_NUMBER "1"
          R_PAREN ")"
  SEMICOLON ";"
  WHITESPACE "\n\n"
  COMMENT "-- extra comma"
  WHITESPACE "\n"
  ALTER_FOREIGN_TABLE
    ALTER_KW "alter"
    WHITESPACE " "
    FOREIGN_KW "foreign"
    WHITESPACE " "
    TABLE_KW "table"
    WHITESPACE " "
    RELATION_NAME
      PATH
        PATH_SEGMENT
          NAME_REF
            IDENT "t"
    WHITESPACE "\n  "
    ALTER_COLUMN
      ALTER_KW "alter"
      WHITESPACE " "
      NAME_REF
        IDENT "c"
      WHITESPACE " "
      SET_OPTIONS
        SET_KW "set"
        WHITESPACE " "
        ATTRIBUTE_LIST
          L_PAREN "("
          ATTRIBUTE_OPTION
            NAME
              IDENT "a"
          COMMA ","
          WHITESPACE " "
          ERROR
            COMMA ","
          WHITESPACE " "
          ATTRIBUTE_OPTION
            NAME
              IDENT "b"
            WHITESPACE " "
            EQ "="
            WHITESPACE " "
            ATTRIBUTE_VALUE
              LITERAL
                INT_NUMBER "1"
          R_PAREN ")"
  SEMICOLON ";"
  WHITESPACE "\n"
---
error[syntax-error]: expected command, found ADD_KW
  ╭▸ 
2 │ add column foo boolean;
  ╰╴━
error[syntax-error]: expected command, found COLUMN_KW
  ╭▸ 
2 │ add column foo boolean;
  ╰╴    ━
error[syntax-error]: expected command, found IDENT
  ╭▸ 
2 │ add column foo boolean;
  ╰╴           ━
error[syntax-error]: expected command, found BOOLEAN_KW
  ╭▸ 
2 │ add column foo boolean;
  ╰╴               ━
error[syntax-error]: missing comma
  ╭▸ 
8 │ validate constraint foo validate constraint b ;
  ╰╴                       ━
error[syntax-error]: expected COMMA
   ╭▸ 
16 │   alter c set (a b = 1);
   ╰╴                ━
error[syntax-error]: unexpected comma
   ╭▸ 
20 │   alter c set (a, , b = 1);
   ╰╴                  ━