squawk-parser 2.53.0

Linter for Postgres migrations & SQL
Documentation
---
source: crates/squawk_parser/tests/tests.rs
input_file: crates/squawk_parser/tests/data/ok/create_rule.sql
---
SOURCE_FILE
  COMMENT "-- simple"
  WHITESPACE "\n"
  CREATE_RULE
    CREATE_KW "create"
    WHITESPACE " "
    RULE_KW "rule"
    WHITESPACE " "
    NAME
      IDENT "r"
    WHITESPACE " "
    AS_KW "as"
    WHITESPACE " "
    RULE_ON
      ON_KW "on"
      WHITESPACE " "
      SELECT_KW "select"
      WHITESPACE "\n  "
      TO_KW "to"
      WHITESPACE " "
      PATH
        PATH_SEGMENT
          NAME_REF
            IDENT "t"
    WHITESPACE "\n  "
    RULE_DO
      DO_KW "do"
      WHITESPACE " "
      NOTHING
        NOTHING_KW "nothing"
    SEMICOLON ";"
  WHITESPACE "\n\n"
  COMMENT "-- full"
  WHITESPACE "\n"
  CREATE_RULE
    CREATE_KW "create"
    WHITESPACE " "
    OR_REPLACE
      OR_KW "or"
      WHITESPACE " "
      REPLACE_KW "replace"
    WHITESPACE " "
    RULE_KW "rule"
    WHITESPACE " "
    NAME
      IDENT "r"
    WHITESPACE " "
    AS_KW "as"
    WHITESPACE " "
    RULE_ON
      ON_KW "on"
      WHITESPACE " "
      SELECT_KW "select"
      WHITESPACE "\n  "
      TO_KW "to"
      WHITESPACE " "
      PATH
        PATH
          PATH_SEGMENT
            NAME_REF
              IDENT "foo"
        DOT "."
        PATH_SEGMENT
          NAME_REF
            IDENT "t"
      WHITESPACE "\n  "
      WHERE_CLAUSE
        WHERE_KW "where"
        WHITESPACE " "
        BIN_EXPR
          BIN_EXPR
            FIELD_EXPR
              NAME_REF
                NEW_KW "new"
              DOT "."
              NAME_REF
                IDENT "foo"
            WHITESPACE " "
            EQ "="
            WHITESPACE " "
            FIELD_EXPR
              NAME_REF
                OLD_KW "old"
              DOT "."
              NAME_REF
                IDENT "foo"
          WHITESPACE " "
          OR_KW "or"
          WHITESPACE " "
          BIN_EXPR
            FIELD_EXPR
              NAME_REF
                OLD_KW "old"
              DOT "."
              NAME_REF
                IDENT "id"
            WHITESPACE " "
            NEQ "!="
            WHITESPACE " "
            FIELD_EXPR
              NAME_REF
                NEW_KW "new"
              DOT "."
              NAME_REF
                IDENT "id"
    WHITESPACE "\n  "
    RULE_DO
      DO_KW "do"
      WHITESPACE " "
      RULE_STMT_LIST
        L_PAREN "("
        WHITESPACE "\n    "
        SELECT
          SELECT_CLAUSE
            SELECT_KW "select"
            WHITESPACE " "
            TARGET_LIST
              TARGET
                LITERAL
                  INT_NUMBER "1"
          SEMICOLON ";"
        WHITESPACE "\n    "
        INSERT
          INSERT_KW "insert"
          WHITESPACE " "
          INTO_KW "into"
          WHITESPACE " "
          PATH
            PATH_SEGMENT
              NAME_REF
                IDENT "t"
          WHITESPACE " "
          VALUES
            VALUES_KW "values"
            WHITESPACE " "
            ROW_LIST
              ROW
                L_PAREN "("
                LITERAL
                  INT_NUMBER "1"
                COMMA ","
                WHITESPACE " "
                LITERAL
                  INT_NUMBER "2"
                R_PAREN ")"
          SEMICOLON ";"
        WHITESPACE "\n    "
        DELETE
          DELETE_KW "delete"
          WHITESPACE " "
          FROM_KW "from"
          WHITESPACE " "
          RELATION_NAME
            PATH
              PATH_SEGMENT
                NAME_REF
                  IDENT "t"
          SEMICOLON ";"
        WHITESPACE "\n    "
        VALUES
          VALUES_KW "values"
          WHITESPACE " "
          ROW_LIST
            ROW
              L_PAREN "("
              LITERAL
                INT_NUMBER "1"
              COMMA ","
              WHITESPACE " "
              LITERAL
                INT_NUMBER "2"
              R_PAREN ")"
          SEMICOLON ";"
        WHITESPACE "\n    "
        UPDATE
          UPDATE_KW "update"
          WHITESPACE " "
          RELATION_NAME
            PATH
              PATH_SEGMENT
                NAME_REF
                  IDENT "t"
          WHITESPACE " "
          SET_CLAUSE
            SET_KW "set"
            WHITESPACE " "
            SET_COLUMN_LIST
              SET_SINGLE_COLUMN
                COLUMN
                  NAME_REF
                    IDENT "foo"
                WHITESPACE " "
                EQ "="
                WHITESPACE " "
                SET_EXPR
                  LITERAL
                    INT_NUMBER "1"
          SEMICOLON ";"
        WHITESPACE "\n    "
        NOTIFY
          NOTIFY_KW "notify"
          WHITESPACE " "
          NAME_REF
            IDENT "f"
          SEMICOLON ";"
        WHITESPACE "\n  "
        R_PAREN ")"
    SEMICOLON ";"
  WHITESPACE "\n\n"
  COMMENT "-- doc_1"
  WHITESPACE "\n"
  CREATE_RULE
    CREATE_KW "CREATE"
    WHITESPACE " "
    RULE_KW "RULE"
    WHITESPACE " "
    NAME
      IDENT "\"_RETURN\""
    WHITESPACE " "
    AS_KW "AS"
    WHITESPACE "\n    "
    RULE_ON
      ON_KW "ON"
      WHITESPACE " "
      SELECT_KW "SELECT"
      WHITESPACE " "
      TO_KW "TO"
      WHITESPACE " "
      PATH
        PATH_SEGMENT
          NAME_REF
            IDENT "t1"
    WHITESPACE "\n    "
    RULE_DO
      DO_KW "DO"
      WHITESPACE " "
      INSTEAD_KW "INSTEAD"
      WHITESPACE "\n        "
      SELECT
        SELECT_CLAUSE
          SELECT_KW "SELECT"
          WHITESPACE " "
          TARGET_LIST
            TARGET
              STAR "*"
        WHITESPACE " "
        FROM_CLAUSE
          FROM_KW "FROM"
          WHITESPACE " "
          FROM_ITEM
            NAME_REF
              IDENT "t2"
    SEMICOLON ";"
  WHITESPACE "\n\n"
  CREATE_RULE
    CREATE_KW "CREATE"
    WHITESPACE " "
    RULE_KW "RULE"
    WHITESPACE " "
    NAME
      IDENT "\"_RETURN\""
    WHITESPACE " "
    AS_KW "AS"
    WHITESPACE "\n    "
    RULE_ON
      ON_KW "ON"
      WHITESPACE " "
      SELECT_KW "SELECT"
      WHITESPACE " "
      TO_KW "TO"
      WHITESPACE " "
      PATH
        PATH_SEGMENT
          NAME_REF
            IDENT "t2"
    WHITESPACE "\n    "
    RULE_DO
      DO_KW "DO"
      WHITESPACE " "
      INSTEAD_KW "INSTEAD"
      WHITESPACE "\n        "
      SELECT
        SELECT_CLAUSE
          SELECT_KW "SELECT"
          WHITESPACE " "
          TARGET_LIST
            TARGET
              STAR "*"
        WHITESPACE " "
        FROM_CLAUSE
          FROM_KW "FROM"
          WHITESPACE " "
          FROM_ITEM
            NAME_REF
              IDENT "t1"
    SEMICOLON ";"
  WHITESPACE "\n\n"
  SELECT
    SELECT_CLAUSE
      SELECT_KW "SELECT"
      WHITESPACE " "
      TARGET_LIST
        TARGET
          STAR "*"
    WHITESPACE " "
    FROM_CLAUSE
      FROM_KW "FROM"
      WHITESPACE " "
      FROM_ITEM
        NAME_REF
          IDENT "t1"
    SEMICOLON ";"
  WHITESPACE "\n\n"
  COMMENT "-- doc_2"
  WHITESPACE "\n"
  CREATE_RULE
    CREATE_KW "CREATE"
    WHITESPACE " "
    RULE_KW "RULE"
    WHITESPACE " "
    NAME
      IDENT "notify_me"
    WHITESPACE " "
    AS_KW "AS"
    WHITESPACE " "
    RULE_ON
      ON_KW "ON"
      WHITESPACE " "
      UPDATE_KW "UPDATE"
      WHITESPACE " "
      TO_KW "TO"
      WHITESPACE " "
      PATH
        PATH_SEGMENT
          NAME_REF
            IDENT "mytable"
    WHITESPACE " "
    RULE_DO
      DO_KW "DO"
      WHITESPACE " "
      ALSO_KW "ALSO"
      WHITESPACE " "
      NOTIFY
        NOTIFY_KW "NOTIFY"
        WHITESPACE " "
        NAME_REF
          IDENT "mytable"
        SEMICOLON ";"
  WHITESPACE "\n\n"
  UPDATE
    UPDATE_KW "UPDATE"
    WHITESPACE " "
    RELATION_NAME
      PATH
        PATH_SEGMENT
          NAME_REF
            IDENT "mytable"
    WHITESPACE " "
    SET_CLAUSE
      SET_KW "SET"
      WHITESPACE " "
      SET_COLUMN_LIST
        SET_SINGLE_COLUMN
          COLUMN
            NAME_REF
              NAME_KW "name"
          WHITESPACE " "
          EQ "="
          WHITESPACE " "
          SET_EXPR
            LITERAL
              STRING "'foo'"
    WHITESPACE " "
    WHERE_CLAUSE
      WHERE_KW "WHERE"
      WHITESPACE " "
      BIN_EXPR
        NAME_REF
          IDENT "id"
        WHITESPACE " "
        EQ "="
        WHITESPACE " "
        LITERAL
          INT_NUMBER "42"
    SEMICOLON ";"
  WHITESPACE "\n\n"