1
/* Driver template for the LEMON parser generator.
2
** The author disclaims copyright to this source code.
4
/* First off, code is included that follows the "include" declaration
5
** in the input grammar file. */
12
** An instance of this structure holds information about the
13
** LIMIT clause of a SELECT statement.
16
Expr *pLimit; /* The LIMIT expression. NULL if there is no limit */
17
Expr *pOffset; /* The OFFSET expression. NULL if there is none */
21
** An instance of this structure is used to store the LIKE,
22
** GLOB, NOT LIKE, and NOT GLOB operators.
25
Token eOperator; /* "like" or "glob" or "regexp" */
26
int not; /* True if the NOT keyword is present */
30
** An instance of the following structure describes the event of a
31
** TRIGGER. "a" is the event type, one of TK_UPDATE, TK_INSERT,
32
** TK_DELETE, or TK_INSTEAD. If the event is of the form
36
** Then the "b" IdList records the list "a,b,c".
38
struct TrigEvent { int a; IdList * b; };
41
** An instance of this structure holds the ATTACH key and the key type.
43
struct AttachKey { int type; Token key; };
46
/* Next is all token values, in a form suitable for use by makeheaders.
47
** This section will be null unless lemon is run with the -m switch.
50
** These constants (all generated automatically by the parser generator)
51
** specify the various kinds of tokens (terminals) that the parser
54
** Each symbol here is a terminal symbol in the grammar.
56
/* Make sure the INTERFACE macro is defined.
61
/* The next thing included is series of defines which control
62
** various aspects of the generated parser.
63
** YYCODETYPE is the data type used for storing terminal
64
** and nonterminal numbers. "unsigned char" is
65
** used if there are fewer than 250 terminals
66
** and nonterminals. "int" is used otherwise.
67
** YYNOCODE is a number of type YYCODETYPE which corresponds
68
** to no legal terminal or nonterminal number. This
69
** number is used to fill in empty slots of the hash
71
** YYFALLBACK If defined, this indicates that one or more tokens
72
** have fall-back values which should be used if the
73
** original value of the token will not parse.
74
** YYACTIONTYPE is the data type used for storing terminal
75
** and nonterminal numbers. "unsigned char" is
76
** used if there are fewer than 250 rules and
77
** states combined. "int" is used otherwise.
78
** sqlite3ParserTOKENTYPE is the data type used for minor tokens given
79
** directly to the parser from the tokenizer.
80
** YYMINORTYPE is the data type used for all minor tokens.
81
** This is typically a union of many types, one of
82
** which is sqlite3ParserTOKENTYPE. The entry in the union
83
** for base tokens is called "yy0".
84
** YYSTACKDEPTH is the maximum depth of the parser's stack. If
85
** zero the stack is dynamically sized using realloc()
86
** sqlite3ParserARG_SDECL A static variable declaration for the %extra_argument
87
** sqlite3ParserARG_PDECL A parameter declaration for the %extra_argument
88
** sqlite3ParserARG_STORE Code to store %extra_argument into yypParser
89
** sqlite3ParserARG_FETCH Code to extract %extra_argument from yypParser
90
** YYNSTATE the combined number of states.
91
** YYNRULE the number of rules in the grammar
92
** YYERRORSYMBOL is the code number of the error symbol. If not
93
** defined, then do no error processing.
95
#define YYCODETYPE unsigned char
97
#define YYACTIONTYPE unsigned short int
99
#define sqlite3ParserTOKENTYPE Token
101
sqlite3ParserTOKENTYPE yy0;
107
struct LimitVal yy234;
109
struct TrigEvent yy370;
111
struct {int value; int mask;} yy405;
115
#define YYSTACKDEPTH 100
117
#define sqlite3ParserARG_SDECL Parse *pParse;
118
#define sqlite3ParserARG_PDECL ,Parse *pParse
119
#define sqlite3ParserARG_FETCH Parse *pParse = yypParser->pParse
120
#define sqlite3ParserARG_STORE yypParser->pParse = pParse
124
#define YY_NO_ACTION (YYNSTATE+YYNRULE+2)
125
#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1)
126
#define YY_ERROR_ACTION (YYNSTATE+YYNRULE)
128
/* The yyzerominor constant is used to initialize instances of
129
** YYMINORTYPE objects to zero. */
130
static const YYMINORTYPE yyzerominor;
132
/* Next are the tables used to determine what action to take based on the
133
** current state and lookahead token. These tables are used to implement
134
** functions that take a state number and lookahead value and return an
137
** Suppose the action integer is N. Then the action is determined as
140
** 0 <= N < YYNSTATE Shift N. That is, push the lookahead
141
** token onto the stack and goto state N.
143
** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE.
145
** N == YYNSTATE+YYNRULE A syntax error has occurred.
147
** N == YYNSTATE+YYNRULE+1 The parser accepts its input.
149
** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused
150
** slots in the yy_action[] table.
152
** The action table is constructed as a single large table named yy_action[].
153
** Given state S and lookahead X, the action is computed as
155
** yy_action[ yy_shift_ofst[S] + X ]
157
** If the index value yy_shift_ofst[S]+X is out of range or if the value
158
** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S]
159
** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table
160
** and that yy_default[S] should be used instead.
162
** The formula above is for computing the action when the lookahead is
163
** a terminal symbol. If the lookahead is a non-terminal (as occurs after
164
** a reduce action) then the yy_reduce_ofst[] array is used in place of
165
** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of
166
** YY_SHIFT_USE_DFLT.
168
** The following are the tables generated in this section:
170
** yy_action[] A single table containing all actions.
171
** yy_lookahead[] A table containing the lookahead for each entry in
172
** yy_action. Used to detect hash collisions.
173
** yy_shift_ofst[] For each state, the offset into yy_action for
174
** shifting terminals.
175
** yy_reduce_ofst[] For each state, the offset into yy_action for
176
** shifting non-terminals after a reduce.
177
** yy_default[] Default action for each state.
179
static const YYACTIONTYPE yy_action[] = {
180
/* 0 */ 292, 903, 124, 588, 409, 172, 2, 418, 61, 61,
181
/* 10 */ 61, 61, 519, 63, 63, 63, 63, 64, 64, 65,
182
/* 20 */ 65, 65, 66, 210, 447, 212, 425, 431, 68, 63,
183
/* 30 */ 63, 63, 63, 64, 64, 65, 65, 65, 66, 210,
184
/* 40 */ 391, 388, 396, 451, 60, 59, 297, 435, 436, 432,
185
/* 50 */ 432, 62, 62, 61, 61, 61, 61, 263, 63, 63,
186
/* 60 */ 63, 63, 64, 64, 65, 65, 65, 66, 210, 292,
187
/* 70 */ 493, 494, 418, 489, 208, 82, 67, 420, 69, 154,
188
/* 80 */ 63, 63, 63, 63, 64, 64, 65, 65, 65, 66,
189
/* 90 */ 210, 67, 462, 69, 154, 425, 431, 574, 264, 58,
190
/* 100 */ 64, 64, 65, 65, 65, 66, 210, 397, 398, 422,
191
/* 110 */ 422, 422, 292, 60, 59, 297, 435, 436, 432, 432,
192
/* 120 */ 62, 62, 61, 61, 61, 61, 317, 63, 63, 63,
193
/* 130 */ 63, 64, 64, 65, 65, 65, 66, 210, 425, 431,
194
/* 140 */ 94, 65, 65, 65, 66, 210, 396, 210, 414, 34,
195
/* 150 */ 56, 298, 442, 443, 410, 418, 60, 59, 297, 435,
196
/* 160 */ 436, 432, 432, 62, 62, 61, 61, 61, 61, 208,
197
/* 170 */ 63, 63, 63, 63, 64, 64, 65, 65, 65, 66,
198
/* 180 */ 210, 292, 372, 524, 295, 572, 113, 408, 522, 451,
199
/* 190 */ 331, 317, 407, 20, 244, 340, 519, 396, 478, 531,
200
/* 200 */ 505, 447, 212, 571, 570, 245, 530, 425, 431, 149,
201
/* 210 */ 150, 397, 398, 414, 41, 211, 151, 533, 488, 489,
202
/* 220 */ 418, 568, 569, 420, 292, 60, 59, 297, 435, 436,
203
/* 230 */ 432, 432, 62, 62, 61, 61, 61, 61, 317, 63,
204
/* 240 */ 63, 63, 63, 64, 64, 65, 65, 65, 66, 210,
205
/* 250 */ 425, 431, 447, 333, 215, 422, 422, 422, 363, 299,
206
/* 260 */ 414, 41, 397, 398, 366, 567, 211, 292, 60, 59,
207
/* 270 */ 297, 435, 436, 432, 432, 62, 62, 61, 61, 61,
208
/* 280 */ 61, 396, 63, 63, 63, 63, 64, 64, 65, 65,
209
/* 290 */ 65, 66, 210, 425, 431, 491, 300, 524, 474, 66,
210
/* 300 */ 210, 214, 474, 229, 411, 286, 534, 20, 449, 523,
211
/* 310 */ 168, 60, 59, 297, 435, 436, 432, 432, 62, 62,
212
/* 320 */ 61, 61, 61, 61, 474, 63, 63, 63, 63, 64,
213
/* 330 */ 64, 65, 65, 65, 66, 210, 209, 480, 317, 77,
214
/* 340 */ 292, 239, 300, 55, 484, 490, 397, 398, 181, 547,
215
/* 350 */ 494, 345, 348, 349, 67, 152, 69, 154, 339, 524,
216
/* 360 */ 414, 35, 350, 241, 221, 370, 425, 431, 579, 20,
217
/* 370 */ 164, 118, 243, 343, 248, 344, 176, 322, 442, 443,
218
/* 380 */ 414, 3, 80, 252, 60, 59, 297, 435, 436, 432,
219
/* 390 */ 432, 62, 62, 61, 61, 61, 61, 174, 63, 63,
220
/* 400 */ 63, 63, 64, 64, 65, 65, 65, 66, 210, 292,
221
/* 410 */ 221, 550, 236, 487, 510, 353, 317, 118, 243, 343,
222
/* 420 */ 248, 344, 176, 181, 317, 532, 345, 348, 349, 252,
223
/* 430 */ 223, 415, 155, 464, 511, 425, 431, 350, 414, 34,
224
/* 440 */ 465, 211, 177, 175, 160, 525, 414, 34, 338, 549,
225
/* 450 */ 449, 323, 168, 60, 59, 297, 435, 436, 432, 432,
226
/* 460 */ 62, 62, 61, 61, 61, 61, 415, 63, 63, 63,
227
/* 470 */ 63, 64, 64, 65, 65, 65, 66, 210, 292, 542,
228
/* 480 */ 335, 517, 504, 541, 456, 572, 302, 19, 331, 144,
229
/* 490 */ 317, 390, 317, 330, 2, 362, 457, 294, 483, 373,
230
/* 500 */ 269, 268, 252, 571, 425, 431, 589, 391, 388, 458,
231
/* 510 */ 208, 495, 414, 49, 414, 49, 303, 586, 894, 230,
232
/* 520 */ 894, 496, 60, 59, 297, 435, 436, 432, 432, 62,
233
/* 530 */ 62, 61, 61, 61, 61, 201, 63, 63, 63, 63,
234
/* 540 */ 64, 64, 65, 65, 65, 66, 210, 292, 317, 181,
235
/* 550 */ 439, 255, 345, 348, 349, 370, 153, 583, 308, 251,
236
/* 560 */ 309, 452, 76, 350, 78, 382, 211, 426, 427, 415,
237
/* 570 */ 414, 27, 319, 425, 431, 440, 1, 22, 586, 893,
238
/* 580 */ 396, 893, 544, 478, 320, 263, 438, 438, 429, 430,
239
/* 590 */ 415, 60, 59, 297, 435, 436, 432, 432, 62, 62,
240
/* 600 */ 61, 61, 61, 61, 237, 63, 63, 63, 63, 64,
241
/* 610 */ 64, 65, 65, 65, 66, 210, 292, 428, 583, 374,
242
/* 620 */ 224, 93, 517, 9, 159, 396, 557, 396, 456, 67,
243
/* 630 */ 396, 69, 154, 399, 400, 401, 320, 328, 438, 438,
244
/* 640 */ 457, 336, 425, 431, 361, 397, 398, 320, 433, 438,
245
/* 650 */ 438, 582, 291, 458, 238, 327, 318, 222, 546, 292,
246
/* 660 */ 60, 59, 297, 435, 436, 432, 432, 62, 62, 61,
247
/* 670 */ 61, 61, 61, 225, 63, 63, 63, 63, 64, 64,
248
/* 680 */ 65, 65, 65, 66, 210, 425, 431, 482, 313, 392,
249
/* 690 */ 397, 398, 397, 398, 207, 397, 398, 825, 273, 517,
250
/* 700 */ 251, 200, 292, 60, 59, 297, 435, 436, 432, 432,
251
/* 710 */ 62, 62, 61, 61, 61, 61, 470, 63, 63, 63,
252
/* 720 */ 63, 64, 64, 65, 65, 65, 66, 210, 425, 431,
253
/* 730 */ 171, 160, 263, 263, 304, 415, 276, 395, 274, 263,
254
/* 740 */ 517, 517, 263, 517, 192, 292, 60, 70, 297, 435,
255
/* 750 */ 436, 432, 432, 62, 62, 61, 61, 61, 61, 379,
256
/* 760 */ 63, 63, 63, 63, 64, 64, 65, 65, 65, 66,
257
/* 770 */ 210, 425, 431, 384, 559, 305, 306, 251, 415, 320,
258
/* 780 */ 560, 438, 438, 561, 540, 360, 540, 387, 292, 196,
259
/* 790 */ 59, 297, 435, 436, 432, 432, 62, 62, 61, 61,
260
/* 800 */ 61, 61, 371, 63, 63, 63, 63, 64, 64, 65,
261
/* 810 */ 65, 65, 66, 210, 425, 431, 396, 275, 251, 251,
262
/* 820 */ 172, 250, 418, 415, 386, 367, 178, 179, 180, 469,
263
/* 830 */ 311, 123, 156, 5, 297, 435, 436, 432, 432, 62,
264
/* 840 */ 62, 61, 61, 61, 61, 317, 63, 63, 63, 63,
265
/* 850 */ 64, 64, 65, 65, 65, 66, 210, 72, 324, 194,
266
/* 860 */ 4, 317, 263, 317, 296, 263, 415, 414, 28, 317,
267
/* 870 */ 257, 317, 321, 72, 324, 317, 4, 119, 165, 177,
268
/* 880 */ 296, 397, 398, 414, 23, 414, 32, 418, 321, 326,
269
/* 890 */ 421, 414, 53, 414, 52, 317, 158, 414, 98, 451,
270
/* 900 */ 317, 263, 317, 277, 317, 326, 378, 471, 261, 317,
271
/* 910 */ 259, 18, 478, 445, 445, 451, 317, 414, 96, 75,
272
/* 920 */ 74, 469, 414, 101, 414, 102, 414, 112, 73, 315,
273
/* 930 */ 316, 414, 114, 420, 294, 75, 74, 481, 414, 16,
274
/* 940 */ 381, 317, 279, 467, 73, 315, 316, 72, 324, 420,
275
/* 950 */ 4, 208, 317, 183, 296, 317, 186, 128, 84, 208,
276
/* 960 */ 8, 341, 321, 414, 99, 422, 422, 422, 423, 424,
277
/* 970 */ 11, 623, 380, 307, 414, 33, 413, 414, 97, 326,
278
/* 980 */ 412, 422, 422, 422, 423, 424, 11, 415, 413, 451,
279
/* 990 */ 415, 162, 412, 317, 499, 500, 226, 227, 228, 104,
280
/* 1000 */ 448, 476, 317, 173, 507, 317, 509, 508, 317, 75,
281
/* 1010 */ 74, 329, 205, 21, 281, 414, 24, 418, 73, 315,
282
/* 1020 */ 316, 282, 317, 420, 414, 54, 460, 414, 115, 317,
283
/* 1030 */ 414, 116, 502, 203, 147, 549, 514, 468, 128, 202,
284
/* 1040 */ 317, 473, 204, 317, 414, 117, 317, 477, 317, 584,
285
/* 1050 */ 317, 414, 25, 317, 249, 422, 422, 422, 423, 424,
286
/* 1060 */ 11, 506, 414, 36, 512, 414, 37, 317, 414, 26,
287
/* 1070 */ 414, 38, 414, 39, 526, 414, 40, 317, 254, 317,
288
/* 1080 */ 128, 317, 418, 317, 256, 377, 278, 268, 585, 414,
289
/* 1090 */ 42, 293, 317, 352, 317, 128, 208, 513, 258, 414,
290
/* 1100 */ 43, 414, 44, 414, 29, 414, 30, 545, 260, 128,
291
/* 1110 */ 317, 553, 317, 173, 414, 45, 414, 46, 317, 262,
292
/* 1120 */ 383, 554, 317, 91, 564, 317, 91, 317, 581, 189,
293
/* 1130 */ 290, 357, 414, 47, 414, 48, 267, 365, 368, 369,
294
/* 1140 */ 414, 31, 270, 271, 414, 10, 272, 414, 50, 414,
295
/* 1150 */ 51, 556, 566, 280, 283, 284, 578, 146, 419, 405,
296
/* 1160 */ 231, 505, 444, 325, 516, 463, 163, 446, 552, 394,
297
/* 1170 */ 466, 563, 246, 515, 518, 520, 402, 403, 404, 7,
298
/* 1180 */ 314, 84, 232, 334, 347, 83, 332, 57, 170, 79,
299
/* 1190 */ 213, 461, 125, 85, 337, 342, 492, 502, 497, 301,
300
/* 1200 */ 498, 416, 105, 219, 247, 218, 503, 501, 233, 220,
301
/* 1210 */ 287, 234, 527, 528, 235, 529, 417, 521, 354, 288,
302
/* 1220 */ 184, 121, 185, 240, 535, 475, 242, 356, 187, 479,
303
/* 1230 */ 188, 358, 537, 88, 190, 548, 364, 193, 132, 376,
304
/* 1240 */ 555, 375, 133, 134, 135, 310, 562, 138, 136, 575,
305
/* 1250 */ 576, 577, 580, 100, 393, 406, 217, 142, 624, 625,
306
/* 1260 */ 103, 141, 265, 166, 167, 434, 71, 453, 441, 437,
307
/* 1270 */ 450, 143, 538, 157, 120, 454, 161, 472, 455, 169,
308
/* 1280 */ 459, 81, 6, 12, 13, 92, 95, 126, 216, 127,
309
/* 1290 */ 111, 485, 486, 17, 86, 346, 106, 122, 253, 107,
310
/* 1300 */ 87, 108, 182, 245, 355, 145, 351, 536, 129, 359,
311
/* 1310 */ 312, 130, 543, 173, 539, 266, 191, 109, 289, 551,
312
/* 1320 */ 195, 14, 131, 198, 197, 558, 137, 199, 139, 140,
313
/* 1330 */ 15, 565, 89, 90, 573, 110, 385, 206, 148, 389,
316
static const YYCODETYPE yy_lookahead[] = {
317
/* 0 */ 16, 139, 140, 141, 168, 21, 144, 23, 69, 70,
318
/* 10 */ 71, 72, 176, 74, 75, 76, 77, 78, 79, 80,
319
/* 20 */ 81, 82, 83, 84, 78, 79, 42, 43, 73, 74,
320
/* 30 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
321
/* 40 */ 1, 2, 23, 58, 60, 61, 62, 63, 64, 65,
322
/* 50 */ 66, 67, 68, 69, 70, 71, 72, 147, 74, 75,
323
/* 60 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 16,
324
/* 70 */ 185, 186, 88, 88, 110, 22, 217, 92, 219, 220,
325
/* 80 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
326
/* 90 */ 84, 217, 218, 219, 220, 42, 43, 238, 188, 46,
327
/* 100 */ 78, 79, 80, 81, 82, 83, 84, 88, 89, 124,
328
/* 110 */ 125, 126, 16, 60, 61, 62, 63, 64, 65, 66,
329
/* 120 */ 67, 68, 69, 70, 71, 72, 147, 74, 75, 76,
330
/* 130 */ 77, 78, 79, 80, 81, 82, 83, 84, 42, 43,
331
/* 140 */ 44, 80, 81, 82, 83, 84, 23, 84, 169, 170,
332
/* 150 */ 19, 164, 165, 166, 23, 23, 60, 61, 62, 63,
333
/* 160 */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 110,
334
/* 170 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
335
/* 180 */ 84, 16, 123, 147, 150, 147, 21, 167, 168, 58,
336
/* 190 */ 211, 147, 156, 157, 92, 216, 176, 23, 147, 176,
337
/* 200 */ 177, 78, 79, 165, 166, 103, 183, 42, 43, 78,
338
/* 210 */ 79, 88, 89, 169, 170, 228, 180, 181, 169, 88,
339
/* 220 */ 88, 98, 99, 92, 16, 60, 61, 62, 63, 64,
340
/* 230 */ 65, 66, 67, 68, 69, 70, 71, 72, 147, 74,
341
/* 240 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
342
/* 250 */ 42, 43, 78, 209, 210, 124, 125, 126, 224, 208,
343
/* 260 */ 169, 170, 88, 89, 230, 227, 228, 16, 60, 61,
344
/* 270 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
345
/* 280 */ 72, 23, 74, 75, 76, 77, 78, 79, 80, 81,
346
/* 290 */ 82, 83, 84, 42, 43, 160, 16, 147, 161, 83,
347
/* 300 */ 84, 210, 161, 153, 169, 158, 156, 157, 161, 162,
348
/* 310 */ 163, 60, 61, 62, 63, 64, 65, 66, 67, 68,
349
/* 320 */ 69, 70, 71, 72, 161, 74, 75, 76, 77, 78,
350
/* 330 */ 79, 80, 81, 82, 83, 84, 192, 200, 147, 131,
351
/* 340 */ 16, 200, 16, 199, 20, 169, 88, 89, 90, 185,
352
/* 350 */ 186, 93, 94, 95, 217, 22, 219, 220, 147, 147,
353
/* 360 */ 169, 170, 104, 200, 84, 147, 42, 43, 156, 157,
354
/* 370 */ 90, 91, 92, 93, 94, 95, 96, 164, 165, 166,
355
/* 380 */ 169, 170, 131, 103, 60, 61, 62, 63, 64, 65,
356
/* 390 */ 66, 67, 68, 69, 70, 71, 72, 155, 74, 75,
357
/* 400 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 16,
358
/* 410 */ 84, 11, 221, 20, 30, 16, 147, 91, 92, 93,
359
/* 420 */ 94, 95, 96, 90, 147, 181, 93, 94, 95, 103,
360
/* 430 */ 212, 189, 155, 27, 50, 42, 43, 104, 169, 170,
361
/* 440 */ 34, 228, 43, 201, 202, 181, 169, 170, 206, 49,
362
/* 450 */ 161, 162, 163, 60, 61, 62, 63, 64, 65, 66,
363
/* 460 */ 67, 68, 69, 70, 71, 72, 189, 74, 75, 76,
364
/* 470 */ 77, 78, 79, 80, 81, 82, 83, 84, 16, 25,
365
/* 480 */ 211, 147, 20, 29, 12, 147, 102, 19, 211, 21,
366
/* 490 */ 147, 141, 147, 216, 144, 41, 24, 98, 20, 99,
367
/* 500 */ 100, 101, 103, 165, 42, 43, 0, 1, 2, 37,
368
/* 510 */ 110, 39, 169, 170, 169, 170, 182, 19, 20, 190,
369
/* 520 */ 22, 49, 60, 61, 62, 63, 64, 65, 66, 67,
370
/* 530 */ 68, 69, 70, 71, 72, 155, 74, 75, 76, 77,
371
/* 540 */ 78, 79, 80, 81, 82, 83, 84, 16, 147, 90,
372
/* 550 */ 20, 20, 93, 94, 95, 147, 155, 59, 215, 225,
373
/* 560 */ 215, 20, 130, 104, 132, 227, 228, 42, 43, 189,
374
/* 570 */ 169, 170, 16, 42, 43, 20, 19, 22, 19, 20,
375
/* 580 */ 23, 22, 18, 147, 106, 147, 108, 109, 63, 64,
376
/* 590 */ 189, 60, 61, 62, 63, 64, 65, 66, 67, 68,
377
/* 600 */ 69, 70, 71, 72, 147, 74, 75, 76, 77, 78,
378
/* 610 */ 79, 80, 81, 82, 83, 84, 16, 92, 59, 55,
379
/* 620 */ 212, 21, 147, 19, 147, 23, 188, 23, 12, 217,
380
/* 630 */ 23, 219, 220, 7, 8, 9, 106, 186, 108, 109,
381
/* 640 */ 24, 147, 42, 43, 208, 88, 89, 106, 92, 108,
382
/* 650 */ 109, 244, 245, 37, 147, 39, 147, 182, 94, 16,
383
/* 660 */ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
384
/* 670 */ 70, 71, 72, 145, 74, 75, 76, 77, 78, 79,
385
/* 680 */ 80, 81, 82, 83, 84, 42, 43, 80, 142, 143,
386
/* 690 */ 88, 89, 88, 89, 148, 88, 89, 133, 14, 147,
387
/* 700 */ 225, 155, 16, 60, 61, 62, 63, 64, 65, 66,
388
/* 710 */ 67, 68, 69, 70, 71, 72, 114, 74, 75, 76,
389
/* 720 */ 77, 78, 79, 80, 81, 82, 83, 84, 42, 43,
390
/* 730 */ 201, 202, 147, 147, 182, 189, 52, 147, 54, 147,
391
/* 740 */ 147, 147, 147, 147, 155, 16, 60, 61, 62, 63,
392
/* 750 */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 213,
393
/* 760 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
394
/* 770 */ 84, 42, 43, 188, 188, 182, 182, 225, 189, 106,
395
/* 780 */ 188, 108, 109, 188, 99, 100, 101, 241, 16, 155,
396
/* 790 */ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
397
/* 800 */ 71, 72, 213, 74, 75, 76, 77, 78, 79, 80,
398
/* 810 */ 81, 82, 83, 84, 42, 43, 23, 133, 225, 225,
399
/* 820 */ 21, 225, 23, 189, 239, 236, 99, 100, 101, 22,
400
/* 830 */ 242, 243, 155, 191, 62, 63, 64, 65, 66, 67,
401
/* 840 */ 68, 69, 70, 71, 72, 147, 74, 75, 76, 77,
402
/* 850 */ 78, 79, 80, 81, 82, 83, 84, 16, 17, 22,
403
/* 860 */ 19, 147, 147, 147, 23, 147, 189, 169, 170, 147,
404
/* 870 */ 14, 147, 31, 16, 17, 147, 19, 147, 19, 43,
405
/* 880 */ 23, 88, 89, 169, 170, 169, 170, 88, 31, 48,
406
/* 890 */ 147, 169, 170, 169, 170, 147, 89, 169, 170, 58,
407
/* 900 */ 147, 147, 147, 188, 147, 48, 188, 114, 52, 147,
408
/* 910 */ 54, 19, 147, 124, 125, 58, 147, 169, 170, 78,
409
/* 920 */ 79, 114, 169, 170, 169, 170, 169, 170, 87, 88,
410
/* 930 */ 89, 169, 170, 92, 98, 78, 79, 80, 169, 170,
411
/* 940 */ 91, 147, 188, 22, 87, 88, 89, 16, 17, 92,
412
/* 950 */ 19, 110, 147, 155, 23, 147, 155, 22, 121, 110,
413
/* 960 */ 68, 80, 31, 169, 170, 124, 125, 126, 127, 128,
414
/* 970 */ 129, 112, 123, 208, 169, 170, 107, 169, 170, 48,
415
/* 980 */ 111, 124, 125, 126, 127, 128, 129, 189, 107, 58,
416
/* 990 */ 189, 5, 111, 147, 7, 8, 10, 11, 12, 13,
417
/* 1000 */ 161, 20, 147, 22, 178, 147, 91, 92, 147, 78,
418
/* 1010 */ 79, 147, 26, 19, 28, 169, 170, 23, 87, 88,
419
/* 1020 */ 89, 35, 147, 92, 169, 170, 147, 169, 170, 147,
420
/* 1030 */ 169, 170, 97, 47, 113, 49, 20, 203, 22, 53,
421
/* 1040 */ 147, 147, 56, 147, 169, 170, 147, 147, 147, 20,
422
/* 1050 */ 147, 169, 170, 147, 147, 124, 125, 126, 127, 128,
423
/* 1060 */ 129, 147, 169, 170, 178, 169, 170, 147, 169, 170,
424
/* 1070 */ 169, 170, 169, 170, 147, 169, 170, 147, 20, 147,
425
/* 1080 */ 22, 147, 88, 147, 147, 99, 100, 101, 59, 169,
426
/* 1090 */ 170, 105, 147, 20, 147, 22, 110, 178, 147, 169,
427
/* 1100 */ 170, 169, 170, 169, 170, 169, 170, 20, 147, 22,
428
/* 1110 */ 147, 20, 147, 22, 169, 170, 169, 170, 147, 147,
429
/* 1120 */ 134, 20, 147, 22, 20, 147, 22, 147, 20, 232,
430
/* 1130 */ 22, 233, 169, 170, 169, 170, 147, 147, 147, 147,
431
/* 1140 */ 169, 170, 147, 147, 169, 170, 147, 169, 170, 169,
432
/* 1150 */ 170, 147, 147, 147, 147, 147, 147, 191, 161, 149,
433
/* 1160 */ 193, 177, 229, 223, 161, 172, 6, 229, 194, 146,
434
/* 1170 */ 172, 194, 172, 172, 172, 161, 146, 146, 146, 22,
435
/* 1180 */ 154, 121, 194, 118, 173, 119, 116, 120, 112, 130,
436
/* 1190 */ 222, 152, 152, 98, 115, 98, 171, 97, 171, 40,
437
/* 1200 */ 179, 189, 19, 84, 171, 226, 171, 173, 195, 226,
438
/* 1210 */ 174, 196, 171, 171, 197, 171, 198, 179, 15, 174,
439
/* 1220 */ 151, 60, 151, 204, 152, 205, 204, 152, 151, 205,
440
/* 1230 */ 152, 38, 152, 130, 151, 184, 152, 184, 19, 15,
441
/* 1240 */ 194, 152, 187, 187, 187, 152, 194, 184, 187, 33,
442
/* 1250 */ 152, 152, 137, 159, 1, 20, 175, 214, 112, 112,
443
/* 1260 */ 175, 214, 234, 112, 112, 92, 19, 11, 20, 107,
444
/* 1270 */ 20, 19, 235, 19, 32, 20, 112, 114, 20, 22,
445
/* 1280 */ 20, 22, 117, 22, 117, 237, 237, 19, 44, 20,
446
/* 1290 */ 240, 20, 20, 231, 19, 44, 19, 243, 20, 19,
447
/* 1300 */ 19, 19, 96, 103, 16, 21, 44, 17, 98, 36,
448
/* 1310 */ 246, 45, 45, 22, 51, 133, 98, 19, 5, 1,
449
/* 1320 */ 122, 19, 102, 14, 113, 17, 113, 115, 102, 122,
450
/* 1330 */ 19, 123, 68, 68, 20, 14, 57, 135, 19, 3,
453
#define YY_SHIFT_USE_DFLT (-62)
454
#define YY_SHIFT_MAX 389
455
static const short yy_shift_ofst[] = {
456
/* 0 */ 39, 841, 986, -16, 841, 931, 931, 258, 123, -36,
457
/* 10 */ 96, 931, 931, 931, 931, 931, -45, 400, 174, 19,
458
/* 20 */ 132, -54, -54, 53, 165, 208, 251, 324, 393, 462,
459
/* 30 */ 531, 600, 643, 686, 643, 643, 643, 643, 643, 643,
460
/* 40 */ 643, 643, 643, 643, 643, 643, 643, 643, 643, 643,
461
/* 50 */ 643, 643, 729, 772, 772, 857, 931, 931, 931, 931,
462
/* 60 */ 931, 931, 931, 931, 931, 931, 931, 931, 931, 931,
463
/* 70 */ 931, 931, 931, 931, 931, 931, 931, 931, 931, 931,
464
/* 80 */ 931, 931, 931, 931, 931, 931, 931, 931, 931, 931,
465
/* 90 */ 931, 931, 931, 931, 931, 931, -61, -61, 6, 6,
466
/* 100 */ 280, 22, 61, 399, 564, 19, 19, 19, 19, 19,
467
/* 110 */ 19, 19, 216, 132, 63, -62, -62, -62, 131, 326,
468
/* 120 */ 472, 472, 498, 559, 506, 799, 19, 799, 19, 19,
469
/* 130 */ 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
470
/* 140 */ 19, 849, 59, -36, -36, -36, -62, -62, -62, -15,
471
/* 150 */ -15, 333, 459, 478, 557, 530, 541, 616, 602, 793,
472
/* 160 */ 604, 607, 626, 19, 19, 881, 19, 19, 994, 19,
473
/* 170 */ 19, 807, 19, 19, 673, 807, 19, 19, 384, 384,
474
/* 180 */ 384, 19, 19, 673, 19, 19, 673, 19, 454, 685,
475
/* 190 */ 19, 19, 673, 19, 19, 19, 673, 19, 19, 19,
476
/* 200 */ 673, 673, 19, 19, 19, 19, 19, 468, 869, 921,
477
/* 210 */ 132, 789, 789, 432, 406, 406, 406, 836, 406, 132,
478
/* 220 */ 406, 132, 935, 837, 837, 1160, 1160, 1160, 1160, 1157,
479
/* 230 */ -36, 1060, 1065, 1066, 1070, 1067, 1059, 1076, 1076, 1095,
480
/* 240 */ 1079, 1095, 1079, 1097, 1097, 1159, 1097, 1100, 1097, 1183,
481
/* 250 */ 1119, 1119, 1159, 1097, 1097, 1097, 1183, 1203, 1076, 1203,
482
/* 260 */ 1076, 1203, 1076, 1076, 1193, 1103, 1203, 1076, 1161, 1161,
483
/* 270 */ 1219, 1060, 1076, 1224, 1224, 1224, 1224, 1060, 1161, 1219,
484
/* 280 */ 1076, 1216, 1216, 1076, 1076, 1115, -62, -62, -62, -62,
485
/* 290 */ -62, -62, 525, 684, 727, 856, 859, 556, 555, 981,
486
/* 300 */ 102, 987, 915, 1016, 1058, 1073, 1087, 1091, 1101, 1104,
487
/* 310 */ 892, 1108, 1029, 1253, 1235, 1146, 1147, 1151, 1152, 1173,
488
/* 320 */ 1162, 1247, 1248, 1250, 1252, 1256, 1254, 1255, 1257, 1258,
489
/* 330 */ 1260, 1259, 1165, 1261, 1167, 1259, 1163, 1268, 1269, 1164,
490
/* 340 */ 1271, 1272, 1242, 1244, 1275, 1251, 1277, 1278, 1280, 1281,
491
/* 350 */ 1262, 1282, 1206, 1200, 1288, 1290, 1284, 1210, 1273, 1263,
492
/* 360 */ 1266, 1291, 1267, 1182, 1218, 1298, 1313, 1318, 1220, 1264,
493
/* 370 */ 1265, 1198, 1302, 1211, 1309, 1212, 1308, 1213, 1226, 1207,
494
/* 380 */ 1311, 1208, 1314, 1321, 1279, 1202, 1204, 1319, 1336, 1337,
496
#define YY_REDUCE_USE_DFLT (-165)
497
#define YY_REDUCE_MAX 291
498
static const short yy_reduce_ofst[] = {
499
/* 0 */ -138, 277, 546, 137, 401, -21, 44, 36, 38, 242,
500
/* 10 */ -141, 191, 91, 269, 343, 345, -126, 589, 338, 150,
501
/* 20 */ 147, -13, 213, 412, 412, 412, 412, 412, 412, 412,
502
/* 30 */ 412, 412, 412, 412, 412, 412, 412, 412, 412, 412,
503
/* 40 */ 412, 412, 412, 412, 412, 412, 412, 412, 412, 412,
504
/* 50 */ 412, 412, 412, 412, 412, 211, 698, 714, 716, 722,
505
/* 60 */ 724, 728, 748, 753, 755, 757, 762, 769, 794, 805,
506
/* 70 */ 808, 846, 855, 858, 861, 875, 882, 893, 896, 899,
507
/* 80 */ 901, 903, 906, 920, 930, 932, 934, 936, 945, 947,
508
/* 90 */ 963, 965, 971, 975, 978, 980, 412, 412, 412, 412,
509
/* 100 */ 20, 412, 412, 23, 34, 334, 475, 552, 593, 594,
510
/* 110 */ 585, 212, 412, 289, 412, 412, 412, 412, 135, -164,
511
/* 120 */ -115, 164, 407, 407, 350, 141, 51, 163, 596, -90,
512
/* 130 */ 436, 218, 765, 438, 586, 592, 595, 715, 718, 408,
513
/* 140 */ 754, 380, 634, 677, 798, 801, 144, 529, 588, 49,
514
/* 150 */ 176, 244, 264, 329, 457, 329, 329, 451, 477, 494,
515
/* 160 */ 507, 509, 528, 590, 730, 642, 509, 743, 839, 864,
516
/* 170 */ 879, 834, 894, 900, 329, 834, 907, 914, 826, 886,
517
/* 180 */ 919, 927, 937, 329, 951, 961, 329, 972, 897, 898,
518
/* 190 */ 989, 990, 329, 991, 992, 995, 329, 996, 999, 1004,
519
/* 200 */ 329, 329, 1005, 1006, 1007, 1008, 1009, 1010, 966, 967,
520
/* 210 */ 997, 933, 938, 940, 993, 998, 1000, 984, 1001, 1003,
521
/* 220 */ 1002, 1014, 1011, 974, 977, 1023, 1030, 1031, 1032, 1026,
522
/* 230 */ 1012, 988, 1013, 1015, 1017, 1018, 968, 1039, 1040, 1019,
523
/* 240 */ 1020, 1022, 1024, 1025, 1027, 1021, 1033, 1034, 1035, 1036,
524
/* 250 */ 979, 983, 1038, 1041, 1042, 1044, 1045, 1069, 1072, 1071,
525
/* 260 */ 1075, 1077, 1078, 1080, 1028, 1037, 1083, 1084, 1051, 1053,
526
/* 270 */ 1043, 1046, 1089, 1055, 1056, 1057, 1061, 1052, 1063, 1047,
527
/* 280 */ 1093, 1048, 1049, 1098, 1099, 1050, 1094, 1081, 1085, 1062,
528
/* 290 */ 1054, 1064,
530
static const YYACTIONTYPE yy_default[] = {
531
/* 0 */ 595, 820, 902, 710, 902, 820, 902, 902, 848, 714,
532
/* 10 */ 877, 818, 902, 902, 902, 902, 792, 902, 848, 902,
533
/* 20 */ 626, 848, 848, 743, 902, 902, 902, 902, 902, 902,
534
/* 30 */ 902, 902, 744, 902, 822, 817, 813, 815, 814, 821,
535
/* 40 */ 745, 734, 741, 748, 726, 861, 750, 751, 757, 758,
536
/* 50 */ 878, 876, 780, 779, 798, 902, 902, 902, 902, 902,
537
/* 60 */ 902, 902, 902, 902, 902, 902, 902, 902, 902, 902,
538
/* 70 */ 902, 902, 902, 902, 902, 902, 902, 902, 902, 902,
539
/* 80 */ 902, 902, 902, 902, 902, 902, 902, 902, 902, 902,
540
/* 90 */ 902, 902, 902, 902, 902, 902, 782, 804, 781, 791,
541
/* 100 */ 619, 783, 784, 679, 614, 902, 902, 902, 902, 902,
542
/* 110 */ 902, 902, 785, 902, 786, 799, 800, 801, 902, 902,
543
/* 120 */ 902, 902, 902, 902, 595, 710, 902, 710, 902, 902,
544
/* 130 */ 902, 902, 902, 902, 902, 902, 902, 902, 902, 902,
545
/* 140 */ 902, 902, 902, 902, 902, 902, 704, 714, 895, 902,
546
/* 150 */ 902, 670, 902, 902, 902, 902, 902, 902, 902, 902,
547
/* 160 */ 902, 902, 602, 600, 902, 702, 902, 902, 628, 902,
548
/* 170 */ 902, 712, 902, 902, 717, 718, 902, 902, 902, 902,
549
/* 180 */ 902, 902, 902, 616, 902, 902, 691, 902, 854, 902,
550
/* 190 */ 902, 902, 868, 902, 902, 902, 866, 902, 902, 902,
551
/* 200 */ 693, 753, 834, 902, 881, 883, 902, 902, 702, 711,
552
/* 210 */ 902, 902, 902, 816, 737, 737, 737, 649, 737, 902,
553
/* 220 */ 737, 902, 652, 747, 747, 599, 599, 599, 599, 669,
554
/* 230 */ 902, 747, 738, 740, 730, 742, 902, 719, 719, 727,
555
/* 240 */ 729, 727, 729, 681, 681, 666, 681, 652, 681, 826,
556
/* 250 */ 831, 831, 666, 681, 681, 681, 826, 611, 719, 611,
557
/* 260 */ 719, 611, 719, 719, 858, 860, 611, 719, 683, 683,
558
/* 270 */ 759, 747, 719, 690, 690, 690, 690, 747, 683, 759,
559
/* 280 */ 719, 880, 880, 719, 719, 888, 636, 654, 654, 863,
560
/* 290 */ 895, 900, 902, 902, 902, 902, 766, 902, 902, 902,
561
/* 300 */ 902, 902, 902, 902, 902, 902, 902, 902, 902, 902,
562
/* 310 */ 841, 902, 902, 902, 902, 771, 767, 902, 768, 902,
563
/* 320 */ 696, 902, 902, 902, 902, 902, 902, 902, 902, 902,
564
/* 330 */ 902, 819, 902, 731, 902, 739, 902, 902, 902, 902,
565
/* 340 */ 902, 902, 902, 902, 902, 902, 902, 902, 902, 902,
566
/* 350 */ 902, 902, 902, 902, 902, 902, 902, 902, 902, 902,
567
/* 360 */ 856, 857, 902, 902, 902, 902, 902, 902, 902, 902,
568
/* 370 */ 902, 902, 902, 902, 902, 902, 902, 902, 902, 902,
569
/* 380 */ 902, 902, 902, 902, 887, 902, 902, 890, 596, 902,
570
/* 390 */ 590, 593, 592, 594, 598, 601, 623, 624, 625, 603,
571
/* 400 */ 604, 605, 606, 607, 608, 609, 615, 617, 635, 637,
572
/* 410 */ 621, 639, 700, 701, 763, 694, 695, 699, 622, 774,
573
/* 420 */ 765, 769, 770, 772, 773, 787, 788, 790, 796, 803,
574
/* 430 */ 806, 789, 794, 795, 797, 802, 805, 697, 698, 809,
575
/* 440 */ 629, 630, 633, 634, 844, 846, 845, 847, 632, 631,
576
/* 450 */ 775, 778, 811, 812, 869, 870, 871, 872, 873, 807,
577
/* 460 */ 720, 810, 793, 732, 735, 736, 733, 703, 713, 722,
578
/* 470 */ 723, 724, 725, 708, 709, 715, 728, 761, 762, 716,
579
/* 480 */ 705, 706, 707, 808, 764, 776, 777, 640, 641, 771,
580
/* 490 */ 642, 643, 644, 682, 685, 686, 687, 645, 664, 667,
581
/* 500 */ 668, 646, 653, 647, 648, 655, 656, 657, 660, 661,
582
/* 510 */ 662, 663, 658, 659, 827, 828, 832, 830, 829, 650,
583
/* 520 */ 651, 665, 638, 627, 620, 671, 674, 675, 676, 677,
584
/* 530 */ 678, 680, 672, 673, 618, 610, 612, 721, 850, 859,
585
/* 540 */ 855, 851, 852, 853, 613, 823, 824, 684, 755, 756,
586
/* 550 */ 849, 862, 864, 760, 865, 867, 892, 688, 689, 692,
587
/* 560 */ 833, 874, 746, 749, 752, 754, 835, 836, 837, 838,
588
/* 570 */ 839, 842, 843, 840, 875, 879, 882, 884, 885, 886,
589
/* 580 */ 889, 891, 896, 897, 898, 901, 899, 597, 591,
591
#define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0]))
593
/* The next table maps tokens into fallback tokens. If a construct
594
** like the following:
596
** %fallback ID X Y Z.
598
** appears in the grammar, then ID becomes a fallback token for X, Y,
599
** and Z. Whenever one of the tokens X, Y, or Z is input to the parser
600
** but it does not parse, the type of the token is changed to ID and
601
** the parse is retried before an error is thrown.
604
static const YYCODETYPE yyFallback[] = {
605
0, /* $ => nothing */
606
0, /* SEMI => nothing */
607
23, /* EXPLAIN => ID */
608
23, /* QUERY => ID */
610
23, /* BEGIN => ID */
611
0, /* TRANSACTION => nothing */
612
23, /* DEFERRED => ID */
613
23, /* IMMEDIATE => ID */
614
23, /* EXCLUSIVE => ID */
615
0, /* COMMIT => nothing */
617
0, /* ROLLBACK => nothing */
618
0, /* CREATE => nothing */
619
0, /* TABLE => nothing */
621
0, /* NOT => nothing */
622
0, /* EXISTS => nothing */
624
0, /* LP => nothing */
625
0, /* RP => nothing */
626
0, /* AS => nothing */
627
0, /* COMMA => nothing */
628
0, /* ID => nothing */
629
23, /* ABORT => ID */
630
23, /* AFTER => ID */
631
23, /* ANALYZE => ID */
633
23, /* ATTACH => ID */
634
23, /* BEFORE => ID */
635
23, /* CASCADE => ID */
637
23, /* CONFLICT => ID */
638
23, /* DATABASE => ID */
640
23, /* DETACH => ID */
644
23, /* IGNORE => ID */
645
23, /* INITIALLY => ID */
646
23, /* INSTEAD => ID */
647
23, /* LIKE_KW => ID */
648
23, /* MATCH => ID */
651
23, /* OFFSET => ID */
652
23, /* PRAGMA => ID */
653
23, /* RAISE => ID */
654
23, /* REPLACE => ID */
655
23, /* RESTRICT => ID */
657
23, /* TRIGGER => ID */
658
23, /* VACUUM => ID */
660
23, /* VIRTUAL => ID */
661
23, /* REINDEX => ID */
662
23, /* RENAME => ID */
663
23, /* CTIME_KW => ID */
664
0, /* ANY => nothing */
665
0, /* OR => nothing */
666
0, /* AND => nothing */
667
0, /* IS => nothing */
668
0, /* BETWEEN => nothing */
669
0, /* IN => nothing */
670
0, /* ISNULL => nothing */
671
0, /* NOTNULL => nothing */
672
0, /* NE => nothing */
673
0, /* EQ => nothing */
674
0, /* GT => nothing */
675
0, /* LE => nothing */
676
0, /* LT => nothing */
677
0, /* GE => nothing */
678
0, /* ESCAPE => nothing */
679
0, /* BITAND => nothing */
680
0, /* BITOR => nothing */
681
0, /* LSHIFT => nothing */
682
0, /* RSHIFT => nothing */
683
0, /* PLUS => nothing */
684
0, /* MINUS => nothing */
685
0, /* STAR => nothing */
686
0, /* SLASH => nothing */
687
0, /* REM => nothing */
688
0, /* CONCAT => nothing */
689
0, /* COLLATE => nothing */
690
0, /* UMINUS => nothing */
691
0, /* UPLUS => nothing */
692
0, /* BITNOT => nothing */
693
0, /* STRING => nothing */
694
0, /* JOIN_KW => nothing */
695
0, /* CONSTRAINT => nothing */
696
0, /* DEFAULT => nothing */
697
0, /* NULL => nothing */
698
0, /* PRIMARY => nothing */
699
0, /* UNIQUE => nothing */
700
0, /* CHECK => nothing */
701
0, /* REFERENCES => nothing */
702
0, /* AUTOINCR => nothing */
703
0, /* ON => nothing */
704
0, /* DELETE => nothing */
705
0, /* UPDATE => nothing */
706
0, /* INSERT => nothing */
707
0, /* SET => nothing */
708
0, /* DEFERRABLE => nothing */
709
0, /* FOREIGN => nothing */
710
0, /* DROP => nothing */
711
0, /* UNION => nothing */
712
0, /* ALL => nothing */
713
0, /* EXCEPT => nothing */
714
0, /* INTERSECT => nothing */
715
0, /* SELECT => nothing */
716
0, /* DISTINCT => nothing */
717
0, /* DOT => nothing */
718
0, /* FROM => nothing */
719
0, /* JOIN => nothing */
720
0, /* USING => nothing */
721
0, /* ORDER => nothing */
722
0, /* BY => nothing */
723
0, /* GROUP => nothing */
724
0, /* HAVING => nothing */
725
0, /* LIMIT => nothing */
726
0, /* WHERE => nothing */
727
0, /* INTO => nothing */
728
0, /* VALUES => nothing */
729
0, /* INTEGER => nothing */
730
0, /* FLOAT => nothing */
731
0, /* BLOB => nothing */
732
0, /* REGISTER => nothing */
733
0, /* VARIABLE => nothing */
734
0, /* CASE => nothing */
735
0, /* WHEN => nothing */
736
0, /* THEN => nothing */
737
0, /* ELSE => nothing */
738
0, /* INDEX => nothing */
739
0, /* ALTER => nothing */
740
0, /* TO => nothing */
741
0, /* ADD => nothing */
742
0, /* COLUMNKW => nothing */
744
#endif /* YYFALLBACK */
746
/* The following structure represents a single element of the
747
** parser's stack. Information stored includes:
749
** + The state number for the parser at this level of the stack.
751
** + The value of the token stored at this level of the stack.
752
** (In other words, the "major" token.)
754
** + The semantic value stored at this level of the stack. This is
755
** the information used by the action routines in the grammar.
756
** It is sometimes called the "minor" token.
758
struct yyStackEntry {
759
YYACTIONTYPE stateno; /* The state-number */
760
YYCODETYPE major; /* The major token value. This is the code
761
** number for the token at this stack level */
762
YYMINORTYPE minor; /* The user-supplied minor token value. This
763
** is the value of the token */
765
typedef struct yyStackEntry yyStackEntry;
767
/* The state of the parser is completely contained in an instance of
768
** the following structure */
770
int yyidx; /* Index of top element in stack */
771
#ifdef YYTRACKMAXSTACKDEPTH
772
int yyidxMax; /* Maximum value of yyidx */
774
int yyerrcnt; /* Shifts left before out of the error */
775
sqlite3ParserARG_SDECL /* A place to hold %extra_argument */
777
int yystksz; /* Current side of the stack */
778
yyStackEntry *yystack; /* The parser's stack */
780
yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */
783
typedef struct yyParser yyParser;
787
static FILE *yyTraceFILE = 0;
788
static char *yyTracePrompt = 0;
793
** Turn parser tracing on by giving a stream to which to write the trace
794
** and a prompt to preface each trace message. Tracing is turned off
795
** by making either argument NULL
799
** <li> A FILE* to which trace output should be written.
800
** If NULL, then tracing is turned off.
801
** <li> A prefix string written at the beginning of every
802
** line of trace output. If NULL, then tracing is
809
void sqlite3ParserTrace(FILE *TraceFILE, char *zTracePrompt){
810
yyTraceFILE = TraceFILE;
811
yyTracePrompt = zTracePrompt;
812
if( yyTraceFILE==0 ) yyTracePrompt = 0;
813
else if( yyTracePrompt==0 ) yyTraceFILE = 0;
818
/* For tracing shifts, the names of all terminals and nonterminals
819
** are required. The following table supplies these names */
820
static const char *const yyTokenName[] = {
821
"$", "SEMI", "EXPLAIN", "QUERY",
822
"PLAN", "BEGIN", "TRANSACTION", "DEFERRED",
823
"IMMEDIATE", "EXCLUSIVE", "COMMIT", "END",
824
"ROLLBACK", "CREATE", "TABLE", "IF",
825
"NOT", "EXISTS", "TEMP", "LP",
826
"RP", "AS", "COMMA", "ID",
827
"ABORT", "AFTER", "ANALYZE", "ASC",
828
"ATTACH", "BEFORE", "CASCADE", "CAST",
829
"CONFLICT", "DATABASE", "DESC", "DETACH",
830
"EACH", "FAIL", "FOR", "IGNORE",
831
"INITIALLY", "INSTEAD", "LIKE_KW", "MATCH",
832
"KEY", "OF", "OFFSET", "PRAGMA",
833
"RAISE", "REPLACE", "RESTRICT", "ROW",
834
"TRIGGER", "VACUUM", "VIEW", "VIRTUAL",
835
"REINDEX", "RENAME", "CTIME_KW", "ANY",
836
"OR", "AND", "IS", "BETWEEN",
837
"IN", "ISNULL", "NOTNULL", "NE",
838
"EQ", "GT", "LE", "LT",
839
"GE", "ESCAPE", "BITAND", "BITOR",
840
"LSHIFT", "RSHIFT", "PLUS", "MINUS",
841
"STAR", "SLASH", "REM", "CONCAT",
842
"COLLATE", "UMINUS", "UPLUS", "BITNOT",
843
"STRING", "JOIN_KW", "CONSTRAINT", "DEFAULT",
844
"NULL", "PRIMARY", "UNIQUE", "CHECK",
845
"REFERENCES", "AUTOINCR", "ON", "DELETE",
846
"UPDATE", "INSERT", "SET", "DEFERRABLE",
847
"FOREIGN", "DROP", "UNION", "ALL",
848
"EXCEPT", "INTERSECT", "SELECT", "DISTINCT",
849
"DOT", "FROM", "JOIN", "USING",
850
"ORDER", "BY", "GROUP", "HAVING",
851
"LIMIT", "WHERE", "INTO", "VALUES",
852
"INTEGER", "FLOAT", "BLOB", "REGISTER",
853
"VARIABLE", "CASE", "WHEN", "THEN",
854
"ELSE", "INDEX", "ALTER", "TO",
855
"ADD", "COLUMNKW", "error", "input",
856
"cmdlist", "ecmd", "cmdx", "cmd",
857
"explain", "transtype", "trans_opt", "nm",
858
"create_table", "create_table_args", "temp", "ifnotexists",
859
"dbnm", "columnlist", "conslist_opt", "select",
860
"column", "columnid", "type", "carglist",
861
"id", "ids", "typetoken", "typename",
862
"signed", "plus_num", "minus_num", "carg",
863
"ccons", "term", "expr", "onconf",
864
"sortorder", "autoinc", "idxlist_opt", "refargs",
865
"defer_subclause", "refarg", "refact", "init_deferred_pred_opt",
866
"conslist", "tcons", "idxlist", "defer_subclause_opt",
867
"orconf", "resolvetype", "raisetype", "ifexists",
868
"fullname", "oneselect", "multiselect_op", "distinct",
869
"selcollist", "from", "where_opt", "groupby_opt",
870
"having_opt", "orderby_opt", "limit_opt", "sclp",
871
"as", "seltablist", "stl_prefix", "joinop",
872
"on_opt", "using_opt", "seltablist_paren", "joinop2",
873
"inscollist", "sortlist", "sortitem", "nexprlist",
874
"setlist", "insert_cmd", "inscollist_opt", "itemlist",
875
"exprlist", "likeop", "escape", "between_op",
876
"in_op", "case_operand", "case_exprlist", "case_else",
877
"uniqueflag", "idxitem", "collate", "nmnum",
878
"plus_opt", "number", "trigger_decl", "trigger_cmd_list",
879
"trigger_time", "trigger_event", "foreach_clause", "when_clause",
880
"trigger_cmd", "database_kw_opt", "key_opt", "add_column_fullname",
881
"kwcolumn_opt", "create_vtab", "vtabarglist", "vtabarg",
882
"vtabargtoken", "lp", "anylist",
887
/* For tracing reduce actions, the names of all rules are required.
889
static const char *const yyRuleName[] = {
890
/* 0 */ "input ::= cmdlist",
891
/* 1 */ "cmdlist ::= cmdlist ecmd",
892
/* 2 */ "cmdlist ::= ecmd",
893
/* 3 */ "cmdx ::= cmd",
894
/* 4 */ "ecmd ::= SEMI",
895
/* 5 */ "ecmd ::= explain cmdx SEMI",
896
/* 6 */ "explain ::=",
897
/* 7 */ "explain ::= EXPLAIN",
898
/* 8 */ "explain ::= EXPLAIN QUERY PLAN",
899
/* 9 */ "cmd ::= BEGIN transtype trans_opt",
900
/* 10 */ "trans_opt ::=",
901
/* 11 */ "trans_opt ::= TRANSACTION",
902
/* 12 */ "trans_opt ::= TRANSACTION nm",
903
/* 13 */ "transtype ::=",
904
/* 14 */ "transtype ::= DEFERRED",
905
/* 15 */ "transtype ::= IMMEDIATE",
906
/* 16 */ "transtype ::= EXCLUSIVE",
907
/* 17 */ "cmd ::= COMMIT trans_opt",
908
/* 18 */ "cmd ::= END trans_opt",
909
/* 19 */ "cmd ::= ROLLBACK trans_opt",
910
/* 20 */ "cmd ::= create_table create_table_args",
911
/* 21 */ "create_table ::= CREATE temp TABLE ifnotexists nm dbnm",
912
/* 22 */ "ifnotexists ::=",
913
/* 23 */ "ifnotexists ::= IF NOT EXISTS",
914
/* 24 */ "temp ::= TEMP",
916
/* 26 */ "create_table_args ::= LP columnlist conslist_opt RP",
917
/* 27 */ "create_table_args ::= AS select",
918
/* 28 */ "columnlist ::= columnlist COMMA column",
919
/* 29 */ "columnlist ::= column",
920
/* 30 */ "column ::= columnid type carglist",
921
/* 31 */ "columnid ::= nm",
922
/* 32 */ "id ::= ID",
923
/* 33 */ "ids ::= ID|STRING",
924
/* 34 */ "nm ::= ID",
925
/* 35 */ "nm ::= STRING",
926
/* 36 */ "nm ::= JOIN_KW",
928
/* 38 */ "type ::= typetoken",
929
/* 39 */ "typetoken ::= typename",
930
/* 40 */ "typetoken ::= typename LP signed RP",
931
/* 41 */ "typetoken ::= typename LP signed COMMA signed RP",
932
/* 42 */ "typename ::= ids",
933
/* 43 */ "typename ::= typename ids",
934
/* 44 */ "signed ::= plus_num",
935
/* 45 */ "signed ::= minus_num",
936
/* 46 */ "carglist ::= carglist carg",
937
/* 47 */ "carglist ::=",
938
/* 48 */ "carg ::= CONSTRAINT nm ccons",
939
/* 49 */ "carg ::= ccons",
940
/* 50 */ "ccons ::= DEFAULT term",
941
/* 51 */ "ccons ::= DEFAULT LP expr RP",
942
/* 52 */ "ccons ::= DEFAULT PLUS term",
943
/* 53 */ "ccons ::= DEFAULT MINUS term",
944
/* 54 */ "ccons ::= DEFAULT id",
945
/* 55 */ "ccons ::= NULL onconf",
946
/* 56 */ "ccons ::= NOT NULL onconf",
947
/* 57 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
948
/* 58 */ "ccons ::= UNIQUE onconf",
949
/* 59 */ "ccons ::= CHECK LP expr RP",
950
/* 60 */ "ccons ::= REFERENCES nm idxlist_opt refargs",
951
/* 61 */ "ccons ::= defer_subclause",
952
/* 62 */ "ccons ::= COLLATE ids",
953
/* 63 */ "autoinc ::=",
954
/* 64 */ "autoinc ::= AUTOINCR",
955
/* 65 */ "refargs ::=",
956
/* 66 */ "refargs ::= refargs refarg",
957
/* 67 */ "refarg ::= MATCH nm",
958
/* 68 */ "refarg ::= ON DELETE refact",
959
/* 69 */ "refarg ::= ON UPDATE refact",
960
/* 70 */ "refarg ::= ON INSERT refact",
961
/* 71 */ "refact ::= SET NULL",
962
/* 72 */ "refact ::= SET DEFAULT",
963
/* 73 */ "refact ::= CASCADE",
964
/* 74 */ "refact ::= RESTRICT",
965
/* 75 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
966
/* 76 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
967
/* 77 */ "init_deferred_pred_opt ::=",
968
/* 78 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
969
/* 79 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
970
/* 80 */ "conslist_opt ::=",
971
/* 81 */ "conslist_opt ::= COMMA conslist",
972
/* 82 */ "conslist ::= conslist COMMA tcons",
973
/* 83 */ "conslist ::= conslist tcons",
974
/* 84 */ "conslist ::= tcons",
975
/* 85 */ "tcons ::= CONSTRAINT nm",
976
/* 86 */ "tcons ::= PRIMARY KEY LP idxlist autoinc RP onconf",
977
/* 87 */ "tcons ::= UNIQUE LP idxlist RP onconf",
978
/* 88 */ "tcons ::= CHECK LP expr RP onconf",
979
/* 89 */ "tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt",
980
/* 90 */ "defer_subclause_opt ::=",
981
/* 91 */ "defer_subclause_opt ::= defer_subclause",
982
/* 92 */ "onconf ::=",
983
/* 93 */ "onconf ::= ON CONFLICT resolvetype",
984
/* 94 */ "orconf ::=",
985
/* 95 */ "orconf ::= OR resolvetype",
986
/* 96 */ "resolvetype ::= raisetype",
987
/* 97 */ "resolvetype ::= IGNORE",
988
/* 98 */ "resolvetype ::= REPLACE",
989
/* 99 */ "cmd ::= DROP TABLE ifexists fullname",
990
/* 100 */ "ifexists ::= IF EXISTS",
991
/* 101 */ "ifexists ::=",
992
/* 102 */ "cmd ::= CREATE temp VIEW ifnotexists nm dbnm AS select",
993
/* 103 */ "cmd ::= DROP VIEW ifexists fullname",
994
/* 104 */ "cmd ::= select",
995
/* 105 */ "select ::= oneselect",
996
/* 106 */ "select ::= select multiselect_op oneselect",
997
/* 107 */ "multiselect_op ::= UNION",
998
/* 108 */ "multiselect_op ::= UNION ALL",
999
/* 109 */ "multiselect_op ::= EXCEPT|INTERSECT",
1000
/* 110 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
1001
/* 111 */ "distinct ::= DISTINCT",
1002
/* 112 */ "distinct ::= ALL",
1003
/* 113 */ "distinct ::=",
1004
/* 114 */ "sclp ::= selcollist COMMA",
1005
/* 115 */ "sclp ::=",
1006
/* 116 */ "selcollist ::= sclp expr as",
1007
/* 117 */ "selcollist ::= sclp STAR",
1008
/* 118 */ "selcollist ::= sclp nm DOT STAR",
1009
/* 119 */ "as ::= AS nm",
1010
/* 120 */ "as ::= ids",
1012
/* 122 */ "from ::=",
1013
/* 123 */ "from ::= FROM seltablist",
1014
/* 124 */ "stl_prefix ::= seltablist joinop",
1015
/* 125 */ "stl_prefix ::=",
1016
/* 126 */ "seltablist ::= stl_prefix nm dbnm as on_opt using_opt",
1017
/* 127 */ "seltablist ::= stl_prefix LP seltablist_paren RP as on_opt using_opt",
1018
/* 128 */ "seltablist_paren ::= select",
1019
/* 129 */ "seltablist_paren ::= seltablist",
1020
/* 130 */ "dbnm ::=",
1021
/* 131 */ "dbnm ::= DOT nm",
1022
/* 132 */ "fullname ::= nm dbnm",
1023
/* 133 */ "joinop ::= COMMA|JOIN",
1024
/* 134 */ "joinop ::= JOIN_KW JOIN",
1025
/* 135 */ "joinop ::= JOIN_KW nm JOIN",
1026
/* 136 */ "joinop ::= JOIN_KW nm nm JOIN",
1027
/* 137 */ "on_opt ::= ON expr",
1028
/* 138 */ "on_opt ::=",
1029
/* 139 */ "using_opt ::= USING LP inscollist RP",
1030
/* 140 */ "using_opt ::=",
1031
/* 141 */ "orderby_opt ::=",
1032
/* 142 */ "orderby_opt ::= ORDER BY sortlist",
1033
/* 143 */ "sortlist ::= sortlist COMMA sortitem sortorder",
1034
/* 144 */ "sortlist ::= sortitem sortorder",
1035
/* 145 */ "sortitem ::= expr",
1036
/* 146 */ "sortorder ::= ASC",
1037
/* 147 */ "sortorder ::= DESC",
1038
/* 148 */ "sortorder ::=",
1039
/* 149 */ "groupby_opt ::=",
1040
/* 150 */ "groupby_opt ::= GROUP BY nexprlist",
1041
/* 151 */ "having_opt ::=",
1042
/* 152 */ "having_opt ::= HAVING expr",
1043
/* 153 */ "limit_opt ::=",
1044
/* 154 */ "limit_opt ::= LIMIT expr",
1045
/* 155 */ "limit_opt ::= LIMIT expr OFFSET expr",
1046
/* 156 */ "limit_opt ::= LIMIT expr COMMA expr",
1047
/* 157 */ "cmd ::= DELETE FROM fullname where_opt",
1048
/* 158 */ "where_opt ::=",
1049
/* 159 */ "where_opt ::= WHERE expr",
1050
/* 160 */ "cmd ::= UPDATE orconf fullname SET setlist where_opt",
1051
/* 161 */ "setlist ::= setlist COMMA nm EQ expr",
1052
/* 162 */ "setlist ::= nm EQ expr",
1053
/* 163 */ "cmd ::= insert_cmd INTO fullname inscollist_opt VALUES LP itemlist RP",
1054
/* 164 */ "cmd ::= insert_cmd INTO fullname inscollist_opt select",
1055
/* 165 */ "cmd ::= insert_cmd INTO fullname inscollist_opt DEFAULT VALUES",
1056
/* 166 */ "insert_cmd ::= INSERT orconf",
1057
/* 167 */ "insert_cmd ::= REPLACE",
1058
/* 168 */ "itemlist ::= itemlist COMMA expr",
1059
/* 169 */ "itemlist ::= expr",
1060
/* 170 */ "inscollist_opt ::=",
1061
/* 171 */ "inscollist_opt ::= LP inscollist RP",
1062
/* 172 */ "inscollist ::= inscollist COMMA nm",
1063
/* 173 */ "inscollist ::= nm",
1064
/* 174 */ "expr ::= term",
1065
/* 175 */ "expr ::= LP expr RP",
1066
/* 176 */ "term ::= NULL",
1067
/* 177 */ "expr ::= ID",
1068
/* 178 */ "expr ::= JOIN_KW",
1069
/* 179 */ "expr ::= nm DOT nm",
1070
/* 180 */ "expr ::= nm DOT nm DOT nm",
1071
/* 181 */ "term ::= INTEGER|FLOAT|BLOB",
1072
/* 182 */ "term ::= STRING",
1073
/* 183 */ "expr ::= REGISTER",
1074
/* 184 */ "expr ::= VARIABLE",
1075
/* 185 */ "expr ::= expr COLLATE ids",
1076
/* 186 */ "expr ::= CAST LP expr AS typetoken RP",
1077
/* 187 */ "expr ::= ID LP distinct exprlist RP",
1078
/* 188 */ "expr ::= ID LP STAR RP",
1079
/* 189 */ "term ::= CTIME_KW",
1080
/* 190 */ "expr ::= expr AND expr",
1081
/* 191 */ "expr ::= expr OR expr",
1082
/* 192 */ "expr ::= expr LT|GT|GE|LE expr",
1083
/* 193 */ "expr ::= expr EQ|NE expr",
1084
/* 194 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
1085
/* 195 */ "expr ::= expr PLUS|MINUS expr",
1086
/* 196 */ "expr ::= expr STAR|SLASH|REM expr",
1087
/* 197 */ "expr ::= expr CONCAT expr",
1088
/* 198 */ "likeop ::= LIKE_KW",
1089
/* 199 */ "likeop ::= NOT LIKE_KW",
1090
/* 200 */ "likeop ::= MATCH",
1091
/* 201 */ "likeop ::= NOT MATCH",
1092
/* 202 */ "escape ::= ESCAPE expr",
1093
/* 203 */ "escape ::=",
1094
/* 204 */ "expr ::= expr likeop expr escape",
1095
/* 205 */ "expr ::= expr ISNULL|NOTNULL",
1096
/* 206 */ "expr ::= expr IS NULL",
1097
/* 207 */ "expr ::= expr NOT NULL",
1098
/* 208 */ "expr ::= expr IS NOT NULL",
1099
/* 209 */ "expr ::= NOT expr",
1100
/* 210 */ "expr ::= BITNOT expr",
1101
/* 211 */ "expr ::= MINUS expr",
1102
/* 212 */ "expr ::= PLUS expr",
1103
/* 213 */ "between_op ::= BETWEEN",
1104
/* 214 */ "between_op ::= NOT BETWEEN",
1105
/* 215 */ "expr ::= expr between_op expr AND expr",
1106
/* 216 */ "in_op ::= IN",
1107
/* 217 */ "in_op ::= NOT IN",
1108
/* 218 */ "expr ::= expr in_op LP exprlist RP",
1109
/* 219 */ "expr ::= LP select RP",
1110
/* 220 */ "expr ::= expr in_op LP select RP",
1111
/* 221 */ "expr ::= expr in_op nm dbnm",
1112
/* 222 */ "expr ::= EXISTS LP select RP",
1113
/* 223 */ "expr ::= CASE case_operand case_exprlist case_else END",
1114
/* 224 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
1115
/* 225 */ "case_exprlist ::= WHEN expr THEN expr",
1116
/* 226 */ "case_else ::= ELSE expr",
1117
/* 227 */ "case_else ::=",
1118
/* 228 */ "case_operand ::= expr",
1119
/* 229 */ "case_operand ::=",
1120
/* 230 */ "exprlist ::= nexprlist",
1121
/* 231 */ "exprlist ::=",
1122
/* 232 */ "nexprlist ::= nexprlist COMMA expr",
1123
/* 233 */ "nexprlist ::= expr",
1124
/* 234 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP",
1125
/* 235 */ "uniqueflag ::= UNIQUE",
1126
/* 236 */ "uniqueflag ::=",
1127
/* 237 */ "idxlist_opt ::=",
1128
/* 238 */ "idxlist_opt ::= LP idxlist RP",
1129
/* 239 */ "idxlist ::= idxlist COMMA idxitem collate sortorder",
1130
/* 240 */ "idxlist ::= idxitem collate sortorder",
1131
/* 241 */ "idxitem ::= nm",
1132
/* 242 */ "collate ::=",
1133
/* 243 */ "collate ::= COLLATE ids",
1134
/* 244 */ "cmd ::= DROP INDEX ifexists fullname",
1135
/* 245 */ "cmd ::= VACUUM",
1136
/* 246 */ "cmd ::= VACUUM nm",
1137
/* 247 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
1138
/* 248 */ "cmd ::= PRAGMA nm dbnm EQ ON",
1139
/* 249 */ "cmd ::= PRAGMA nm dbnm EQ DELETE",
1140
/* 250 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
1141
/* 251 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
1142
/* 252 */ "cmd ::= PRAGMA nm dbnm",
1143
/* 253 */ "nmnum ::= plus_num",
1144
/* 254 */ "nmnum ::= nm",
1145
/* 255 */ "plus_num ::= plus_opt number",
1146
/* 256 */ "minus_num ::= MINUS number",
1147
/* 257 */ "number ::= INTEGER|FLOAT",
1148
/* 258 */ "plus_opt ::= PLUS",
1149
/* 259 */ "plus_opt ::=",
1150
/* 260 */ "cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END",
1151
/* 261 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
1152
/* 262 */ "trigger_time ::= BEFORE",
1153
/* 263 */ "trigger_time ::= AFTER",
1154
/* 264 */ "trigger_time ::= INSTEAD OF",
1155
/* 265 */ "trigger_time ::=",
1156
/* 266 */ "trigger_event ::= DELETE|INSERT",
1157
/* 267 */ "trigger_event ::= UPDATE",
1158
/* 268 */ "trigger_event ::= UPDATE OF inscollist",
1159
/* 269 */ "foreach_clause ::=",
1160
/* 270 */ "foreach_clause ::= FOR EACH ROW",
1161
/* 271 */ "when_clause ::=",
1162
/* 272 */ "when_clause ::= WHEN expr",
1163
/* 273 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
1164
/* 274 */ "trigger_cmd_list ::=",
1165
/* 275 */ "trigger_cmd ::= UPDATE orconf nm SET setlist where_opt",
1166
/* 276 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt VALUES LP itemlist RP",
1167
/* 277 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt select",
1168
/* 278 */ "trigger_cmd ::= DELETE FROM nm where_opt",
1169
/* 279 */ "trigger_cmd ::= select",
1170
/* 280 */ "expr ::= RAISE LP IGNORE RP",
1171
/* 281 */ "expr ::= RAISE LP raisetype COMMA nm RP",
1172
/* 282 */ "raisetype ::= ROLLBACK",
1173
/* 283 */ "raisetype ::= ABORT",
1174
/* 284 */ "raisetype ::= FAIL",
1175
/* 285 */ "cmd ::= DROP TRIGGER ifexists fullname",
1176
/* 286 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
1177
/* 287 */ "cmd ::= DETACH database_kw_opt expr",
1178
/* 288 */ "key_opt ::=",
1179
/* 289 */ "key_opt ::= KEY expr",
1180
/* 290 */ "database_kw_opt ::= DATABASE",
1181
/* 291 */ "database_kw_opt ::=",
1182
/* 292 */ "cmd ::= REINDEX",
1183
/* 293 */ "cmd ::= REINDEX nm dbnm",
1184
/* 294 */ "cmd ::= ANALYZE",
1185
/* 295 */ "cmd ::= ANALYZE nm dbnm",
1186
/* 296 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
1187
/* 297 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt column",
1188
/* 298 */ "add_column_fullname ::= fullname",
1189
/* 299 */ "kwcolumn_opt ::=",
1190
/* 300 */ "kwcolumn_opt ::= COLUMNKW",
1191
/* 301 */ "cmd ::= create_vtab",
1192
/* 302 */ "cmd ::= create_vtab LP vtabarglist RP",
1193
/* 303 */ "create_vtab ::= CREATE VIRTUAL TABLE nm dbnm USING nm",
1194
/* 304 */ "vtabarglist ::= vtabarg",
1195
/* 305 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
1196
/* 306 */ "vtabarg ::=",
1197
/* 307 */ "vtabarg ::= vtabarg vtabargtoken",
1198
/* 308 */ "vtabargtoken ::= ANY",
1199
/* 309 */ "vtabargtoken ::= lp anylist RP",
1200
/* 310 */ "lp ::= LP",
1201
/* 311 */ "anylist ::=",
1202
/* 312 */ "anylist ::= anylist ANY",
1209
** Try to increase the size of the parser stack.
1211
static void yyGrowStack(yyParser *p){
1215
newSize = p->yystksz*2 + 100;
1216
pNew = realloc(p->yystack, newSize*sizeof(pNew[0]));
1219
p->yystksz = newSize;
1222
fprintf(yyTraceFILE,"%sStack grows to %d entries!\n",
1223
yyTracePrompt, p->yystksz);
1231
** This function allocates a new parser.
1232
** The only argument is a pointer to a function which works like
1236
** A pointer to the function used to allocate memory.
1239
** A pointer to a parser. This pointer is used in subsequent calls
1240
** to sqlite3Parser and sqlite3ParserFree.
1242
void *sqlite3ParserAlloc(void *(*mallocProc)(size_t)){
1244
pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) );
1246
pParser->yyidx = -1;
1247
#ifdef YYTRACKMAXSTACKDEPTH
1248
pParser->yyidxMax = 0;
1251
yyGrowStack(pParser);
1257
/* The following function deletes the value associated with a
1258
** symbol. The symbol can be either a terminal or nonterminal.
1259
** "yymajor" is the symbol code, and "yypminor" is a pointer to
1262
static void yy_destructor(
1263
yyParser *yypParser, /* The parser */
1264
YYCODETYPE yymajor, /* Type code for object to destroy */
1265
YYMINORTYPE *yypminor /* The object to be destroyed */
1267
sqlite3ParserARG_FETCH;
1269
/* Here is inserted the actions which take place when a
1270
** terminal or non-terminal is destroyed. This can happen
1271
** when the symbol is popped from the stack during a
1272
** reduce or during error processing or when a parser is
1273
** being destroyed before it is finished parsing.
1275
** Note: during a reduce, the only symbols destroyed are those
1276
** which appear on the RHS of the rule, but which are not used
1277
** inside the C code.
1279
case 155: /* select */
1280
case 189: /* oneselect */
1281
case 206: /* seltablist_paren */
1284
sqlite3SelectDelete(pParse->db, (yypminor->yy219));
1285
#line 1289 "parse.c"
1288
case 169: /* term */
1289
case 170: /* expr */
1290
case 194: /* where_opt */
1291
case 196: /* having_opt */
1292
case 204: /* on_opt */
1293
case 210: /* sortitem */
1294
case 218: /* escape */
1295
case 221: /* case_operand */
1296
case 223: /* case_else */
1297
case 235: /* when_clause */
1298
case 238: /* key_opt */
1301
sqlite3ExprDelete(pParse->db, (yypminor->yy172));
1302
#line 1306 "parse.c"
1305
case 174: /* idxlist_opt */
1306
case 182: /* idxlist */
1307
case 192: /* selcollist */
1308
case 195: /* groupby_opt */
1309
case 197: /* orderby_opt */
1310
case 199: /* sclp */
1311
case 209: /* sortlist */
1312
case 211: /* nexprlist */
1313
case 212: /* setlist */
1314
case 215: /* itemlist */
1315
case 216: /* exprlist */
1316
case 222: /* case_exprlist */
1319
sqlite3ExprListDelete(pParse->db, (yypminor->yy174));
1320
#line 1324 "parse.c"
1323
case 188: /* fullname */
1324
case 193: /* from */
1325
case 201: /* seltablist */
1326
case 202: /* stl_prefix */
1329
sqlite3SrcListDelete(pParse->db, (yypminor->yy373));
1330
#line 1334 "parse.c"
1333
case 205: /* using_opt */
1334
case 208: /* inscollist */
1335
case 214: /* inscollist_opt */
1338
sqlite3IdListDelete(pParse->db, (yypminor->yy432));
1339
#line 1343 "parse.c"
1342
case 231: /* trigger_cmd_list */
1343
case 236: /* trigger_cmd */
1346
sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy243));
1347
#line 1351 "parse.c"
1350
case 233: /* trigger_event */
1353
sqlite3IdListDelete(pParse->db, (yypminor->yy370).b);
1354
#line 1358 "parse.c"
1357
default: break; /* If no destructor action specified: do nothing */
1362
** Pop the parser's stack once.
1364
** If there is a destructor routine associated with the token which
1365
** is popped from the stack, then call it.
1367
** Return the major token number for the symbol popped.
1369
static int yy_pop_parser_stack(yyParser *pParser){
1371
yyStackEntry *yytos = &pParser->yystack[pParser->yyidx];
1373
if( pParser->yyidx<0 ) return 0;
1375
if( yyTraceFILE && pParser->yyidx>=0 ){
1376
fprintf(yyTraceFILE,"%sPopping %s\n",
1378
yyTokenName[yytos->major]);
1381
yymajor = yytos->major;
1382
yy_destructor(pParser, yymajor, &yytos->minor);
1388
** Deallocate and destroy a parser. Destructors are all called for
1389
** all stack elements before shutting the parser down.
1393
** <li> A pointer to the parser. This should be a pointer
1394
** obtained from sqlite3ParserAlloc.
1395
** <li> A pointer to a function used to reclaim memory obtained
1399
void sqlite3ParserFree(
1400
void *p, /* The parser to be deleted */
1401
void (*freeProc)(void*) /* Function used to reclaim memory */
1403
yyParser *pParser = (yyParser*)p;
1404
if( pParser==0 ) return;
1405
while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser);
1407
free(pParser->yystack);
1409
(*freeProc)((void*)pParser);
1413
** Return the peak depth of the stack for a parser.
1415
#ifdef YYTRACKMAXSTACKDEPTH
1416
int sqlite3ParserStackPeak(void *p){
1417
yyParser *pParser = (yyParser*)p;
1418
return pParser->yyidxMax;
1423
** Find the appropriate action for a parser given the terminal
1424
** look-ahead token iLookAhead.
1426
** If the look-ahead token is YYNOCODE, then check to see if the action is
1427
** independent of the look-ahead. If it is, return the action, otherwise
1428
** return YY_NO_ACTION.
1430
static int yy_find_shift_action(
1431
yyParser *pParser, /* The parser */
1432
YYCODETYPE iLookAhead /* The look-ahead token */
1435
int stateno = pParser->yystack[pParser->yyidx].stateno;
1437
if( stateno>YY_SHIFT_MAX || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){
1438
return yy_default[stateno];
1440
assert( iLookAhead!=YYNOCODE );
1442
if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
1445
int iFallback; /* Fallback token */
1446
if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
1447
&& (iFallback = yyFallback[iLookAhead])!=0 ){
1450
fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
1451
yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
1454
return yy_find_shift_action(pParser, iFallback);
1459
int j = i - iLookAhead + YYWILDCARD;
1460
if( j>=0 && j<YY_SZ_ACTTAB && yy_lookahead[j]==YYWILDCARD ){
1463
fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n",
1464
yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]);
1467
return yy_action[j];
1470
#endif /* YYWILDCARD */
1472
return yy_default[stateno];
1474
return yy_action[i];
1479
** Find the appropriate action for a parser given the non-terminal
1480
** look-ahead token iLookAhead.
1482
** If the look-ahead token is YYNOCODE, then check to see if the action is
1483
** independent of the look-ahead. If it is, return the action, otherwise
1484
** return YY_NO_ACTION.
1486
static int yy_find_reduce_action(
1487
int stateno, /* Current state number */
1488
YYCODETYPE iLookAhead /* The look-ahead token */
1491
#ifdef YYERRORSYMBOL
1492
if( stateno>YY_REDUCE_MAX ){
1493
return yy_default[stateno];
1496
assert( stateno<=YY_REDUCE_MAX );
1498
i = yy_reduce_ofst[stateno];
1499
assert( i!=YY_REDUCE_USE_DFLT );
1500
assert( iLookAhead!=YYNOCODE );
1502
#ifdef YYERRORSYMBOL
1503
if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
1504
return yy_default[stateno];
1507
assert( i>=0 && i<YY_SZ_ACTTAB );
1508
assert( yy_lookahead[i]==iLookAhead );
1510
return yy_action[i];
1514
** The following routine is called if the stack overflows.
1516
static void yyStackOverflow(yyParser *yypParser, YYMINORTYPE *yypMinor){
1517
sqlite3ParserARG_FETCH;
1521
fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
1524
while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
1525
/* Here code is inserted which will execute if the parser
1526
** stack every overflows */
1529
sqlite3ErrorMsg(pParse, "parser stack overflow");
1530
pParse->parseError = 1;
1531
#line 1536 "parse.c"
1532
sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument var */
1536
** Perform a shift action.
1538
static void yy_shift(
1539
yyParser *yypParser, /* The parser to be shifted */
1540
int yyNewState, /* The new state to shift in */
1541
int yyMajor, /* The major token to shift in */
1542
YYMINORTYPE *yypMinor /* Pointer to the minor token to shift in */
1544
yyStackEntry *yytos;
1546
#ifdef YYTRACKMAXSTACKDEPTH
1547
if( yypParser->yyidx>yypParser->yyidxMax ){
1548
yypParser->yyidxMax = yypParser->yyidx;
1552
if( yypParser->yyidx>=YYSTACKDEPTH ){
1553
yyStackOverflow(yypParser, yypMinor);
1557
if( yypParser->yyidx>=yypParser->yystksz ){
1558
yyGrowStack(yypParser);
1559
if( yypParser->yyidx>=yypParser->yystksz ){
1560
yyStackOverflow(yypParser, yypMinor);
1565
yytos = &yypParser->yystack[yypParser->yyidx];
1566
yytos->stateno = yyNewState;
1567
yytos->major = yyMajor;
1568
yytos->minor = *yypMinor;
1570
if( yyTraceFILE && yypParser->yyidx>0 ){
1572
fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState);
1573
fprintf(yyTraceFILE,"%sStack:",yyTracePrompt);
1574
for(i=1; i<=yypParser->yyidx; i++)
1575
fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]);
1576
fprintf(yyTraceFILE,"\n");
1581
/* The following table contains information about every rule that
1582
** is used during the reduce.
1584
static const struct {
1585
YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */
1586
unsigned char nrhs; /* Number of right-hand side symbols in the rule */
1903
static void yy_accept(yyParser*); /* Forward Declaration */
1906
** Perform a reduce action and the shift that must immediately
1907
** follow the reduce.
1909
static void yy_reduce(
1910
yyParser *yypParser, /* The parser */
1911
int yyruleno /* Number of the rule by which to reduce */
1913
int yygoto; /* The next state */
1914
int yyact; /* The next action */
1915
YYMINORTYPE yygotominor; /* The LHS of the rule reduced */
1916
yyStackEntry *yymsp; /* The top of the parser's stack */
1917
int yysize; /* Amount to pop the stack */
1918
sqlite3ParserARG_FETCH;
1919
yymsp = &yypParser->yystack[yypParser->yyidx];
1921
if( yyTraceFILE && yyruleno>=0
1922
&& yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){
1923
fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
1924
yyRuleName[yyruleno]);
1928
/* Silence complaints from purify about yygotominor being uninitialized
1929
** in some cases when it is copied into the stack after the following
1930
** switch. yygotominor is uninitialized when a rule reduces that does
1931
** not set the value of its left-hand side nonterminal. Leaving the
1932
** value of the nonterminal uninitialized is utterly harmless as long
1933
** as the value is never used. So really the only thing this code
1934
** accomplishes is to quieten purify.
1936
** 2007-01-16: The wireshark project (www.wireshark.org) reports that
1937
** without this code, their parser segfaults. I'm not sure what there
1938
** parser is doing to make this happen. This is the second bug report
1939
** from wireshark this week. Clearly they are stressing Lemon in ways
1940
** that it has not been previously stressed... (SQLite ticket #2172)
1942
/*memset(&yygotominor, 0, sizeof(yygotominor));*/
1943
yygotominor = yyzerominor;
1947
/* Beginning here are the reduction cases. A typical example
1950
** #line <lineno> <grammarfile>
1951
** { ... } // User supplied code
1952
** #line <lineno> <thisfile>
1955
case 0: /* input ::= cmdlist */
1956
case 1: /* cmdlist ::= cmdlist ecmd */
1957
case 2: /* cmdlist ::= ecmd */
1958
case 4: /* ecmd ::= SEMI */
1959
case 5: /* ecmd ::= explain cmdx SEMI */
1960
case 10: /* trans_opt ::= */
1961
case 11: /* trans_opt ::= TRANSACTION */
1962
case 12: /* trans_opt ::= TRANSACTION nm */
1963
case 20: /* cmd ::= create_table create_table_args */
1964
case 28: /* columnlist ::= columnlist COMMA column */
1965
case 29: /* columnlist ::= column */
1966
case 37: /* type ::= */
1967
case 44: /* signed ::= plus_num */
1968
case 45: /* signed ::= minus_num */
1969
case 46: /* carglist ::= carglist carg */
1970
case 47: /* carglist ::= */
1971
case 48: /* carg ::= CONSTRAINT nm ccons */
1972
case 49: /* carg ::= ccons */
1973
case 55: /* ccons ::= NULL onconf */
1974
case 82: /* conslist ::= conslist COMMA tcons */
1975
case 83: /* conslist ::= conslist tcons */
1976
case 84: /* conslist ::= tcons */
1977
case 85: /* tcons ::= CONSTRAINT nm */
1978
case 258: /* plus_opt ::= PLUS */
1979
case 259: /* plus_opt ::= */
1980
case 269: /* foreach_clause ::= */
1981
case 270: /* foreach_clause ::= FOR EACH ROW */
1982
case 290: /* database_kw_opt ::= DATABASE */
1983
case 291: /* database_kw_opt ::= */
1984
case 299: /* kwcolumn_opt ::= */
1985
case 300: /* kwcolumn_opt ::= COLUMNKW */
1986
case 304: /* vtabarglist ::= vtabarg */
1987
case 305: /* vtabarglist ::= vtabarglist COMMA vtabarg */
1988
case 307: /* vtabarg ::= vtabarg vtabargtoken */
1989
case 311: /* anylist ::= */
1993
#line 1998 "parse.c"
1995
case 3: /* cmdx ::= cmd */
1997
{ sqlite3FinishCoding(pParse); }
1998
#line 2003 "parse.c"
2000
case 6: /* explain ::= */
2002
{ sqlite3BeginParse(pParse, 0); }
2003
#line 2008 "parse.c"
2005
case 7: /* explain ::= EXPLAIN */
2007
{ sqlite3BeginParse(pParse, 1); }
2008
#line 2013 "parse.c"
2010
case 8: /* explain ::= EXPLAIN QUERY PLAN */
2012
{ sqlite3BeginParse(pParse, 2); }
2013
#line 2018 "parse.c"
2015
case 9: /* cmd ::= BEGIN transtype trans_opt */
2017
{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy46);}
2018
#line 2023 "parse.c"
2020
case 13: /* transtype ::= */
2022
{yygotominor.yy46 = TK_IMMEDIATE;}
2023
#line 2028 "parse.c"
2025
case 14: /* transtype ::= DEFERRED */
2026
case 15: /* transtype ::= IMMEDIATE */
2027
case 16: /* transtype ::= EXCLUSIVE */
2028
case 107: /* multiselect_op ::= UNION */
2029
case 109: /* multiselect_op ::= EXCEPT|INTERSECT */
2031
{yygotominor.yy46 = yymsp[0].major;}
2032
#line 2037 "parse.c"
2034
case 17: /* cmd ::= COMMIT trans_opt */
2035
case 18: /* cmd ::= END trans_opt */
2037
{sqlite3CommitTransaction(pParse);}
2038
#line 2043 "parse.c"
2040
case 19: /* cmd ::= ROLLBACK trans_opt */
2042
{sqlite3RollbackTransaction(pParse);}
2043
#line 2048 "parse.c"
2045
case 21: /* create_table ::= CREATE temp TABLE ifnotexists nm dbnm */
2048
sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy46,0,0,yymsp[-2].minor.yy46);
2050
#line 2055 "parse.c"
2052
case 22: /* ifnotexists ::= */
2053
case 25: /* temp ::= */
2054
case 63: /* autoinc ::= */
2055
case 77: /* init_deferred_pred_opt ::= */
2056
case 79: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
2057
case 90: /* defer_subclause_opt ::= */
2058
case 101: /* ifexists ::= */
2059
case 112: /* distinct ::= ALL */
2060
case 113: /* distinct ::= */
2061
case 213: /* between_op ::= BETWEEN */
2062
case 216: /* in_op ::= IN */
2064
{yygotominor.yy46 = 0;}
2065
#line 2070 "parse.c"
2067
case 23: /* ifnotexists ::= IF NOT EXISTS */
2068
case 24: /* temp ::= TEMP */
2069
case 64: /* autoinc ::= AUTOINCR */
2070
case 78: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
2071
case 100: /* ifexists ::= IF EXISTS */
2072
case 111: /* distinct ::= DISTINCT */
2073
case 214: /* between_op ::= NOT BETWEEN */
2074
case 217: /* in_op ::= NOT IN */
2076
{yygotominor.yy46 = 1;}
2077
#line 2082 "parse.c"
2079
case 26: /* create_table_args ::= LP columnlist conslist_opt RP */
2082
sqlite3EndTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0);
2084
#line 2089 "parse.c"
2086
case 27: /* create_table_args ::= AS select */
2089
sqlite3EndTable(pParse,0,0,yymsp[0].minor.yy219);
2090
sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy219);
2092
#line 2097 "parse.c"
2094
case 30: /* column ::= columnid type carglist */
2097
yygotominor.yy0.z = yymsp[-2].minor.yy0.z;
2098
yygotominor.yy0.n = (pParse->sLastToken.z-yymsp[-2].minor.yy0.z) + pParse->sLastToken.n;
2100
#line 2105 "parse.c"
2102
case 31: /* columnid ::= nm */
2105
sqlite3AddColumn(pParse,&yymsp[0].minor.yy0);
2106
yygotominor.yy0 = yymsp[0].minor.yy0;
2108
#line 2113 "parse.c"
2110
case 32: /* id ::= ID */
2111
case 33: /* ids ::= ID|STRING */
2112
case 34: /* nm ::= ID */
2113
case 35: /* nm ::= STRING */
2114
case 36: /* nm ::= JOIN_KW */
2115
case 39: /* typetoken ::= typename */
2116
case 42: /* typename ::= ids */
2117
case 119: /* as ::= AS nm */
2118
case 120: /* as ::= ids */
2119
case 131: /* dbnm ::= DOT nm */
2120
case 241: /* idxitem ::= nm */
2121
case 243: /* collate ::= COLLATE ids */
2122
case 253: /* nmnum ::= plus_num */
2123
case 254: /* nmnum ::= nm */
2124
case 255: /* plus_num ::= plus_opt number */
2125
case 256: /* minus_num ::= MINUS number */
2126
case 257: /* number ::= INTEGER|FLOAT */
2128
{yygotominor.yy0 = yymsp[0].minor.yy0;}
2129
#line 2134 "parse.c"
2131
case 38: /* type ::= typetoken */
2133
{sqlite3AddColumnType(pParse,&yymsp[0].minor.yy0);}
2134
#line 2139 "parse.c"
2136
case 40: /* typetoken ::= typename LP signed RP */
2139
yygotominor.yy0.z = yymsp[-3].minor.yy0.z;
2140
yygotominor.yy0.n = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy0.z;
2142
#line 2147 "parse.c"
2144
case 41: /* typetoken ::= typename LP signed COMMA signed RP */
2147
yygotominor.yy0.z = yymsp[-5].minor.yy0.z;
2148
yygotominor.yy0.n = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-5].minor.yy0.z;
2150
#line 2155 "parse.c"
2152
case 43: /* typename ::= typename ids */
2154
{yygotominor.yy0.z=yymsp[-1].minor.yy0.z; yygotominor.yy0.n=yymsp[0].minor.yy0.n+(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);}
2155
#line 2160 "parse.c"
2157
case 50: /* ccons ::= DEFAULT term */
2158
case 52: /* ccons ::= DEFAULT PLUS term */
2160
{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy172);}
2161
#line 2166 "parse.c"
2163
case 51: /* ccons ::= DEFAULT LP expr RP */
2165
{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy172);}
2166
#line 2171 "parse.c"
2168
case 53: /* ccons ::= DEFAULT MINUS term */
2171
Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy172, 0, 0);
2172
sqlite3AddDefaultValue(pParse,p);
2174
#line 2179 "parse.c"
2176
case 54: /* ccons ::= DEFAULT id */
2179
Expr *p = sqlite3PExpr(pParse, TK_STRING, 0, 0, &yymsp[0].minor.yy0);
2180
sqlite3AddDefaultValue(pParse,p);
2182
#line 2187 "parse.c"
2184
case 56: /* ccons ::= NOT NULL onconf */
2186
{sqlite3AddNotNull(pParse, yymsp[0].minor.yy46);}
2187
#line 2192 "parse.c"
2189
case 57: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
2191
{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy46,yymsp[0].minor.yy46,yymsp[-2].minor.yy46);}
2192
#line 2197 "parse.c"
2194
case 58: /* ccons ::= UNIQUE onconf */
2196
{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy46,0,0,0,0);}
2197
#line 2202 "parse.c"
2199
case 59: /* ccons ::= CHECK LP expr RP */
2201
{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy172);}
2202
#line 2207 "parse.c"
2204
case 60: /* ccons ::= REFERENCES nm idxlist_opt refargs */
2206
{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy174,yymsp[0].minor.yy46);}
2207
#line 2212 "parse.c"
2209
case 61: /* ccons ::= defer_subclause */
2211
{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy46);}
2212
#line 2217 "parse.c"
2214
case 62: /* ccons ::= COLLATE ids */
2216
{sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
2217
#line 2222 "parse.c"
2219
case 65: /* refargs ::= */
2221
{ yygotominor.yy46 = OE_Restrict * 0x010101; }
2222
#line 2227 "parse.c"
2224
case 66: /* refargs ::= refargs refarg */
2226
{ yygotominor.yy46 = (yymsp[-1].minor.yy46 & yymsp[0].minor.yy405.mask) | yymsp[0].minor.yy405.value; }
2227
#line 2232 "parse.c"
2229
case 67: /* refarg ::= MATCH nm */
2231
{ yygotominor.yy405.value = 0; yygotominor.yy405.mask = 0x000000; }
2232
#line 2237 "parse.c"
2234
case 68: /* refarg ::= ON DELETE refact */
2236
{ yygotominor.yy405.value = yymsp[0].minor.yy46; yygotominor.yy405.mask = 0x0000ff; }
2237
#line 2242 "parse.c"
2239
case 69: /* refarg ::= ON UPDATE refact */
2241
{ yygotominor.yy405.value = yymsp[0].minor.yy46<<8; yygotominor.yy405.mask = 0x00ff00; }
2242
#line 2247 "parse.c"
2244
case 70: /* refarg ::= ON INSERT refact */
2246
{ yygotominor.yy405.value = yymsp[0].minor.yy46<<16; yygotominor.yy405.mask = 0xff0000; }
2247
#line 2252 "parse.c"
2249
case 71: /* refact ::= SET NULL */
2251
{ yygotominor.yy46 = OE_SetNull; }
2252
#line 2257 "parse.c"
2254
case 72: /* refact ::= SET DEFAULT */
2256
{ yygotominor.yy46 = OE_SetDflt; }
2257
#line 2262 "parse.c"
2259
case 73: /* refact ::= CASCADE */
2261
{ yygotominor.yy46 = OE_Cascade; }
2262
#line 2267 "parse.c"
2264
case 74: /* refact ::= RESTRICT */
2266
{ yygotominor.yy46 = OE_Restrict; }
2267
#line 2272 "parse.c"
2269
case 75: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
2270
case 76: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
2271
case 91: /* defer_subclause_opt ::= defer_subclause */
2272
case 93: /* onconf ::= ON CONFLICT resolvetype */
2273
case 95: /* orconf ::= OR resolvetype */
2274
case 96: /* resolvetype ::= raisetype */
2275
case 166: /* insert_cmd ::= INSERT orconf */
2277
{yygotominor.yy46 = yymsp[0].minor.yy46;}
2278
#line 2283 "parse.c"
2280
case 80: /* conslist_opt ::= */
2282
{yygotominor.yy0.n = 0; yygotominor.yy0.z = 0;}
2283
#line 2288 "parse.c"
2285
case 81: /* conslist_opt ::= COMMA conslist */
2287
{yygotominor.yy0 = yymsp[-1].minor.yy0;}
2288
#line 2293 "parse.c"
2290
case 86: /* tcons ::= PRIMARY KEY LP idxlist autoinc RP onconf */
2292
{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy174,yymsp[0].minor.yy46,yymsp[-2].minor.yy46,0);}
2293
#line 2298 "parse.c"
2295
case 87: /* tcons ::= UNIQUE LP idxlist RP onconf */
2297
{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy174,yymsp[0].minor.yy46,0,0,0,0);}
2298
#line 2303 "parse.c"
2300
case 88: /* tcons ::= CHECK LP expr RP onconf */
2302
{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy172);}
2303
#line 2308 "parse.c"
2305
case 89: /* tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt */
2308
sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy174, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy174, yymsp[-1].minor.yy46);
2309
sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy46);
2311
#line 2316 "parse.c"
2313
case 92: /* onconf ::= */
2314
case 94: /* orconf ::= */
2316
{yygotominor.yy46 = OE_Default;}
2317
#line 2322 "parse.c"
2319
case 97: /* resolvetype ::= IGNORE */
2321
{yygotominor.yy46 = OE_Ignore;}
2322
#line 2327 "parse.c"
2324
case 98: /* resolvetype ::= REPLACE */
2325
case 167: /* insert_cmd ::= REPLACE */
2327
{yygotominor.yy46 = OE_Replace;}
2328
#line 2333 "parse.c"
2330
case 99: /* cmd ::= DROP TABLE ifexists fullname */
2333
sqlite3DropTable(pParse, yymsp[0].minor.yy373, 0, yymsp[-1].minor.yy46);
2335
#line 2340 "parse.c"
2337
case 102: /* cmd ::= CREATE temp VIEW ifnotexists nm dbnm AS select */
2340
sqlite3CreateView(pParse, &yymsp[-7].minor.yy0, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, yymsp[0].minor.yy219, yymsp[-6].minor.yy46, yymsp[-4].minor.yy46);
2342
#line 2347 "parse.c"
2344
case 103: /* cmd ::= DROP VIEW ifexists fullname */
2347
sqlite3DropTable(pParse, yymsp[0].minor.yy373, 1, yymsp[-1].minor.yy46);
2349
#line 2354 "parse.c"
2351
case 104: /* cmd ::= select */
2354
SelectDest dest = {SRT_Callback, 0, 0, 0, 0};
2355
sqlite3Select(pParse, yymsp[0].minor.yy219, &dest, 0, 0, 0);
2356
sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy219);
2358
#line 2363 "parse.c"
2360
case 105: /* select ::= oneselect */
2361
case 128: /* seltablist_paren ::= select */
2363
{yygotominor.yy219 = yymsp[0].minor.yy219;}
2364
#line 2369 "parse.c"
2366
case 106: /* select ::= select multiselect_op oneselect */
2369
if( yymsp[0].minor.yy219 ){
2370
yymsp[0].minor.yy219->op = yymsp[-1].minor.yy46;
2371
yymsp[0].minor.yy219->pPrior = yymsp[-2].minor.yy219;
2373
sqlite3SelectDelete(pParse->db, yymsp[-2].minor.yy219);
2375
yygotominor.yy219 = yymsp[0].minor.yy219;
2377
#line 2382 "parse.c"
2379
case 108: /* multiselect_op ::= UNION ALL */
2381
{yygotominor.yy46 = TK_ALL;}
2382
#line 2387 "parse.c"
2384
case 110: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
2387
yygotominor.yy219 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy174,yymsp[-5].minor.yy373,yymsp[-4].minor.yy172,yymsp[-3].minor.yy174,yymsp[-2].minor.yy172,yymsp[-1].minor.yy174,yymsp[-7].minor.yy46,yymsp[0].minor.yy234.pLimit,yymsp[0].minor.yy234.pOffset);
2389
#line 2394 "parse.c"
2391
case 114: /* sclp ::= selcollist COMMA */
2392
case 238: /* idxlist_opt ::= LP idxlist RP */
2394
{yygotominor.yy174 = yymsp[-1].minor.yy174;}
2395
#line 2400 "parse.c"
2397
case 115: /* sclp ::= */
2398
case 141: /* orderby_opt ::= */
2399
case 149: /* groupby_opt ::= */
2400
case 231: /* exprlist ::= */
2401
case 237: /* idxlist_opt ::= */
2403
{yygotominor.yy174 = 0;}
2404
#line 2409 "parse.c"
2406
case 116: /* selcollist ::= sclp expr as */
2409
yygotominor.yy174 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy174,yymsp[-1].minor.yy172,yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0);
2411
#line 2416 "parse.c"
2413
case 117: /* selcollist ::= sclp STAR */
2416
Expr *p = sqlite3PExpr(pParse, TK_ALL, 0, 0, 0);
2417
yygotominor.yy174 = sqlite3ExprListAppend(pParse, yymsp[-1].minor.yy174, p, 0);
2419
#line 2424 "parse.c"
2421
case 118: /* selcollist ::= sclp nm DOT STAR */
2424
Expr *pRight = sqlite3PExpr(pParse, TK_ALL, 0, 0, &yymsp[0].minor.yy0);
2425
Expr *pLeft = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-2].minor.yy0);
2426
Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight, 0);
2427
yygotominor.yy174 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy174, pDot, 0);
2429
#line 2434 "parse.c"
2431
case 121: /* as ::= */
2433
{yygotominor.yy0.n = 0;}
2434
#line 2439 "parse.c"
2436
case 122: /* from ::= */
2438
{yygotominor.yy373 = sqlite3DbMallocZero(pParse->db, sizeof(*yygotominor.yy373));}
2439
#line 2444 "parse.c"
2441
case 123: /* from ::= FROM seltablist */
2444
yygotominor.yy373 = yymsp[0].minor.yy373;
2445
sqlite3SrcListShiftJoinType(yygotominor.yy373);
2447
#line 2452 "parse.c"
2449
case 124: /* stl_prefix ::= seltablist joinop */
2452
yygotominor.yy373 = yymsp[-1].minor.yy373;
2453
if( yygotominor.yy373 && yygotominor.yy373->nSrc>0 ) yygotominor.yy373->a[yygotominor.yy373->nSrc-1].jointype = yymsp[0].minor.yy46;
2455
#line 2460 "parse.c"
2457
case 125: /* stl_prefix ::= */
2459
{yygotominor.yy373 = 0;}
2460
#line 2465 "parse.c"
2462
case 126: /* seltablist ::= stl_prefix nm dbnm as on_opt using_opt */
2465
yygotominor.yy373 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy373,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy172,yymsp[0].minor.yy432);
2467
#line 2472 "parse.c"
2469
case 127: /* seltablist ::= stl_prefix LP seltablist_paren RP as on_opt using_opt */
2472
yygotominor.yy373 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy373,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy219,yymsp[-1].minor.yy172,yymsp[0].minor.yy432);
2474
#line 2479 "parse.c"
2476
case 129: /* seltablist_paren ::= seltablist */
2479
sqlite3SrcListShiftJoinType(yymsp[0].minor.yy373);
2480
yygotominor.yy219 = sqlite3SelectNew(pParse,0,yymsp[0].minor.yy373,0,0,0,0,0,0,0);
2482
#line 2487 "parse.c"
2484
case 130: /* dbnm ::= */
2486
{yygotominor.yy0.z=0; yygotominor.yy0.n=0;}
2487
#line 2492 "parse.c"
2489
case 132: /* fullname ::= nm dbnm */
2491
{yygotominor.yy373 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);}
2492
#line 2497 "parse.c"
2494
case 133: /* joinop ::= COMMA|JOIN */
2496
{ yygotominor.yy46 = JT_INNER; }
2497
#line 2502 "parse.c"
2499
case 134: /* joinop ::= JOIN_KW JOIN */
2501
{ yygotominor.yy46 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); }
2502
#line 2507 "parse.c"
2504
case 135: /* joinop ::= JOIN_KW nm JOIN */
2506
{ yygotominor.yy46 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); }
2507
#line 2512 "parse.c"
2509
case 136: /* joinop ::= JOIN_KW nm nm JOIN */
2511
{ yygotominor.yy46 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0); }
2512
#line 2517 "parse.c"
2514
case 137: /* on_opt ::= ON expr */
2515
case 145: /* sortitem ::= expr */
2516
case 152: /* having_opt ::= HAVING expr */
2517
case 159: /* where_opt ::= WHERE expr */
2518
case 174: /* expr ::= term */
2519
case 202: /* escape ::= ESCAPE expr */
2520
case 226: /* case_else ::= ELSE expr */
2521
case 228: /* case_operand ::= expr */
2523
{yygotominor.yy172 = yymsp[0].minor.yy172;}
2524
#line 2529 "parse.c"
2526
case 138: /* on_opt ::= */
2527
case 151: /* having_opt ::= */
2528
case 158: /* where_opt ::= */
2529
case 203: /* escape ::= */
2530
case 227: /* case_else ::= */
2531
case 229: /* case_operand ::= */
2533
{yygotominor.yy172 = 0;}
2534
#line 2539 "parse.c"
2536
case 139: /* using_opt ::= USING LP inscollist RP */
2537
case 171: /* inscollist_opt ::= LP inscollist RP */
2539
{yygotominor.yy432 = yymsp[-1].minor.yy432;}
2540
#line 2545 "parse.c"
2542
case 140: /* using_opt ::= */
2543
case 170: /* inscollist_opt ::= */
2545
{yygotominor.yy432 = 0;}
2546
#line 2551 "parse.c"
2548
case 142: /* orderby_opt ::= ORDER BY sortlist */
2549
case 150: /* groupby_opt ::= GROUP BY nexprlist */
2550
case 230: /* exprlist ::= nexprlist */
2552
{yygotominor.yy174 = yymsp[0].minor.yy174;}
2553
#line 2558 "parse.c"
2555
case 143: /* sortlist ::= sortlist COMMA sortitem sortorder */
2558
yygotominor.yy174 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy174,yymsp[-1].minor.yy172,0);
2559
if( yygotominor.yy174 ) yygotominor.yy174->a[yygotominor.yy174->nExpr-1].sortOrder = yymsp[0].minor.yy46;
2561
#line 2566 "parse.c"
2563
case 144: /* sortlist ::= sortitem sortorder */
2566
yygotominor.yy174 = sqlite3ExprListAppend(pParse,0,yymsp[-1].minor.yy172,0);
2567
if( yygotominor.yy174 && yygotominor.yy174->a ) yygotominor.yy174->a[0].sortOrder = yymsp[0].minor.yy46;
2569
#line 2574 "parse.c"
2571
case 146: /* sortorder ::= ASC */
2572
case 148: /* sortorder ::= */
2574
{yygotominor.yy46 = SQLITE_SO_ASC;}
2575
#line 2580 "parse.c"
2577
case 147: /* sortorder ::= DESC */
2579
{yygotominor.yy46 = SQLITE_SO_DESC;}
2580
#line 2585 "parse.c"
2582
case 153: /* limit_opt ::= */
2584
{yygotominor.yy234.pLimit = 0; yygotominor.yy234.pOffset = 0;}
2585
#line 2590 "parse.c"
2587
case 154: /* limit_opt ::= LIMIT expr */
2589
{yygotominor.yy234.pLimit = yymsp[0].minor.yy172; yygotominor.yy234.pOffset = 0;}
2590
#line 2595 "parse.c"
2592
case 155: /* limit_opt ::= LIMIT expr OFFSET expr */
2594
{yygotominor.yy234.pLimit = yymsp[-2].minor.yy172; yygotominor.yy234.pOffset = yymsp[0].minor.yy172;}
2595
#line 2600 "parse.c"
2597
case 156: /* limit_opt ::= LIMIT expr COMMA expr */
2599
{yygotominor.yy234.pOffset = yymsp[-2].minor.yy172; yygotominor.yy234.pLimit = yymsp[0].minor.yy172;}
2600
#line 2605 "parse.c"
2602
case 157: /* cmd ::= DELETE FROM fullname where_opt */
2604
{sqlite3DeleteFrom(pParse,yymsp[-1].minor.yy373,yymsp[0].minor.yy172);}
2605
#line 2610 "parse.c"
2607
case 160: /* cmd ::= UPDATE orconf fullname SET setlist where_opt */
2610
sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy174,"set list");
2611
sqlite3Update(pParse,yymsp[-3].minor.yy373,yymsp[-1].minor.yy174,yymsp[0].minor.yy172,yymsp[-4].minor.yy46);
2613
#line 2618 "parse.c"
2615
case 161: /* setlist ::= setlist COMMA nm EQ expr */
2617
{yygotominor.yy174 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy174,yymsp[0].minor.yy172,&yymsp[-2].minor.yy0);}
2618
#line 2623 "parse.c"
2620
case 162: /* setlist ::= nm EQ expr */
2622
{yygotominor.yy174 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy172,&yymsp[-2].minor.yy0);}
2623
#line 2628 "parse.c"
2625
case 163: /* cmd ::= insert_cmd INTO fullname inscollist_opt VALUES LP itemlist RP */
2627
{sqlite3Insert(pParse, yymsp[-5].minor.yy373, yymsp[-1].minor.yy174, 0, yymsp[-4].minor.yy432, yymsp[-7].minor.yy46);}
2628
#line 2633 "parse.c"
2630
case 164: /* cmd ::= insert_cmd INTO fullname inscollist_opt select */
2632
{sqlite3Insert(pParse, yymsp[-2].minor.yy373, 0, yymsp[0].minor.yy219, yymsp[-1].minor.yy432, yymsp[-4].minor.yy46);}
2633
#line 2638 "parse.c"
2635
case 165: /* cmd ::= insert_cmd INTO fullname inscollist_opt DEFAULT VALUES */
2637
{sqlite3Insert(pParse, yymsp[-3].minor.yy373, 0, 0, yymsp[-2].minor.yy432, yymsp[-5].minor.yy46);}
2638
#line 2643 "parse.c"
2640
case 168: /* itemlist ::= itemlist COMMA expr */
2641
case 232: /* nexprlist ::= nexprlist COMMA expr */
2643
{yygotominor.yy174 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy174,yymsp[0].minor.yy172,0);}
2644
#line 2649 "parse.c"
2646
case 169: /* itemlist ::= expr */
2647
case 233: /* nexprlist ::= expr */
2649
{yygotominor.yy174 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy172,0);}
2650
#line 2655 "parse.c"
2652
case 172: /* inscollist ::= inscollist COMMA nm */
2654
{yygotominor.yy432 = sqlite3IdListAppend(pParse->db,yymsp[-2].minor.yy432,&yymsp[0].minor.yy0);}
2655
#line 2660 "parse.c"
2657
case 173: /* inscollist ::= nm */
2659
{yygotominor.yy432 = sqlite3IdListAppend(pParse->db,0,&yymsp[0].minor.yy0);}
2660
#line 2665 "parse.c"
2662
case 175: /* expr ::= LP expr RP */
2664
{yygotominor.yy172 = yymsp[-1].minor.yy172; sqlite3ExprSpan(yygotominor.yy172,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); }
2665
#line 2670 "parse.c"
2667
case 176: /* term ::= NULL */
2668
case 181: /* term ::= INTEGER|FLOAT|BLOB */
2669
case 182: /* term ::= STRING */
2671
{yygotominor.yy172 = sqlite3PExpr(pParse, yymsp[0].major, 0, 0, &yymsp[0].minor.yy0);}
2672
#line 2677 "parse.c"
2674
case 177: /* expr ::= ID */
2675
case 178: /* expr ::= JOIN_KW */
2677
{yygotominor.yy172 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[0].minor.yy0);}
2678
#line 2683 "parse.c"
2680
case 179: /* expr ::= nm DOT nm */
2683
Expr *temp1 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-2].minor.yy0);
2684
Expr *temp2 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[0].minor.yy0);
2685
yygotominor.yy172 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2, 0);
2687
#line 2692 "parse.c"
2689
case 180: /* expr ::= nm DOT nm DOT nm */
2692
Expr *temp1 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-4].minor.yy0);
2693
Expr *temp2 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-2].minor.yy0);
2694
Expr *temp3 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[0].minor.yy0);
2695
Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3, 0);
2696
yygotominor.yy172 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4, 0);
2698
#line 2703 "parse.c"
2700
case 183: /* expr ::= REGISTER */
2702
{yygotominor.yy172 = sqlite3RegisterExpr(pParse, &yymsp[0].minor.yy0);}
2703
#line 2708 "parse.c"
2705
case 184: /* expr ::= VARIABLE */
2708
Token *pToken = &yymsp[0].minor.yy0;
2709
Expr *pExpr = yygotominor.yy172 = sqlite3PExpr(pParse, TK_VARIABLE, 0, 0, pToken);
2710
sqlite3ExprAssignVarNumber(pParse, pExpr);
2712
#line 2717 "parse.c"
2714
case 185: /* expr ::= expr COLLATE ids */
2717
yygotominor.yy172 = sqlite3ExprSetColl(pParse, yymsp[-2].minor.yy172, &yymsp[0].minor.yy0);
2719
#line 2724 "parse.c"
2721
case 186: /* expr ::= CAST LP expr AS typetoken RP */
2724
yygotominor.yy172 = sqlite3PExpr(pParse, TK_CAST, yymsp[-3].minor.yy172, 0, &yymsp[-1].minor.yy0);
2725
sqlite3ExprSpan(yygotominor.yy172,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0);
2727
#line 2732 "parse.c"
2729
case 187: /* expr ::= ID LP distinct exprlist RP */
2732
if( yymsp[-1].minor.yy174 && yymsp[-1].minor.yy174->nExpr>SQLITE_MAX_FUNCTION_ARG ){
2733
sqlite3ErrorMsg(pParse, "too many arguments on function %T", &yymsp[-4].minor.yy0);
2735
yygotominor.yy172 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy174, &yymsp[-4].minor.yy0);
2736
sqlite3ExprSpan(yygotominor.yy172,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0);
2737
if( yymsp[-2].minor.yy46 && yygotominor.yy172 ){
2738
yygotominor.yy172->flags |= EP_Distinct;
2741
#line 2746 "parse.c"
2743
case 188: /* expr ::= ID LP STAR RP */
2746
yygotominor.yy172 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0);
2747
sqlite3ExprSpan(yygotominor.yy172,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
2749
#line 2754 "parse.c"
2751
case 189: /* term ::= CTIME_KW */
2754
/* The CURRENT_TIME, CURRENT_DATE, and CURRENT_TIMESTAMP values are
2755
** treated as functions that return constants */
2756
yygotominor.yy172 = sqlite3ExprFunction(pParse, 0,&yymsp[0].minor.yy0);
2757
if( yygotominor.yy172 ){
2758
yygotominor.yy172->op = TK_CONST_FUNC;
2759
yygotominor.yy172->span = yymsp[0].minor.yy0;
2762
#line 2767 "parse.c"
2764
case 190: /* expr ::= expr AND expr */
2765
case 191: /* expr ::= expr OR expr */
2766
case 192: /* expr ::= expr LT|GT|GE|LE expr */
2767
case 193: /* expr ::= expr EQ|NE expr */
2768
case 194: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
2769
case 195: /* expr ::= expr PLUS|MINUS expr */
2770
case 196: /* expr ::= expr STAR|SLASH|REM expr */
2771
case 197: /* expr ::= expr CONCAT expr */
2773
{yygotominor.yy172 = sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy172,yymsp[0].minor.yy172,0);}
2774
#line 2779 "parse.c"
2776
case 198: /* likeop ::= LIKE_KW */
2777
case 200: /* likeop ::= MATCH */
2779
{yygotominor.yy72.eOperator = yymsp[0].minor.yy0; yygotominor.yy72.not = 0;}
2780
#line 2785 "parse.c"
2782
case 199: /* likeop ::= NOT LIKE_KW */
2783
case 201: /* likeop ::= NOT MATCH */
2785
{yygotominor.yy72.eOperator = yymsp[0].minor.yy0; yygotominor.yy72.not = 1;}
2786
#line 2791 "parse.c"
2788
case 204: /* expr ::= expr likeop expr escape */
2792
pList = sqlite3ExprListAppend(pParse,0, yymsp[-1].minor.yy172, 0);
2793
pList = sqlite3ExprListAppend(pParse,pList, yymsp[-3].minor.yy172, 0);
2794
if( yymsp[0].minor.yy172 ){
2795
pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy172, 0);
2797
yygotominor.yy172 = sqlite3ExprFunction(pParse, pList, &yymsp[-2].minor.yy72.eOperator);
2798
if( yymsp[-2].minor.yy72.not ) yygotominor.yy172 = sqlite3PExpr(pParse, TK_NOT, yygotominor.yy172, 0, 0);
2799
sqlite3ExprSpan(yygotominor.yy172, &yymsp[-3].minor.yy172->span, &yymsp[-1].minor.yy172->span);
2800
if( yygotominor.yy172 ) yygotominor.yy172->flags |= EP_InfixFunc;
2802
#line 2807 "parse.c"
2804
case 205: /* expr ::= expr ISNULL|NOTNULL */
2807
yygotominor.yy172 = sqlite3PExpr(pParse, yymsp[0].major, yymsp[-1].minor.yy172, 0, 0);
2808
sqlite3ExprSpan(yygotominor.yy172,&yymsp[-1].minor.yy172->span,&yymsp[0].minor.yy0);
2810
#line 2815 "parse.c"
2812
case 206: /* expr ::= expr IS NULL */
2815
yygotominor.yy172 = sqlite3PExpr(pParse, TK_ISNULL, yymsp[-2].minor.yy172, 0, 0);
2816
sqlite3ExprSpan(yygotominor.yy172,&yymsp[-2].minor.yy172->span,&yymsp[0].minor.yy0);
2818
#line 2823 "parse.c"
2820
case 207: /* expr ::= expr NOT NULL */
2823
yygotominor.yy172 = sqlite3PExpr(pParse, TK_NOTNULL, yymsp[-2].minor.yy172, 0, 0);
2824
sqlite3ExprSpan(yygotominor.yy172,&yymsp[-2].minor.yy172->span,&yymsp[0].minor.yy0);
2826
#line 2831 "parse.c"
2828
case 208: /* expr ::= expr IS NOT NULL */
2831
yygotominor.yy172 = sqlite3PExpr(pParse, TK_NOTNULL, yymsp[-3].minor.yy172, 0, 0);
2832
sqlite3ExprSpan(yygotominor.yy172,&yymsp[-3].minor.yy172->span,&yymsp[0].minor.yy0);
2834
#line 2839 "parse.c"
2836
case 209: /* expr ::= NOT expr */
2837
case 210: /* expr ::= BITNOT expr */
2840
yygotominor.yy172 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy172, 0, 0);
2841
sqlite3ExprSpan(yygotominor.yy172,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy172->span);
2843
#line 2848 "parse.c"
2845
case 211: /* expr ::= MINUS expr */
2848
yygotominor.yy172 = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy172, 0, 0);
2849
sqlite3ExprSpan(yygotominor.yy172,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy172->span);
2851
#line 2856 "parse.c"
2853
case 212: /* expr ::= PLUS expr */
2856
yygotominor.yy172 = sqlite3PExpr(pParse, TK_UPLUS, yymsp[0].minor.yy172, 0, 0);
2857
sqlite3ExprSpan(yygotominor.yy172,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy172->span);
2859
#line 2864 "parse.c"
2861
case 215: /* expr ::= expr between_op expr AND expr */
2864
ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy172, 0);
2865
pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy172, 0);
2866
yygotominor.yy172 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy172, 0, 0);
2867
if( yygotominor.yy172 ){
2868
yygotominor.yy172->pList = pList;
2870
sqlite3ExprListDelete(pParse->db, pList);
2872
if( yymsp[-3].minor.yy46 ) yygotominor.yy172 = sqlite3PExpr(pParse, TK_NOT, yygotominor.yy172, 0, 0);
2873
sqlite3ExprSpan(yygotominor.yy172,&yymsp[-4].minor.yy172->span,&yymsp[0].minor.yy172->span);
2875
#line 2880 "parse.c"
2877
case 218: /* expr ::= expr in_op LP exprlist RP */
2880
yygotominor.yy172 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy172, 0, 0);
2881
if( yygotominor.yy172 ){
2882
yygotominor.yy172->pList = yymsp[-1].minor.yy174;
2883
sqlite3ExprSetHeight(pParse, yygotominor.yy172);
2885
sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy174);
2887
if( yymsp[-3].minor.yy46 ) yygotominor.yy172 = sqlite3PExpr(pParse, TK_NOT, yygotominor.yy172, 0, 0);
2888
sqlite3ExprSpan(yygotominor.yy172,&yymsp[-4].minor.yy172->span,&yymsp[0].minor.yy0);
2890
#line 2895 "parse.c"
2892
case 219: /* expr ::= LP select RP */
2895
yygotominor.yy172 = sqlite3PExpr(pParse, TK_SELECT, 0, 0, 0);
2896
if( yygotominor.yy172 ){
2897
yygotominor.yy172->pSelect = yymsp[-1].minor.yy219;
2898
sqlite3ExprSetHeight(pParse, yygotominor.yy172);
2900
sqlite3SelectDelete(pParse->db, yymsp[-1].minor.yy219);
2902
sqlite3ExprSpan(yygotominor.yy172,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
2904
#line 2909 "parse.c"
2906
case 220: /* expr ::= expr in_op LP select RP */
2909
yygotominor.yy172 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy172, 0, 0);
2910
if( yygotominor.yy172 ){
2911
yygotominor.yy172->pSelect = yymsp[-1].minor.yy219;
2912
sqlite3ExprSetHeight(pParse, yygotominor.yy172);
2914
sqlite3SelectDelete(pParse->db, yymsp[-1].minor.yy219);
2916
if( yymsp[-3].minor.yy46 ) yygotominor.yy172 = sqlite3PExpr(pParse, TK_NOT, yygotominor.yy172, 0, 0);
2917
sqlite3ExprSpan(yygotominor.yy172,&yymsp[-4].minor.yy172->span,&yymsp[0].minor.yy0);
2919
#line 2924 "parse.c"
2921
case 221: /* expr ::= expr in_op nm dbnm */
2924
SrcList *pSrc = sqlite3SrcListAppend(pParse->db, 0,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);
2925
yygotominor.yy172 = sqlite3PExpr(pParse, TK_IN, yymsp[-3].minor.yy172, 0, 0);
2926
if( yygotominor.yy172 ){
2927
yygotominor.yy172->pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0,0);
2928
sqlite3ExprSetHeight(pParse, yygotominor.yy172);
2930
sqlite3SrcListDelete(pParse->db, pSrc);
2932
if( yymsp[-2].minor.yy46 ) yygotominor.yy172 = sqlite3PExpr(pParse, TK_NOT, yygotominor.yy172, 0, 0);
2933
sqlite3ExprSpan(yygotominor.yy172,&yymsp[-3].minor.yy172->span,yymsp[0].minor.yy0.z?&yymsp[0].minor.yy0:&yymsp[-1].minor.yy0);
2935
#line 2940 "parse.c"
2937
case 222: /* expr ::= EXISTS LP select RP */
2940
Expr *p = yygotominor.yy172 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0, 0);
2942
p->pSelect = yymsp[-1].minor.yy219;
2943
sqlite3ExprSpan(p,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
2944
sqlite3ExprSetHeight(pParse, yygotominor.yy172);
2946
sqlite3SelectDelete(pParse->db, yymsp[-1].minor.yy219);
2949
#line 2954 "parse.c"
2951
case 223: /* expr ::= CASE case_operand case_exprlist case_else END */
2954
yygotominor.yy172 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy172, yymsp[-1].minor.yy172, 0);
2955
if( yygotominor.yy172 ){
2956
yygotominor.yy172->pList = yymsp[-2].minor.yy174;
2957
sqlite3ExprSetHeight(pParse, yygotominor.yy172);
2959
sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy174);
2961
sqlite3ExprSpan(yygotominor.yy172, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0);
2963
#line 2968 "parse.c"
2965
case 224: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
2968
yygotominor.yy174 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy174, yymsp[-2].minor.yy172, 0);
2969
yygotominor.yy174 = sqlite3ExprListAppend(pParse,yygotominor.yy174, yymsp[0].minor.yy172, 0);
2971
#line 2976 "parse.c"
2973
case 225: /* case_exprlist ::= WHEN expr THEN expr */
2976
yygotominor.yy174 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy172, 0);
2977
yygotominor.yy174 = sqlite3ExprListAppend(pParse,yygotominor.yy174, yymsp[0].minor.yy172, 0);
2979
#line 2984 "parse.c"
2981
case 234: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP */
2984
sqlite3CreateIndex(pParse, &yymsp[-6].minor.yy0, &yymsp[-5].minor.yy0,
2985
sqlite3SrcListAppend(pParse->db,0,&yymsp[-3].minor.yy0,0), yymsp[-1].minor.yy174, yymsp[-9].minor.yy46,
2986
&yymsp[-10].minor.yy0, &yymsp[0].minor.yy0, SQLITE_SO_ASC, yymsp[-7].minor.yy46);
2988
#line 2993 "parse.c"
2990
case 235: /* uniqueflag ::= UNIQUE */
2991
case 283: /* raisetype ::= ABORT */
2993
{yygotominor.yy46 = OE_Abort;}
2994
#line 2999 "parse.c"
2996
case 236: /* uniqueflag ::= */
2998
{yygotominor.yy46 = OE_None;}
2999
#line 3004 "parse.c"
3001
case 239: /* idxlist ::= idxlist COMMA idxitem collate sortorder */
3005
if( yymsp[-1].minor.yy0.n>0 ){
3006
p = sqlite3PExpr(pParse, TK_COLUMN, 0, 0, 0);
3007
sqlite3ExprSetColl(pParse, p, &yymsp[-1].minor.yy0);
3009
yygotominor.yy174 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy174, p, &yymsp[-2].minor.yy0);
3010
sqlite3ExprListCheckLength(pParse, yygotominor.yy174, "index");
3011
if( yygotominor.yy174 ) yygotominor.yy174->a[yygotominor.yy174->nExpr-1].sortOrder = yymsp[0].minor.yy46;
3013
#line 3018 "parse.c"
3015
case 240: /* idxlist ::= idxitem collate sortorder */
3019
if( yymsp[-1].minor.yy0.n>0 ){
3020
p = sqlite3PExpr(pParse, TK_COLUMN, 0, 0, 0);
3021
sqlite3ExprSetColl(pParse, p, &yymsp[-1].minor.yy0);
3023
yygotominor.yy174 = sqlite3ExprListAppend(pParse,0, p, &yymsp[-2].minor.yy0);
3024
sqlite3ExprListCheckLength(pParse, yygotominor.yy174, "index");
3025
if( yygotominor.yy174 ) yygotominor.yy174->a[yygotominor.yy174->nExpr-1].sortOrder = yymsp[0].minor.yy46;
3027
#line 3032 "parse.c"
3029
case 242: /* collate ::= */
3031
{yygotominor.yy0.z = 0; yygotominor.yy0.n = 0;}
3032
#line 3037 "parse.c"
3034
case 244: /* cmd ::= DROP INDEX ifexists fullname */
3036
{sqlite3DropIndex(pParse, yymsp[0].minor.yy373, yymsp[-1].minor.yy46);}
3037
#line 3042 "parse.c"
3039
case 245: /* cmd ::= VACUUM */
3040
case 246: /* cmd ::= VACUUM nm */
3042
{sqlite3Vacuum(pParse);}
3043
#line 3048 "parse.c"
3045
case 247: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
3046
case 248: /* cmd ::= PRAGMA nm dbnm EQ ON */
3047
case 249: /* cmd ::= PRAGMA nm dbnm EQ DELETE */
3049
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
3050
#line 3055 "parse.c"
3052
case 250: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
3055
sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);
3057
#line 3062 "parse.c"
3059
case 251: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
3061
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
3062
#line 3067 "parse.c"
3064
case 252: /* cmd ::= PRAGMA nm dbnm */
3066
{sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
3067
#line 3072 "parse.c"
3069
case 260: /* cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END */
3073
all.z = yymsp[-3].minor.yy0.z;
3074
all.n = (yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
3075
sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy243, &all);
3077
#line 3082 "parse.c"
3079
case 261: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
3082
sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy46, yymsp[-4].minor.yy370.a, yymsp[-4].minor.yy370.b, yymsp[-2].minor.yy373, yymsp[0].minor.yy172, yymsp[-10].minor.yy46, yymsp[-8].minor.yy46);
3083
yygotominor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0);
3085
#line 3090 "parse.c"
3087
case 262: /* trigger_time ::= BEFORE */
3088
case 265: /* trigger_time ::= */
3090
{ yygotominor.yy46 = TK_BEFORE; }
3091
#line 3096 "parse.c"
3093
case 263: /* trigger_time ::= AFTER */
3095
{ yygotominor.yy46 = TK_AFTER; }
3096
#line 3101 "parse.c"
3098
case 264: /* trigger_time ::= INSTEAD OF */
3100
{ yygotominor.yy46 = TK_INSTEAD;}
3101
#line 3106 "parse.c"
3103
case 266: /* trigger_event ::= DELETE|INSERT */
3104
case 267: /* trigger_event ::= UPDATE */
3106
{yygotominor.yy370.a = yymsp[0].major; yygotominor.yy370.b = 0;}
3107
#line 3112 "parse.c"
3109
case 268: /* trigger_event ::= UPDATE OF inscollist */
3111
{yygotominor.yy370.a = TK_UPDATE; yygotominor.yy370.b = yymsp[0].minor.yy432;}
3112
#line 3117 "parse.c"
3114
case 271: /* when_clause ::= */
3115
case 288: /* key_opt ::= */
3117
{ yygotominor.yy172 = 0; }
3118
#line 3123 "parse.c"
3120
case 272: /* when_clause ::= WHEN expr */
3121
case 289: /* key_opt ::= KEY expr */
3123
{ yygotominor.yy172 = yymsp[0].minor.yy172; }
3124
#line 3129 "parse.c"
3126
case 273: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
3129
if( yymsp[-2].minor.yy243 ){
3130
yymsp[-2].minor.yy243->pLast->pNext = yymsp[-1].minor.yy243;
3132
yymsp[-2].minor.yy243 = yymsp[-1].minor.yy243;
3134
yymsp[-2].minor.yy243->pLast = yymsp[-1].minor.yy243;
3135
yygotominor.yy243 = yymsp[-2].minor.yy243;
3137
#line 3142 "parse.c"
3139
case 274: /* trigger_cmd_list ::= */
3140
#line 1008 "parse.y"
3141
{ yygotominor.yy243 = 0; }
3142
#line 3147 "parse.c"
3144
case 275: /* trigger_cmd ::= UPDATE orconf nm SET setlist where_opt */
3145
#line 1014 "parse.y"
3146
{ yygotominor.yy243 = sqlite3TriggerUpdateStep(pParse->db, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy174, yymsp[0].minor.yy172, yymsp[-4].minor.yy46); }
3147
#line 3152 "parse.c"
3149
case 276: /* trigger_cmd ::= insert_cmd INTO nm inscollist_opt VALUES LP itemlist RP */
3150
#line 1019 "parse.y"
3151
{yygotominor.yy243 = sqlite3TriggerInsertStep(pParse->db, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy432, yymsp[-1].minor.yy174, 0, yymsp[-7].minor.yy46);}
3152
#line 3157 "parse.c"
3154
case 277: /* trigger_cmd ::= insert_cmd INTO nm inscollist_opt select */
3155
#line 1022 "parse.y"
3156
{yygotominor.yy243 = sqlite3TriggerInsertStep(pParse->db, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy432, 0, yymsp[0].minor.yy219, yymsp[-4].minor.yy46);}
3157
#line 3162 "parse.c"
3159
case 278: /* trigger_cmd ::= DELETE FROM nm where_opt */
3160
#line 1026 "parse.y"
3161
{yygotominor.yy243 = sqlite3TriggerDeleteStep(pParse->db, &yymsp[-1].minor.yy0, yymsp[0].minor.yy172);}
3162
#line 3167 "parse.c"
3164
case 279: /* trigger_cmd ::= select */
3165
#line 1029 "parse.y"
3166
{yygotominor.yy243 = sqlite3TriggerSelectStep(pParse->db, yymsp[0].minor.yy219); }
3167
#line 3172 "parse.c"
3169
case 280: /* expr ::= RAISE LP IGNORE RP */
3170
#line 1032 "parse.y"
3172
yygotominor.yy172 = sqlite3PExpr(pParse, TK_RAISE, 0, 0, 0);
3173
if( yygotominor.yy172 ){
3174
yygotominor.yy172->iColumn = OE_Ignore;
3175
sqlite3ExprSpan(yygotominor.yy172, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0);
3178
#line 3183 "parse.c"
3180
case 281: /* expr ::= RAISE LP raisetype COMMA nm RP */
3181
#line 1039 "parse.y"
3183
yygotominor.yy172 = sqlite3PExpr(pParse, TK_RAISE, 0, 0, &yymsp[-1].minor.yy0);
3184
if( yygotominor.yy172 ) {
3185
yygotominor.yy172->iColumn = yymsp[-3].minor.yy46;
3186
sqlite3ExprSpan(yygotominor.yy172, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
3189
#line 3194 "parse.c"
3191
case 282: /* raisetype ::= ROLLBACK */
3192
#line 1049 "parse.y"
3193
{yygotominor.yy46 = OE_Rollback;}
3194
#line 3199 "parse.c"
3196
case 284: /* raisetype ::= FAIL */
3197
#line 1051 "parse.y"
3198
{yygotominor.yy46 = OE_Fail;}
3199
#line 3204 "parse.c"
3201
case 285: /* cmd ::= DROP TRIGGER ifexists fullname */
3202
#line 1056 "parse.y"
3204
sqlite3DropTrigger(pParse,yymsp[0].minor.yy373,yymsp[-1].minor.yy46);
3206
#line 3211 "parse.c"
3208
case 286: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
3209
#line 1063 "parse.y"
3211
sqlite3Attach(pParse, yymsp[-3].minor.yy172, yymsp[-1].minor.yy172, yymsp[0].minor.yy172);
3213
#line 3218 "parse.c"
3215
case 287: /* cmd ::= DETACH database_kw_opt expr */
3216
#line 1066 "parse.y"
3218
sqlite3Detach(pParse, yymsp[0].minor.yy172);
3220
#line 3225 "parse.c"
3222
case 292: /* cmd ::= REINDEX */
3223
#line 1081 "parse.y"
3224
{sqlite3Reindex(pParse, 0, 0);}
3225
#line 3230 "parse.c"
3227
case 293: /* cmd ::= REINDEX nm dbnm */
3228
#line 1082 "parse.y"
3229
{sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
3230
#line 3235 "parse.c"
3232
case 294: /* cmd ::= ANALYZE */
3233
#line 1087 "parse.y"
3234
{sqlite3Analyze(pParse, 0, 0);}
3235
#line 3240 "parse.c"
3237
case 295: /* cmd ::= ANALYZE nm dbnm */
3238
#line 1088 "parse.y"
3239
{sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
3240
#line 3245 "parse.c"
3242
case 296: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
3243
#line 1093 "parse.y"
3245
sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy373,&yymsp[0].minor.yy0);
3247
#line 3252 "parse.c"
3249
case 297: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt column */
3250
#line 1096 "parse.y"
3252
sqlite3AlterFinishAddColumn(pParse, &yymsp[0].minor.yy0);
3254
#line 3259 "parse.c"
3256
case 298: /* add_column_fullname ::= fullname */
3257
#line 1099 "parse.y"
3259
sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy373);
3261
#line 3266 "parse.c"
3263
case 301: /* cmd ::= create_vtab */
3264
#line 1108 "parse.y"
3265
{sqlite3VtabFinishParse(pParse,0);}
3266
#line 3271 "parse.c"
3268
case 302: /* cmd ::= create_vtab LP vtabarglist RP */
3269
#line 1109 "parse.y"
3270
{sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
3271
#line 3276 "parse.c"
3273
case 303: /* create_vtab ::= CREATE VIRTUAL TABLE nm dbnm USING nm */
3274
#line 1110 "parse.y"
3276
sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
3278
#line 3283 "parse.c"
3280
case 306: /* vtabarg ::= */
3281
#line 1115 "parse.y"
3282
{sqlite3VtabArgInit(pParse);}
3283
#line 3288 "parse.c"
3285
case 308: /* vtabargtoken ::= ANY */
3286
case 309: /* vtabargtoken ::= lp anylist RP */
3287
case 310: /* lp ::= LP */
3288
case 312: /* anylist ::= anylist ANY */
3289
#line 1117 "parse.y"
3290
{sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
3291
#line 3296 "parse.c"
3294
yygoto = yyRuleInfo[yyruleno].lhs;
3295
yysize = yyRuleInfo[yyruleno].nrhs;
3296
yypParser->yyidx -= yysize;
3297
yyact = yy_find_reduce_action(yymsp[-yysize].stateno,yygoto);
3298
if( yyact < YYNSTATE ){
3300
/* If we are not debugging and the reduce action popped at least
3301
** one element off the stack, then we can push the new element back
3302
** onto the stack here, and skip the stack overflow test in yy_shift().
3303
** That gives a significant speed improvement. */
3307
yymsp->stateno = yyact;
3308
yymsp->major = yygoto;
3309
yymsp->minor = yygotominor;
3313
yy_shift(yypParser,yyact,yygoto,&yygotominor);
3316
assert( yyact == YYNSTATE + YYNRULE + 1 );
3317
yy_accept(yypParser);
3322
** The following code executes when the parse fails
3324
static void yy_parse_failed(
3325
yyParser *yypParser /* The parser */
3327
sqlite3ParserARG_FETCH;
3330
fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
3333
while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
3334
/* Here code is inserted which will be executed whenever the
3336
sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
3340
** The following code executes when a syntax error first occurs.
3342
static void yy_syntax_error(
3343
yyParser *yypParser, /* The parser */
3344
int yymajor, /* The major type of the error token */
3345
YYMINORTYPE yyminor /* The minor type of the error token */
3347
sqlite3ParserARG_FETCH;
3348
#define TOKEN (yyminor.yy0)
3351
assert( TOKEN.z[0] ); /* The tokenizer always gives us a token */
3352
sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &TOKEN);
3353
pParse->parseError = 1;
3354
#line 3361 "parse.c"
3355
sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
3359
** The following is executed when the parser accepts
3361
static void yy_accept(
3362
yyParser *yypParser /* The parser */
3364
sqlite3ParserARG_FETCH;
3367
fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
3370
while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
3371
/* Here code is inserted which will be executed whenever the
3372
** parser accepts */
3373
sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
3376
/* The main parser program.
3377
** The first argument is a pointer to a structure obtained from
3378
** "sqlite3ParserAlloc" which describes the current state of the parser.
3379
** The second argument is the major token number. The third is
3380
** the minor token. The fourth optional argument is whatever the
3381
** user wants (and specified in the grammar) and is available for
3382
** use by the action routines.
3386
** <li> A pointer to the parser (an opaque structure.)
3387
** <li> The major token number.
3388
** <li> The minor token number.
3389
** <li> An option argument of a grammar-specified type.
3396
void *yyp, /* The parser */
3397
int yymajor, /* The major token code number */
3398
sqlite3ParserTOKENTYPE yyminor /* The value for the token */
3399
sqlite3ParserARG_PDECL /* Optional %extra_argument parameter */
3401
YYMINORTYPE yyminorunion;
3402
int yyact; /* The parser action. */
3403
int yyendofinput; /* True if we are at the end of input */
3404
#ifdef YYERRORSYMBOL
3405
int yyerrorhit = 0; /* True if yymajor has invoked an error */
3407
yyParser *yypParser; /* The parser */
3409
/* (re)initialize the parser, if necessary */
3410
yypParser = (yyParser*)yyp;
3411
if( yypParser->yyidx<0 ){
3413
if( yypParser->yystksz <=0 ){
3414
/*memset(&yyminorunion, 0, sizeof(yyminorunion));*/
3415
yyminorunion = yyzerominor;
3416
yyStackOverflow(yypParser, &yyminorunion);
3420
yypParser->yyidx = 0;
3421
yypParser->yyerrcnt = -1;
3422
yypParser->yystack[0].stateno = 0;
3423
yypParser->yystack[0].major = 0;
3425
yyminorunion.yy0 = yyminor;
3426
yyendofinput = (yymajor==0);
3427
sqlite3ParserARG_STORE;
3431
fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]);
3436
yyact = yy_find_shift_action(yypParser,yymajor);
3437
if( yyact<YYNSTATE ){
3438
assert( !yyendofinput ); /* Impossible to shift the $ token */
3439
yy_shift(yypParser,yyact,yymajor,&yyminorunion);
3440
yypParser->yyerrcnt--;
3442
}else if( yyact < YYNSTATE + YYNRULE ){
3443
yy_reduce(yypParser,yyact-YYNSTATE);
3445
assert( yyact == YY_ERROR_ACTION );
3446
#ifdef YYERRORSYMBOL
3451
fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
3454
#ifdef YYERRORSYMBOL
3455
/* A syntax error has occurred.
3456
** The response to an error depends upon whether or not the
3457
** grammar defines an error token "ERROR".
3459
** This is what we do if the grammar does define ERROR:
3461
** * Call the %syntax_error function.
3463
** * Begin popping the stack until we enter a state where
3464
** it is legal to shift the error symbol, then shift
3465
** the error symbol.
3467
** * Set the error count to three.
3469
** * Begin accepting and shifting new tokens. No new error
3470
** processing will occur until three tokens have been
3471
** shifted successfully.
3474
if( yypParser->yyerrcnt<0 ){
3475
yy_syntax_error(yypParser,yymajor,yyminorunion);
3477
yymx = yypParser->yystack[yypParser->yyidx].major;
3478
if( yymx==YYERRORSYMBOL || yyerrorhit ){
3481
fprintf(yyTraceFILE,"%sDiscard input token %s\n",
3482
yyTracePrompt,yyTokenName[yymajor]);
3485
yy_destructor(yypParser, yymajor,&yyminorunion);
3489
yypParser->yyidx >= 0 &&
3490
yymx != YYERRORSYMBOL &&
3491
(yyact = yy_find_reduce_action(
3492
yypParser->yystack[yypParser->yyidx].stateno,
3493
YYERRORSYMBOL)) >= YYNSTATE
3495
yy_pop_parser_stack(yypParser);
3497
if( yypParser->yyidx < 0 || yymajor==0 ){
3498
yy_destructor(yypParser,yymajor,&yyminorunion);
3499
yy_parse_failed(yypParser);
3501
}else if( yymx!=YYERRORSYMBOL ){
3504
yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2);
3507
yypParser->yyerrcnt = 3;
3509
#else /* YYERRORSYMBOL is not defined */
3510
/* This is what we do if the grammar does not define ERROR:
3512
** * Report an error message, and throw away the input token.
3514
** * If the input token is $, then fail the parse.
3516
** As before, subsequent error messages are suppressed until
3517
** three input tokens have been successfully shifted.
3519
if( yypParser->yyerrcnt<=0 ){
3520
yy_syntax_error(yypParser,yymajor,yyminorunion);
3522
yypParser->yyerrcnt = 3;
3523
yy_destructor(yypParser,yymajor,&yyminorunion);
3525
yy_parse_failed(yypParser);
3530
}while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );