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/json_object_ok.sql
---
SOURCE_FILE@0..266
  SELECT@0..21
    SELECT_CLAUSE@0..20
      SELECT_KW@0..6 "select"
      WHITESPACE@6..7 " "
      TARGET_LIST@7..20
        TARGET@7..20
          CALL_EXPR@7..20
            JSON_OBJECT_FN@7..20
              JSON_OBJECT_KW@7..18 "json_object"
              L_PAREN@18..19 "("
              R_PAREN@19..20 ")"
    SEMICOLON@20..21 ";"
  WHITESPACE@21..22 "\n"
  SELECT@22..58
    SELECT_CLAUSE@22..57
      SELECT_KW@22..28 "select"
      WHITESPACE@28..29 " "
      TARGET_LIST@29..57
        TARGET@29..57
          CALL_EXPR@29..57
            JSON_OBJECT_FN@29..57
              JSON_OBJECT_KW@29..40 "json_object"
              L_PAREN@40..41 "("
              JSON_RETURNING_CLAUSE@41..56
                RETURNING_KW@41..50 "returning"
                WHITESPACE@50..51 " "
                PATH_TYPE@51..56
                  PATH_REF@51..56
                    PATH_SEGMENT_REF@51..56
                      IDENT@51..56 "jsonb"
              R_PAREN@56..57 ")"
    SEMICOLON@57..58 ";"
  WHITESPACE@58..59 "\n"
  SELECT@59..88
    SELECT_CLAUSE@59..87
      SELECT_KW@59..65 "select"
      WHITESPACE@65..66 " "
      TARGET_LIST@66..87
        TARGET@66..87
          CALL_EXPR@66..87
            JSON_OBJECT_FN@66..87
              JSON_OBJECT_KW@66..77 "json_object"
              L_PAREN@77..78 "("
              LITERAL@78..81
                STRING@78..81 "'a'"
              COMMA@81..82 ","
              WHITESPACE@82..83 " "
              LITERAL@83..86
                STRING@83..86 "'b'"
              R_PAREN@86..87 ")"
    SEMICOLON@87..88 ";"
  WHITESPACE@88..89 "\n"
  SELECT@89..128
    SELECT_CLAUSE@89..127
      SELECT_KW@89..95 "select"
      WHITESPACE@95..96 " "
      TARGET_LIST@96..127
        TARGET@96..127
          CALL_EXPR@96..127
            JSON_OBJECT_FN@96..127
              JSON_OBJECT_KW@96..107 "json_object"
              L_PAREN@107..108 "("
              NAMED_ARG@108..116
                PARAM_NAME_REF@108..109
                  IDENT@108..109 "a"
                WHITESPACE@109..110 " "
                FAT_ARROW@110..112 "=>"
                WHITESPACE@112..113 " "
                LITERAL@113..116
                  STRING@113..116 "'x'"
              COMMA@116..117 ","
              WHITESPACE@117..118 " "
              NAMED_ARG@118..126
                PARAM_NAME_REF@118..119
                  IDENT@118..119 "b"
                WHITESPACE@119..120 " "
                FAT_ARROW@120..122 "=>"
                WHITESPACE@122..123 " "
                LITERAL@123..126
                  STRING@123..126 "'y'"
              R_PAREN@126..127 ")"
    SEMICOLON@127..128 ";"
  WHITESPACE@128..129 "\n"
  SELECT@129..168
    SELECT_CLAUSE@129..167
      SELECT_KW@129..135 "select"
      WHITESPACE@135..136 " "
      TARGET_LIST@136..167
        TARGET@136..167
          CALL_EXPR@136..167
            JSON_OBJECT_FN@136..167
              JSON_OBJECT_KW@136..147 "json_object"
              L_PAREN@147..148 "("
              JSON_KEY_VALUE@148..156
                LITERAL@148..151
                  STRING@148..151 "'k'"
                COLON@151..152 ":"
                WHITESPACE@152..153 " "
                JSON_VALUE_EXPR@153..156
                  LITERAL@153..156
                    STRING@153..156 "'v'"
              COMMA@156..157 ","
              WHITESPACE@157..158 " "
              JSON_KEY_VALUE@158..166
                LITERAL@158..161
                  STRING@158..161 "'a'"
                COLON@161..162 ":"
                WHITESPACE@162..163 " "
                JSON_VALUE_EXPR@163..166
                  LITERAL@163..166
                    STRING@163..166 "'b'"
              R_PAREN@166..167 ")"
    SEMICOLON@167..168 ";"
  WHITESPACE@168..169 "\n"
  SELECT@169..265
    SELECT_CLAUSE@169..264
      SELECT_KW@169..175 "select"
      WHITESPACE@175..176 " "
      TARGET_LIST@176..264
        TARGET@176..264
          CALL_EXPR@176..264
            JSON_OBJECT_FN@176..264
              JSON_OBJECT_KW@176..187 "json_object"
              L_PAREN@187..188 "("
              JSON_KEY_VALUE@188..201
                LITERAL@188..191
                  STRING@188..191 "'k'"
                WHITESPACE@191..192 " "
                VALUE_KW@192..197 "value"
                WHITESPACE@197..198 " "
                JSON_VALUE_EXPR@198..201
                  LITERAL@198..201
                    STRING@198..201 "'v'"
              COMMA@201..202 ","
              WHITESPACE@202..203 " "
              JSON_KEY_VALUE@203..216
                LITERAL@203..206
                  STRING@203..206 "'a'"
                WHITESPACE@206..207 " "
                VALUE_KW@207..212 "value"
                WHITESPACE@212..213 " "
                JSON_VALUE_EXPR@213..216
                  LITERAL@213..216
                    STRING@213..216 "'b'"
              WHITESPACE@216..217 " "
              JSON_ABSENT_ON_NULL@217..231
                ABSENT_KW@217..223 "absent"
                WHITESPACE@223..224 " "
                ON_KW@224..226 "on"
                WHITESPACE@226..227 " "
                NULL_KW@227..231 "null"
              WHITESPACE@231..232 " "
              JSON_WITH_UNIQUE_KEYS@232..248
                WITH_KW@232..236 "with"
                WHITESPACE@236..237 " "
                UNIQUE_KW@237..243 "unique"
                WHITESPACE@243..244 " "
                KEYS_KW@244..248 "keys"
              WHITESPACE@248..249 " "
              JSON_RETURNING_CLAUSE@249..263
                RETURNING_KW@249..258 "returning"
                WHITESPACE@258..259 " "
                PATH_TYPE@259..263
                  PATH_REF@259..263
                    PATH_SEGMENT_REF@259..263
                      TEXT_KW@259..263 "text"
              R_PAREN@263..264 ")"
    SEMICOLON@264..265 ";"
  WHITESPACE@265..266 "\n"