squawk-syntax 2.61.0

Linter for Postgres migrations & SQL
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
---
source: crates/squawk_syntax/src/test.rs
input_file: crates/squawk_syntax/test_data/validation/default_ok.sql
---
SOURCE_FILE@0..492
  UPDATE@0..27
    UPDATE_KW@0..6 "UPDATE"
    WHITESPACE@6..7 " "
    RELATION_NAME@7..8
      RELATION_NAME_REF@7..8
        PATH_REF@7..8
          PATH_SEGMENT_REF@7..8
            NAME_REF@7..8
              IDENT@7..8 "t"
    WHITESPACE@8..9 " "
    SET_CLAUSE@9..26
      SET_KW@9..12 "SET"
      WHITESPACE@12..13 " "
      SET_COLUMN_LIST@13..26
        SET_SINGLE_COLUMN@13..26
          COLUMN_REF@13..16
            NAME_REF@13..16
              IDENT@13..16 "col"
          WHITESPACE@16..17 " "
          EQ@17..18 "="
          WHITESPACE@18..19 " "
          SET_EXPR@19..26
            DEFAULT_KW@19..26 "DEFAULT"
    SEMICOLON@26..27 ";"
  WHITESPACE@27..29 "\n\n"
  UPDATE@29..63
    UPDATE_KW@29..35 "UPDATE"
    WHITESPACE@35..36 " "
    RELATION_NAME@36..37
      RELATION_NAME_REF@36..37
        PATH_REF@36..37
          PATH_SEGMENT_REF@36..37
            NAME_REF@36..37
              IDENT@36..37 "t"
    WHITESPACE@37..38 " "
    SET_CLAUSE@38..62
      SET_KW@38..41 "SET"
      WHITESPACE@41..42 " "
      SET_COLUMN_LIST@42..62
        SET_MULTIPLE_COLUMNS@42..62
          COLUMN_REF_LIST@42..47
            L_PAREN@42..43 "("
            COLUMN_REF@43..44
              NAME_REF@43..44
                IDENT@43..44 "a"
            COMMA@44..45 ","
            COLUMN_REF@45..46
              NAME_REF@45..46
                IDENT@45..46 "b"
            R_PAREN@46..47 ")"
          WHITESPACE@47..48 " "
          EQ@48..49 "="
          WHITESPACE@49..50 " "
          SET_EXPR_LIST@50..62
            L_PAREN@50..51 "("
            SET_EXPR@51..58
              DEFAULT_KW@51..58 "DEFAULT"
            COMMA@58..59 ","
            WHITESPACE@59..60 " "
            SET_EXPR@60..61
              LITERAL@60..61
                INT_NUMBER@60..61 "1"
            R_PAREN@61..62 ")"
    SEMICOLON@62..63 ";"
  WHITESPACE@63..65 "\n\n"
  INSERT@65..96
    INSERT_KW@65..71 "INSERT"
    WHITESPACE@71..72 " "
    INTO_KW@72..76 "into"
    WHITESPACE@76..77 " "
    RELATION_NAME_REF@77..78
      PATH_REF@77..78
        PATH_SEGMENT_REF@77..78
          NAME_REF@77..78
            IDENT@77..78 "t"
    WHITESPACE@78..79 " "
    VALUES@79..95
      VALUES_KW@79..85 "VALUES"
      WHITESPACE@85..86 " "
      ROW_LIST@86..95
        ROW@86..95
          L_PAREN@86..87 "("
          LITERAL@87..94
            DEFAULT_KW@87..94 "DEFAULT"
          R_PAREN@94..95 ")"
    SEMICOLON@95..96 ";"
  WHITESPACE@96..98 "\n\n"
  MERGE@98..240
    MERGE_KW@98..103 "MERGE"
    WHITESPACE@103..104 " "
    INTO_KW@104..108 "INTO"
    WHITESPACE@108..109 " "
    TABLE_RELATION_NAME@109..115
      TABLE_NAME_REF@109..115
        PATH_REF@109..115
          PATH_SEGMENT_REF@109..115
            NAME_REF@109..115
              TARGET_KW@109..115 "target"
    WHITESPACE@115..116 " "
    OPTIONAL_AS_ALIAS@116..117
      TABLE_ALIAS@116..117
        IDENT@116..117 "t"
    WHITESPACE@117..120 "\n  "
    USING_ON_CLAUSE@120..154
      USING_KW@120..125 "USING"
      WHITESPACE@125..126 " "
      RELATION_FROM_ITEM@126..134
        RELATION_NAME_REF@126..132
          PATH_REF@126..132
            PATH_SEGMENT_REF@126..132
              NAME_REF@126..132
                SOURCE_KW@126..132 "source"
        WHITESPACE@132..133 " "
        FROM_ALIAS@133..134
          TABLE_ALIAS@133..134
            IDENT@133..134 "s"
      WHITESPACE@134..140 "\n     "
      ON_CLAUSE@140..154
        ON_KW@140..142 "ON"
        WHITESPACE@142..143 " "
        BIN_EXPR@143..154
          FIELD_EXPR@143..147
            NAME_REF@143..144
              IDENT@143..144 "t"
            DOT@144..145 "."
            NAME_REF@145..147
              IDENT@145..147 "id"
          WHITESPACE@147..148 " "
          EQ@148..149 "="
          WHITESPACE@149..150 " "
          FIELD_EXPR@150..154
            NAME_REF@150..151
              IDENT@150..151 "s"
            DOT@151..152 "."
            NAME_REF@152..154
              IDENT@152..154 "id"
    WHITESPACE@154..157 "\n  "
    MERGE_WHEN_NOT_MATCHED_TARGET@157..239
      WHEN_KW@157..161 "WHEN"
      WHITESPACE@161..162 " "
      NOT_KW@162..165 "NOT"
      WHITESPACE@165..166 " "
      MATCHED_KW@166..173 "MATCHED"
      WHITESPACE@173..174 " "
      THEN_KW@174..178 "THEN"
      WHITESPACE@178..185 "\n      "
      MERGE_INSERT@185..239
        INSERT_KW@185..191 "INSERT"
        WHITESPACE@191..192 " "
        COLUMN_REF_LIST@192..207
          L_PAREN@192..193 "("
          COLUMN_REF@193..195
            NAME_REF@193..195
              IDENT@193..195 "id"
          COMMA@195..196 ","
          WHITESPACE@196..197 " "
          COLUMN_REF@197..201
            NAME_REF@197..201
              NAME_KW@197..201 "name"
          COMMA@201..202 ","
          WHITESPACE@202..203 " "
          COLUMN_REF@203..206
            NAME_REF@203..206
              IDENT@203..206 "qty"
          R_PAREN@206..207 ")"
        WHITESPACE@207..208 " "
        VALUES@208..239
          VALUES_KW@208..214 "VALUES"
          WHITESPACE@214..215 " "
          ROW_LIST@215..239
            ROW@215..239
              L_PAREN@215..216 "("
              FIELD_EXPR@216..220
                NAME_REF@216..217
                  IDENT@216..217 "s"
                DOT@217..218 "."
                NAME_REF@218..220
                  IDENT@218..220 "id"
              COMMA@220..221 ","
              WHITESPACE@221..222 " "
              LITERAL@222..229
                DEFAULT_KW@222..229 "DEFAULT"
              COMMA@229..230 ","
              WHITESPACE@230..231 " "
              LITERAL@231..238
                DEFAULT_KW@231..238 "DEFAULT"
              R_PAREN@238..239 ")"
    SEMICOLON@239..240 ";"
  WHITESPACE@240..242 "\n\n"
  MERGE@242..351
    MERGE_KW@242..247 "MERGE"
    WHITESPACE@247..248 " "
    INTO_KW@248..252 "INTO"
    WHITESPACE@252..253 " "
    TABLE_RELATION_NAME@253..259
      TABLE_NAME_REF@253..259
        PATH_REF@253..259
          PATH_SEGMENT_REF@253..259
            NAME_REF@253..259
              TARGET_KW@253..259 "target"
    WHITESPACE@259..260 " "
    OPTIONAL_AS_ALIAS@260..261
      TABLE_ALIAS@260..261
        IDENT@260..261 "t"
    WHITESPACE@261..264 "\n  "
    USING_ON_CLAUSE@264..298
      USING_KW@264..269 "USING"
      WHITESPACE@269..270 " "
      RELATION_FROM_ITEM@270..278
        RELATION_NAME_REF@270..276
          PATH_REF@270..276
            PATH_SEGMENT_REF@270..276
              NAME_REF@270..276
                SOURCE_KW@270..276 "source"
        WHITESPACE@276..277 " "
        FROM_ALIAS@277..278
          TABLE_ALIAS@277..278
            IDENT@277..278 "s"
      WHITESPACE@278..284 "\n     "
      ON_CLAUSE@284..298
        ON_KW@284..286 "ON"
        WHITESPACE@286..287 " "
        BIN_EXPR@287..298
          FIELD_EXPR@287..291
            NAME_REF@287..288
              IDENT@287..288 "t"
            DOT@288..289 "."
            NAME_REF@289..291
              IDENT@289..291 "id"
          WHITESPACE@291..292 " "
          EQ@292..293 "="
          WHITESPACE@293..294 " "
          FIELD_EXPR@294..298
            NAME_REF@294..295
              IDENT@294..295 "s"
            DOT@295..296 "."
            NAME_REF@296..298
              IDENT@296..298 "id"
    WHITESPACE@298..301 "\n  "
    MERGE_WHEN_MATCHED@301..350
      WHEN_KW@301..305 "WHEN"
      WHITESPACE@305..306 " "
      MATCHED_KW@306..313 "MATCHED"
      WHITESPACE@313..314 " "
      THEN_KW@314..318 "THEN"
      WHITESPACE@318..325 "\n      "
      MERGE_UPDATE@325..350
        UPDATE_KW@325..331 "UPDATE"
        WHITESPACE@331..332 " "
        SET_CLAUSE@332..350
          SET_KW@332..335 "SET"
          WHITESPACE@335..336 " "
          SET_COLUMN_LIST@336..350
            SET_SINGLE_COLUMN@336..350
              COLUMN_REF@336..340
                NAME_REF@336..340
                  IDENT@336..340 "qty2"
              WHITESPACE@340..341 " "
              EQ@341..342 "="
              WHITESPACE@342..343 " "
              SET_EXPR@343..350
                DEFAULT_KW@343..350 "DEFAULT"
    SEMICOLON@350..351 ";"
  WHITESPACE@351..353 "\n\n"
  UPDATE@353..382
    UPDATE_KW@353..359 "UPDATE"
    WHITESPACE@359..360 " "
    RELATION_NAME@360..361
      RELATION_NAME_REF@360..361
        PATH_REF@360..361
          PATH_SEGMENT_REF@360..361
            NAME_REF@360..361
              IDENT@360..361 "t"
    WHITESPACE@361..362 " "
    SET_CLAUSE@362..381
      SET_KW@362..365 "SET"
      WHITESPACE@365..366 " "
      SET_COLUMN_LIST@366..381
        SET_SINGLE_COLUMN@366..381
          COLUMN_REF@366..369
            NAME_REF@366..369
              IDENT@366..369 "col"
          WHITESPACE@369..370 " "
          EQ@370..371 "="
          WHITESPACE@371..372 " "
          SET_EXPR@372..381
            PAREN_EXPR@372..381
              L_PAREN@372..373 "("
              LITERAL@373..380
                DEFAULT_KW@373..380 "DEFAULT"
              R_PAREN@380..381 ")"
    SEMICOLON@381..382 ";"
  WHITESPACE@382..384 "\n\n"
  UPDATE@384..417
    UPDATE_KW@384..390 "UPDATE"
    WHITESPACE@390..391 " "
    RELATION_NAME@391..392
      RELATION_NAME_REF@391..392
        PATH_REF@391..392
          PATH_SEGMENT_REF@391..392
            NAME_REF@391..392
              IDENT@391..392 "t"
    WHITESPACE@392..393 " "
    SET_CLAUSE@393..416
      SET_KW@393..396 "SET"
      WHITESPACE@396..397 " "
      SET_COLUMN_LIST@397..416
        SET_SINGLE_COLUMN@397..416
          COLUMN_REF@397..400
            NAME_REF@397..400
              IDENT@397..400 "col"
          WHITESPACE@400..401 " "
          EQ@401..402 "="
          WHITESPACE@402..403 " "
          SET_EXPR@403..416
            PAREN_EXPR@403..416
              L_PAREN@403..404 "("
              PAREN_EXPR@404..415
                L_PAREN@404..405 "("
                PAREN_EXPR@405..414
                  L_PAREN@405..406 "("
                  LITERAL@406..413
                    DEFAULT_KW@406..413 "DEFAULT"
                  R_PAREN@413..414 ")"
                R_PAREN@414..415 ")"
              R_PAREN@415..416 ")"
    SEMICOLON@416..417 ";"
  WHITESPACE@417..419 "\n\n"
  UPDATE@419..456
    UPDATE_KW@419..425 "UPDATE"
    WHITESPACE@425..426 " "
    RELATION_NAME@426..427
      RELATION_NAME_REF@426..427
        PATH_REF@426..427
          PATH_SEGMENT_REF@426..427
            NAME_REF@426..427
              IDENT@426..427 "t"
    WHITESPACE@427..428 " "
    SET_CLAUSE@428..455
      SET_KW@428..431 "SET"
      WHITESPACE@431..432 " "
      SET_COLUMN_LIST@432..455
        SET_MULTIPLE_COLUMNS@432..455
          COLUMN_REF_LIST@432..438
            L_PAREN@432..433 "("
            COLUMN_REF@433..434
              NAME_REF@433..434
                IDENT@433..434 "a"
            COMMA@434..435 ","
            WHITESPACE@435..436 " "
            COLUMN_REF@436..437
              NAME_REF@436..437
                IDENT@436..437 "b"
            R_PAREN@437..438 ")"
          WHITESPACE@438..439 " "
          EQ@439..440 "="
          WHITESPACE@440..441 " "
          SET_EXPR_LIST@441..455
            L_PAREN@441..442 "("
            SET_EXPR@442..451
              PAREN_EXPR@442..451
                L_PAREN@442..443 "("
                LITERAL@443..450
                  DEFAULT_KW@443..450 "DEFAULT"
                R_PAREN@450..451 ")"
            COMMA@451..452 ","
            WHITESPACE@452..453 " "
            SET_EXPR@453..454
              LITERAL@453..454
                INT_NUMBER@453..454 "1"
            R_PAREN@454..455 ")"
    SEMICOLON@455..456 ";"
  WHITESPACE@456..458 "\n\n"
  INSERT@458..491
    INSERT_KW@458..464 "INSERT"
    WHITESPACE@464..465 " "
    INTO_KW@465..469 "INTO"
    WHITESPACE@469..470 " "
    RELATION_NAME_REF@470..471
      PATH_REF@470..471
        PATH_SEGMENT_REF@470..471
          NAME_REF@470..471
            IDENT@470..471 "t"
    WHITESPACE@471..472 " "
    VALUES@472..490
      VALUES_KW@472..478 "VALUES"
      WHITESPACE@478..479 " "
      ROW_LIST@479..490
        ROW@479..490
          L_PAREN@479..480 "("
          PAREN_EXPR@480..489
            L_PAREN@480..481 "("
            LITERAL@481..488
              DEFAULT_KW@481..488 "DEFAULT"
            R_PAREN@488..489 ")"
          R_PAREN@489..490 ")"
    SEMICOLON@490..491 ";"
  WHITESPACE@491..492 "\n"