@plurnk/plurnk-mimetypes-text-sqlite 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +15 -0
- package/dist/TextSqlite.d.ts +7 -0
- package/dist/TextSqlite.d.ts.map +1 -0
- package/dist/TextSqlite.js +118 -0
- package/dist/TextSqlite.js.map +1 -0
- package/dist/generated/SQLiteLexer.d.ts +211 -0
- package/dist/generated/SQLiteLexer.d.ts.map +1 -0
- package/dist/generated/SQLiteLexer.js +946 -0
- package/dist/generated/SQLiteLexer.js.map +1 -0
- package/dist/generated/SQLiteParser.d.ts +1985 -0
- package/dist/generated/SQLiteParser.d.ts.map +1 -0
- package/dist/generated/SQLiteParser.js +15208 -0
- package/dist/generated/SQLiteParser.js.map +1 -0
- package/dist/generated/SQLiteParserVisitor.d.ts +809 -0
- package/dist/generated/SQLiteParserVisitor.d.ts.map +1 -0
- package/dist/generated/SQLiteParserVisitor.js +695 -0
- package/dist/generated/SQLiteParserVisitor.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/grammar/SQLiteLexer.g4 +245 -0
- package/grammar/SQLiteParser.g4 +935 -0
- package/package.json +56 -0
|
@@ -0,0 +1,935 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The MIT License (MIT)
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2014 by Bart Kiers
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
|
7
|
+
* associated documentation files (the "Software"), to deal in the Software without restriction,
|
|
8
|
+
* including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
|
9
|
+
* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
* furnished to do so, subject to the following conditions:
|
|
11
|
+
*
|
|
12
|
+
* The above copyright notice and this permission notice shall be included in all copies or
|
|
13
|
+
* substantial portions of the Software.
|
|
14
|
+
*
|
|
15
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
|
|
16
|
+
* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
18
|
+
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
20
|
+
*
|
|
21
|
+
* Project : sqlite-parser; an ANTLR4 grammar for SQLite https://github.com/bkiers/sqlite-parser
|
|
22
|
+
* Developed by:
|
|
23
|
+
* Bart Kiers, bart@big-o.nl
|
|
24
|
+
* Martin Mirchev, marti_2203@abv.bg
|
|
25
|
+
* Mike Lische, mike@lischke-online.de
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
// $antlr-format alignTrailingComments on, columnLimit 130, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments off
|
|
29
|
+
// $antlr-format useTab off, allowShortRulesOnASingleLine off, allowShortBlocksOnASingleLine on, alignSemicolons ownLine
|
|
30
|
+
// $antlr-format alignColons hanging
|
|
31
|
+
|
|
32
|
+
parser grammar SQLiteParser;
|
|
33
|
+
|
|
34
|
+
options {
|
|
35
|
+
tokenVocab = SQLiteLexer;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
parse
|
|
39
|
+
: sql_stmt_list EOF
|
|
40
|
+
;
|
|
41
|
+
|
|
42
|
+
sql_stmt_list
|
|
43
|
+
: sql_stmt? (SCOL sql_stmt?)*
|
|
44
|
+
;
|
|
45
|
+
|
|
46
|
+
sql_stmt
|
|
47
|
+
: (EXPLAIN_ (QUERY_ PLAN_)?)? (
|
|
48
|
+
alter_table_stmt
|
|
49
|
+
| analyze_stmt
|
|
50
|
+
| attach_stmt
|
|
51
|
+
| begin_stmt
|
|
52
|
+
| commit_stmt
|
|
53
|
+
| create_index_stmt
|
|
54
|
+
| create_table_stmt
|
|
55
|
+
| create_trigger_stmt
|
|
56
|
+
| create_view_stmt
|
|
57
|
+
| create_virtual_table_stmt
|
|
58
|
+
| delete_stmt
|
|
59
|
+
| detach_stmt
|
|
60
|
+
| drop_stmt
|
|
61
|
+
| insert_stmt
|
|
62
|
+
| pragma_stmt
|
|
63
|
+
| reindex_stmt
|
|
64
|
+
| release_stmt
|
|
65
|
+
| rollback_stmt
|
|
66
|
+
| savepoint_stmt
|
|
67
|
+
| select_stmt
|
|
68
|
+
| update_stmt
|
|
69
|
+
| vacuum_stmt
|
|
70
|
+
)
|
|
71
|
+
;
|
|
72
|
+
|
|
73
|
+
alter_table_stmt
|
|
74
|
+
: ALTER_ TABLE_ (schema_name DOT)? table_name (
|
|
75
|
+
RENAME_ (
|
|
76
|
+
TO_ new_table_name = table_name
|
|
77
|
+
| COLUMN_? old_column_name = column_name TO_ new_column_name = column_name
|
|
78
|
+
)
|
|
79
|
+
| ADD_ COLUMN_? column_def
|
|
80
|
+
| DROP_ COLUMN_? column_name
|
|
81
|
+
)
|
|
82
|
+
;
|
|
83
|
+
|
|
84
|
+
analyze_stmt
|
|
85
|
+
: ANALYZE_ (schema_name | (schema_name DOT)? table_or_index_name)?
|
|
86
|
+
;
|
|
87
|
+
|
|
88
|
+
attach_stmt
|
|
89
|
+
: ATTACH_ DATABASE_? expr AS_ schema_name
|
|
90
|
+
;
|
|
91
|
+
|
|
92
|
+
begin_stmt
|
|
93
|
+
: BEGIN_ (DEFERRED_ | IMMEDIATE_ | EXCLUSIVE_)? TRANSACTION_?
|
|
94
|
+
;
|
|
95
|
+
|
|
96
|
+
commit_stmt
|
|
97
|
+
: (COMMIT_ | END_) TRANSACTION_?
|
|
98
|
+
;
|
|
99
|
+
|
|
100
|
+
rollback_stmt
|
|
101
|
+
: ROLLBACK_ TRANSACTION_? (TO_ SAVEPOINT_? savepoint_name)?
|
|
102
|
+
;
|
|
103
|
+
|
|
104
|
+
savepoint_stmt
|
|
105
|
+
: SAVEPOINT_ savepoint_name
|
|
106
|
+
;
|
|
107
|
+
|
|
108
|
+
release_stmt
|
|
109
|
+
: RELEASE_ SAVEPOINT_? savepoint_name
|
|
110
|
+
;
|
|
111
|
+
|
|
112
|
+
create_index_stmt
|
|
113
|
+
: CREATE_ UNIQUE_? INDEX_ (IF_ NOT_ EXISTS_)? (schema_name DOT)? index_name ON_ table_name OPEN_PAR indexed_column (
|
|
114
|
+
COMMA indexed_column
|
|
115
|
+
)* CLOSE_PAR (WHERE_ expr)?
|
|
116
|
+
;
|
|
117
|
+
|
|
118
|
+
// Differs from syntax diagram because column_name is already a subset of expr
|
|
119
|
+
indexed_column
|
|
120
|
+
: expr (COLLATE_ collation_name)? asc_desc?
|
|
121
|
+
;
|
|
122
|
+
|
|
123
|
+
create_table_stmt
|
|
124
|
+
: CREATE_ (TEMP_ | TEMPORARY_)? TABLE_ (IF_ NOT_ EXISTS_)? (schema_name DOT)? table_name (
|
|
125
|
+
OPEN_PAR column_def (COMMA column_def)*? (COMMA table_constraint)* CLOSE_PAR table_options?
|
|
126
|
+
| AS_ select_stmt
|
|
127
|
+
)
|
|
128
|
+
;
|
|
129
|
+
|
|
130
|
+
table_options
|
|
131
|
+
: (WITHOUT_ ROWID_ | STRICT_) (COMMA (WITHOUT_ ROWID_ | STRICT_))*
|
|
132
|
+
;
|
|
133
|
+
|
|
134
|
+
column_def
|
|
135
|
+
: column_name type_name? column_constraint*
|
|
136
|
+
;
|
|
137
|
+
|
|
138
|
+
type_name
|
|
139
|
+
: name+? (
|
|
140
|
+
OPEN_PAR signed_number CLOSE_PAR
|
|
141
|
+
| OPEN_PAR signed_number COMMA signed_number CLOSE_PAR
|
|
142
|
+
)?
|
|
143
|
+
;
|
|
144
|
+
|
|
145
|
+
column_constraint
|
|
146
|
+
: (CONSTRAINT_ name)? (
|
|
147
|
+
PRIMARY_ KEY_ asc_desc? conflict_clause? AUTOINCREMENT_?
|
|
148
|
+
| (NOT_? NULL_ | UNIQUE_) conflict_clause?
|
|
149
|
+
| CHECK_ OPEN_PAR expr CLOSE_PAR
|
|
150
|
+
| DEFAULT_ (signed_number | literal_value | OPEN_PAR expr CLOSE_PAR)
|
|
151
|
+
| COLLATE_ collation_name
|
|
152
|
+
| foreign_key_clause
|
|
153
|
+
| (GENERATED_ ALWAYS_)? AS_ OPEN_PAR expr CLOSE_PAR (STORED_ | VIRTUAL_)?
|
|
154
|
+
)
|
|
155
|
+
;
|
|
156
|
+
|
|
157
|
+
signed_number
|
|
158
|
+
: (PLUS | MINUS)? NUMERIC_LITERAL
|
|
159
|
+
;
|
|
160
|
+
|
|
161
|
+
table_constraint
|
|
162
|
+
: (CONSTRAINT_ name)? (
|
|
163
|
+
(PRIMARY_ KEY_ | UNIQUE_) OPEN_PAR indexed_column (COMMA indexed_column)* CLOSE_PAR conflict_clause?
|
|
164
|
+
| CHECK_ OPEN_PAR expr CLOSE_PAR
|
|
165
|
+
| FOREIGN_ KEY_ OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR foreign_key_clause
|
|
166
|
+
)
|
|
167
|
+
;
|
|
168
|
+
|
|
169
|
+
foreign_key_clause
|
|
170
|
+
: REFERENCES_ foreign_table (OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR)? (
|
|
171
|
+
ON_ (DELETE_ | UPDATE_) (
|
|
172
|
+
SET_ (NULL_ | DEFAULT_)
|
|
173
|
+
| CASCADE_
|
|
174
|
+
| RESTRICT_
|
|
175
|
+
| NO_ ACTION_
|
|
176
|
+
)
|
|
177
|
+
| MATCH_ name
|
|
178
|
+
)* (NOT_? DEFERRABLE_ (INITIALLY_ (DEFERRED_ | IMMEDIATE_))?)?
|
|
179
|
+
;
|
|
180
|
+
|
|
181
|
+
conflict_clause
|
|
182
|
+
: ON_ CONFLICT_ (ROLLBACK_ | ABORT_ | FAIL_ | IGNORE_ | REPLACE_)
|
|
183
|
+
;
|
|
184
|
+
|
|
185
|
+
create_trigger_stmt
|
|
186
|
+
: CREATE_ (TEMP_ | TEMPORARY_)? TRIGGER_ (IF_ NOT_ EXISTS_)? (schema_name DOT)? trigger_name (
|
|
187
|
+
BEFORE_
|
|
188
|
+
| AFTER_
|
|
189
|
+
| INSTEAD_ OF_
|
|
190
|
+
)? (DELETE_ | INSERT_ | UPDATE_ (OF_ column_name (COMMA column_name)*)?) ON_ table_name (
|
|
191
|
+
FOR_ EACH_ ROW_
|
|
192
|
+
)? (WHEN_ expr)? BEGIN_ (
|
|
193
|
+
(update_stmt | insert_stmt | delete_stmt | select_stmt) SCOL
|
|
194
|
+
)+ END_
|
|
195
|
+
;
|
|
196
|
+
|
|
197
|
+
create_view_stmt
|
|
198
|
+
: CREATE_ (TEMP_ | TEMPORARY_)? VIEW_ (IF_ NOT_ EXISTS_)? (schema_name DOT)? view_name (
|
|
199
|
+
OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR
|
|
200
|
+
)? AS_ select_stmt
|
|
201
|
+
;
|
|
202
|
+
|
|
203
|
+
create_virtual_table_stmt
|
|
204
|
+
: CREATE_ VIRTUAL_ TABLE_ (IF_ NOT_ EXISTS_)? (schema_name DOT)? table_name USING_ module_name (
|
|
205
|
+
OPEN_PAR module_argument (COMMA module_argument)* CLOSE_PAR
|
|
206
|
+
)?
|
|
207
|
+
;
|
|
208
|
+
|
|
209
|
+
with_clause
|
|
210
|
+
: WITH_ RECURSIVE_? common_table_expression (COMMA common_table_expression)*
|
|
211
|
+
;
|
|
212
|
+
|
|
213
|
+
common_table_expression
|
|
214
|
+
: cte_table_name AS_ (NOT_? MATERIALIZED_)? OPEN_PAR select_stmt CLOSE_PAR
|
|
215
|
+
;
|
|
216
|
+
|
|
217
|
+
cte_table_name
|
|
218
|
+
: table_name (OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR)?
|
|
219
|
+
;
|
|
220
|
+
|
|
221
|
+
// Merged with delete_stmt_limited, which is an optional extension of delete_stmt
|
|
222
|
+
delete_stmt
|
|
223
|
+
: with_clause? DELETE_ FROM_ qualified_table_name (WHERE_ expr)? returning_clause? order_clause? limit_clause?
|
|
224
|
+
;
|
|
225
|
+
|
|
226
|
+
detach_stmt
|
|
227
|
+
: DETACH_ DATABASE_? schema_name
|
|
228
|
+
;
|
|
229
|
+
|
|
230
|
+
drop_stmt
|
|
231
|
+
: DROP_ object = (INDEX_ | TABLE_ | TRIGGER_ | VIEW_) (IF_ EXISTS_)? (
|
|
232
|
+
schema_name DOT
|
|
233
|
+
)? any_name
|
|
234
|
+
;
|
|
235
|
+
|
|
236
|
+
// expr has been split into multiple levels to ensure precedence
|
|
237
|
+
/*
|
|
238
|
+
expr
|
|
239
|
+
: literal_value
|
|
240
|
+
| BIND_PARAMETER
|
|
241
|
+
| (schema_name DOT)? table_name DOT column_name
|
|
242
|
+
| column_name_excluding_string
|
|
243
|
+
| (MINUS | PLUS | TILDE) expr
|
|
244
|
+
| expr COLLATE_ collation_name
|
|
245
|
+
| expr (PIPE2 | JPTR | JPTR2) expr
|
|
246
|
+
| expr (STAR | DIV | MOD) expr
|
|
247
|
+
| expr (PLUS | MINUS) expr
|
|
248
|
+
| expr (LT2 | GT2 | AMP | PIPE) expr
|
|
249
|
+
| expr (LT | LT_EQ | GT | GT_EQ) expr
|
|
250
|
+
| expr (ASSIGN | EQ | NOT_EQ1 | NOT_EQ2) expr
|
|
251
|
+
| expr IS_ NOT_? (DISTINCT_ FROM_)? expr
|
|
252
|
+
| expr NOT_? BETWEEN_ expr AND_ expr
|
|
253
|
+
| expr NOT_? IN_ (
|
|
254
|
+
OPEN_PAR (select_stmt | expr (COMMA expr)*)? CLOSE_PAR
|
|
255
|
+
| (schema_name DOT)? table_name
|
|
256
|
+
| (schema_name DOT)? table_function_name OPEN_PAR (expr (COMMA expr)*)? CLOSE_PAR
|
|
257
|
+
)
|
|
258
|
+
| expr NOT_? (LIKE_ expr (ESCAPE_ expr)? | (GLOB_ | REGEXP_ | MATCH_) expr)
|
|
259
|
+
| expr (ISNULL_ | NOTNULL_ | NOT_ NULL_)
|
|
260
|
+
| NOT_ expr
|
|
261
|
+
| expr AND_ expr
|
|
262
|
+
| expr OR_ expr
|
|
263
|
+
| function_name OPEN_PAR (DISTINCT_? expr (COMMA expr)* order_clause? | STAR)? CLOSE_PAR percentile_clause? filter_clause? over_clause?
|
|
264
|
+
| OPEN_PAR expr (COMMA expr)* CLOSE_PAR
|
|
265
|
+
| CAST_ OPEN_PAR expr AS_ type_name CLOSE_PAR
|
|
266
|
+
| (NOT_? EXISTS_)? OPEN_PAR select_stmt CLOSE_PAR
|
|
267
|
+
| CASE_ expr? (WHEN_ expr THEN_ expr)+ (ELSE_ expr)? END_
|
|
268
|
+
| raise_function
|
|
269
|
+
;
|
|
270
|
+
*/
|
|
271
|
+
|
|
272
|
+
expr
|
|
273
|
+
: expr_or
|
|
274
|
+
;
|
|
275
|
+
|
|
276
|
+
expr_or
|
|
277
|
+
: expr_and (OR_ expr_and)*
|
|
278
|
+
;
|
|
279
|
+
|
|
280
|
+
expr_and
|
|
281
|
+
: expr_not (AND_ expr_not)*
|
|
282
|
+
;
|
|
283
|
+
|
|
284
|
+
expr_not
|
|
285
|
+
: NOT_* expr_binary
|
|
286
|
+
;
|
|
287
|
+
|
|
288
|
+
expr_binary
|
|
289
|
+
: expr_comparison (
|
|
290
|
+
(ASSIGN | EQ | NOT_EQ1 | NOT_EQ2) expr_comparison
|
|
291
|
+
| IS_ NOT_? (DISTINCT_ FROM_)? expr_comparison
|
|
292
|
+
| NOT_? BETWEEN_ expr_comparison AND_ expr_comparison
|
|
293
|
+
| NOT_? IN_ (
|
|
294
|
+
OPEN_PAR (select_stmt | expr_comparison (COMMA expr_comparison)*)? CLOSE_PAR
|
|
295
|
+
| (schema_name DOT)? table_name
|
|
296
|
+
| (schema_name DOT)? table_function_name OPEN_PAR (
|
|
297
|
+
expr_comparison (COMMA expr_comparison)*
|
|
298
|
+
)? CLOSE_PAR
|
|
299
|
+
)
|
|
300
|
+
| NOT_? (
|
|
301
|
+
LIKE_ expr_comparison (ESCAPE_ expr_comparison)?
|
|
302
|
+
| (GLOB_ | REGEXP_ | MATCH_) expr_comparison
|
|
303
|
+
)
|
|
304
|
+
| ISNULL_
|
|
305
|
+
| NOTNULL_
|
|
306
|
+
| NOT_ NULL_
|
|
307
|
+
)*
|
|
308
|
+
;
|
|
309
|
+
|
|
310
|
+
expr_comparison
|
|
311
|
+
: expr_bitwise ((LT | LT_EQ | GT | GT_EQ) expr_bitwise)*
|
|
312
|
+
;
|
|
313
|
+
|
|
314
|
+
expr_bitwise
|
|
315
|
+
: expr_addition ((LT2 | GT2 | AMP | PIPE) expr_addition)*
|
|
316
|
+
;
|
|
317
|
+
|
|
318
|
+
expr_addition
|
|
319
|
+
: expr_multiplication ((PLUS | MINUS) expr_multiplication)*
|
|
320
|
+
;
|
|
321
|
+
|
|
322
|
+
expr_multiplication
|
|
323
|
+
: expr_string ((STAR | DIV | MOD) expr_string)*
|
|
324
|
+
;
|
|
325
|
+
|
|
326
|
+
expr_string
|
|
327
|
+
: expr_collate ((PIPE2 | JPTR | JPTR2) expr_collate)*
|
|
328
|
+
;
|
|
329
|
+
|
|
330
|
+
expr_collate
|
|
331
|
+
: expr_unary (COLLATE_ collation_name)*
|
|
332
|
+
;
|
|
333
|
+
|
|
334
|
+
expr_unary
|
|
335
|
+
: (MINUS | PLUS | TILDE)* expr_base
|
|
336
|
+
;
|
|
337
|
+
|
|
338
|
+
expr_base
|
|
339
|
+
: literal_value
|
|
340
|
+
| BIND_PARAMETER
|
|
341
|
+
| (schema_name DOT)? table_name DOT column_name
|
|
342
|
+
| column_name_excluding_string
|
|
343
|
+
| (NOT_? EXISTS_)? OPEN_PAR select_stmt CLOSE_PAR
|
|
344
|
+
| raise_function
|
|
345
|
+
| expr_recursive
|
|
346
|
+
;
|
|
347
|
+
|
|
348
|
+
expr_recursive
|
|
349
|
+
: function_name OPEN_PAR (DISTINCT_? expr (COMMA expr)* order_clause? | STAR)? CLOSE_PAR percentile_clause? filter_clause?
|
|
350
|
+
over_clause?
|
|
351
|
+
| OPEN_PAR expr (COMMA expr)* CLOSE_PAR
|
|
352
|
+
| CAST_ OPEN_PAR expr AS_ type_name CLOSE_PAR
|
|
353
|
+
| CASE_ expr? (WHEN_ expr THEN_ expr)+ (ELSE_ expr)? END_
|
|
354
|
+
;
|
|
355
|
+
|
|
356
|
+
raise_function
|
|
357
|
+
: RAISE_ OPEN_PAR (IGNORE_ | (ROLLBACK_ | ABORT_ | FAIL_) COMMA error_message) CLOSE_PAR
|
|
358
|
+
;
|
|
359
|
+
|
|
360
|
+
literal_value
|
|
361
|
+
: NUMERIC_LITERAL
|
|
362
|
+
| STRING_LITERAL
|
|
363
|
+
| BLOB_LITERAL
|
|
364
|
+
| NULL_
|
|
365
|
+
| TRUE_
|
|
366
|
+
| FALSE_
|
|
367
|
+
| CURRENT_TIME_
|
|
368
|
+
| CURRENT_DATE_
|
|
369
|
+
| CURRENT_TIMESTAMP_
|
|
370
|
+
;
|
|
371
|
+
|
|
372
|
+
percentile_clause
|
|
373
|
+
: WITHIN_ GROUP_ OPEN_PAR ORDER_ BY_ expr CLOSE_PAR
|
|
374
|
+
;
|
|
375
|
+
|
|
376
|
+
value_row
|
|
377
|
+
: OPEN_PAR expr (COMMA expr)* CLOSE_PAR
|
|
378
|
+
;
|
|
379
|
+
|
|
380
|
+
values_clause
|
|
381
|
+
: VALUES_ value_row (COMMA value_row)*
|
|
382
|
+
;
|
|
383
|
+
|
|
384
|
+
// Differs from syntax diagram because values_clause is already a subset of select_stmt
|
|
385
|
+
insert_stmt
|
|
386
|
+
: with_clause? (
|
|
387
|
+
INSERT_
|
|
388
|
+
| REPLACE_
|
|
389
|
+
| INSERT_ OR_ (REPLACE_ | ROLLBACK_ | ABORT_ | FAIL_ | IGNORE_)
|
|
390
|
+
) INTO_ (schema_name DOT)? table_name (AS_ table_alias)? (
|
|
391
|
+
OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR
|
|
392
|
+
)? (select_stmt upsert_clause* | DEFAULT_ VALUES_) returning_clause?
|
|
393
|
+
;
|
|
394
|
+
|
|
395
|
+
returning_clause
|
|
396
|
+
: RETURNING_ (STAR | expr (AS_? column_alias)?) (
|
|
397
|
+
COMMA (STAR | expr (AS_? column_alias)?)
|
|
398
|
+
)*
|
|
399
|
+
;
|
|
400
|
+
|
|
401
|
+
upsert_clause
|
|
402
|
+
: ON_ CONFLICT_ (
|
|
403
|
+
OPEN_PAR indexed_column (COMMA indexed_column)* CLOSE_PAR (WHERE_ expr)?
|
|
404
|
+
)? DO_ (
|
|
405
|
+
NOTHING_
|
|
406
|
+
| UPDATE_ SET_ (column_name | column_name_list) ASSIGN expr (
|
|
407
|
+
COMMA (column_name | column_name_list) ASSIGN expr
|
|
408
|
+
)* (WHERE_ expr)?
|
|
409
|
+
)
|
|
410
|
+
;
|
|
411
|
+
|
|
412
|
+
pragma_stmt
|
|
413
|
+
: PRAGMA_ (schema_name DOT)? pragma_name (
|
|
414
|
+
ASSIGN pragma_value
|
|
415
|
+
| OPEN_PAR pragma_value CLOSE_PAR
|
|
416
|
+
)?
|
|
417
|
+
;
|
|
418
|
+
|
|
419
|
+
pragma_value
|
|
420
|
+
: signed_number
|
|
421
|
+
| name
|
|
422
|
+
| STRING_LITERAL
|
|
423
|
+
;
|
|
424
|
+
|
|
425
|
+
reindex_stmt
|
|
426
|
+
: REINDEX_ (collation_name | (schema_name DOT)? (table_name | index_name))?
|
|
427
|
+
;
|
|
428
|
+
|
|
429
|
+
select_stmt
|
|
430
|
+
: with_clause? select_core (compound_operator select_core)* order_clause? limit_clause?
|
|
431
|
+
;
|
|
432
|
+
|
|
433
|
+
join_clause
|
|
434
|
+
: table_or_subquery (join_operator table_or_subquery join_constraint?)*
|
|
435
|
+
;
|
|
436
|
+
|
|
437
|
+
// Differs from syntax diagram because comma-separated table_or_subquery is already a subset of join_clause
|
|
438
|
+
select_core
|
|
439
|
+
: SELECT_ (DISTINCT_ | ALL_)? result_column (COMMA result_column)* (
|
|
440
|
+
FROM_ join_clause
|
|
441
|
+
)? (WHERE_ where_expr = expr)? (
|
|
442
|
+
GROUP_ BY_ group_by_expr += expr (COMMA group_by_expr += expr)* (
|
|
443
|
+
HAVING_ having_expr = expr
|
|
444
|
+
)?
|
|
445
|
+
)? (WINDOW_ window_name AS_ window_defn (COMMA window_name AS_ window_defn)*)?
|
|
446
|
+
| values_clause
|
|
447
|
+
;
|
|
448
|
+
|
|
449
|
+
// Differs from syntax diagram because comma-separated table_or_subquery is already a subset of join_clause
|
|
450
|
+
table_or_subquery
|
|
451
|
+
: (schema_name DOT)? table_name (AS_ table_alias | table_alias_excluding_joins)? (
|
|
452
|
+
INDEXED_ BY_ index_name
|
|
453
|
+
| NOT_ INDEXED_
|
|
454
|
+
)?
|
|
455
|
+
| (schema_name DOT)? table_function_name OPEN_PAR expr (COMMA expr)* CLOSE_PAR (
|
|
456
|
+
AS_? table_alias
|
|
457
|
+
)?
|
|
458
|
+
| OPEN_PAR join_clause CLOSE_PAR
|
|
459
|
+
| OPEN_PAR select_stmt CLOSE_PAR (AS_? table_alias)?
|
|
460
|
+
;
|
|
461
|
+
|
|
462
|
+
result_column
|
|
463
|
+
: STAR
|
|
464
|
+
| table_name DOT STAR
|
|
465
|
+
| expr (AS_? column_alias)?
|
|
466
|
+
;
|
|
467
|
+
|
|
468
|
+
join_operator
|
|
469
|
+
: COMMA
|
|
470
|
+
| NATURAL_? ((LEFT_ | RIGHT_ | FULL_) OUTER_? | INNER_ | CROSS_)? JOIN_
|
|
471
|
+
;
|
|
472
|
+
|
|
473
|
+
join_constraint
|
|
474
|
+
: ON_ expr
|
|
475
|
+
| USING_ OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR
|
|
476
|
+
;
|
|
477
|
+
|
|
478
|
+
compound_operator
|
|
479
|
+
: UNION_ ALL_?
|
|
480
|
+
| INTERSECT_
|
|
481
|
+
| EXCEPT_
|
|
482
|
+
;
|
|
483
|
+
|
|
484
|
+
// Differs from syntax diagram because comma-separated table_or_subquery is already a subset of join_clause
|
|
485
|
+
// Merged with update_stmt_limited, which is an optional extension of update_stmt
|
|
486
|
+
update_stmt
|
|
487
|
+
: with_clause? UPDATE_ (OR_ (ROLLBACK_ | ABORT_ | REPLACE_ | FAIL_ | IGNORE_))? qualified_table_name SET_ (
|
|
488
|
+
column_name
|
|
489
|
+
| column_name_list
|
|
490
|
+
) ASSIGN expr (COMMA (column_name | column_name_list) ASSIGN expr)* (
|
|
491
|
+
FROM_ join_clause
|
|
492
|
+
)? (WHERE_ expr)? returning_clause? order_clause? limit_clause?
|
|
493
|
+
;
|
|
494
|
+
|
|
495
|
+
column_name_list
|
|
496
|
+
: OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR
|
|
497
|
+
;
|
|
498
|
+
|
|
499
|
+
qualified_table_name
|
|
500
|
+
: (schema_name DOT)? table_name (AS_ alias)? (
|
|
501
|
+
INDEXED_ BY_ index_name
|
|
502
|
+
| NOT_ INDEXED_
|
|
503
|
+
)?
|
|
504
|
+
;
|
|
505
|
+
|
|
506
|
+
vacuum_stmt
|
|
507
|
+
: VACUUM_ schema_name? (INTO_ filename)?
|
|
508
|
+
;
|
|
509
|
+
|
|
510
|
+
filter_clause
|
|
511
|
+
: FILTER_ OPEN_PAR WHERE_ expr CLOSE_PAR
|
|
512
|
+
;
|
|
513
|
+
|
|
514
|
+
window_defn
|
|
515
|
+
: OPEN_PAR base_window_name? (PARTITION_ BY_ expr (COMMA expr)*)? order_clause? frame_spec? CLOSE_PAR
|
|
516
|
+
;
|
|
517
|
+
|
|
518
|
+
over_clause
|
|
519
|
+
: OVER_ (
|
|
520
|
+
window_name
|
|
521
|
+
| OPEN_PAR base_window_name? (PARTITION_ BY_ expr (COMMA expr)*)? order_clause? frame_spec? CLOSE_PAR
|
|
522
|
+
)
|
|
523
|
+
;
|
|
524
|
+
|
|
525
|
+
frame_spec
|
|
526
|
+
: frame_clause (EXCLUDE_ (NO_ OTHERS_ | CURRENT_ ROW_ | GROUP_ | TIES_))?
|
|
527
|
+
;
|
|
528
|
+
|
|
529
|
+
frame_clause
|
|
530
|
+
: (RANGE_ | ROWS_ | GROUPS_) (
|
|
531
|
+
frame_single
|
|
532
|
+
| BETWEEN_ frame_left AND_ frame_right
|
|
533
|
+
)
|
|
534
|
+
;
|
|
535
|
+
|
|
536
|
+
order_clause
|
|
537
|
+
: ORDER_ BY_ ordering_term (COMMA ordering_term)*
|
|
538
|
+
;
|
|
539
|
+
|
|
540
|
+
limit_clause
|
|
541
|
+
: LIMIT_ expr ((OFFSET_ | COMMA) expr)?
|
|
542
|
+
;
|
|
543
|
+
|
|
544
|
+
ordering_term
|
|
545
|
+
: expr (COLLATE_ collation_name)? asc_desc? (NULLS_ (FIRST_ | LAST_))?
|
|
546
|
+
;
|
|
547
|
+
|
|
548
|
+
asc_desc
|
|
549
|
+
: ASC_
|
|
550
|
+
| DESC_
|
|
551
|
+
;
|
|
552
|
+
|
|
553
|
+
frame_left
|
|
554
|
+
: expr PRECEDING_
|
|
555
|
+
| expr FOLLOWING_
|
|
556
|
+
| CURRENT_ ROW_
|
|
557
|
+
// | UNBOUNDED_ PRECEDING_ // Special case of expr PRECEDING_
|
|
558
|
+
;
|
|
559
|
+
|
|
560
|
+
frame_right
|
|
561
|
+
: expr PRECEDING_
|
|
562
|
+
| expr FOLLOWING_
|
|
563
|
+
| CURRENT_ ROW_
|
|
564
|
+
// | UNBOUNDED_ FOLLOWING_ // Special case of expr FOLLOWING_
|
|
565
|
+
;
|
|
566
|
+
|
|
567
|
+
frame_single
|
|
568
|
+
: expr PRECEDING_
|
|
569
|
+
| CURRENT_ ROW_
|
|
570
|
+
// | UNBOUNDED_ PRECEDING_ // Special case of expr PRECEDING_
|
|
571
|
+
;
|
|
572
|
+
|
|
573
|
+
error_message
|
|
574
|
+
: expr
|
|
575
|
+
;
|
|
576
|
+
|
|
577
|
+
filename
|
|
578
|
+
: expr
|
|
579
|
+
;
|
|
580
|
+
|
|
581
|
+
module_argument
|
|
582
|
+
: module_argument_outer*
|
|
583
|
+
;
|
|
584
|
+
|
|
585
|
+
module_argument_outer
|
|
586
|
+
: ~(OPEN_PAR | CLOSE_PAR | UNEXPECTED_CHAR | COMMA)
|
|
587
|
+
| OPEN_PAR module_argument_inner* CLOSE_PAR
|
|
588
|
+
;
|
|
589
|
+
|
|
590
|
+
module_argument_inner
|
|
591
|
+
: ~(OPEN_PAR | CLOSE_PAR | UNEXPECTED_CHAR)
|
|
592
|
+
| OPEN_PAR module_argument_inner* CLOSE_PAR
|
|
593
|
+
;
|
|
594
|
+
|
|
595
|
+
// Only some keywords are allowed as identifiers.
|
|
596
|
+
fallback_excluding_conflicts
|
|
597
|
+
: ABORT_
|
|
598
|
+
| ACTION_
|
|
599
|
+
// | ADD_
|
|
600
|
+
| AFTER_
|
|
601
|
+
// | ALL_
|
|
602
|
+
// | ALTER_
|
|
603
|
+
| ALWAYS_
|
|
604
|
+
| ANALYZE_
|
|
605
|
+
// | AND_
|
|
606
|
+
// | AS_
|
|
607
|
+
| ASC_
|
|
608
|
+
| ATTACH_
|
|
609
|
+
// | AUTOINCREMENT_
|
|
610
|
+
| BEFORE_
|
|
611
|
+
| BEGIN_
|
|
612
|
+
// | BETWEEN_
|
|
613
|
+
| BY_
|
|
614
|
+
| CASCADE_
|
|
615
|
+
// | CASE_
|
|
616
|
+
| CAST_
|
|
617
|
+
// | CHECK_
|
|
618
|
+
// | COLLATE_
|
|
619
|
+
| COLUMN_
|
|
620
|
+
// | COMMIT_
|
|
621
|
+
| CONFLICT_
|
|
622
|
+
// | CONSTRAINT_
|
|
623
|
+
// | CREATE_
|
|
624
|
+
// | CROSS_
|
|
625
|
+
| CURRENT_
|
|
626
|
+
| CURRENT_DATE_
|
|
627
|
+
| CURRENT_TIME_
|
|
628
|
+
| CURRENT_TIMESTAMP_
|
|
629
|
+
| DATABASE_
|
|
630
|
+
// | DEFAULT_
|
|
631
|
+
// | DEFERRABLE_
|
|
632
|
+
| DEFERRED_
|
|
633
|
+
// | DELETE_
|
|
634
|
+
| DESC_
|
|
635
|
+
| DETACH_
|
|
636
|
+
// | DISTINCT_
|
|
637
|
+
| DO_
|
|
638
|
+
// | DROP_
|
|
639
|
+
| EACH_
|
|
640
|
+
// | ELSE_
|
|
641
|
+
| END_
|
|
642
|
+
// | ESCAPE_
|
|
643
|
+
| EXCEPT_
|
|
644
|
+
| EXCLUDE_
|
|
645
|
+
| EXCLUSIVE_
|
|
646
|
+
// | EXISTS_
|
|
647
|
+
| EXPLAIN_
|
|
648
|
+
| FAIL_
|
|
649
|
+
| FALSE_ // FALSE is handled as a special-case indentifier
|
|
650
|
+
// | FILTER_
|
|
651
|
+
| FIRST_
|
|
652
|
+
| FOLLOWING_
|
|
653
|
+
| FOR_
|
|
654
|
+
// | FOREIGN_
|
|
655
|
+
// | FROM_
|
|
656
|
+
// | FULL_
|
|
657
|
+
| GENERATED_
|
|
658
|
+
| GLOB_
|
|
659
|
+
// | GROUP_
|
|
660
|
+
| GROUPS_
|
|
661
|
+
// | HAVING_
|
|
662
|
+
| IF_
|
|
663
|
+
| IGNORE_
|
|
664
|
+
| IMMEDIATE_
|
|
665
|
+
// | IN_
|
|
666
|
+
// | INDEX_
|
|
667
|
+
// | INDEXED_
|
|
668
|
+
| INITIALLY_
|
|
669
|
+
// | INNER_
|
|
670
|
+
// | INSERT_
|
|
671
|
+
| INSTEAD_
|
|
672
|
+
| INTERSECT_
|
|
673
|
+
// | INTO_
|
|
674
|
+
// | IS_
|
|
675
|
+
// | ISNULL_
|
|
676
|
+
// | JOIN_
|
|
677
|
+
| KEY_
|
|
678
|
+
| LAST_
|
|
679
|
+
// | LEFT_
|
|
680
|
+
| LIKE_
|
|
681
|
+
// | LIMIT_
|
|
682
|
+
| MATCH_
|
|
683
|
+
| MATERIALIZED_
|
|
684
|
+
// | NATURAL_
|
|
685
|
+
| NO_
|
|
686
|
+
// | NOT_
|
|
687
|
+
// | NOTHING_
|
|
688
|
+
// | NOTNULL_
|
|
689
|
+
// | NULL_
|
|
690
|
+
| NULLS_
|
|
691
|
+
| OF_
|
|
692
|
+
| OFFSET_
|
|
693
|
+
// | ON_
|
|
694
|
+
// | OR_
|
|
695
|
+
// | ORDER_
|
|
696
|
+
| OTHERS_
|
|
697
|
+
// | OUTER_
|
|
698
|
+
// | OVER_
|
|
699
|
+
| PARTITION_
|
|
700
|
+
| PLAN_
|
|
701
|
+
| PRAGMA_
|
|
702
|
+
| PRECEDING_
|
|
703
|
+
// | PRIMARY_
|
|
704
|
+
| QUERY_
|
|
705
|
+
// | RAISE_
|
|
706
|
+
| RANGE_
|
|
707
|
+
| RECURSIVE_
|
|
708
|
+
// | REFERENCES_
|
|
709
|
+
| REGEXP_
|
|
710
|
+
| REINDEX_
|
|
711
|
+
| RELEASE_
|
|
712
|
+
| RENAME_
|
|
713
|
+
| REPLACE_
|
|
714
|
+
| RESTRICT_
|
|
715
|
+
// | RETURNING_
|
|
716
|
+
// | RIGHT_
|
|
717
|
+
| ROLLBACK_
|
|
718
|
+
| ROW_
|
|
719
|
+
| ROWID_ // ROWID is handled as a special-case indentifier
|
|
720
|
+
| ROWS_
|
|
721
|
+
| SAVEPOINT_
|
|
722
|
+
// | SELECT_
|
|
723
|
+
// | SET_
|
|
724
|
+
| STORED_ // STORED is handled as a special-case indentifier
|
|
725
|
+
| STRICT_ // STRICT is handled as a special-case indentifier
|
|
726
|
+
// | TABLE_
|
|
727
|
+
| TEMP_
|
|
728
|
+
| TEMPORARY_
|
|
729
|
+
// | THEN_
|
|
730
|
+
| TIES_
|
|
731
|
+
// | TO_
|
|
732
|
+
// | TRANSACTION_
|
|
733
|
+
| TRIGGER_
|
|
734
|
+
| TRUE_ // TRUE is handled as a special-case indentifier
|
|
735
|
+
| UNBOUNDED_
|
|
736
|
+
| UNION_
|
|
737
|
+
// | UNIQUE_
|
|
738
|
+
// | UPDATE_
|
|
739
|
+
// | USING_
|
|
740
|
+
| VACUUM_
|
|
741
|
+
// | VALUES_
|
|
742
|
+
| VIEW_
|
|
743
|
+
| VIRTUAL_
|
|
744
|
+
// | WHEN_
|
|
745
|
+
// | WHERE_
|
|
746
|
+
// | WINDOW_
|
|
747
|
+
| WITH_
|
|
748
|
+
| WITHIN_
|
|
749
|
+
| WITHOUT_
|
|
750
|
+
;
|
|
751
|
+
|
|
752
|
+
join_keyword
|
|
753
|
+
: CROSS_
|
|
754
|
+
| FULL_
|
|
755
|
+
| INDEXED_
|
|
756
|
+
| INNER_
|
|
757
|
+
| LEFT_
|
|
758
|
+
| NATURAL_
|
|
759
|
+
| OUTER_
|
|
760
|
+
| RIGHT_
|
|
761
|
+
;
|
|
762
|
+
|
|
763
|
+
fallback
|
|
764
|
+
: fallback_excluding_conflicts
|
|
765
|
+
| join_keyword
|
|
766
|
+
| RAISE_
|
|
767
|
+
;
|
|
768
|
+
|
|
769
|
+
name
|
|
770
|
+
: any_name
|
|
771
|
+
;
|
|
772
|
+
|
|
773
|
+
function_name
|
|
774
|
+
: any_name_excluding_raise
|
|
775
|
+
;
|
|
776
|
+
|
|
777
|
+
schema_name
|
|
778
|
+
: any_name
|
|
779
|
+
;
|
|
780
|
+
|
|
781
|
+
table_name
|
|
782
|
+
: any_name
|
|
783
|
+
;
|
|
784
|
+
|
|
785
|
+
table_or_index_name
|
|
786
|
+
: any_name
|
|
787
|
+
;
|
|
788
|
+
|
|
789
|
+
column_name
|
|
790
|
+
: any_name
|
|
791
|
+
;
|
|
792
|
+
|
|
793
|
+
column_name_excluding_string
|
|
794
|
+
: any_name_excluding_string
|
|
795
|
+
;
|
|
796
|
+
|
|
797
|
+
column_alias
|
|
798
|
+
: any_name
|
|
799
|
+
;
|
|
800
|
+
|
|
801
|
+
collation_name
|
|
802
|
+
: any_name
|
|
803
|
+
;
|
|
804
|
+
|
|
805
|
+
foreign_table
|
|
806
|
+
: any_name
|
|
807
|
+
;
|
|
808
|
+
|
|
809
|
+
index_name
|
|
810
|
+
: any_name
|
|
811
|
+
;
|
|
812
|
+
|
|
813
|
+
trigger_name
|
|
814
|
+
: any_name
|
|
815
|
+
;
|
|
816
|
+
|
|
817
|
+
view_name
|
|
818
|
+
: any_name
|
|
819
|
+
;
|
|
820
|
+
|
|
821
|
+
module_name
|
|
822
|
+
: any_name
|
|
823
|
+
;
|
|
824
|
+
|
|
825
|
+
pragma_name
|
|
826
|
+
: any_name
|
|
827
|
+
;
|
|
828
|
+
|
|
829
|
+
savepoint_name
|
|
830
|
+
: any_name
|
|
831
|
+
;
|
|
832
|
+
|
|
833
|
+
table_alias
|
|
834
|
+
: any_name
|
|
835
|
+
;
|
|
836
|
+
|
|
837
|
+
table_alias_excluding_joins
|
|
838
|
+
: any_name_excluding_joins
|
|
839
|
+
;
|
|
840
|
+
|
|
841
|
+
window_name
|
|
842
|
+
: any_name
|
|
843
|
+
;
|
|
844
|
+
|
|
845
|
+
alias
|
|
846
|
+
: any_name
|
|
847
|
+
;
|
|
848
|
+
|
|
849
|
+
base_window_name
|
|
850
|
+
: any_name
|
|
851
|
+
;
|
|
852
|
+
|
|
853
|
+
table_function_name
|
|
854
|
+
: any_name
|
|
855
|
+
;
|
|
856
|
+
|
|
857
|
+
any_name_excluding_raise
|
|
858
|
+
: IDENTIFIER
|
|
859
|
+
| fallback_excluding_conflicts
|
|
860
|
+
| join_keyword
|
|
861
|
+
| STRING_LITERAL
|
|
862
|
+
;
|
|
863
|
+
|
|
864
|
+
any_name_excluding_joins
|
|
865
|
+
: IDENTIFIER
|
|
866
|
+
| fallback_excluding_conflicts
|
|
867
|
+
| RAISE_
|
|
868
|
+
| STRING_LITERAL
|
|
869
|
+
;
|
|
870
|
+
|
|
871
|
+
any_name_excluding_string
|
|
872
|
+
: IDENTIFIER
|
|
873
|
+
| fallback
|
|
874
|
+
;
|
|
875
|
+
|
|
876
|
+
any_name
|
|
877
|
+
: IDENTIFIER
|
|
878
|
+
| fallback
|
|
879
|
+
| STRING_LITERAL
|
|
880
|
+
;
|
|
881
|
+
|
|
882
|
+
// Orphans (Not ever parsed, merely provided by https://sqlite.org/syntaxdiagrams.html as partial descriptions of other rules)
|
|
883
|
+
|
|
884
|
+
/*
|
|
885
|
+
factored_select_stmt
|
|
886
|
+
: select_stmt
|
|
887
|
+
;
|
|
888
|
+
|
|
889
|
+
simple_select_stmt
|
|
890
|
+
: with_clause? select_core order_clause? limit_clause?
|
|
891
|
+
;
|
|
892
|
+
|
|
893
|
+
compound_select_stmt
|
|
894
|
+
: with_clause? select_core ((UNION_ ALL_? | INTERSECT_ | EXCEPT_) select_core)+ order_clause? limit_clause?
|
|
895
|
+
;
|
|
896
|
+
|
|
897
|
+
recursive_cte
|
|
898
|
+
: cte_table_name AS_ OPEN_PAR initial_select UNION_ ALL_? recursive_select CLOSE_PAR
|
|
899
|
+
;
|
|
900
|
+
|
|
901
|
+
initial_select
|
|
902
|
+
: select_stmt
|
|
903
|
+
;
|
|
904
|
+
|
|
905
|
+
recursive_select
|
|
906
|
+
: select_stmt
|
|
907
|
+
;
|
|
908
|
+
|
|
909
|
+
simple_function_invocation
|
|
910
|
+
: simple_func OPEN_PAR (expr (COMMA expr)* | STAR) CLOSE_PAR
|
|
911
|
+
;
|
|
912
|
+
|
|
913
|
+
aggregate_function_invocation
|
|
914
|
+
: aggregate_func OPEN_PAR (DISTINCT_? expr (COMMA expr)* order_clause? | STAR)? CLOSE_PAR filter_clause?
|
|
915
|
+
;
|
|
916
|
+
|
|
917
|
+
window_function_invocation
|
|
918
|
+
: window_func OPEN_PAR (expr (COMMA expr)* | STAR)? CLOSE_PAR filter_clause? OVER_ (
|
|
919
|
+
window_defn
|
|
920
|
+
| window_name
|
|
921
|
+
)
|
|
922
|
+
;
|
|
923
|
+
|
|
924
|
+
simple_func
|
|
925
|
+
: any_name
|
|
926
|
+
;
|
|
927
|
+
|
|
928
|
+
aggregate_func
|
|
929
|
+
: any_name
|
|
930
|
+
;
|
|
931
|
+
|
|
932
|
+
window_func
|
|
933
|
+
: any_name
|
|
934
|
+
;
|
|
935
|
+
*/
|