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/begin_atomic_stmts.sql
---
SOURCE_FILE@0..239
  CREATE_FUNCTION@0..118
    CREATE_KW@0..6 "create"
    WHITESPACE@6..7 " "
    FUNCTION_KW@7..15 "function"
    WHITESPACE@15..16 " "
    FUNCTION_NAME@16..17
      PATH@16..17
        PATH_SEGMENT@16..17
          IDENT@16..17 "f"
    PARAM_LIST@17..19
      L_PAREN@17..18 "("
      R_PAREN@18..19 ")"
    WHITESPACE@19..20 "\n"
    RET_TYPE@20..32
      RETURNS_KW@20..27 "returns"
      WHITESPACE@27..28 " "
      PATH_TYPE@28..32
        PATH_REF@28..32
          PATH_SEGMENT_REF@28..32
            IDENT@28..32 "void"
    WHITESPACE@32..33 "\n"
    FUNC_OPTION_LIST@33..45
      LANGUAGE_FUNC_OPTION@33..45
        LANGUAGE_KW@33..41 "language"
        WHITESPACE@41..42 " "
        LANGUAGE_REF@42..45
          SQL_KW@42..45 "sql"
    WHITESPACE@45..46 "\n"
    ATOMIC_BODY@46..117
      BEGIN_KW@46..51 "begin"
      WHITESPACE@51..52 " "
      ATOMIC_KW@52..58 "atomic"
      WHITESPACE@58..61 "\n  "
      INSERT@61..86
        INSERT_KW@61..67 "insert"
        WHITESPACE@67..68 " "
        INTO_KW@68..72 "into"
        WHITESPACE@72..73 " "
        RELATION_NAME_REF@73..74
          PATH_REF@73..74
            PATH_SEGMENT_REF@73..74
              IDENT@73..74 "t"
        WHITESPACE@74..75 " "
        VALUES@75..85
          VALUES_KW@75..81 "values"
          WHITESPACE@81..82 " "
          ROW_LIST@82..85
            ROW@82..85
              L_PAREN@82..83 "("
              LITERAL@83..84
                INT_NUMBER@83..84 "1"
              R_PAREN@84..85 ")"
        SEMICOLON@85..86 ";"
      WHITESPACE@86..89 "\n  "
      INSERT@89..113
        INSERT_KW@89..95 "insert"
        WHITESPACE@95..96 " "
        INTO_KW@96..100 "into"
        WHITESPACE@100..101 " "
        RELATION_NAME_REF@101..102
          PATH_REF@101..102
            PATH_SEGMENT_REF@101..102
              IDENT@101..102 "t"
        WHITESPACE@102..103 " "
        VALUES@103..113
          VALUES_KW@103..109 "values"
          WHITESPACE@109..110 " "
          ROW_LIST@110..113
            ROW@110..113
              L_PAREN@110..111 "("
              LITERAL@111..112
                INT_NUMBER@111..112 "2"
              R_PAREN@112..113 ")"
      WHITESPACE@113..114 "\n"
      END_KW@114..117 "end"
    SEMICOLON@117..118 ";"
  WHITESPACE@118..120 "\n\n"
  CREATE_FUNCTION@120..238
    CREATE_KW@120..126 "create"
    WHITESPACE@126..127 " "
    FUNCTION_KW@127..135 "function"
    WHITESPACE@135..136 " "
    FUNCTION_NAME@136..137
      PATH@136..137
        PATH_SEGMENT@136..137
          IDENT@136..137 "g"
    PARAM_LIST@137..139
      L_PAREN@137..138 "("
      R_PAREN@138..139 ")"
    WHITESPACE@139..140 "\n"
    RET_TYPE@140..152
      RETURNS_KW@140..147 "returns"
      WHITESPACE@147..148 " "
      PATH_TYPE@148..152
        PATH_REF@148..152
          PATH_SEGMENT_REF@148..152
            IDENT@148..152 "void"
    WHITESPACE@152..153 "\n"
    FUNC_OPTION_LIST@153..165
      LANGUAGE_FUNC_OPTION@153..165
        LANGUAGE_KW@153..161 "language"
        WHITESPACE@161..162 " "
        LANGUAGE_REF@162..165
          SQL_KW@162..165 "sql"
    WHITESPACE@165..166 "\n"
    ATOMIC_BODY@166..237
      BEGIN_KW@166..171 "begin"
      WHITESPACE@171..172 " "
      ATOMIC_KW@172..178 "atomic"
      WHITESPACE@178..181 "\n  "
      INSERT@181..205
        INSERT_KW@181..187 "insert"
        WHITESPACE@187..188 " "
        INTO_KW@188..192 "into"
        WHITESPACE@192..193 " "
        RELATION_NAME_REF@193..194
          PATH_REF@193..194
            PATH_SEGMENT_REF@193..194
              IDENT@193..194 "t"
        WHITESPACE@194..195 " "
        VALUES@195..205
          VALUES_KW@195..201 "values"
          WHITESPACE@201..202 " "
          ROW_LIST@202..205
            ROW@202..205
              L_PAREN@202..203 "("
              LITERAL@203..204
                INT_NUMBER@203..204 "1"
              R_PAREN@204..205 ")"
      WHITESPACE@205..208 "\n  "
      INSERT@208..233
        INSERT_KW@208..214 "insert"
        WHITESPACE@214..215 " "
        INTO_KW@215..219 "into"
        WHITESPACE@219..220 " "
        RELATION_NAME_REF@220..221
          PATH_REF@220..221
            PATH_SEGMENT_REF@220..221
              IDENT@220..221 "t"
        WHITESPACE@221..222 " "
        VALUES@222..232
          VALUES_KW@222..228 "values"
          WHITESPACE@228..229 " "
          ROW_LIST@229..232
            ROW@229..232
              L_PAREN@229..230 "("
              LITERAL@230..231
                INT_NUMBER@230..231 "2"
              R_PAREN@231..232 ")"
        SEMICOLON@232..233 ";"
      WHITESPACE@233..234 "\n"
      END_KW@234..237 "end"
    SEMICOLON@237..238 ";"
  WHITESPACE@238..239 "\n"

error[syntax-error]: Missing semicolon after statement
  ╭▸ 
6 │   insert into t values (2)
  ╰╴                          ━
error[syntax-error]: Missing semicolon after statement
   ╭▸ 
13 │   insert into t values (1)
   ╰╴                          ━