comparison sqlite/parse.c @ 1434:b6b61becdf4e trunk

[svn] - add sqlite/ directory
author nenolod
date Thu, 27 Jul 2006 22:41:31 -0700
parents
children
comparison
equal deleted inserted replaced
1433:3cbe3d14ea68 1434:b6b61becdf4e
1 /* Driver template for the LEMON parser generator.
2 ** The author disclaims copyright to this source code.
3 */
4 /* First off, code is include which follows the "include" declaration
5 ** in the input file. */
6 #include <stdio.h>
7 #line 56 "parse.y"
8
9 #include "sqliteInt.h"
10 #include "parse.h"
11
12 /*
13 ** An instance of this structure holds information about the
14 ** LIMIT clause of a SELECT statement.
15 */
16 struct LimitVal {
17 Expr *pLimit; /* The LIMIT expression. NULL if there is no limit */
18 Expr *pOffset; /* The OFFSET expression. NULL if there is none */
19 };
20
21 /*
22 ** An instance of this structure is used to store the LIKE,
23 ** GLOB, NOT LIKE, and NOT GLOB operators.
24 */
25 struct LikeOp {
26 Token eOperator; /* "like" or "glob" or "regexp" */
27 int not; /* True if the NOT keyword is present */
28 };
29
30 /*
31 ** An instance of the following structure describes the event of a
32 ** TRIGGER. "a" is the event type, one of TK_UPDATE, TK_INSERT,
33 ** TK_DELETE, or TK_INSTEAD. If the event is of the form
34 **
35 ** UPDATE ON (a,b,c)
36 **
37 ** Then the "b" IdList records the list "a,b,c".
38 */
39 struct TrigEvent { int a; IdList * b; };
40
41 /*
42 ** An instance of this structure holds the ATTACH key and the key type.
43 */
44 struct AttachKey { int type; Token key; };
45
46 #line 48 "parse.c"
47 /* Next is all token values, in a form suitable for use by makeheaders.
48 ** This section will be null unless lemon is run with the -m switch.
49 */
50 /*
51 ** These constants (all generated automatically by the parser generator)
52 ** specify the various kinds of tokens (terminals) that the parser
53 ** understands.
54 **
55 ** Each symbol here is a terminal symbol in the grammar.
56 */
57 /* Make sure the INTERFACE macro is defined.
58 */
59 #ifndef INTERFACE
60 # define INTERFACE 1
61 #endif
62 /* The next thing included is series of defines which control
63 ** various aspects of the generated parser.
64 ** YYCODETYPE is the data type used for storing terminal
65 ** and nonterminal numbers. "unsigned char" is
66 ** used if there are fewer than 250 terminals
67 ** and nonterminals. "int" is used otherwise.
68 ** YYNOCODE is a number of type YYCODETYPE which corresponds
69 ** to no legal terminal or nonterminal number. This
70 ** number is used to fill in empty slots of the hash
71 ** table.
72 ** YYFALLBACK If defined, this indicates that one or more tokens
73 ** have fall-back values which should be used if the
74 ** original value of the token will not parse.
75 ** YYACTIONTYPE is the data type used for storing terminal
76 ** and nonterminal numbers. "unsigned char" is
77 ** used if there are fewer than 250 rules and
78 ** states combined. "int" is used otherwise.
79 ** sqlite3ParserTOKENTYPE is the data type used for minor tokens given
80 ** directly to the parser from the tokenizer.
81 ** YYMINORTYPE is the data type used for all minor tokens.
82 ** This is typically a union of many types, one of
83 ** which is sqlite3ParserTOKENTYPE. The entry in the union
84 ** for base tokens is called "yy0".
85 ** YYSTACKDEPTH is the maximum depth of the parser's stack.
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.
94 */
95 #define YYCODETYPE unsigned char
96 #define YYNOCODE 240
97 #define YYACTIONTYPE unsigned short int
98 #define sqlite3ParserTOKENTYPE Token
99 typedef union {
100 sqlite3ParserTOKENTYPE yy0;
101 struct {int value; int mask;} yy13;
102 struct TrigEvent yy132;
103 IdList* yy160;
104 Expr* yy178;
105 int yy230;
106 Select* yy239;
107 TriggerStep* yy247;
108 struct LimitVal yy270;
109 SrcList* yy285;
110 Expr * yy292;
111 Token yy384;
112 struct LikeOp yy440;
113 ExprList* yy462;
114 int yy479;
115 } YYMINORTYPE;
116 #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
121 #define YYNSTATE 559
122 #define YYNRULE 295
123 #define YYERRORSYMBOL 137
124 #define YYERRSYMDT yy479
125 #define YYFALLBACK 1
126 #define YY_NO_ACTION (YYNSTATE+YYNRULE+2)
127 #define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1)
128 #define YY_ERROR_ACTION (YYNSTATE+YYNRULE)
129
130 /* Next are that tables used to determine what action to take based on the
131 ** current state and lookahead token. These tables are used to implement
132 ** functions that take a state number and lookahead value and return an
133 ** action integer.
134 **
135 ** Suppose the action integer is N. Then the action is determined as
136 ** follows
137 **
138 ** 0 <= N < YYNSTATE Shift N. That is, push the lookahead
139 ** token onto the stack and goto state N.
140 **
141 ** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE.
142 **
143 ** N == YYNSTATE+YYNRULE A syntax error has occurred.
144 **
145 ** N == YYNSTATE+YYNRULE+1 The parser accepts its input.
146 **
147 ** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused
148 ** slots in the yy_action[] table.
149 **
150 ** The action table is constructed as a single large table named yy_action[].
151 ** Given state S and lookahead X, the action is computed as
152 **
153 ** yy_action[ yy_shift_ofst[S] + X ]
154 **
155 ** If the index value yy_shift_ofst[S]+X is out of range or if the value
156 ** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S]
157 ** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table
158 ** and that yy_default[S] should be used instead.
159 **
160 ** The formula above is for computing the action when the lookahead is
161 ** a terminal symbol. If the lookahead is a non-terminal (as occurs after
162 ** a reduce action) then the yy_reduce_ofst[] array is used in place of
163 ** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of
164 ** YY_SHIFT_USE_DFLT.
165 **
166 ** The following are the tables generated in this section:
167 **
168 ** yy_action[] A single table containing all actions.
169 ** yy_lookahead[] A table containing the lookahead for each entry in
170 ** yy_action. Used to detect hash collisions.
171 ** yy_shift_ofst[] For each state, the offset into yy_action for
172 ** shifting terminals.
173 ** yy_reduce_ofst[] For each state, the offset into yy_action for
174 ** shifting non-terminals after a reduce.
175 ** yy_default[] Default action for each state.
176 */
177 static const YYACTIONTYPE yy_action[] = {
178 /* 0 */ 279, 67, 283, 69, 147, 165, 545, 418, 61, 61,
179 /* 10 */ 61, 61, 201, 63, 63, 63, 63, 64, 64, 65,
180 /* 20 */ 65, 65, 66, 66, 547, 548, 431, 68, 63, 63,
181 /* 30 */ 63, 63, 64, 64, 65, 65, 65, 66, 67, 453,
182 /* 40 */ 69, 147, 498, 60, 58, 287, 439, 440, 436, 436,
183 /* 50 */ 62, 62, 61, 61, 61, 61, 500, 63, 63, 63,
184 /* 60 */ 63, 64, 64, 65, 65, 65, 66, 279, 370, 283,
185 /* 70 */ 418, 2, 376, 79, 157, 114, 219, 304, 224, 305,
186 /* 80 */ 169, 244, 855, 118, 558, 503, 203, 2, 245, 388,
187 /* 90 */ 495, 218, 21, 431, 513, 20, 418, 57, 492, 511,
188 /* 100 */ 63, 63, 63, 63, 64, 64, 65, 65, 65, 66,
189 /* 110 */ 60, 58, 287, 439, 440, 436, 436, 62, 62, 61,
190 /* 120 */ 61, 61, 61, 530, 63, 63, 63, 63, 64, 64,
191 /* 130 */ 65, 65, 65, 66, 279, 377, 378, 174, 371, 368,
192 /* 140 */ 330, 333, 334, 219, 304, 224, 305, 169, 244, 510,
193 /* 150 */ 479, 19, 335, 138, 376, 245, 509, 301, 372, 418,
194 /* 160 */ 431, 529, 91, 199, 65, 65, 65, 66, 504, 167,
195 /* 170 */ 191, 64, 64, 65, 65, 65, 66, 60, 58, 287,
196 /* 180 */ 439, 440, 436, 436, 62, 62, 61, 61, 61, 61,
197 /* 190 */ 254, 63, 63, 63, 63, 64, 64, 65, 65, 65,
198 /* 200 */ 66, 279, 250, 410, 410, 430, 109, 395, 426, 204,
199 /* 210 */ 357, 260, 259, 308, 145, 168, 153, 377, 378, 396,
200 /* 220 */ 327, 201, 67, 189, 69, 147, 225, 431, 546, 361,
201 /* 230 */ 465, 365, 397, 499, 318, 409, 40, 413, 428, 312,
202 /* 240 */ 161, 180, 550, 178, 60, 58, 287, 439, 440, 436,
203 /* 250 */ 436, 62, 62, 61, 61, 61, 61, 410, 63, 63,
204 /* 260 */ 63, 63, 64, 64, 65, 65, 65, 66, 279, 471,
205 /* 270 */ 415, 415, 415, 282, 308, 322, 235, 426, 204, 308,
206 /* 280 */ 174, 367, 308, 330, 333, 334, 67, 308, 69, 147,
207 /* 290 */ 148, 559, 371, 368, 431, 335, 409, 34, 165, 465,
208 /* 300 */ 418, 409, 34, 275, 409, 34, 428, 502, 161, 409,
209 /* 310 */ 35, 60, 58, 287, 439, 440, 436, 436, 62, 62,
210 /* 320 */ 61, 61, 61, 61, 410, 63, 63, 63, 63, 64,
211 /* 330 */ 64, 65, 65, 65, 66, 308, 503, 395, 237, 290,
212 /* 340 */ 279, 391, 392, 146, 324, 387, 20, 288, 347, 396,
213 /* 350 */ 174, 450, 350, 330, 333, 334, 450, 409, 27, 450,
214 /* 360 */ 474, 231, 397, 418, 393, 335, 431, 501, 354, 144,
215 /* 370 */ 512, 503, 524, 232, 394, 465, 496, 410, 527, 392,
216 /* 380 */ 555, 20, 75, 60, 58, 287, 439, 440, 436, 436,
217 /* 390 */ 62, 62, 61, 61, 61, 61, 220, 63, 63, 63,
218 /* 400 */ 63, 64, 64, 65, 65, 65, 66, 308, 221, 185,
219 /* 410 */ 338, 254, 279, 308, 239, 443, 475, 308, 319, 308,
220 /* 420 */ 389, 444, 286, 421, 422, 379, 380, 381, 492, 409,
221 /* 430 */ 34, 311, 421, 422, 212, 409, 48, 170, 431, 409,
222 /* 440 */ 40, 409, 48, 410, 122, 314, 526, 442, 442, 1,
223 /* 450 */ 376, 469, 255, 376, 78, 60, 58, 287, 439, 440,
224 /* 460 */ 436, 436, 62, 62, 61, 61, 61, 61, 355, 63,
225 /* 470 */ 63, 63, 63, 64, 64, 65, 65, 65, 66, 279,
226 /* 480 */ 233, 152, 298, 478, 449, 203, 792, 192, 299, 351,
227 /* 490 */ 376, 281, 376, 9, 203, 376, 245, 376, 201, 432,
228 /* 500 */ 314, 376, 442, 442, 490, 431, 314, 325, 442, 442,
229 /* 510 */ 418, 356, 289, 377, 378, 354, 377, 378, 403, 434,
230 /* 520 */ 435, 410, 60, 58, 287, 439, 440, 436, 436, 62,
231 /* 530 */ 62, 61, 61, 61, 61, 263, 63, 63, 63, 63,
232 /* 540 */ 64, 64, 65, 65, 65, 66, 279, 433, 328, 236,
233 /* 550 */ 497, 473, 490, 377, 378, 377, 378, 484, 377, 378,
234 /* 560 */ 377, 378, 308, 522, 377, 378, 314, 521, 442, 442,
235 /* 570 */ 409, 3, 431, 418, 130, 254, 264, 485, 309, 346,
236 /* 580 */ 461, 213, 462, 242, 409, 28, 469, 292, 214, 60,
237 /* 590 */ 58, 287, 439, 440, 436, 436, 62, 62, 61, 61,
238 /* 600 */ 61, 61, 308, 63, 63, 63, 63, 64, 64, 65,
239 /* 610 */ 65, 65, 66, 279, 308, 458, 536, 248, 5, 308,
240 /* 620 */ 201, 308, 469, 308, 409, 23, 308, 202, 291, 308,
241 /* 630 */ 375, 243, 308, 362, 54, 115, 409, 32, 74, 431,
242 /* 640 */ 76, 409, 53, 409, 24, 409, 51, 345, 409, 96,
243 /* 650 */ 149, 409, 93, 265, 409, 98, 60, 58, 287, 439,
244 /* 660 */ 440, 436, 436, 62, 62, 61, 61, 61, 61, 308,
245 /* 670 */ 63, 63, 63, 63, 64, 64, 65, 65, 65, 66,
246 /* 680 */ 279, 308, 404, 297, 410, 90, 308, 176, 308, 405,
247 /* 690 */ 308, 409, 99, 308, 419, 308, 22, 308, 520, 344,
248 /* 700 */ 520, 164, 153, 409, 110, 141, 431, 313, 409, 111,
249 /* 710 */ 409, 16, 409, 97, 254, 409, 33, 409, 94, 409,
250 /* 720 */ 52, 410, 187, 60, 58, 287, 439, 440, 436, 436,
251 /* 730 */ 62, 62, 61, 61, 61, 61, 308, 63, 63, 63,
252 /* 740 */ 63, 64, 64, 65, 65, 65, 66, 279, 308, 490,
253 /* 750 */ 490, 414, 308, 320, 308, 538, 308, 460, 409, 112,
254 /* 760 */ 308, 171, 172, 173, 308, 408, 308, 424, 424, 407,
255 /* 770 */ 409, 113, 427, 431, 409, 25, 409, 36, 409, 37,
256 /* 780 */ 170, 437, 409, 26, 211, 293, 409, 38, 409, 39,
257 /* 790 */ 60, 58, 287, 439, 440, 436, 436, 62, 62, 61,
258 /* 800 */ 61, 61, 61, 308, 63, 63, 63, 63, 64, 64,
259 /* 810 */ 65, 65, 65, 66, 279, 308, 490, 490, 451, 308,
260 /* 820 */ 81, 308, 151, 308, 459, 409, 41, 308, 243, 243,
261 /* 830 */ 400, 401, 308, 448, 281, 12, 464, 409, 42, 468,
262 /* 840 */ 431, 409, 43, 409, 29, 409, 30, 241, 460, 409,
263 /* 850 */ 44, 294, 296, 480, 409, 45, 329, 60, 70, 287,
264 /* 860 */ 439, 440, 436, 436, 62, 62, 61, 61, 61, 61,
265 /* 870 */ 308, 63, 63, 63, 63, 64, 64, 65, 65, 65,
266 /* 880 */ 66, 279, 308, 408, 483, 482, 308, 407, 308, 467,
267 /* 890 */ 308, 166, 409, 46, 308, 243, 243, 476, 488, 12,
268 /* 900 */ 122, 518, 519, 179, 409, 47, 481, 431, 409, 31,
269 /* 910 */ 409, 10, 409, 49, 505, 486, 409, 50, 254, 249,
270 /* 920 */ 254, 254, 254, 158, 279, 58, 287, 439, 440, 436,
271 /* 930 */ 436, 62, 62, 61, 61, 61, 61, 410, 63, 63,
272 /* 940 */ 63, 63, 64, 64, 65, 65, 65, 66, 487, 247,
273 /* 950 */ 431, 122, 254, 337, 525, 122, 122, 251, 533, 539,
274 /* 960 */ 166, 540, 266, 360, 534, 543, 88, 88, 252, 287,
275 /* 970 */ 439, 440, 436, 436, 62, 62, 61, 61, 61, 61,
276 /* 980 */ 195, 63, 63, 63, 63, 64, 64, 65, 65, 65,
277 /* 990 */ 66, 71, 315, 268, 4, 253, 182, 258, 285, 349,
278 /* 1000 */ 342, 352, 353, 261, 262, 544, 310, 71, 315, 269,
279 /* 1010 */ 4, 222, 363, 272, 285, 593, 273, 554, 140, 226,
280 /* 1020 */ 385, 423, 310, 317, 425, 316, 532, 542, 18, 156,
281 /* 1030 */ 479, 454, 457, 430, 332, 489, 374, 382, 383, 317,
282 /* 1040 */ 384, 8, 302, 303, 491, 390, 398, 284, 403, 430,
283 /* 1050 */ 223, 406, 73, 72, 402, 81, 411, 399, 323, 56,
284 /* 1060 */ 71, 306, 307, 205, 321, 413, 80, 227, 73, 72,
285 /* 1070 */ 472, 77, 452, 163, 234, 455, 71, 306, 307, 71,
286 /* 1080 */ 315, 413, 4, 229, 201, 456, 285, 412, 228, 82,
287 /* 1090 */ 119, 326, 230, 206, 310, 207, 101, 276, 415, 415,
288 /* 1100 */ 415, 416, 417, 11, 238, 494, 466, 470, 240, 209,
289 /* 1110 */ 210, 317, 493, 506, 415, 415, 415, 416, 417, 11,
290 /* 1120 */ 507, 430, 155, 339, 508, 514, 177, 215, 216, 217,
291 /* 1130 */ 105, 277, 341, 181, 516, 83, 343, 85, 256, 455,
292 /* 1140 */ 73, 72, 517, 197, 183, 270, 348, 117, 71, 306,
293 /* 1150 */ 307, 528, 271, 413, 186, 126, 535, 358, 127, 128,
294 /* 1160 */ 541, 135, 300, 132, 194, 136, 529, 551, 552, 553,
295 /* 1170 */ 129, 193, 89, 196, 430, 556, 208, 100, 95, 373,
296 /* 1180 */ 386, 116, 200, 55, 17, 594, 415, 415, 415, 416,
297 /* 1190 */ 417, 11, 92, 142, 143, 595, 159, 108, 160, 59,
298 /* 1200 */ 438, 420, 499, 429, 137, 441, 413, 445, 150, 162,
299 /* 1210 */ 446, 447, 6, 7, 13, 359, 267, 259, 463, 12,
300 /* 1220 */ 120, 280, 121, 154, 477, 102, 201, 246, 331, 103,
301 /* 1230 */ 84, 104, 336, 175, 221, 340, 139, 515, 123, 415,
302 /* 1240 */ 415, 415, 184, 124, 295, 166, 257, 106, 523, 278,
303 /* 1250 */ 364, 531, 125, 86, 188, 14, 190, 537, 131, 133,
304 /* 1260 */ 87, 134, 15, 107, 198, 549, 366, 369, 536, 557,
305 /* 1270 */ 274,
306 };
307 static const YYCODETYPE yy_lookahead[] = {
308 /* 0 */ 16, 216, 16, 218, 219, 21, 146, 23, 68, 69,
309 /* 10 */ 70, 71, 109, 73, 74, 75, 76, 77, 78, 79,
310 /* 20 */ 80, 81, 82, 82, 164, 165, 42, 72, 73, 74,
311 /* 30 */ 75, 76, 77, 78, 79, 80, 81, 82, 216, 217,
312 /* 40 */ 218, 219, 168, 59, 60, 61, 62, 63, 64, 65,
313 /* 50 */ 66, 67, 68, 69, 70, 71, 168, 73, 74, 75,
314 /* 60 */ 76, 77, 78, 79, 80, 81, 82, 16, 140, 16,
315 /* 70 */ 86, 143, 23, 22, 88, 89, 90, 91, 92, 93,
316 /* 80 */ 94, 95, 138, 139, 140, 146, 226, 143, 102, 166,
317 /* 90 */ 167, 152, 19, 42, 155, 156, 23, 46, 175, 180,
318 /* 100 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
319 /* 110 */ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
320 /* 120 */ 69, 70, 71, 11, 73, 74, 75, 76, 77, 78,
321 /* 130 */ 79, 80, 81, 82, 16, 86, 87, 88, 1, 2,
322 /* 140 */ 91, 92, 93, 90, 91, 92, 93, 94, 95, 175,
323 /* 150 */ 176, 19, 103, 21, 23, 102, 182, 141, 142, 86,
324 /* 160 */ 42, 49, 44, 147, 79, 80, 81, 82, 180, 154,
325 /* 170 */ 154, 77, 78, 79, 80, 81, 82, 59, 60, 61,
326 /* 180 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
327 /* 190 */ 146, 73, 74, 75, 76, 77, 78, 79, 80, 81,
328 /* 200 */ 82, 16, 14, 188, 188, 58, 21, 12, 77, 78,
329 /* 210 */ 98, 99, 100, 146, 22, 200, 201, 86, 87, 24,
330 /* 220 */ 205, 109, 216, 154, 218, 219, 189, 42, 97, 213,
331 /* 230 */ 160, 187, 37, 86, 39, 168, 169, 90, 160, 161,
332 /* 240 */ 162, 53, 236, 55, 59, 60, 61, 62, 63, 64,
333 /* 250 */ 65, 66, 67, 68, 69, 70, 71, 188, 73, 74,
334 /* 260 */ 75, 76, 77, 78, 79, 80, 81, 82, 16, 199,
335 /* 270 */ 123, 124, 125, 149, 146, 208, 209, 77, 78, 146,
336 /* 280 */ 88, 237, 146, 91, 92, 93, 216, 146, 218, 219,
337 /* 290 */ 154, 0, 1, 2, 42, 103, 168, 169, 21, 160,
338 /* 300 */ 23, 168, 169, 157, 168, 169, 160, 161, 162, 168,
339 /* 310 */ 169, 59, 60, 61, 62, 63, 64, 65, 66, 67,
340 /* 320 */ 68, 69, 70, 71, 188, 73, 74, 75, 76, 77,
341 /* 330 */ 78, 79, 80, 81, 82, 146, 146, 12, 199, 211,
342 /* 340 */ 16, 184, 185, 154, 211, 155, 156, 211, 224, 24,
343 /* 350 */ 88, 223, 228, 91, 92, 93, 223, 168, 169, 223,
344 /* 360 */ 20, 220, 37, 86, 39, 103, 42, 159, 146, 179,
345 /* 370 */ 180, 146, 18, 146, 49, 160, 168, 188, 184, 185,
346 /* 380 */ 155, 156, 130, 59, 60, 61, 62, 63, 64, 65,
347 /* 390 */ 66, 67, 68, 69, 70, 71, 90, 73, 74, 75,
348 /* 400 */ 76, 77, 78, 79, 80, 81, 82, 146, 102, 154,
349 /* 410 */ 16, 146, 16, 146, 199, 20, 20, 146, 185, 146,
350 /* 420 */ 167, 20, 163, 164, 165, 7, 8, 9, 175, 168,
351 /* 430 */ 169, 163, 164, 165, 212, 168, 169, 43, 42, 168,
352 /* 440 */ 169, 168, 169, 188, 22, 105, 92, 107, 108, 19,
353 /* 450 */ 23, 146, 187, 23, 130, 59, 60, 61, 62, 63,
354 /* 460 */ 64, 65, 66, 67, 68, 69, 70, 71, 213, 73,
355 /* 470 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 16,
356 /* 480 */ 209, 146, 215, 20, 223, 226, 132, 154, 215, 234,
357 /* 490 */ 23, 97, 23, 19, 226, 23, 102, 23, 109, 42,
358 /* 500 */ 105, 23, 107, 108, 146, 42, 105, 146, 107, 108,
359 /* 510 */ 23, 122, 207, 86, 87, 146, 86, 87, 96, 62,
360 /* 520 */ 63, 188, 59, 60, 61, 62, 63, 64, 65, 66,
361 /* 530 */ 67, 68, 69, 70, 71, 14, 73, 74, 75, 76,
362 /* 540 */ 77, 78, 79, 80, 81, 82, 16, 90, 146, 146,
363 /* 550 */ 20, 79, 146, 86, 87, 86, 87, 30, 86, 87,
364 /* 560 */ 86, 87, 146, 25, 86, 87, 105, 29, 107, 108,
365 /* 570 */ 168, 169, 42, 86, 53, 146, 55, 50, 146, 41,
366 /* 580 */ 113, 212, 113, 225, 168, 169, 146, 181, 144, 59,
367 /* 590 */ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
368 /* 600 */ 70, 71, 146, 73, 74, 75, 76, 77, 78, 79,
369 /* 610 */ 80, 81, 82, 16, 146, 22, 187, 20, 190, 146,
370 /* 620 */ 109, 146, 146, 146, 168, 169, 146, 191, 101, 146,
371 /* 630 */ 146, 225, 146, 122, 198, 146, 168, 169, 129, 42,
372 /* 640 */ 131, 168, 169, 168, 169, 168, 169, 207, 168, 169,
373 /* 650 */ 154, 168, 169, 132, 168, 169, 59, 60, 61, 62,
374 /* 660 */ 63, 64, 65, 66, 67, 68, 69, 70, 71, 146,
375 /* 670 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
376 /* 680 */ 16, 146, 27, 207, 188, 21, 146, 154, 146, 34,
377 /* 690 */ 146, 168, 169, 146, 20, 146, 22, 146, 98, 99,
378 /* 700 */ 100, 200, 201, 168, 169, 112, 42, 16, 168, 169,
379 /* 710 */ 168, 169, 168, 169, 146, 168, 169, 168, 169, 168,
380 /* 720 */ 169, 188, 22, 59, 60, 61, 62, 63, 64, 65,
381 /* 730 */ 66, 67, 68, 69, 70, 71, 146, 73, 74, 75,
382 /* 740 */ 76, 77, 78, 79, 80, 81, 82, 16, 146, 146,
383 /* 750 */ 146, 146, 146, 146, 146, 187, 146, 22, 168, 169,
384 /* 760 */ 146, 98, 99, 100, 146, 106, 146, 123, 124, 110,
385 /* 770 */ 168, 169, 160, 42, 168, 169, 168, 169, 168, 169,
386 /* 780 */ 43, 90, 168, 169, 181, 181, 168, 169, 168, 169,
387 /* 790 */ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
388 /* 800 */ 69, 70, 71, 146, 73, 74, 75, 76, 77, 78,
389 /* 810 */ 79, 80, 81, 82, 16, 146, 146, 146, 146, 146,
390 /* 820 */ 120, 146, 87, 146, 202, 168, 169, 146, 225, 225,
391 /* 830 */ 7, 8, 146, 20, 97, 22, 146, 168, 169, 146,
392 /* 840 */ 42, 168, 169, 168, 169, 168, 169, 146, 113, 168,
393 /* 850 */ 169, 181, 181, 146, 168, 169, 79, 59, 60, 61,
394 /* 860 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
395 /* 870 */ 146, 73, 74, 75, 76, 77, 78, 79, 80, 81,
396 /* 880 */ 82, 16, 146, 106, 89, 90, 146, 110, 146, 20,
397 /* 890 */ 146, 22, 168, 169, 146, 225, 225, 20, 20, 22,
398 /* 900 */ 22, 51, 52, 154, 168, 169, 177, 42, 168, 169,
399 /* 910 */ 168, 169, 168, 169, 146, 177, 168, 169, 146, 146,
400 /* 920 */ 146, 146, 146, 19, 16, 60, 61, 62, 63, 64,
401 /* 930 */ 65, 66, 67, 68, 69, 70, 71, 188, 73, 74,
402 /* 940 */ 75, 76, 77, 78, 79, 80, 81, 82, 177, 20,
403 /* 950 */ 42, 22, 146, 20, 20, 22, 22, 146, 20, 187,
404 /* 960 */ 22, 187, 187, 187, 20, 20, 22, 22, 146, 61,
405 /* 970 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
406 /* 980 */ 19, 73, 74, 75, 76, 77, 78, 79, 80, 81,
407 /* 990 */ 82, 16, 17, 187, 19, 146, 230, 146, 23, 146,
408 /* 1000 */ 231, 146, 146, 146, 146, 146, 31, 16, 17, 146,
409 /* 1010 */ 19, 171, 146, 146, 23, 111, 146, 146, 190, 192,
410 /* 1020 */ 148, 227, 31, 48, 227, 222, 193, 193, 67, 6,
411 /* 1030 */ 176, 171, 171, 58, 172, 171, 145, 145, 145, 48,
412 /* 1040 */ 145, 22, 153, 97, 171, 170, 170, 40, 96, 58,
413 /* 1050 */ 170, 170, 77, 78, 172, 120, 188, 178, 117, 119,
414 /* 1060 */ 85, 86, 87, 221, 115, 90, 118, 193, 77, 78,
415 /* 1070 */ 79, 129, 151, 111, 95, 23, 85, 86, 87, 16,
416 /* 1080 */ 17, 90, 19, 195, 109, 159, 23, 197, 194, 97,
417 /* 1090 */ 151, 114, 196, 210, 31, 210, 19, 173, 123, 124,
418 /* 1100 */ 125, 126, 127, 128, 203, 178, 204, 204, 203, 210,
419 /* 1110 */ 210, 48, 159, 170, 123, 124, 125, 126, 127, 128,
420 /* 1120 */ 170, 58, 5, 15, 170, 151, 150, 10, 11, 12,
421 /* 1130 */ 13, 173, 151, 151, 151, 19, 38, 129, 232, 23,
422 /* 1140 */ 77, 78, 233, 26, 150, 28, 151, 59, 85, 86,
423 /* 1150 */ 87, 183, 35, 90, 183, 19, 193, 15, 186, 186,
424 /* 1160 */ 193, 214, 151, 183, 47, 214, 49, 33, 151, 151,
425 /* 1170 */ 186, 54, 235, 56, 58, 136, 174, 174, 158, 1,
426 /* 1180 */ 20, 32, 44, 19, 229, 111, 123, 124, 125, 126,
427 /* 1190 */ 127, 128, 235, 77, 78, 111, 111, 238, 111, 19,
428 /* 1200 */ 90, 20, 86, 20, 19, 106, 90, 11, 19, 22,
429 /* 1210 */ 20, 20, 116, 116, 22, 98, 99, 100, 113, 22,
430 /* 1220 */ 19, 104, 20, 111, 20, 19, 109, 20, 44, 19,
431 /* 1230 */ 19, 19, 44, 94, 102, 16, 21, 17, 97, 123,
432 /* 1240 */ 124, 125, 97, 45, 36, 22, 132, 19, 45, 5,
433 /* 1250 */ 133, 1, 101, 67, 121, 19, 112, 17, 112, 101,
434 /* 1260 */ 67, 121, 19, 14, 134, 20, 57, 3, 239, 4,
435 /* 1270 */ 135,
436 };
437 #define YY_SHIFT_USE_DFLT (-98)
438 #define YY_SHIFT_MAX 369
439 static const short yy_shift_ofst[] = {
440 /* 0 */ 137, 975, 1117, -16, 975, 1063, 1063, 1063, 49, -97,
441 /* 10 */ 118, 1063, 1063, 1063, 1063, 1063, -45, 112, 131, 478,
442 /* 20 */ 487, 200, 200, 51, 185, 252, 324, 396, 463, 530,
443 /* 30 */ 597, 664, 731, 798, 731, 731, 731, 731, 731, 731,
444 /* 40 */ 731, 731, 731, 731, 731, 731, 731, 731, 731, 731,
445 /* 50 */ 731, 865, 908, 908, 991, 1063, 1063, 1063, 1063, 1063,
446 /* 60 */ 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
447 /* 70 */ 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
448 /* 80 */ 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
449 /* 90 */ 1063, 1063, 1063, -60, -60, -14, 27, 27, 94, 85,
450 /* 100 */ 394, 478, 478, 478, 478, 354, 478, 478, 478, 487,
451 /* 110 */ -59, -98, -98, -98, 1116, 53, 325, 325, 291, 277,
452 /* 120 */ 478, 277, 478, 478, 478, 478, 478, 478, 478, 478,
453 /* 130 */ 478, 478, 478, 478, 478, 389, 511, -97, -97, -97,
454 /* 140 */ -98, -98, 147, 147, 192, 262, 340, 430, 395, 401,
455 /* 150 */ 195, 467, 469, 474, 472, 418, 427, 427, 777, 427,
456 /* 160 */ 427, 73, 427, 427, 735, 427, 427, 461, 735, 427,
457 /* 170 */ 427, 527, 527, 527, 427, 427, 461, 427, 427, 461,
458 /* 180 */ 427, 538, 600, 427, 427, 461, 427, 427, 427, 461,
459 /* 190 */ 427, 461, 461, 427, 427, 427, 427, 427, 427, 132,
460 /* 200 */ 655, 659, 593, 644, 644, 509, 655, 655, 737, 655,
461 /* 210 */ 655, 422, 700, 700, 1023, 1023, 1023, 1023, 1019, 946,
462 /* 220 */ 946, 1007, 946, 952, 946, -97, 935, 941, 948, 949,
463 /* 230 */ 940, 942, 962, 979, 1052, 979, 962, 992, 977, 992,
464 /* 240 */ 977, 1077, 979, 979, 1052, 1007, 946, 946, 946, 1077,
465 /* 250 */ 1108, 962, 962, 962, 962, 1098, 1008, 1108, 962, 1088,
466 /* 260 */ 1088, 1136, 935, 1142, 1142, 1142, 935, 1088, 1136, 962,
467 /* 270 */ 1134, 1134, 962, 962, 1039, -98, -98, -98, -98, 457,
468 /* 280 */ 521, 663, 188, 306, 823, 904, 674, 691, 813, 869,
469 /* 290 */ 877, 795, 878, 929, 933, 850, 934, 938, 944, 945,
470 /* 300 */ 961, 1178, 1160, 1149, 1138, 1164, 1074, 1084, 1085, 1087,
471 /* 310 */ 1180, 1181, 1183, 1110, 1099, 1185, 1196, 1189, 1190, 1187,
472 /* 320 */ 1191, 1096, 1192, 1097, 1197, 1105, 1201, 1202, 1112, 1204,
473 /* 330 */ 1184, 1206, 1207, 1210, 1211, 1188, 1212, 1139, 1132, 1219,
474 /* 340 */ 1220, 1215, 1141, 1208, 1198, 1223, 1203, 1114, 1145, 1228,
475 /* 350 */ 1244, 1250, 1151, 1186, 1193, 1133, 1236, 1144, 1240, 1146,
476 /* 360 */ 1158, 1140, 1243, 1245, 1249, 1209, 1130, 1135, 1264, 1265,
477 };
478 #define YY_REDUCE_USE_DFLT (-216)
479 #define YY_REDUCE_MAX 278
480 static const short yy_reduce_ofst[] = {
481 /* 0 */ -56, 136, 16, 70, 189, 128, 67, 133, 190, 15,
482 /* 10 */ 6, 141, 261, 271, 267, 273, -178, 255, -140, -61,
483 /* 20 */ 146, 259, 268, -215, -215, -215, -215, -215, -215, -215,
484 /* 30 */ -215, -215, -215, -215, -215, -215, -215, -215, -215, -215,
485 /* 40 */ -215, -215, -215, -215, -215, -215, -215, -215, -215, -215,
486 /* 50 */ -215, -215, -215, -215, 402, 416, 456, 468, 473, 475,
487 /* 60 */ 477, 480, 483, 486, 523, 535, 540, 542, 544, 547,
488 /* 70 */ 549, 551, 590, 602, 606, 608, 610, 614, 618, 620,
489 /* 80 */ 657, 669, 673, 675, 677, 681, 686, 724, 736, 740,
490 /* 90 */ 742, 744, 748, -215, -215, -77, -215, -215, -215, -215,
491 /* 100 */ -26, 406, 603, 604, 670, 124, 671, 44, 225, 78,
492 /* 110 */ -215, -215, -215, -215, 208, 253, 157, 194, -72, 139,
493 /* 120 */ 305, 215, 358, 265, 440, 222, 476, 429, 568, 772,
494 /* 130 */ 774, 775, 776, 369, 806, 69, 333, 496, 533, 749,
495 /* 140 */ 436, 501, -126, -112, -81, -12, 37, 227, 37, 37,
496 /* 150 */ 233, 335, 361, 403, 432, 444, 484, 489, 428, 432,
497 /* 160 */ 605, 612, 607, 672, 622, 690, 693, 37, 622, 701,
498 /* 170 */ 707, 729, 738, 771, 768, 773, 37, 811, 822, 37,
499 /* 180 */ 849, 766, 769, 851, 853, 37, 855, 856, 857, 37,
500 /* 190 */ 858, 37, 37, 859, 863, 866, 867, 870, 871, 872,
501 /* 200 */ 840, 828, 827, 794, 797, 803, 860, 861, 854, 864,
502 /* 210 */ 873, 862, 833, 834, 891, 892, 893, 895, 889, 875,
503 /* 220 */ 876, 879, 880, 882, 881, 868, 874, 894, 888, 896,
504 /* 230 */ 890, 842, 921, 883, 926, 885, 939, 901, 902, 905,
505 /* 240 */ 903, 924, 899, 900, 953, 927, 943, 950, 954, 958,
506 /* 250 */ 976, 974, 981, 982, 983, 906, 909, 994, 995, 968,
507 /* 260 */ 971, 947, 963, 972, 973, 984, 967, 980, 951, 1011,
508 /* 270 */ 937, 957, 1017, 1018, 959, 1020, 1002, 1003, 955,
509 };
510 static const YYACTIONTYPE yy_default[] = {
511 /* 0 */ 565, 789, 854, 680, 854, 789, 854, 789, 854, 684,
512 /* 10 */ 840, 785, 789, 854, 854, 854, 760, 854, 811, 854,
513 /* 20 */ 596, 811, 811, 715, 854, 854, 854, 854, 854, 854,
514 /* 30 */ 854, 854, 716, 854, 788, 784, 780, 782, 781, 717,
515 /* 40 */ 704, 713, 720, 696, 825, 722, 723, 728, 729, 841,
516 /* 50 */ 844, 750, 766, 749, 854, 854, 854, 854, 854, 854,
517 /* 60 */ 854, 854, 854, 854, 854, 854, 854, 854, 854, 854,
518 /* 70 */ 854, 854, 854, 854, 854, 854, 854, 854, 854, 854,
519 /* 80 */ 854, 854, 854, 854, 854, 854, 854, 854, 854, 854,
520 /* 90 */ 854, 854, 854, 752, 771, 589, 751, 759, 753, 754,
521 /* 100 */ 649, 854, 854, 854, 854, 584, 854, 854, 854, 854,
522 /* 110 */ 755, 756, 767, 768, 854, 854, 854, 854, 565, 680,
523 /* 120 */ 854, 680, 854, 854, 854, 854, 854, 854, 854, 854,
524 /* 130 */ 854, 854, 854, 854, 854, 854, 854, 854, 854, 854,
525 /* 140 */ 674, 684, 854, 854, 640, 854, 854, 854, 854, 854,
526 /* 150 */ 854, 854, 854, 854, 854, 572, 570, 854, 672, 854,
527 /* 160 */ 854, 598, 854, 854, 682, 854, 854, 687, 688, 854,
528 /* 170 */ 854, 854, 854, 854, 854, 854, 586, 854, 854, 661,
529 /* 180 */ 854, 817, 854, 854, 854, 832, 854, 854, 854, 830,
530 /* 190 */ 854, 663, 725, 799, 854, 854, 845, 847, 854, 854,
531 /* 200 */ 707, 672, 681, 854, 854, 783, 707, 707, 619, 707,
532 /* 210 */ 707, 622, 719, 719, 569, 569, 569, 569, 639, 651,
533 /* 220 */ 651, 636, 651, 622, 651, 854, 719, 710, 712, 700,
534 /* 230 */ 714, 854, 689, 708, 854, 708, 689, 697, 699, 697,
535 /* 240 */ 699, 793, 708, 708, 854, 636, 651, 651, 651, 793,
536 /* 250 */ 581, 689, 689, 689, 689, 821, 824, 581, 689, 653,
537 /* 260 */ 653, 730, 719, 660, 660, 660, 719, 653, 730, 689,
538 /* 270 */ 843, 843, 689, 689, 852, 606, 624, 624, 827, 854,
539 /* 280 */ 854, 854, 854, 854, 854, 737, 854, 854, 854, 854,
540 /* 290 */ 854, 854, 854, 854, 854, 854, 854, 854, 854, 854,
541 /* 300 */ 806, 854, 854, 854, 854, 854, 742, 738, 854, 739,
542 /* 310 */ 854, 854, 854, 854, 666, 854, 854, 854, 854, 854,
543 /* 320 */ 854, 854, 701, 854, 711, 854, 854, 854, 854, 854,
544 /* 330 */ 854, 854, 854, 854, 854, 854, 854, 854, 854, 854,
545 /* 340 */ 854, 854, 854, 854, 819, 820, 854, 854, 854, 854,
546 /* 350 */ 854, 854, 854, 854, 854, 854, 854, 854, 854, 854,
547 /* 360 */ 854, 854, 854, 854, 854, 851, 854, 854, 566, 854,
548 /* 370 */ 560, 563, 562, 564, 568, 571, 593, 594, 595, 573,
549 /* 380 */ 574, 575, 576, 577, 578, 579, 585, 587, 605, 607,
550 /* 390 */ 614, 652, 655, 656, 657, 835, 836, 837, 615, 634,
551 /* 400 */ 637, 638, 616, 623, 705, 706, 617, 670, 671, 734,
552 /* 410 */ 664, 665, 669, 736, 740, 741, 743, 744, 592, 599,
553 /* 420 */ 600, 603, 604, 807, 809, 808, 810, 602, 601, 745,
554 /* 430 */ 748, 757, 758, 764, 770, 773, 762, 763, 765, 769,
555 /* 440 */ 772, 667, 668, 776, 778, 779, 833, 834, 774, 786,
556 /* 450 */ 787, 690, 777, 761, 702, 591, 709, 703, 673, 683,
557 /* 460 */ 692, 693, 694, 695, 678, 679, 685, 698, 732, 733,
558 /* 470 */ 686, 675, 676, 677, 775, 735, 746, 747, 618, 625,
559 /* 480 */ 626, 627, 630, 631, 632, 633, 628, 629, 794, 795,
560 /* 490 */ 797, 796, 620, 621, 635, 608, 609, 610, 611, 742,
561 /* 500 */ 612, 613, 597, 590, 641, 644, 645, 646, 647, 648,
562 /* 510 */ 650, 642, 643, 588, 580, 582, 691, 813, 822, 823,
563 /* 520 */ 818, 814, 815, 816, 583, 790, 791, 654, 726, 727,
564 /* 530 */ 812, 826, 828, 731, 829, 831, 658, 659, 662, 798,
565 /* 540 */ 838, 718, 721, 724, 800, 801, 802, 803, 804, 805,
566 /* 550 */ 839, 842, 846, 848, 849, 850, 853, 567, 561,
567 };
568 #define YY_SZ_ACTTAB (sizeof(yy_action)/sizeof(yy_action[0]))
569
570 /* The next table maps tokens into fallback tokens. If a construct
571 ** like the following:
572 **
573 ** %fallback ID X Y Z.
574 **
575 ** appears in the grammer, then ID becomes a fallback token for X, Y,
576 ** and Z. Whenever one of the tokens X, Y, or Z is input to the parser
577 ** but it does not parse, the type of the token is changed to ID and
578 ** the parse is retried before an error is thrown.
579 */
580 #ifdef YYFALLBACK
581 static const YYCODETYPE yyFallback[] = {
582 0, /* $ => nothing */
583 0, /* SEMI => nothing */
584 23, /* EXPLAIN => ID */
585 23, /* QUERY => ID */
586 23, /* PLAN => ID */
587 23, /* BEGIN => ID */
588 0, /* TRANSACTION => nothing */
589 23, /* DEFERRED => ID */
590 23, /* IMMEDIATE => ID */
591 23, /* EXCLUSIVE => ID */
592 0, /* COMMIT => nothing */
593 23, /* END => ID */
594 0, /* ROLLBACK => nothing */
595 0, /* CREATE => nothing */
596 0, /* TABLE => nothing */
597 23, /* IF => ID */
598 0, /* NOT => nothing */
599 0, /* EXISTS => nothing */
600 23, /* TEMP => ID */
601 0, /* LP => nothing */
602 0, /* RP => nothing */
603 0, /* AS => nothing */
604 0, /* COMMA => nothing */
605 0, /* ID => nothing */
606 23, /* ABORT => ID */
607 23, /* AFTER => ID */
608 23, /* ANALYZE => ID */
609 23, /* ASC => ID */
610 23, /* ATTACH => ID */
611 23, /* BEFORE => ID */
612 23, /* CASCADE => ID */
613 23, /* CAST => ID */
614 23, /* CONFLICT => ID */
615 23, /* DATABASE => ID */
616 23, /* DESC => ID */
617 23, /* DETACH => ID */
618 23, /* EACH => ID */
619 23, /* FAIL => ID */
620 23, /* FOR => ID */
621 23, /* IGNORE => ID */
622 23, /* INITIALLY => ID */
623 23, /* INSTEAD => ID */
624 23, /* LIKE_KW => ID */
625 23, /* MATCH => ID */
626 23, /* KEY => ID */
627 23, /* OF => ID */
628 23, /* OFFSET => ID */
629 23, /* PRAGMA => ID */
630 23, /* RAISE => ID */
631 23, /* REPLACE => ID */
632 23, /* RESTRICT => ID */
633 23, /* ROW => ID */
634 23, /* STATEMENT => ID */
635 23, /* TRIGGER => ID */
636 23, /* VACUUM => ID */
637 23, /* VIEW => ID */
638 23, /* REINDEX => ID */
639 23, /* RENAME => ID */
640 23, /* CTIME_KW => ID */
641 0, /* OR => nothing */
642 0, /* AND => nothing */
643 0, /* IS => nothing */
644 0, /* BETWEEN => nothing */
645 0, /* IN => nothing */
646 0, /* ISNULL => nothing */
647 0, /* NOTNULL => nothing */
648 0, /* NE => nothing */
649 0, /* EQ => nothing */
650 0, /* GT => nothing */
651 0, /* LE => nothing */
652 0, /* LT => nothing */
653 0, /* GE => nothing */
654 0, /* ESCAPE => nothing */
655 0, /* BITAND => nothing */
656 0, /* BITOR => nothing */
657 0, /* LSHIFT => nothing */
658 0, /* RSHIFT => nothing */
659 0, /* PLUS => nothing */
660 0, /* MINUS => nothing */
661 0, /* STAR => nothing */
662 0, /* SLASH => nothing */
663 0, /* REM => nothing */
664 0, /* CONCAT => nothing */
665 0, /* UMINUS => nothing */
666 0, /* UPLUS => nothing */
667 0, /* BITNOT => nothing */
668 0, /* STRING => nothing */
669 0, /* JOIN_KW => nothing */
670 0, /* CONSTRAINT => nothing */
671 0, /* DEFAULT => nothing */
672 0, /* NULL => nothing */
673 0, /* PRIMARY => nothing */
674 0, /* UNIQUE => nothing */
675 0, /* CHECK => nothing */
676 0, /* REFERENCES => nothing */
677 0, /* COLLATE => nothing */
678 0, /* AUTOINCR => nothing */
679 0, /* ON => nothing */
680 0, /* DELETE => nothing */
681 0, /* UPDATE => nothing */
682 0, /* INSERT => nothing */
683 0, /* SET => nothing */
684 0, /* DEFERRABLE => nothing */
685 0, /* FOREIGN => nothing */
686 0, /* DROP => nothing */
687 0, /* UNION => nothing */
688 0, /* ALL => nothing */
689 0, /* EXCEPT => nothing */
690 0, /* INTERSECT => nothing */
691 0, /* SELECT => nothing */
692 0, /* DISTINCT => nothing */
693 0, /* DOT => nothing */
694 0, /* FROM => nothing */
695 0, /* JOIN => nothing */
696 0, /* USING => nothing */
697 0, /* ORDER => nothing */
698 0, /* BY => nothing */
699 0, /* GROUP => nothing */
700 0, /* HAVING => nothing */
701 0, /* LIMIT => nothing */
702 0, /* WHERE => nothing */
703 0, /* INTO => nothing */
704 0, /* VALUES => nothing */
705 0, /* INTEGER => nothing */
706 0, /* FLOAT => nothing */
707 0, /* BLOB => nothing */
708 0, /* REGISTER => nothing */
709 0, /* VARIABLE => nothing */
710 0, /* CASE => nothing */
711 0, /* WHEN => nothing */
712 0, /* THEN => nothing */
713 0, /* ELSE => nothing */
714 0, /* INDEX => nothing */
715 0, /* ALTER => nothing */
716 0, /* TO => nothing */
717 0, /* ADD => nothing */
718 0, /* COLUMNKW => nothing */
719 };
720 #endif /* YYFALLBACK */
721
722 /* The following structure represents a single element of the
723 ** parser's stack. Information stored includes:
724 **
725 ** + The state number for the parser at this level of the stack.
726 **
727 ** + The value of the token stored at this level of the stack.
728 ** (In other words, the "major" token.)
729 **
730 ** + The semantic value stored at this level of the stack. This is
731 ** the information used by the action routines in the grammar.
732 ** It is sometimes called the "minor" token.
733 */
734 struct yyStackEntry {
735 int stateno; /* The state-number */
736 int major; /* The major token value. This is the code
737 ** number for the token at this stack level */
738 YYMINORTYPE minor; /* The user-supplied minor token value. This
739 ** is the value of the token */
740 };
741 typedef struct yyStackEntry yyStackEntry;
742
743 /* The state of the parser is completely contained in an instance of
744 ** the following structure */
745 struct yyParser {
746 int yyidx; /* Index of top element in stack */
747 int yyerrcnt; /* Shifts left before out of the error */
748 sqlite3ParserARG_SDECL /* A place to hold %extra_argument */
749 yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */
750 };
751 typedef struct yyParser yyParser;
752
753 #ifndef NDEBUG
754 #include <stdio.h>
755 static FILE *yyTraceFILE = 0;
756 static char *yyTracePrompt = 0;
757 #endif /* NDEBUG */
758
759 #ifndef NDEBUG
760 /*
761 ** Turn parser tracing on by giving a stream to which to write the trace
762 ** and a prompt to preface each trace message. Tracing is turned off
763 ** by making either argument NULL
764 **
765 ** Inputs:
766 ** <ul>
767 ** <li> A FILE* to which trace output should be written.
768 ** If NULL, then tracing is turned off.
769 ** <li> A prefix string written at the beginning of every
770 ** line of trace output. If NULL, then tracing is
771 ** turned off.
772 ** </ul>
773 **
774 ** Outputs:
775 ** None.
776 */
777 void sqlite3ParserTrace(FILE *TraceFILE, char *zTracePrompt){
778 yyTraceFILE = TraceFILE;
779 yyTracePrompt = zTracePrompt;
780 if( yyTraceFILE==0 ) yyTracePrompt = 0;
781 else if( yyTracePrompt==0 ) yyTraceFILE = 0;
782 }
783 #endif /* NDEBUG */
784
785 #ifndef NDEBUG
786 /* For tracing shifts, the names of all terminals and nonterminals
787 ** are required. The following table supplies these names */
788 static const char *const yyTokenName[] = {
789 "$", "SEMI", "EXPLAIN", "QUERY",
790 "PLAN", "BEGIN", "TRANSACTION", "DEFERRED",
791 "IMMEDIATE", "EXCLUSIVE", "COMMIT", "END",
792 "ROLLBACK", "CREATE", "TABLE", "IF",
793 "NOT", "EXISTS", "TEMP", "LP",
794 "RP", "AS", "COMMA", "ID",
795 "ABORT", "AFTER", "ANALYZE", "ASC",
796 "ATTACH", "BEFORE", "CASCADE", "CAST",
797 "CONFLICT", "DATABASE", "DESC", "DETACH",
798 "EACH", "FAIL", "FOR", "IGNORE",
799 "INITIALLY", "INSTEAD", "LIKE_KW", "MATCH",
800 "KEY", "OF", "OFFSET", "PRAGMA",
801 "RAISE", "REPLACE", "RESTRICT", "ROW",
802 "STATEMENT", "TRIGGER", "VACUUM", "VIEW",
803 "REINDEX", "RENAME", "CTIME_KW", "OR",
804 "AND", "IS", "BETWEEN", "IN",
805 "ISNULL", "NOTNULL", "NE", "EQ",
806 "GT", "LE", "LT", "GE",
807 "ESCAPE", "BITAND", "BITOR", "LSHIFT",
808 "RSHIFT", "PLUS", "MINUS", "STAR",
809 "SLASH", "REM", "CONCAT", "UMINUS",
810 "UPLUS", "BITNOT", "STRING", "JOIN_KW",
811 "CONSTRAINT", "DEFAULT", "NULL", "PRIMARY",
812 "UNIQUE", "CHECK", "REFERENCES", "COLLATE",
813 "AUTOINCR", "ON", "DELETE", "UPDATE",
814 "INSERT", "SET", "DEFERRABLE", "FOREIGN",
815 "DROP", "UNION", "ALL", "EXCEPT",
816 "INTERSECT", "SELECT", "DISTINCT", "DOT",
817 "FROM", "JOIN", "USING", "ORDER",
818 "BY", "GROUP", "HAVING", "LIMIT",
819 "WHERE", "INTO", "VALUES", "INTEGER",
820 "FLOAT", "BLOB", "REGISTER", "VARIABLE",
821 "CASE", "WHEN", "THEN", "ELSE",
822 "INDEX", "ALTER", "TO", "ADD",
823 "COLUMNKW", "error", "input", "cmdlist",
824 "ecmd", "cmdx", "cmd", "explain",
825 "transtype", "trans_opt", "nm", "create_table",
826 "create_table_args", "temp", "ifnotexists", "dbnm",
827 "columnlist", "conslist_opt", "select", "column",
828 "columnid", "type", "carglist", "id",
829 "ids", "typetoken", "typename", "signed",
830 "plus_num", "minus_num", "carg", "ccons",
831 "term", "expr", "onconf", "sortorder",
832 "autoinc", "idxlist_opt", "refargs", "defer_subclause",
833 "refarg", "refact", "init_deferred_pred_opt", "conslist",
834 "tcons", "idxlist", "defer_subclause_opt", "orconf",
835 "resolvetype", "raisetype", "ifexists", "fullname",
836 "oneselect", "multiselect_op", "distinct", "selcollist",
837 "from", "where_opt", "groupby_opt", "having_opt",
838 "orderby_opt", "limit_opt", "sclp", "as",
839 "seltablist", "stl_prefix", "joinop", "on_opt",
840 "using_opt", "seltablist_paren", "joinop2", "inscollist",
841 "sortlist", "sortitem", "collate", "exprlist",
842 "setlist", "insert_cmd", "inscollist_opt", "itemlist",
843 "likeop", "escape", "between_op", "in_op",
844 "case_operand", "case_exprlist", "case_else", "expritem",
845 "uniqueflag", "idxitem", "plus_opt", "number",
846 "trigger_decl", "trigger_cmd_list", "trigger_time", "trigger_event",
847 "foreach_clause", "when_clause", "trigger_cmd", "database_kw_opt",
848 "key_opt", "add_column_fullname", "kwcolumn_opt",
849 };
850 #endif /* NDEBUG */
851
852 #ifndef NDEBUG
853 /* For tracing reduce actions, the names of all rules are required.
854 */
855 static const char *const yyRuleName[] = {
856 /* 0 */ "input ::= cmdlist",
857 /* 1 */ "cmdlist ::= cmdlist ecmd",
858 /* 2 */ "cmdlist ::= ecmd",
859 /* 3 */ "cmdx ::= cmd",
860 /* 4 */ "ecmd ::= SEMI",
861 /* 5 */ "ecmd ::= explain cmdx SEMI",
862 /* 6 */ "explain ::=",
863 /* 7 */ "explain ::= EXPLAIN",
864 /* 8 */ "explain ::= EXPLAIN QUERY PLAN",
865 /* 9 */ "cmd ::= BEGIN transtype trans_opt",
866 /* 10 */ "trans_opt ::=",
867 /* 11 */ "trans_opt ::= TRANSACTION",
868 /* 12 */ "trans_opt ::= TRANSACTION nm",
869 /* 13 */ "transtype ::=",
870 /* 14 */ "transtype ::= DEFERRED",
871 /* 15 */ "transtype ::= IMMEDIATE",
872 /* 16 */ "transtype ::= EXCLUSIVE",
873 /* 17 */ "cmd ::= COMMIT trans_opt",
874 /* 18 */ "cmd ::= END trans_opt",
875 /* 19 */ "cmd ::= ROLLBACK trans_opt",
876 /* 20 */ "cmd ::= create_table create_table_args",
877 /* 21 */ "create_table ::= CREATE temp TABLE ifnotexists nm dbnm",
878 /* 22 */ "ifnotexists ::=",
879 /* 23 */ "ifnotexists ::= IF NOT EXISTS",
880 /* 24 */ "temp ::= TEMP",
881 /* 25 */ "temp ::=",
882 /* 26 */ "create_table_args ::= LP columnlist conslist_opt RP",
883 /* 27 */ "create_table_args ::= AS select",
884 /* 28 */ "columnlist ::= columnlist COMMA column",
885 /* 29 */ "columnlist ::= column",
886 /* 30 */ "column ::= columnid type carglist",
887 /* 31 */ "columnid ::= nm",
888 /* 32 */ "id ::= ID",
889 /* 33 */ "ids ::= ID|STRING",
890 /* 34 */ "nm ::= ID",
891 /* 35 */ "nm ::= STRING",
892 /* 36 */ "nm ::= JOIN_KW",
893 /* 37 */ "type ::=",
894 /* 38 */ "type ::= typetoken",
895 /* 39 */ "typetoken ::= typename",
896 /* 40 */ "typetoken ::= typename LP signed RP",
897 /* 41 */ "typetoken ::= typename LP signed COMMA signed RP",
898 /* 42 */ "typename ::= ids",
899 /* 43 */ "typename ::= typename ids",
900 /* 44 */ "signed ::= plus_num",
901 /* 45 */ "signed ::= minus_num",
902 /* 46 */ "carglist ::= carglist carg",
903 /* 47 */ "carglist ::=",
904 /* 48 */ "carg ::= CONSTRAINT nm ccons",
905 /* 49 */ "carg ::= ccons",
906 /* 50 */ "carg ::= DEFAULT term",
907 /* 51 */ "carg ::= DEFAULT LP expr RP",
908 /* 52 */ "carg ::= DEFAULT PLUS term",
909 /* 53 */ "carg ::= DEFAULT MINUS term",
910 /* 54 */ "carg ::= DEFAULT id",
911 /* 55 */ "ccons ::= NULL onconf",
912 /* 56 */ "ccons ::= NOT NULL onconf",
913 /* 57 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
914 /* 58 */ "ccons ::= UNIQUE onconf",
915 /* 59 */ "ccons ::= CHECK LP expr RP",
916 /* 60 */ "ccons ::= REFERENCES nm idxlist_opt refargs",
917 /* 61 */ "ccons ::= defer_subclause",
918 /* 62 */ "ccons ::= COLLATE id",
919 /* 63 */ "autoinc ::=",
920 /* 64 */ "autoinc ::= AUTOINCR",
921 /* 65 */ "refargs ::=",
922 /* 66 */ "refargs ::= refargs refarg",
923 /* 67 */ "refarg ::= MATCH nm",
924 /* 68 */ "refarg ::= ON DELETE refact",
925 /* 69 */ "refarg ::= ON UPDATE refact",
926 /* 70 */ "refarg ::= ON INSERT refact",
927 /* 71 */ "refact ::= SET NULL",
928 /* 72 */ "refact ::= SET DEFAULT",
929 /* 73 */ "refact ::= CASCADE",
930 /* 74 */ "refact ::= RESTRICT",
931 /* 75 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
932 /* 76 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
933 /* 77 */ "init_deferred_pred_opt ::=",
934 /* 78 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
935 /* 79 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
936 /* 80 */ "conslist_opt ::=",
937 /* 81 */ "conslist_opt ::= COMMA conslist",
938 /* 82 */ "conslist ::= conslist COMMA tcons",
939 /* 83 */ "conslist ::= conslist tcons",
940 /* 84 */ "conslist ::= tcons",
941 /* 85 */ "tcons ::= CONSTRAINT nm",
942 /* 86 */ "tcons ::= PRIMARY KEY LP idxlist autoinc RP onconf",
943 /* 87 */ "tcons ::= UNIQUE LP idxlist RP onconf",
944 /* 88 */ "tcons ::= CHECK LP expr RP onconf",
945 /* 89 */ "tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt",
946 /* 90 */ "defer_subclause_opt ::=",
947 /* 91 */ "defer_subclause_opt ::= defer_subclause",
948 /* 92 */ "onconf ::=",
949 /* 93 */ "onconf ::= ON CONFLICT resolvetype",
950 /* 94 */ "orconf ::=",
951 /* 95 */ "orconf ::= OR resolvetype",
952 /* 96 */ "resolvetype ::= raisetype",
953 /* 97 */ "resolvetype ::= IGNORE",
954 /* 98 */ "resolvetype ::= REPLACE",
955 /* 99 */ "cmd ::= DROP TABLE ifexists fullname",
956 /* 100 */ "ifexists ::= IF EXISTS",
957 /* 101 */ "ifexists ::=",
958 /* 102 */ "cmd ::= CREATE temp VIEW nm dbnm AS select",
959 /* 103 */ "cmd ::= DROP VIEW ifexists fullname",
960 /* 104 */ "cmd ::= select",
961 /* 105 */ "select ::= oneselect",
962 /* 106 */ "select ::= select multiselect_op oneselect",
963 /* 107 */ "multiselect_op ::= UNION",
964 /* 108 */ "multiselect_op ::= UNION ALL",
965 /* 109 */ "multiselect_op ::= EXCEPT|INTERSECT",
966 /* 110 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
967 /* 111 */ "distinct ::= DISTINCT",
968 /* 112 */ "distinct ::= ALL",
969 /* 113 */ "distinct ::=",
970 /* 114 */ "sclp ::= selcollist COMMA",
971 /* 115 */ "sclp ::=",
972 /* 116 */ "selcollist ::= sclp expr as",
973 /* 117 */ "selcollist ::= sclp STAR",
974 /* 118 */ "selcollist ::= sclp nm DOT STAR",
975 /* 119 */ "as ::= AS nm",
976 /* 120 */ "as ::= ids",
977 /* 121 */ "as ::=",
978 /* 122 */ "from ::=",
979 /* 123 */ "from ::= FROM seltablist",
980 /* 124 */ "stl_prefix ::= seltablist joinop",
981 /* 125 */ "stl_prefix ::=",
982 /* 126 */ "seltablist ::= stl_prefix nm dbnm as on_opt using_opt",
983 /* 127 */ "seltablist ::= stl_prefix LP seltablist_paren RP as on_opt using_opt",
984 /* 128 */ "seltablist_paren ::= select",
985 /* 129 */ "seltablist_paren ::= seltablist",
986 /* 130 */ "dbnm ::=",
987 /* 131 */ "dbnm ::= DOT nm",
988 /* 132 */ "fullname ::= nm dbnm",
989 /* 133 */ "joinop ::= COMMA|JOIN",
990 /* 134 */ "joinop ::= JOIN_KW JOIN",
991 /* 135 */ "joinop ::= JOIN_KW nm JOIN",
992 /* 136 */ "joinop ::= JOIN_KW nm nm JOIN",
993 /* 137 */ "on_opt ::= ON expr",
994 /* 138 */ "on_opt ::=",
995 /* 139 */ "using_opt ::= USING LP inscollist RP",
996 /* 140 */ "using_opt ::=",
997 /* 141 */ "orderby_opt ::=",
998 /* 142 */ "orderby_opt ::= ORDER BY sortlist",
999 /* 143 */ "sortlist ::= sortlist COMMA sortitem collate sortorder",
1000 /* 144 */ "sortlist ::= sortitem collate sortorder",
1001 /* 145 */ "sortitem ::= expr",
1002 /* 146 */ "sortorder ::= ASC",
1003 /* 147 */ "sortorder ::= DESC",
1004 /* 148 */ "sortorder ::=",
1005 /* 149 */ "collate ::=",
1006 /* 150 */ "collate ::= COLLATE id",
1007 /* 151 */ "groupby_opt ::=",
1008 /* 152 */ "groupby_opt ::= GROUP BY exprlist",
1009 /* 153 */ "having_opt ::=",
1010 /* 154 */ "having_opt ::= HAVING expr",
1011 /* 155 */ "limit_opt ::=",
1012 /* 156 */ "limit_opt ::= LIMIT expr",
1013 /* 157 */ "limit_opt ::= LIMIT expr OFFSET expr",
1014 /* 158 */ "limit_opt ::= LIMIT expr COMMA expr",
1015 /* 159 */ "cmd ::= DELETE FROM fullname where_opt",
1016 /* 160 */ "where_opt ::=",
1017 /* 161 */ "where_opt ::= WHERE expr",
1018 /* 162 */ "cmd ::= UPDATE orconf fullname SET setlist where_opt",
1019 /* 163 */ "setlist ::= setlist COMMA nm EQ expr",
1020 /* 164 */ "setlist ::= nm EQ expr",
1021 /* 165 */ "cmd ::= insert_cmd INTO fullname inscollist_opt VALUES LP itemlist RP",
1022 /* 166 */ "cmd ::= insert_cmd INTO fullname inscollist_opt select",
1023 /* 167 */ "insert_cmd ::= INSERT orconf",
1024 /* 168 */ "insert_cmd ::= REPLACE",
1025 /* 169 */ "itemlist ::= itemlist COMMA expr",
1026 /* 170 */ "itemlist ::= expr",
1027 /* 171 */ "inscollist_opt ::=",
1028 /* 172 */ "inscollist_opt ::= LP inscollist RP",
1029 /* 173 */ "inscollist ::= inscollist COMMA nm",
1030 /* 174 */ "inscollist ::= nm",
1031 /* 175 */ "expr ::= term",
1032 /* 176 */ "expr ::= LP expr RP",
1033 /* 177 */ "term ::= NULL",
1034 /* 178 */ "expr ::= ID",
1035 /* 179 */ "expr ::= JOIN_KW",
1036 /* 180 */ "expr ::= nm DOT nm",
1037 /* 181 */ "expr ::= nm DOT nm DOT nm",
1038 /* 182 */ "term ::= INTEGER|FLOAT|BLOB",
1039 /* 183 */ "term ::= STRING",
1040 /* 184 */ "expr ::= REGISTER",
1041 /* 185 */ "expr ::= VARIABLE",
1042 /* 186 */ "expr ::= CAST LP expr AS typetoken RP",
1043 /* 187 */ "expr ::= ID LP distinct exprlist RP",
1044 /* 188 */ "expr ::= ID LP STAR RP",
1045 /* 189 */ "term ::= CTIME_KW",
1046 /* 190 */ "expr ::= expr AND expr",
1047 /* 191 */ "expr ::= expr OR expr",
1048 /* 192 */ "expr ::= expr LT|GT|GE|LE expr",
1049 /* 193 */ "expr ::= expr EQ|NE expr",
1050 /* 194 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
1051 /* 195 */ "expr ::= expr PLUS|MINUS expr",
1052 /* 196 */ "expr ::= expr STAR|SLASH|REM expr",
1053 /* 197 */ "expr ::= expr CONCAT expr",
1054 /* 198 */ "likeop ::= LIKE_KW",
1055 /* 199 */ "likeop ::= NOT LIKE_KW",
1056 /* 200 */ "escape ::= ESCAPE expr",
1057 /* 201 */ "escape ::=",
1058 /* 202 */ "expr ::= expr likeop expr escape",
1059 /* 203 */ "expr ::= expr ISNULL|NOTNULL",
1060 /* 204 */ "expr ::= expr IS NULL",
1061 /* 205 */ "expr ::= expr NOT NULL",
1062 /* 206 */ "expr ::= expr IS NOT NULL",
1063 /* 207 */ "expr ::= NOT|BITNOT expr",
1064 /* 208 */ "expr ::= MINUS expr",
1065 /* 209 */ "expr ::= PLUS expr",
1066 /* 210 */ "between_op ::= BETWEEN",
1067 /* 211 */ "between_op ::= NOT BETWEEN",
1068 /* 212 */ "expr ::= expr between_op expr AND expr",
1069 /* 213 */ "in_op ::= IN",
1070 /* 214 */ "in_op ::= NOT IN",
1071 /* 215 */ "expr ::= expr in_op LP exprlist RP",
1072 /* 216 */ "expr ::= LP select RP",
1073 /* 217 */ "expr ::= expr in_op LP select RP",
1074 /* 218 */ "expr ::= expr in_op nm dbnm",
1075 /* 219 */ "expr ::= EXISTS LP select RP",
1076 /* 220 */ "expr ::= CASE case_operand case_exprlist case_else END",
1077 /* 221 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
1078 /* 222 */ "case_exprlist ::= WHEN expr THEN expr",
1079 /* 223 */ "case_else ::= ELSE expr",
1080 /* 224 */ "case_else ::=",
1081 /* 225 */ "case_operand ::= expr",
1082 /* 226 */ "case_operand ::=",
1083 /* 227 */ "exprlist ::= exprlist COMMA expritem",
1084 /* 228 */ "exprlist ::= expritem",
1085 /* 229 */ "expritem ::= expr",
1086 /* 230 */ "expritem ::=",
1087 /* 231 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP",
1088 /* 232 */ "uniqueflag ::= UNIQUE",
1089 /* 233 */ "uniqueflag ::=",
1090 /* 234 */ "idxlist_opt ::=",
1091 /* 235 */ "idxlist_opt ::= LP idxlist RP",
1092 /* 236 */ "idxlist ::= idxlist COMMA idxitem collate sortorder",
1093 /* 237 */ "idxlist ::= idxitem collate sortorder",
1094 /* 238 */ "idxitem ::= nm",
1095 /* 239 */ "cmd ::= DROP INDEX ifexists fullname",
1096 /* 240 */ "cmd ::= VACUUM",
1097 /* 241 */ "cmd ::= VACUUM nm",
1098 /* 242 */ "cmd ::= PRAGMA nm dbnm EQ nm",
1099 /* 243 */ "cmd ::= PRAGMA nm dbnm EQ ON",
1100 /* 244 */ "cmd ::= PRAGMA nm dbnm EQ plus_num",
1101 /* 245 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
1102 /* 246 */ "cmd ::= PRAGMA nm dbnm LP nm RP",
1103 /* 247 */ "cmd ::= PRAGMA nm dbnm",
1104 /* 248 */ "plus_num ::= plus_opt number",
1105 /* 249 */ "minus_num ::= MINUS number",
1106 /* 250 */ "number ::= INTEGER|FLOAT",
1107 /* 251 */ "plus_opt ::= PLUS",
1108 /* 252 */ "plus_opt ::=",
1109 /* 253 */ "cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END",
1110 /* 254 */ "trigger_decl ::= temp TRIGGER nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
1111 /* 255 */ "trigger_time ::= BEFORE",
1112 /* 256 */ "trigger_time ::= AFTER",
1113 /* 257 */ "trigger_time ::= INSTEAD OF",
1114 /* 258 */ "trigger_time ::=",
1115 /* 259 */ "trigger_event ::= DELETE|INSERT",
1116 /* 260 */ "trigger_event ::= UPDATE",
1117 /* 261 */ "trigger_event ::= UPDATE OF inscollist",
1118 /* 262 */ "foreach_clause ::=",
1119 /* 263 */ "foreach_clause ::= FOR EACH ROW",
1120 /* 264 */ "foreach_clause ::= FOR EACH STATEMENT",
1121 /* 265 */ "when_clause ::=",
1122 /* 266 */ "when_clause ::= WHEN expr",
1123 /* 267 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
1124 /* 268 */ "trigger_cmd_list ::=",
1125 /* 269 */ "trigger_cmd ::= UPDATE orconf nm SET setlist where_opt",
1126 /* 270 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt VALUES LP itemlist RP",
1127 /* 271 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt select",
1128 /* 272 */ "trigger_cmd ::= DELETE FROM nm where_opt",
1129 /* 273 */ "trigger_cmd ::= select",
1130 /* 274 */ "expr ::= RAISE LP IGNORE RP",
1131 /* 275 */ "expr ::= RAISE LP raisetype COMMA nm RP",
1132 /* 276 */ "raisetype ::= ROLLBACK",
1133 /* 277 */ "raisetype ::= ABORT",
1134 /* 278 */ "raisetype ::= FAIL",
1135 /* 279 */ "cmd ::= DROP TRIGGER fullname",
1136 /* 280 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
1137 /* 281 */ "key_opt ::=",
1138 /* 282 */ "key_opt ::= KEY expr",
1139 /* 283 */ "database_kw_opt ::= DATABASE",
1140 /* 284 */ "database_kw_opt ::=",
1141 /* 285 */ "cmd ::= DETACH database_kw_opt expr",
1142 /* 286 */ "cmd ::= REINDEX",
1143 /* 287 */ "cmd ::= REINDEX nm dbnm",
1144 /* 288 */ "cmd ::= ANALYZE",
1145 /* 289 */ "cmd ::= ANALYZE nm dbnm",
1146 /* 290 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
1147 /* 291 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt column",
1148 /* 292 */ "add_column_fullname ::= fullname",
1149 /* 293 */ "kwcolumn_opt ::=",
1150 /* 294 */ "kwcolumn_opt ::= COLUMNKW",
1151 };
1152 #endif /* NDEBUG */
1153
1154 /*
1155 ** This function returns the symbolic name associated with a token
1156 ** value.
1157 */
1158 const char *sqlite3ParserTokenName(int tokenType){
1159 #ifndef NDEBUG
1160 if( tokenType>0 && tokenType<(sizeof(yyTokenName)/sizeof(yyTokenName[0])) ){
1161 return yyTokenName[tokenType];
1162 }else{
1163 return "Unknown";
1164 }
1165 #else
1166 return "";
1167 #endif
1168 }
1169
1170 /*
1171 ** This function allocates a new parser.
1172 ** The only argument is a pointer to a function which works like
1173 ** malloc.
1174 **
1175 ** Inputs:
1176 ** A pointer to the function used to allocate memory.
1177 **
1178 ** Outputs:
1179 ** A pointer to a parser. This pointer is used in subsequent calls
1180 ** to sqlite3Parser and sqlite3ParserFree.
1181 */
1182 void *sqlite3ParserAlloc(void *(*mallocProc)(size_t)){
1183 yyParser *pParser;
1184 pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) );
1185 if( pParser ){
1186 pParser->yyidx = -1;
1187 }
1188 return pParser;
1189 }
1190
1191 /* The following function deletes the value associated with a
1192 ** symbol. The symbol can be either a terminal or nonterminal.
1193 ** "yymajor" is the symbol code, and "yypminor" is a pointer to
1194 ** the value.
1195 */
1196 static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
1197 switch( yymajor ){
1198 /* Here is inserted the actions which take place when a
1199 ** terminal or non-terminal is destroyed. This can happen
1200 ** when the symbol is popped from the stack during a
1201 ** reduce or during error processing or when a parser is
1202 ** being destroyed before it is finished parsing.
1203 **
1204 ** Note: during a reduce, the only symbols destroyed are those
1205 ** which appear on the RHS of the rule, but which are not used
1206 ** inside the C code.
1207 */
1208 case 154:
1209 case 188:
1210 case 205:
1211 #line 373 "parse.y"
1212 {sqlite3SelectDelete((yypminor->yy239));}
1213 #line 1215 "parse.c"
1214 break;
1215 case 168:
1216 case 169:
1217 case 193:
1218 case 195:
1219 case 203:
1220 case 209:
1221 case 217:
1222 case 220:
1223 case 222:
1224 case 223:
1225 case 233:
1226 #line 630 "parse.y"
1227 {sqlite3ExprDelete((yypminor->yy178));}
1228 #line 1230 "parse.c"
1229 break;
1230 case 173:
1231 case 181:
1232 case 191:
1233 case 194:
1234 case 196:
1235 case 198:
1236 case 208:
1237 case 211:
1238 case 212:
1239 case 215:
1240 case 221:
1241 #line 861 "parse.y"
1242 {sqlite3ExprListDelete((yypminor->yy462));}
1243 #line 1245 "parse.c"
1244 break;
1245 case 187:
1246 case 192:
1247 case 200:
1248 case 201:
1249 #line 501 "parse.y"
1250 {sqlite3SrcListDelete((yypminor->yy285));}
1251 #line 1253 "parse.c"
1252 break;
1253 case 197:
1254 #line 562 "parse.y"
1255 {
1256 sqlite3ExprDelete((yypminor->yy270).pLimit);
1257 sqlite3ExprDelete((yypminor->yy270).pOffset);
1258 }
1259 #line 1261 "parse.c"
1260 break;
1261 case 204:
1262 case 207:
1263 case 214:
1264 #line 518 "parse.y"
1265 {sqlite3IdListDelete((yypminor->yy160));}
1266 #line 1268 "parse.c"
1267 break;
1268 case 229:
1269 case 234:
1270 #line 955 "parse.y"
1271 {sqlite3DeleteTriggerStep((yypminor->yy247));}
1272 #line 1274 "parse.c"
1273 break;
1274 case 231:
1275 #line 939 "parse.y"
1276 {sqlite3IdListDelete((yypminor->yy132).b);}
1277 #line 1279 "parse.c"
1278 break;
1279 case 236:
1280 #line 1023 "parse.y"
1281 {sqlite3ExprDelete((yypminor->yy292));}
1282 #line 1284 "parse.c"
1283 break;
1284 default: break; /* If no destructor action specified: do nothing */
1285 }
1286 }
1287
1288 /*
1289 ** Pop the parser's stack once.
1290 **
1291 ** If there is a destructor routine associated with the token which
1292 ** is popped from the stack, then call it.
1293 **
1294 ** Return the major token number for the symbol popped.
1295 */
1296 static int yy_pop_parser_stack(yyParser *pParser){
1297 YYCODETYPE yymajor;
1298 yyStackEntry *yytos = &pParser->yystack[pParser->yyidx];
1299
1300 if( pParser->yyidx<0 ) return 0;
1301 #ifndef NDEBUG
1302 if( yyTraceFILE && pParser->yyidx>=0 ){
1303 fprintf(yyTraceFILE,"%sPopping %s\n",
1304 yyTracePrompt,
1305 yyTokenName[yytos->major]);
1306 }
1307 #endif
1308 yymajor = yytos->major;
1309 yy_destructor( yymajor, &yytos->minor);
1310 pParser->yyidx--;
1311 return yymajor;
1312 }
1313
1314 /*
1315 ** Deallocate and destroy a parser. Destructors are all called for
1316 ** all stack elements before shutting the parser down.
1317 **
1318 ** Inputs:
1319 ** <ul>
1320 ** <li> A pointer to the parser. This should be a pointer
1321 ** obtained from sqlite3ParserAlloc.
1322 ** <li> A pointer to a function used to reclaim memory obtained
1323 ** from malloc.
1324 ** </ul>
1325 */
1326 void sqlite3ParserFree(
1327 void *p, /* The parser to be deleted */
1328 void (*freeProc)(void*) /* Function used to reclaim memory */
1329 ){
1330 yyParser *pParser = (yyParser*)p;
1331 if( pParser==0 ) return;
1332 while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser);
1333 (*freeProc)((void*)pParser);
1334 }
1335
1336 /*
1337 ** Find the appropriate action for a parser given the terminal
1338 ** look-ahead token iLookAhead.
1339 **
1340 ** If the look-ahead token is YYNOCODE, then check to see if the action is
1341 ** independent of the look-ahead. If it is, return the action, otherwise
1342 ** return YY_NO_ACTION.
1343 */
1344 static int yy_find_shift_action(
1345 yyParser *pParser, /* The parser */
1346 int iLookAhead /* The look-ahead token */
1347 ){
1348 int i;
1349 int stateno = pParser->yystack[pParser->yyidx].stateno;
1350
1351 if( stateno>YY_SHIFT_MAX || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){
1352 return yy_default[stateno];
1353 }
1354 if( iLookAhead==YYNOCODE ){
1355 return YY_NO_ACTION;
1356 }
1357 i += iLookAhead;
1358 if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
1359 #ifdef YYFALLBACK
1360 int iFallback; /* Fallback token */
1361 if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
1362 && (iFallback = yyFallback[iLookAhead])!=0 ){
1363 #ifndef NDEBUG
1364 if( yyTraceFILE ){
1365 fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
1366 yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
1367 }
1368 #endif
1369 return yy_find_shift_action(pParser, iFallback);
1370 }
1371 #endif
1372 return yy_default[stateno];
1373 }else{
1374 return yy_action[i];
1375 }
1376 }
1377
1378 /*
1379 ** Find the appropriate action for a parser given the non-terminal
1380 ** look-ahead token iLookAhead.
1381 **
1382 ** If the look-ahead token is YYNOCODE, then check to see if the action is
1383 ** independent of the look-ahead. If it is, return the action, otherwise
1384 ** return YY_NO_ACTION.
1385 */
1386 static int yy_find_reduce_action(
1387 int stateno, /* Current state number */
1388 int iLookAhead /* The look-ahead token */
1389 ){
1390 int i;
1391 /* int stateno = pParser->yystack[pParser->yyidx].stateno; */
1392
1393 if( stateno>YY_REDUCE_MAX ||
1394 (i = yy_reduce_ofst[stateno])==YY_REDUCE_USE_DFLT ){
1395 return yy_default[stateno];
1396 }
1397 if( iLookAhead==YYNOCODE ){
1398 return YY_NO_ACTION;
1399 }
1400 i += iLookAhead;
1401 if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
1402 return yy_default[stateno];
1403 }else{
1404 return yy_action[i];
1405 }
1406 }
1407
1408 /*
1409 ** Perform a shift action.
1410 */
1411 static void yy_shift(
1412 yyParser *yypParser, /* The parser to be shifted */
1413 int yyNewState, /* The new state to shift in */
1414 int yyMajor, /* The major token to shift in */
1415 YYMINORTYPE *yypMinor /* Pointer ot the minor token to shift in */
1416 ){
1417 yyStackEntry *yytos;
1418 yypParser->yyidx++;
1419 if( yypParser->yyidx>=YYSTACKDEPTH ){
1420 sqlite3ParserARG_FETCH;
1421 yypParser->yyidx--;
1422 #ifndef NDEBUG
1423 if( yyTraceFILE ){
1424 fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
1425 }
1426 #endif
1427 while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
1428 /* Here code is inserted which will execute if the parser
1429 ** stack every overflows */
1430 #line 44 "parse.y"
1431
1432 sqlite3ErrorMsg(pParse, "parser stack overflow");
1433 pParse->parseError = 1;
1434 #line 1437 "parse.c"
1435 sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument var */
1436 return;
1437 }
1438 yytos = &yypParser->yystack[yypParser->yyidx];
1439 yytos->stateno = yyNewState;
1440 yytos->major = yyMajor;
1441 yytos->minor = *yypMinor;
1442 #ifndef NDEBUG
1443 if( yyTraceFILE && yypParser->yyidx>0 ){
1444 int i;
1445 fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState);
1446 fprintf(yyTraceFILE,"%sStack:",yyTracePrompt);
1447 for(i=1; i<=yypParser->yyidx; i++)
1448 fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]);
1449 fprintf(yyTraceFILE,"\n");
1450 }
1451 #endif
1452 }
1453
1454 /* The following table contains information about every rule that
1455 ** is used during the reduce.
1456 */
1457 static const struct {
1458 YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */
1459 unsigned char nrhs; /* Number of right-hand side symbols in the rule */
1460 } yyRuleInfo[] = {
1461 { 138, 1 },
1462 { 139, 2 },
1463 { 139, 1 },
1464 { 141, 1 },
1465 { 140, 1 },
1466 { 140, 3 },
1467 { 143, 0 },
1468 { 143, 1 },
1469 { 143, 3 },
1470 { 142, 3 },
1471 { 145, 0 },
1472 { 145, 1 },
1473 { 145, 2 },
1474 { 144, 0 },
1475 { 144, 1 },
1476 { 144, 1 },
1477 { 144, 1 },
1478 { 142, 2 },
1479 { 142, 2 },
1480 { 142, 2 },
1481 { 142, 2 },
1482 { 147, 6 },
1483 { 150, 0 },
1484 { 150, 3 },
1485 { 149, 1 },
1486 { 149, 0 },
1487 { 148, 4 },
1488 { 148, 2 },
1489 { 152, 3 },
1490 { 152, 1 },
1491 { 155, 3 },
1492 { 156, 1 },
1493 { 159, 1 },
1494 { 160, 1 },
1495 { 146, 1 },
1496 { 146, 1 },
1497 { 146, 1 },
1498 { 157, 0 },
1499 { 157, 1 },
1500 { 161, 1 },
1501 { 161, 4 },
1502 { 161, 6 },
1503 { 162, 1 },
1504 { 162, 2 },
1505 { 163, 1 },
1506 { 163, 1 },
1507 { 158, 2 },
1508 { 158, 0 },
1509 { 166, 3 },
1510 { 166, 1 },
1511 { 166, 2 },
1512 { 166, 4 },
1513 { 166, 3 },
1514 { 166, 3 },
1515 { 166, 2 },
1516 { 167, 2 },
1517 { 167, 3 },
1518 { 167, 5 },
1519 { 167, 2 },
1520 { 167, 4 },
1521 { 167, 4 },
1522 { 167, 1 },
1523 { 167, 2 },
1524 { 172, 0 },
1525 { 172, 1 },
1526 { 174, 0 },
1527 { 174, 2 },
1528 { 176, 2 },
1529 { 176, 3 },
1530 { 176, 3 },
1531 { 176, 3 },
1532 { 177, 2 },
1533 { 177, 2 },
1534 { 177, 1 },
1535 { 177, 1 },
1536 { 175, 3 },
1537 { 175, 2 },
1538 { 178, 0 },
1539 { 178, 2 },
1540 { 178, 2 },
1541 { 153, 0 },
1542 { 153, 2 },
1543 { 179, 3 },
1544 { 179, 2 },
1545 { 179, 1 },
1546 { 180, 2 },
1547 { 180, 7 },
1548 { 180, 5 },
1549 { 180, 5 },
1550 { 180, 10 },
1551 { 182, 0 },
1552 { 182, 1 },
1553 { 170, 0 },
1554 { 170, 3 },
1555 { 183, 0 },
1556 { 183, 2 },
1557 { 184, 1 },
1558 { 184, 1 },
1559 { 184, 1 },
1560 { 142, 4 },
1561 { 186, 2 },
1562 { 186, 0 },
1563 { 142, 7 },
1564 { 142, 4 },
1565 { 142, 1 },
1566 { 154, 1 },
1567 { 154, 3 },
1568 { 189, 1 },
1569 { 189, 2 },
1570 { 189, 1 },
1571 { 188, 9 },
1572 { 190, 1 },
1573 { 190, 1 },
1574 { 190, 0 },
1575 { 198, 2 },
1576 { 198, 0 },
1577 { 191, 3 },
1578 { 191, 2 },
1579 { 191, 4 },
1580 { 199, 2 },
1581 { 199, 1 },
1582 { 199, 0 },
1583 { 192, 0 },
1584 { 192, 2 },
1585 { 201, 2 },
1586 { 201, 0 },
1587 { 200, 6 },
1588 { 200, 7 },
1589 { 205, 1 },
1590 { 205, 1 },
1591 { 151, 0 },
1592 { 151, 2 },
1593 { 187, 2 },
1594 { 202, 1 },
1595 { 202, 2 },
1596 { 202, 3 },
1597 { 202, 4 },
1598 { 203, 2 },
1599 { 203, 0 },
1600 { 204, 4 },
1601 { 204, 0 },
1602 { 196, 0 },
1603 { 196, 3 },
1604 { 208, 5 },
1605 { 208, 3 },
1606 { 209, 1 },
1607 { 171, 1 },
1608 { 171, 1 },
1609 { 171, 0 },
1610 { 210, 0 },
1611 { 210, 2 },
1612 { 194, 0 },
1613 { 194, 3 },
1614 { 195, 0 },
1615 { 195, 2 },
1616 { 197, 0 },
1617 { 197, 2 },
1618 { 197, 4 },
1619 { 197, 4 },
1620 { 142, 4 },
1621 { 193, 0 },
1622 { 193, 2 },
1623 { 142, 6 },
1624 { 212, 5 },
1625 { 212, 3 },
1626 { 142, 8 },
1627 { 142, 5 },
1628 { 213, 2 },
1629 { 213, 1 },
1630 { 215, 3 },
1631 { 215, 1 },
1632 { 214, 0 },
1633 { 214, 3 },
1634 { 207, 3 },
1635 { 207, 1 },
1636 { 169, 1 },
1637 { 169, 3 },
1638 { 168, 1 },
1639 { 169, 1 },
1640 { 169, 1 },
1641 { 169, 3 },
1642 { 169, 5 },
1643 { 168, 1 },
1644 { 168, 1 },
1645 { 169, 1 },
1646 { 169, 1 },
1647 { 169, 6 },
1648 { 169, 5 },
1649 { 169, 4 },
1650 { 168, 1 },
1651 { 169, 3 },
1652 { 169, 3 },
1653 { 169, 3 },
1654 { 169, 3 },
1655 { 169, 3 },
1656 { 169, 3 },
1657 { 169, 3 },
1658 { 169, 3 },
1659 { 216, 1 },
1660 { 216, 2 },
1661 { 217, 2 },
1662 { 217, 0 },
1663 { 169, 4 },
1664 { 169, 2 },
1665 { 169, 3 },
1666 { 169, 3 },
1667 { 169, 4 },
1668 { 169, 2 },
1669 { 169, 2 },
1670 { 169, 2 },
1671 { 218, 1 },
1672 { 218, 2 },
1673 { 169, 5 },
1674 { 219, 1 },
1675 { 219, 2 },
1676 { 169, 5 },
1677 { 169, 3 },
1678 { 169, 5 },
1679 { 169, 4 },
1680 { 169, 4 },
1681 { 169, 5 },
1682 { 221, 5 },
1683 { 221, 4 },
1684 { 222, 2 },
1685 { 222, 0 },
1686 { 220, 1 },
1687 { 220, 0 },
1688 { 211, 3 },
1689 { 211, 1 },
1690 { 223, 1 },
1691 { 223, 0 },
1692 { 142, 11 },
1693 { 224, 1 },
1694 { 224, 0 },
1695 { 173, 0 },
1696 { 173, 3 },
1697 { 181, 5 },
1698 { 181, 3 },
1699 { 225, 1 },
1700 { 142, 4 },
1701 { 142, 1 },
1702 { 142, 2 },
1703 { 142, 5 },
1704 { 142, 5 },
1705 { 142, 5 },
1706 { 142, 5 },
1707 { 142, 6 },
1708 { 142, 3 },
1709 { 164, 2 },
1710 { 165, 2 },
1711 { 227, 1 },
1712 { 226, 1 },
1713 { 226, 0 },
1714 { 142, 5 },
1715 { 228, 10 },
1716 { 230, 1 },
1717 { 230, 1 },
1718 { 230, 2 },
1719 { 230, 0 },
1720 { 231, 1 },
1721 { 231, 1 },
1722 { 231, 3 },
1723 { 232, 0 },
1724 { 232, 3 },
1725 { 232, 3 },
1726 { 233, 0 },
1727 { 233, 2 },
1728 { 229, 3 },
1729 { 229, 0 },
1730 { 234, 6 },
1731 { 234, 8 },
1732 { 234, 5 },
1733 { 234, 4 },
1734 { 234, 1 },
1735 { 169, 4 },
1736 { 169, 6 },
1737 { 185, 1 },
1738 { 185, 1 },
1739 { 185, 1 },
1740 { 142, 3 },
1741 { 142, 6 },
1742 { 236, 0 },
1743 { 236, 2 },
1744 { 235, 1 },
1745 { 235, 0 },
1746 { 142, 3 },
1747 { 142, 1 },
1748 { 142, 3 },
1749 { 142, 1 },
1750 { 142, 3 },
1751 { 142, 6 },
1752 { 142, 6 },
1753 { 237, 1 },
1754 { 238, 0 },
1755 { 238, 1 },
1756 };
1757
1758 static void yy_accept(yyParser*); /* Forward Declaration */
1759
1760 /*
1761 ** Perform a reduce action and the shift that must immediately
1762 ** follow the reduce.
1763 */
1764 static void yy_reduce(
1765 yyParser *yypParser, /* The parser */
1766 int yyruleno /* Number of the rule by which to reduce */
1767 ){
1768 int yygoto; /* The next state */
1769 int yyact; /* The next action */
1770 YYMINORTYPE yygotominor; /* The LHS of the rule reduced */
1771 yyStackEntry *yymsp; /* The top of the parser's stack */
1772 int yysize; /* Amount to pop the stack */
1773 sqlite3ParserARG_FETCH;
1774 yymsp = &yypParser->yystack[yypParser->yyidx];
1775 #ifndef NDEBUG
1776 if( yyTraceFILE && yyruleno>=0
1777 && yyruleno<sizeof(yyRuleName)/sizeof(yyRuleName[0]) ){
1778 fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
1779 yyRuleName[yyruleno]);
1780 }
1781 #endif /* NDEBUG */
1782
1783 #ifndef NDEBUG
1784 /* Silence complaints from purify about yygotominor being uninitialized
1785 ** in some cases when it is copied into the stack after the following
1786 ** switch. yygotominor is uninitialized when a rule reduces that does
1787 ** not set the value of its left-hand side nonterminal. Leaving the
1788 ** value of the nonterminal uninitialized is utterly harmless as long
1789 ** as the value is never used. So really the only thing this code
1790 ** accomplishes is to quieten purify.
1791 */
1792 memset(&yygotominor, 0, sizeof(yygotominor));
1793 #endif
1794
1795 switch( yyruleno ){
1796 /* Beginning here are the reduction cases. A typical example
1797 ** follows:
1798 ** case 0:
1799 ** #line <lineno> <grammarfile>
1800 ** { ... } // User supplied code
1801 ** #line <lineno> <thisfile>
1802 ** break;
1803 */
1804 case 3:
1805 #line 100 "parse.y"
1806 { sqlite3FinishCoding(pParse); }
1807 #line 1810 "parse.c"
1808 break;
1809 case 6:
1810 #line 103 "parse.y"
1811 { sqlite3BeginParse(pParse, 0); }
1812 #line 1815 "parse.c"
1813 break;
1814 case 7:
1815 #line 105 "parse.y"
1816 { sqlite3BeginParse(pParse, 1); }
1817 #line 1820 "parse.c"
1818 break;
1819 case 8:
1820 #line 106 "parse.y"
1821 { sqlite3BeginParse(pParse, 2); }
1822 #line 1825 "parse.c"
1823 break;
1824 case 9:
1825 #line 112 "parse.y"
1826 {sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy230);}
1827 #line 1830 "parse.c"
1828 break;
1829 case 13:
1830 #line 117 "parse.y"
1831 {yygotominor.yy230 = TK_DEFERRED;}
1832 #line 1835 "parse.c"
1833 break;
1834 case 14:
1835 case 15:
1836 case 16:
1837 case 107:
1838 case 109:
1839 #line 118 "parse.y"
1840 {yygotominor.yy230 = yymsp[0].major;}
1841 #line 1844 "parse.c"
1842 break;
1843 case 17:
1844 case 18:
1845 #line 121 "parse.y"
1846 {sqlite3CommitTransaction(pParse);}
1847 #line 1850 "parse.c"
1848 break;
1849 case 19:
1850 #line 123 "parse.y"
1851 {sqlite3RollbackTransaction(pParse);}
1852 #line 1855 "parse.c"
1853 break;
1854 case 21:
1855 #line 128 "parse.y"
1856 {
1857 sqlite3StartTable(pParse,&yymsp[-1].minor.yy384,&yymsp[0].minor.yy384,yymsp[-4].minor.yy230,0,yymsp[-2].minor.yy230);
1858 }
1859 #line 1862 "parse.c"
1860 break;
1861 case 22:
1862 case 25:
1863 case 63:
1864 case 77:
1865 case 79:
1866 case 90:
1867 case 101:
1868 case 112:
1869 case 113:
1870 case 210:
1871 case 213:
1872 #line 132 "parse.y"
1873 {yygotominor.yy230 = 0;}
1874 #line 1877 "parse.c"
1875 break;
1876 case 23:
1877 case 24:
1878 case 64:
1879 case 78:
1880 case 100:
1881 case 111:
1882 case 211:
1883 case 214:
1884 #line 133 "parse.y"
1885 {yygotominor.yy230 = 1;}
1886 #line 1889 "parse.c"
1887 break;
1888 case 26:
1889 #line 139 "parse.y"
1890 {
1891 sqlite3EndTable(pParse,&yymsp[-1].minor.yy384,&yymsp[0].minor.yy0,0);
1892 }
1893 #line 1896 "parse.c"
1894 break;
1895 case 27:
1896 #line 142 "parse.y"
1897 {
1898 sqlite3EndTable(pParse,0,0,yymsp[0].minor.yy239);
1899 sqlite3SelectDelete(yymsp[0].minor.yy239);
1900 }
1901 #line 1904 "parse.c"
1902 break;
1903 case 30:
1904 #line 154 "parse.y"
1905 {
1906 yygotominor.yy384.z = yymsp[-2].minor.yy384.z;
1907 yygotominor.yy384.n = (pParse->sLastToken.z-yymsp[-2].minor.yy384.z) + pParse->sLastToken.n;
1908 }
1909 #line 1912 "parse.c"
1910 break;
1911 case 31:
1912 #line 158 "parse.y"
1913 {
1914 sqlite3AddColumn(pParse,&yymsp[0].minor.yy384);
1915 yygotominor.yy384 = yymsp[0].minor.yy384;
1916 }
1917 #line 1920 "parse.c"
1918 break;
1919 case 32:
1920 case 33:
1921 case 34:
1922 case 35:
1923 case 36:
1924 case 250:
1925 #line 168 "parse.y"
1926 {yygotominor.yy384 = yymsp[0].minor.yy0;}
1927 #line 1930 "parse.c"
1928 break;
1929 case 38:
1930 #line 227 "parse.y"
1931 {sqlite3AddColumnType(pParse,&yymsp[0].minor.yy384);}
1932 #line 1935 "parse.c"
1933 break;
1934 case 39:
1935 case 42:
1936 case 119:
1937 case 120:
1938 case 131:
1939 case 150:
1940 case 238:
1941 case 248:
1942 case 249:
1943 #line 228 "parse.y"
1944 {yygotominor.yy384 = yymsp[0].minor.yy384;}
1945 #line 1948 "parse.c"
1946 break;
1947 case 40:
1948 #line 229 "parse.y"
1949 {
1950 yygotominor.yy384.z = yymsp[-3].minor.yy384.z;
1951 yygotominor.yy384.n = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy384.z;
1952 }
1953 #line 1956 "parse.c"
1954 break;
1955 case 41:
1956 #line 233 "parse.y"
1957 {
1958 yygotominor.yy384.z = yymsp[-5].minor.yy384.z;
1959 yygotominor.yy384.n = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-5].minor.yy384.z;
1960 }
1961 #line 1964 "parse.c"
1962 break;
1963 case 43:
1964 #line 239 "parse.y"
1965 {yygotominor.yy384.z=yymsp[-1].minor.yy384.z; yygotominor.yy384.n=yymsp[0].minor.yy384.n+(yymsp[0].minor.yy384.z-yymsp[-1].minor.yy384.z);}
1966 #line 1969 "parse.c"
1967 break;
1968 case 44:
1969 #line 241 "parse.y"
1970 { yygotominor.yy230 = atoi((char*)yymsp[0].minor.yy384.z); }
1971 #line 1974 "parse.c"
1972 break;
1973 case 45:
1974 #line 242 "parse.y"
1975 { yygotominor.yy230 = -atoi((char*)yymsp[0].minor.yy384.z); }
1976 #line 1979 "parse.c"
1977 break;
1978 case 50:
1979 case 52:
1980 #line 251 "parse.y"
1981 {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy178);}
1982 #line 1985 "parse.c"
1983 break;
1984 case 51:
1985 #line 252 "parse.y"
1986 {sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy178);}
1987 #line 1990 "parse.c"
1988 break;
1989 case 53:
1990 #line 254 "parse.y"
1991 {
1992 Expr *p = sqlite3Expr(TK_UMINUS, yymsp[0].minor.yy178, 0, 0);
1993 sqlite3AddDefaultValue(pParse,p);
1994 }
1995 #line 1998 "parse.c"
1996 break;
1997 case 54:
1998 #line 258 "parse.y"
1999 {
2000 Expr *p = sqlite3Expr(TK_STRING, 0, 0, &yymsp[0].minor.yy384);
2001 sqlite3AddDefaultValue(pParse,p);
2002 }
2003 #line 2006 "parse.c"
2004 break;
2005 case 56:
2006 #line 267 "parse.y"
2007 {sqlite3AddNotNull(pParse, yymsp[0].minor.yy230);}
2008 #line 2011 "parse.c"
2009 break;
2010 case 57:
2011 #line 269 "parse.y"
2012 {sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy230,yymsp[0].minor.yy230,yymsp[-2].minor.yy230);}
2013 #line 2016 "parse.c"
2014 break;
2015 case 58:
2016 #line 270 "parse.y"
2017 {sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy230,0,0,0,0);}
2018 #line 2021 "parse.c"
2019 break;
2020 case 59:
2021 #line 271 "parse.y"
2022 {sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy178);}
2023 #line 2026 "parse.c"
2024 break;
2025 case 60:
2026 #line 273 "parse.y"
2027 {sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy384,yymsp[-1].minor.yy462,yymsp[0].minor.yy230);}
2028 #line 2031 "parse.c"
2029 break;
2030 case 61:
2031 #line 274 "parse.y"
2032 {sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy230);}
2033 #line 2036 "parse.c"
2034 break;
2035 case 62:
2036 #line 275 "parse.y"
2037 {sqlite3AddCollateType(pParse, (char*)yymsp[0].minor.yy384.z, yymsp[0].minor.yy384.n);}
2038 #line 2041 "parse.c"
2039 break;
2040 case 65:
2041 #line 288 "parse.y"
2042 { yygotominor.yy230 = OE_Restrict * 0x010101; }
2043 #line 2046 "parse.c"
2044 break;
2045 case 66:
2046 #line 289 "parse.y"
2047 { yygotominor.yy230 = (yymsp[-1].minor.yy230 & yymsp[0].minor.yy13.mask) | yymsp[0].minor.yy13.value; }
2048 #line 2051 "parse.c"
2049 break;
2050 case 67:
2051 #line 291 "parse.y"
2052 { yygotominor.yy13.value = 0; yygotominor.yy13.mask = 0x000000; }
2053 #line 2056 "parse.c"
2054 break;
2055 case 68:
2056 #line 292 "parse.y"
2057 { yygotominor.yy13.value = yymsp[0].minor.yy230; yygotominor.yy13.mask = 0x0000ff; }
2058 #line 2061 "parse.c"
2059 break;
2060 case 69:
2061 #line 293 "parse.y"
2062 { yygotominor.yy13.value = yymsp[0].minor.yy230<<8; yygotominor.yy13.mask = 0x00ff00; }
2063 #line 2066 "parse.c"
2064 break;
2065 case 70:
2066 #line 294 "parse.y"
2067 { yygotominor.yy13.value = yymsp[0].minor.yy230<<16; yygotominor.yy13.mask = 0xff0000; }
2068 #line 2071 "parse.c"
2069 break;
2070 case 71:
2071 #line 296 "parse.y"
2072 { yygotominor.yy230 = OE_SetNull; }
2073 #line 2076 "parse.c"
2074 break;
2075 case 72:
2076 #line 297 "parse.y"
2077 { yygotominor.yy230 = OE_SetDflt; }
2078 #line 2081 "parse.c"
2079 break;
2080 case 73:
2081 #line 298 "parse.y"
2082 { yygotominor.yy230 = OE_Cascade; }
2083 #line 2086 "parse.c"
2084 break;
2085 case 74:
2086 #line 299 "parse.y"
2087 { yygotominor.yy230 = OE_Restrict; }
2088 #line 2091 "parse.c"
2089 break;
2090 case 75:
2091 case 76:
2092 case 91:
2093 case 93:
2094 case 95:
2095 case 96:
2096 case 167:
2097 #line 301 "parse.y"
2098 {yygotominor.yy230 = yymsp[0].minor.yy230;}
2099 #line 2102 "parse.c"
2100 break;
2101 case 80:
2102 #line 311 "parse.y"
2103 {yygotominor.yy384.n = 0; yygotominor.yy384.z = 0;}
2104 #line 2107 "parse.c"
2105 break;
2106 case 81:
2107 #line 312 "parse.y"
2108 {yygotominor.yy384 = yymsp[-1].minor.yy0;}
2109 #line 2112 "parse.c"
2110 break;
2111 case 86:
2112 #line 318 "parse.y"
2113 {sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy462,yymsp[0].minor.yy230,yymsp[-2].minor.yy230,0);}
2114 #line 2117 "parse.c"
2115 break;
2116 case 87:
2117 #line 320 "parse.y"
2118 {sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy462,yymsp[0].minor.yy230,0,0,0,0);}
2119 #line 2122 "parse.c"
2120 break;
2121 case 88:
2122 #line 321 "parse.y"
2123 {sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy178);}
2124 #line 2127 "parse.c"
2125 break;
2126 case 89:
2127 #line 323 "parse.y"
2128 {
2129 sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy462, &yymsp[-3].minor.yy384, yymsp[-2].minor.yy462, yymsp[-1].minor.yy230);
2130 sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy230);
2131 }
2132 #line 2135 "parse.c"
2133 break;
2134 case 92:
2135 case 94:
2136 #line 337 "parse.y"
2137 {yygotominor.yy230 = OE_Default;}
2138 #line 2141 "parse.c"
2139 break;
2140 case 97:
2141 #line 342 "parse.y"
2142 {yygotominor.yy230 = OE_Ignore;}
2143 #line 2146 "parse.c"
2144 break;
2145 case 98:
2146 case 168:
2147 #line 343 "parse.y"
2148 {yygotominor.yy230 = OE_Replace;}
2149 #line 2152 "parse.c"
2150 break;
2151 case 99:
2152 #line 347 "parse.y"
2153 {
2154 sqlite3DropTable(pParse, yymsp[0].minor.yy285, 0, yymsp[-1].minor.yy230);
2155 }
2156 #line 2159 "parse.c"
2157 break;
2158 case 102:
2159 #line 357 "parse.y"
2160 {
2161 sqlite3CreateView(pParse, &yymsp[-6].minor.yy0, &yymsp[-3].minor.yy384, &yymsp[-2].minor.yy384, yymsp[0].minor.yy239, yymsp[-5].minor.yy230);
2162 }
2163 #line 2166 "parse.c"
2164 break;
2165 case 103:
2166 #line 360 "parse.y"
2167 {
2168 sqlite3DropTable(pParse, yymsp[0].minor.yy285, 1, yymsp[-1].minor.yy230);
2169 }
2170 #line 2173 "parse.c"
2171 break;
2172 case 104:
2173 #line 367 "parse.y"
2174 {
2175 sqlite3Select(pParse, yymsp[0].minor.yy239, SRT_Callback, 0, 0, 0, 0, 0);
2176 sqlite3SelectDelete(yymsp[0].minor.yy239);
2177 }
2178 #line 2181 "parse.c"
2179 break;
2180 case 105:
2181 case 128:
2182 #line 377 "parse.y"
2183 {yygotominor.yy239 = yymsp[0].minor.yy239;}
2184 #line 2187 "parse.c"
2185 break;
2186 case 106:
2187 #line 379 "parse.y"
2188 {
2189 if( yymsp[0].minor.yy239 ){
2190 yymsp[0].minor.yy239->op = yymsp[-1].minor.yy230;
2191 yymsp[0].minor.yy239->pPrior = yymsp[-2].minor.yy239;
2192 }
2193 yygotominor.yy239 = yymsp[0].minor.yy239;
2194 }
2195 #line 2198 "parse.c"
2196 break;
2197 case 108:
2198 #line 388 "parse.y"
2199 {yygotominor.yy230 = TK_ALL;}
2200 #line 2203 "parse.c"
2201 break;
2202 case 110:
2203 #line 392 "parse.y"
2204 {
2205 yygotominor.yy239 = sqlite3SelectNew(yymsp[-6].minor.yy462,yymsp[-5].minor.yy285,yymsp[-4].minor.yy178,yymsp[-3].minor.yy462,yymsp[-2].minor.yy178,yymsp[-1].minor.yy462,yymsp[-7].minor.yy230,yymsp[0].minor.yy270.pLimit,yymsp[0].minor.yy270.pOffset);
2206 }
2207 #line 2210 "parse.c"
2208 break;
2209 case 114:
2210 case 235:
2211 #line 413 "parse.y"
2212 {yygotominor.yy462 = yymsp[-1].minor.yy462;}
2213 #line 2216 "parse.c"
2214 break;
2215 case 115:
2216 case 141:
2217 case 151:
2218 case 234:
2219 #line 414 "parse.y"
2220 {yygotominor.yy462 = 0;}
2221 #line 2224 "parse.c"
2222 break;
2223 case 116:
2224 #line 415 "parse.y"
2225 {
2226 yygotominor.yy462 = sqlite3ExprListAppend(yymsp[-2].minor.yy462,yymsp[-1].minor.yy178,yymsp[0].minor.yy384.n?&yymsp[0].minor.yy384:0);
2227 }
2228 #line 2231 "parse.c"
2229 break;
2230 case 117:
2231 #line 418 "parse.y"
2232 {
2233 yygotominor.yy462 = sqlite3ExprListAppend(yymsp[-1].minor.yy462, sqlite3Expr(TK_ALL, 0, 0, 0), 0);
2234 }
2235 #line 2238 "parse.c"
2236 break;
2237 case 118:
2238 #line 421 "parse.y"
2239 {
2240 Expr *pRight = sqlite3Expr(TK_ALL, 0, 0, 0);
2241 Expr *pLeft = sqlite3Expr(TK_ID, 0, 0, &yymsp[-2].minor.yy384);
2242 yygotominor.yy462 = sqlite3ExprListAppend(yymsp[-3].minor.yy462, sqlite3Expr(TK_DOT, pLeft, pRight, 0), 0);
2243 }
2244 #line 2247 "parse.c"
2245 break;
2246 case 121:
2247 #line 433 "parse.y"
2248 {yygotominor.yy384.n = 0;}
2249 #line 2252 "parse.c"
2250 break;
2251 case 122:
2252 #line 445 "parse.y"
2253 {yygotominor.yy285 = sqliteMalloc(sizeof(*yygotominor.yy285));}
2254 #line 2257 "parse.c"
2255 break;
2256 case 123:
2257 #line 446 "parse.y"
2258 {yygotominor.yy285 = yymsp[0].minor.yy285;}
2259 #line 2262 "parse.c"
2260 break;
2261 case 124:
2262 #line 451 "parse.y"
2263 {
2264 yygotominor.yy285 = yymsp[-1].minor.yy285;
2265 if( yygotominor.yy285 && yygotominor.yy285->nSrc>0 ) yygotominor.yy285->a[yygotominor.yy285->nSrc-1].jointype = yymsp[0].minor.yy230;
2266 }
2267 #line 2270 "parse.c"
2268 break;
2269 case 125:
2270 #line 455 "parse.y"
2271 {yygotominor.yy285 = 0;}
2272 #line 2275 "parse.c"
2273 break;
2274 case 126:
2275 #line 456 "parse.y"
2276 {
2277 yygotominor.yy285 = sqlite3SrcListAppend(yymsp[-5].minor.yy285,&yymsp[-4].minor.yy384,&yymsp[-3].minor.yy384);
2278 if( yymsp[-2].minor.yy384.n ) sqlite3SrcListAddAlias(yygotominor.yy285,&yymsp[-2].minor.yy384);
2279 if( yymsp[-1].minor.yy178 ){
2280 if( yygotominor.yy285 && yygotominor.yy285->nSrc>1 ){ yygotominor.yy285->a[yygotominor.yy285->nSrc-2].pOn = yymsp[-1].minor.yy178; }
2281 else { sqlite3ExprDelete(yymsp[-1].minor.yy178); }
2282 }
2283 if( yymsp[0].minor.yy160 ){
2284 if( yygotominor.yy285 && yygotominor.yy285->nSrc>1 ){ yygotominor.yy285->a[yygotominor.yy285->nSrc-2].pUsing = yymsp[0].minor.yy160; }
2285 else { sqlite3IdListDelete(yymsp[0].minor.yy160); }
2286 }
2287 }
2288 #line 2291 "parse.c"
2289 break;
2290 case 127:
2291 #line 470 "parse.y"
2292 {
2293 yygotominor.yy285 = sqlite3SrcListAppend(yymsp[-6].minor.yy285,0,0);
2294 yygotominor.yy285->a[yygotominor.yy285->nSrc-1].pSelect = yymsp[-4].minor.yy239;
2295 if( yymsp[-2].minor.yy384.n ) sqlite3SrcListAddAlias(yygotominor.yy285,&yymsp[-2].minor.yy384);
2296 if( yymsp[-1].minor.yy178 ){
2297 if( yygotominor.yy285 && yygotominor.yy285->nSrc>1 ){ yygotominor.yy285->a[yygotominor.yy285->nSrc-2].pOn = yymsp[-1].minor.yy178; }
2298 else { sqlite3ExprDelete(yymsp[-1].minor.yy178); }
2299 }
2300 if( yymsp[0].minor.yy160 ){
2301 if( yygotominor.yy285 && yygotominor.yy285->nSrc>1 ){ yygotominor.yy285->a[yygotominor.yy285->nSrc-2].pUsing = yymsp[0].minor.yy160; }
2302 else { sqlite3IdListDelete(yymsp[0].minor.yy160); }
2303 }
2304 }
2305 #line 2308 "parse.c"
2306 break;
2307 case 129:
2308 #line 491 "parse.y"
2309 {
2310 yygotominor.yy239 = sqlite3SelectNew(0,yymsp[0].minor.yy285,0,0,0,0,0,0,0);
2311 }
2312 #line 2315 "parse.c"
2313 break;
2314 case 130:
2315 #line 497 "parse.y"
2316 {yygotominor.yy384.z=0; yygotominor.yy384.n=0;}
2317 #line 2320 "parse.c"
2318 break;
2319 case 132:
2320 #line 502 "parse.y"
2321 {yygotominor.yy285 = sqlite3SrcListAppend(0,&yymsp[-1].minor.yy384,&yymsp[0].minor.yy384);}
2322 #line 2325 "parse.c"
2323 break;
2324 case 133:
2325 #line 506 "parse.y"
2326 { yygotominor.yy230 = JT_INNER; }
2327 #line 2330 "parse.c"
2328 break;
2329 case 134:
2330 #line 507 "parse.y"
2331 { yygotominor.yy230 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); }
2332 #line 2335 "parse.c"
2333 break;
2334 case 135:
2335 #line 508 "parse.y"
2336 { yygotominor.yy230 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy384,0); }
2337 #line 2340 "parse.c"
2338 break;
2339 case 136:
2340 #line 510 "parse.y"
2341 { yygotominor.yy230 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy384,&yymsp[-1].minor.yy384); }
2342 #line 2345 "parse.c"
2343 break;
2344 case 137:
2345 case 145:
2346 case 154:
2347 case 161:
2348 case 175:
2349 case 200:
2350 case 223:
2351 case 225:
2352 case 229:
2353 #line 514 "parse.y"
2354 {yygotominor.yy178 = yymsp[0].minor.yy178;}
2355 #line 2358 "parse.c"
2356 break;
2357 case 138:
2358 case 153:
2359 case 160:
2360 case 201:
2361 case 224:
2362 case 226:
2363 case 230:
2364 #line 515 "parse.y"
2365 {yygotominor.yy178 = 0;}
2366 #line 2369 "parse.c"
2367 break;
2368 case 139:
2369 case 172:
2370 #line 519 "parse.y"
2371 {yygotominor.yy160 = yymsp[-1].minor.yy160;}
2372 #line 2375 "parse.c"
2373 break;
2374 case 140:
2375 case 171:
2376 #line 520 "parse.y"
2377 {yygotominor.yy160 = 0;}
2378 #line 2381 "parse.c"
2379 break;
2380 case 142:
2381 case 152:
2382 #line 531 "parse.y"
2383 {yygotominor.yy462 = yymsp[0].minor.yy462;}
2384 #line 2387 "parse.c"
2385 break;
2386 case 143:
2387 #line 532 "parse.y"
2388 {
2389 yygotominor.yy462 = sqlite3ExprListAppend(yymsp[-4].minor.yy462,yymsp[-2].minor.yy178,yymsp[-1].minor.yy384.n>0?&yymsp[-1].minor.yy384:0);
2390 if( yygotominor.yy462 ) yygotominor.yy462->a[yygotominor.yy462->nExpr-1].sortOrder = yymsp[0].minor.yy230;
2391 }
2392 #line 2395 "parse.c"
2393 break;
2394 case 144:
2395 #line 536 "parse.y"
2396 {
2397 yygotominor.yy462 = sqlite3ExprListAppend(0,yymsp[-2].minor.yy178,yymsp[-1].minor.yy384.n>0?&yymsp[-1].minor.yy384:0);
2398 if( yygotominor.yy462 && yygotominor.yy462->a ) yygotominor.yy462->a[0].sortOrder = yymsp[0].minor.yy230;
2399 }
2400 #line 2403 "parse.c"
2401 break;
2402 case 146:
2403 case 148:
2404 #line 545 "parse.y"
2405 {yygotominor.yy230 = SQLITE_SO_ASC;}
2406 #line 2409 "parse.c"
2407 break;
2408 case 147:
2409 #line 546 "parse.y"
2410 {yygotominor.yy230 = SQLITE_SO_DESC;}
2411 #line 2414 "parse.c"
2412 break;
2413 case 149:
2414 #line 548 "parse.y"
2415 {yygotominor.yy384.z = 0; yygotominor.yy384.n = 0;}
2416 #line 2419 "parse.c"
2417 break;
2418 case 155:
2419 #line 566 "parse.y"
2420 {yygotominor.yy270.pLimit = 0; yygotominor.yy270.pOffset = 0;}
2421 #line 2424 "parse.c"
2422 break;
2423 case 156:
2424 #line 567 "parse.y"
2425 {yygotominor.yy270.pLimit = yymsp[0].minor.yy178; yygotominor.yy270.pOffset = 0;}
2426 #line 2429 "parse.c"
2427 break;
2428 case 157:
2429 #line 569 "parse.y"
2430 {yygotominor.yy270.pLimit = yymsp[-2].minor.yy178; yygotominor.yy270.pOffset = yymsp[0].minor.yy178;}
2431 #line 2434 "parse.c"
2432 break;
2433 case 158:
2434 #line 571 "parse.y"
2435 {yygotominor.yy270.pOffset = yymsp[-2].minor.yy178; yygotominor.yy270.pLimit = yymsp[0].minor.yy178;}
2436 #line 2439 "parse.c"
2437 break;
2438 case 159:
2439 #line 575 "parse.y"
2440 {sqlite3DeleteFrom(pParse,yymsp[-1].minor.yy285,yymsp[0].minor.yy178);}
2441 #line 2444 "parse.c"
2442 break;
2443 case 162:
2444 #line 586 "parse.y"
2445 {sqlite3Update(pParse,yymsp[-3].minor.yy285,yymsp[-1].minor.yy462,yymsp[0].minor.yy178,yymsp[-4].minor.yy230);}
2446 #line 2449 "parse.c"
2447 break;
2448 case 163:
2449 #line 592 "parse.y"
2450 {yygotominor.yy462 = sqlite3ExprListAppend(yymsp[-4].minor.yy462,yymsp[0].minor.yy178,&yymsp[-2].minor.yy384);}
2451 #line 2454 "parse.c"
2452 break;
2453 case 164:
2454 #line 593 "parse.y"
2455 {yygotominor.yy462 = sqlite3ExprListAppend(0,yymsp[0].minor.yy178,&yymsp[-2].minor.yy384);}
2456 #line 2459 "parse.c"
2457 break;
2458 case 165:
2459 #line 599 "parse.y"
2460 {sqlite3Insert(pParse, yymsp[-5].minor.yy285, yymsp[-1].minor.yy462, 0, yymsp[-4].minor.yy160, yymsp[-7].minor.yy230);}
2461 #line 2464 "parse.c"
2462 break;
2463 case 166:
2464 #line 601 "parse.y"
2465 {sqlite3Insert(pParse, yymsp[-2].minor.yy285, 0, yymsp[0].minor.yy239, yymsp[-1].minor.yy160, yymsp[-4].minor.yy230);}
2466 #line 2469 "parse.c"
2467 break;
2468 case 169:
2469 case 227:
2470 #line 611 "parse.y"
2471 {yygotominor.yy462 = sqlite3ExprListAppend(yymsp[-2].minor.yy462,yymsp[0].minor.yy178,0);}
2472 #line 2475 "parse.c"
2473 break;
2474 case 170:
2475 case 228:
2476 #line 612 "parse.y"
2477 {yygotominor.yy462 = sqlite3ExprListAppend(0,yymsp[0].minor.yy178,0);}
2478 #line 2481 "parse.c"
2479 break;
2480 case 173:
2481 #line 621 "parse.y"
2482 {yygotominor.yy160 = sqlite3IdListAppend(yymsp[-2].minor.yy160,&yymsp[0].minor.yy384);}
2483 #line 2486 "parse.c"
2484 break;
2485 case 174:
2486 #line 622 "parse.y"
2487 {yygotominor.yy160 = sqlite3IdListAppend(0,&yymsp[0].minor.yy384);}
2488 #line 2491 "parse.c"
2489 break;
2490 case 176:
2491 #line 633 "parse.y"
2492 {yygotominor.yy178 = yymsp[-1].minor.yy178; sqlite3ExprSpan(yygotominor.yy178,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); }
2493 #line 2496 "parse.c"
2494 break;
2495 case 177:
2496 case 182:
2497 case 183:
2498 #line 634 "parse.y"
2499 {yygotominor.yy178 = sqlite3Expr(yymsp[0].major, 0, 0, &yymsp[0].minor.yy0);}
2500 #line 2503 "parse.c"
2501 break;
2502 case 178:
2503 case 179:
2504 #line 635 "parse.y"
2505 {yygotominor.yy178 = sqlite3Expr(TK_ID, 0, 0, &yymsp[0].minor.yy0);}
2506 #line 2509 "parse.c"
2507 break;
2508 case 180:
2509 #line 637 "parse.y"
2510 {
2511 Expr *temp1 = sqlite3Expr(TK_ID, 0, 0, &yymsp[-2].minor.yy384);
2512 Expr *temp2 = sqlite3Expr(TK_ID, 0, 0, &yymsp[0].minor.yy384);
2513 yygotominor.yy178 = sqlite3Expr(TK_DOT, temp1, temp2, 0);
2514 }
2515 #line 2518 "parse.c"
2516 break;
2517 case 181:
2518 #line 642 "parse.y"
2519 {
2520 Expr *temp1 = sqlite3Expr(TK_ID, 0, 0, &yymsp[-4].minor.yy384);
2521 Expr *temp2 = sqlite3Expr(TK_ID, 0, 0, &yymsp[-2].minor.yy384);
2522 Expr *temp3 = sqlite3Expr(TK_ID, 0, 0, &yymsp[0].minor.yy384);
2523 Expr *temp4 = sqlite3Expr(TK_DOT, temp2, temp3, 0);
2524 yygotominor.yy178 = sqlite3Expr(TK_DOT, temp1, temp4, 0);
2525 }
2526 #line 2529 "parse.c"
2527 break;
2528 case 184:
2529 #line 651 "parse.y"
2530 {yygotominor.yy178 = sqlite3RegisterExpr(pParse, &yymsp[0].minor.yy0);}
2531 #line 2534 "parse.c"
2532 break;
2533 case 185:
2534 #line 652 "parse.y"
2535 {
2536 Token *pToken = &yymsp[0].minor.yy0;
2537 Expr *pExpr = yygotominor.yy178 = sqlite3Expr(TK_VARIABLE, 0, 0, pToken);
2538 sqlite3ExprAssignVarNumber(pParse, pExpr);
2539 }
2540 #line 2543 "parse.c"
2541 break;
2542 case 186:
2543 #line 658 "parse.y"
2544 {
2545 yygotominor.yy178 = sqlite3Expr(TK_CAST, yymsp[-3].minor.yy178, 0, &yymsp[-1].minor.yy384);
2546 sqlite3ExprSpan(yygotominor.yy178,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0);
2547 }
2548 #line 2551 "parse.c"
2549 break;
2550 case 187:
2551 #line 663 "parse.y"
2552 {
2553 yygotominor.yy178 = sqlite3ExprFunction(yymsp[-1].minor.yy462, &yymsp[-4].minor.yy0);
2554 sqlite3ExprSpan(yygotominor.yy178,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0);
2555 if( yymsp[-2].minor.yy230 && yygotominor.yy178 ){
2556 yygotominor.yy178->flags |= EP_Distinct;
2557 }
2558 }
2559 #line 2562 "parse.c"
2560 break;
2561 case 188:
2562 #line 670 "parse.y"
2563 {
2564 yygotominor.yy178 = sqlite3ExprFunction(0, &yymsp[-3].minor.yy0);
2565 sqlite3ExprSpan(yygotominor.yy178,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
2566 }
2567 #line 2570 "parse.c"
2568 break;
2569 case 189:
2570 #line 674 "parse.y"
2571 {
2572 /* The CURRENT_TIME, CURRENT_DATE, and CURRENT_TIMESTAMP values are
2573 ** treated as functions that return constants */
2574 yygotominor.yy178 = sqlite3ExprFunction(0,&yymsp[0].minor.yy0);
2575 if( yygotominor.yy178 ) yygotominor.yy178->op = TK_CONST_FUNC;
2576 }
2577 #line 2580 "parse.c"
2578 break;
2579 case 190:
2580 case 191:
2581 case 192:
2582 case 193:
2583 case 194:
2584 case 195:
2585 case 196:
2586 case 197:
2587 #line 680 "parse.y"
2588 {yygotominor.yy178 = sqlite3Expr(yymsp[-1].major, yymsp[-2].minor.yy178, yymsp[0].minor.yy178, 0);}
2589 #line 2592 "parse.c"
2590 break;
2591 case 198:
2592 #line 690 "parse.y"
2593 {yygotominor.yy440.eOperator = yymsp[0].minor.yy0; yygotominor.yy440.not = 0;}
2594 #line 2597 "parse.c"
2595 break;
2596 case 199:
2597 #line 691 "parse.y"
2598 {yygotominor.yy440.eOperator = yymsp[0].minor.yy0; yygotominor.yy440.not = 1;}
2599 #line 2602 "parse.c"
2600 break;
2601 case 202:
2602 #line 696 "parse.y"
2603 {
2604 ExprList *pList;
2605 pList = sqlite3ExprListAppend(0, yymsp[-1].minor.yy178, 0);
2606 pList = sqlite3ExprListAppend(pList, yymsp[-3].minor.yy178, 0);
2607 if( yymsp[0].minor.yy178 ){
2608 pList = sqlite3ExprListAppend(pList, yymsp[0].minor.yy178, 0);
2609 }
2610 yygotominor.yy178 = sqlite3ExprFunction(pList, &yymsp[-2].minor.yy440.eOperator);
2611 if( yymsp[-2].minor.yy440.not ) yygotominor.yy178 = sqlite3Expr(TK_NOT, yygotominor.yy178, 0, 0);
2612 sqlite3ExprSpan(yygotominor.yy178, &yymsp[-3].minor.yy178->span, &yymsp[-1].minor.yy178->span);
2613 }
2614 #line 2617 "parse.c"
2615 break;
2616 case 203:
2617 #line 708 "parse.y"
2618 {
2619 yygotominor.yy178 = sqlite3Expr(yymsp[0].major, yymsp[-1].minor.yy178, 0, 0);
2620 sqlite3ExprSpan(yygotominor.yy178,&yymsp[-1].minor.yy178->span,&yymsp[0].minor.yy0);
2621 }
2622 #line 2625 "parse.c"
2623 break;
2624 case 204:
2625 #line 712 "parse.y"
2626 {
2627 yygotominor.yy178 = sqlite3Expr(TK_ISNULL, yymsp[-2].minor.yy178, 0, 0);
2628 sqlite3ExprSpan(yygotominor.yy178,&yymsp[-2].minor.yy178->span,&yymsp[0].minor.yy0);
2629 }
2630 #line 2633 "parse.c"
2631 break;
2632 case 205:
2633 #line 716 "parse.y"
2634 {
2635 yygotominor.yy178 = sqlite3Expr(TK_NOTNULL, yymsp[-2].minor.yy178, 0, 0);
2636 sqlite3ExprSpan(yygotominor.yy178,&yymsp[-2].minor.yy178->span,&yymsp[0].minor.yy0);
2637 }
2638 #line 2641 "parse.c"
2639 break;
2640 case 206:
2641 #line 720 "parse.y"
2642 {
2643 yygotominor.yy178 = sqlite3Expr(TK_NOTNULL, yymsp[-3].minor.yy178, 0, 0);
2644 sqlite3ExprSpan(yygotominor.yy178,&yymsp[-3].minor.yy178->span,&yymsp[0].minor.yy0);
2645 }
2646 #line 2649 "parse.c"
2647 break;
2648 case 207:
2649 #line 724 "parse.y"
2650 {
2651 yygotominor.yy178 = sqlite3Expr(yymsp[-1].major, yymsp[0].minor.yy178, 0, 0);
2652 sqlite3ExprSpan(yygotominor.yy178,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy178->span);
2653 }
2654 #line 2657 "parse.c"
2655 break;
2656 case 208:
2657 #line 728 "parse.y"
2658 {
2659 yygotominor.yy178 = sqlite3Expr(TK_UMINUS, yymsp[0].minor.yy178, 0, 0);
2660 sqlite3ExprSpan(yygotominor.yy178,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy178->span);
2661 }
2662 #line 2665 "parse.c"
2663 break;
2664 case 209:
2665 #line 732 "parse.y"
2666 {
2667 yygotominor.yy178 = sqlite3Expr(TK_UPLUS, yymsp[0].minor.yy178, 0, 0);
2668 sqlite3ExprSpan(yygotominor.yy178,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy178->span);
2669 }
2670 #line 2673 "parse.c"
2671 break;
2672 case 212:
2673 #line 739 "parse.y"
2674 {
2675 ExprList *pList = sqlite3ExprListAppend(0, yymsp[-2].minor.yy178, 0);
2676 pList = sqlite3ExprListAppend(pList, yymsp[0].minor.yy178, 0);
2677 yygotominor.yy178 = sqlite3Expr(TK_BETWEEN, yymsp[-4].minor.yy178, 0, 0);
2678 if( yygotominor.yy178 ){
2679 yygotominor.yy178->pList = pList;
2680 }else{
2681 sqlite3ExprListDelete(pList);
2682 }
2683 if( yymsp[-3].minor.yy230 ) yygotominor.yy178 = sqlite3Expr(TK_NOT, yygotominor.yy178, 0, 0);
2684 sqlite3ExprSpan(yygotominor.yy178,&yymsp[-4].minor.yy178->span,&yymsp[0].minor.yy178->span);
2685 }
2686 #line 2689 "parse.c"
2687 break;
2688 case 215:
2689 #line 755 "parse.y"
2690 {
2691 yygotominor.yy178 = sqlite3Expr(TK_IN, yymsp[-4].minor.yy178, 0, 0);
2692 if( yygotominor.yy178 ){
2693 yygotominor.yy178->pList = yymsp[-1].minor.yy462;
2694 }else{
2695 sqlite3ExprListDelete(yymsp[-1].minor.yy462);
2696 }
2697 if( yymsp[-3].minor.yy230 ) yygotominor.yy178 = sqlite3Expr(TK_NOT, yygotominor.yy178, 0, 0);
2698 sqlite3ExprSpan(yygotominor.yy178,&yymsp[-4].minor.yy178->span,&yymsp[0].minor.yy0);
2699 }
2700 #line 2703 "parse.c"
2701 break;
2702 case 216:
2703 #line 765 "parse.y"
2704 {
2705 yygotominor.yy178 = sqlite3Expr(TK_SELECT, 0, 0, 0);
2706 if( yygotominor.yy178 ){
2707 yygotominor.yy178->pSelect = yymsp[-1].minor.yy239;
2708 }else{
2709 sqlite3SelectDelete(yymsp[-1].minor.yy239);
2710 }
2711 sqlite3ExprSpan(yygotominor.yy178,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
2712 }
2713 #line 2716 "parse.c"
2714 break;
2715 case 217:
2716 #line 774 "parse.y"
2717 {
2718 yygotominor.yy178 = sqlite3Expr(TK_IN, yymsp[-4].minor.yy178, 0, 0);
2719 if( yygotominor.yy178 ){
2720 yygotominor.yy178->pSelect = yymsp[-1].minor.yy239;
2721 }else{
2722 sqlite3SelectDelete(yymsp[-1].minor.yy239);
2723 }
2724 if( yymsp[-3].minor.yy230 ) yygotominor.yy178 = sqlite3Expr(TK_NOT, yygotominor.yy178, 0, 0);
2725 sqlite3ExprSpan(yygotominor.yy178,&yymsp[-4].minor.yy178->span,&yymsp[0].minor.yy0);
2726 }
2727 #line 2730 "parse.c"
2728 break;
2729 case 218:
2730 #line 784 "parse.y"
2731 {
2732 SrcList *pSrc = sqlite3SrcListAppend(0,&yymsp[-1].minor.yy384,&yymsp[0].minor.yy384);
2733 yygotominor.yy178 = sqlite3Expr(TK_IN, yymsp[-3].minor.yy178, 0, 0);
2734 if( yygotominor.yy178 ){
2735 yygotominor.yy178->pSelect = sqlite3SelectNew(0,pSrc,0,0,0,0,0,0,0);
2736 }else{
2737 sqlite3SrcListDelete(pSrc);
2738 }
2739 if( yymsp[-2].minor.yy230 ) yygotominor.yy178 = sqlite3Expr(TK_NOT, yygotominor.yy178, 0, 0);
2740 sqlite3ExprSpan(yygotominor.yy178,&yymsp[-3].minor.yy178->span,yymsp[0].minor.yy384.z?&yymsp[0].minor.yy384:&yymsp[-1].minor.yy384);
2741 }
2742 #line 2745 "parse.c"
2743 break;
2744 case 219:
2745 #line 795 "parse.y"
2746 {
2747 Expr *p = yygotominor.yy178 = sqlite3Expr(TK_EXISTS, 0, 0, 0);
2748 if( p ){
2749 p->pSelect = yymsp[-1].minor.yy239;
2750 sqlite3ExprSpan(p,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
2751 }else{
2752 sqlite3SelectDelete(yymsp[-1].minor.yy239);
2753 }
2754 }
2755 #line 2758 "parse.c"
2756 break;
2757 case 220:
2758 #line 807 "parse.y"
2759 {
2760 yygotominor.yy178 = sqlite3Expr(TK_CASE, yymsp[-3].minor.yy178, yymsp[-1].minor.yy178, 0);
2761 if( yygotominor.yy178 ){
2762 yygotominor.yy178->pList = yymsp[-2].minor.yy462;
2763 }else{
2764 sqlite3ExprListDelete(yymsp[-2].minor.yy462);
2765 }
2766 sqlite3ExprSpan(yygotominor.yy178, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0);
2767 }
2768 #line 2771 "parse.c"
2769 break;
2770 case 221:
2771 #line 818 "parse.y"
2772 {
2773 yygotominor.yy462 = sqlite3ExprListAppend(yymsp[-4].minor.yy462, yymsp[-2].minor.yy178, 0);
2774 yygotominor.yy462 = sqlite3ExprListAppend(yygotominor.yy462, yymsp[0].minor.yy178, 0);
2775 }
2776 #line 2779 "parse.c"
2777 break;
2778 case 222:
2779 #line 822 "parse.y"
2780 {
2781 yygotominor.yy462 = sqlite3ExprListAppend(0, yymsp[-2].minor.yy178, 0);
2782 yygotominor.yy462 = sqlite3ExprListAppend(yygotominor.yy462, yymsp[0].minor.yy178, 0);
2783 }
2784 #line 2787 "parse.c"
2785 break;
2786 case 231:
2787 #line 849 "parse.y"
2788 {
2789 sqlite3CreateIndex(pParse, &yymsp[-6].minor.yy384, &yymsp[-5].minor.yy384, sqlite3SrcListAppend(0,&yymsp[-3].minor.yy384,0), yymsp[-1].minor.yy462, yymsp[-9].minor.yy230,
2790 &yymsp[-10].minor.yy0, &yymsp[0].minor.yy0, SQLITE_SO_ASC, yymsp[-7].minor.yy230);
2791 }
2792 #line 2795 "parse.c"
2793 break;
2794 case 232:
2795 case 277:
2796 #line 855 "parse.y"
2797 {yygotominor.yy230 = OE_Abort;}
2798 #line 2801 "parse.c"
2799 break;
2800 case 233:
2801 #line 856 "parse.y"
2802 {yygotominor.yy230 = OE_None;}
2803 #line 2806 "parse.c"
2804 break;
2805 case 236:
2806 #line 866 "parse.y"
2807 {
2808 Expr *p = 0;
2809 if( yymsp[-1].minor.yy384.n>0 ){
2810 p = sqlite3Expr(TK_COLUMN, 0, 0, 0);
2811 if( p ) p->pColl = sqlite3LocateCollSeq(pParse, (char*)yymsp[-1].minor.yy384.z, yymsp[-1].minor.yy384.n);
2812 }
2813 yygotominor.yy462 = sqlite3ExprListAppend(yymsp[-4].minor.yy462, p, &yymsp[-2].minor.yy384);
2814 if( yygotominor.yy462 ) yygotominor.yy462->a[yygotominor.yy462->nExpr-1].sortOrder = yymsp[0].minor.yy230;
2815 }
2816 #line 2819 "parse.c"
2817 break;
2818 case 237:
2819 #line 875 "parse.y"
2820 {
2821 Expr *p = 0;
2822 if( yymsp[-1].minor.yy384.n>0 ){
2823 p = sqlite3Expr(TK_COLUMN, 0, 0, 0);
2824 if( p ) p->pColl = sqlite3LocateCollSeq(pParse, (char*)yymsp[-1].minor.yy384.z, yymsp[-1].minor.yy384.n);
2825 }
2826 yygotominor.yy462 = sqlite3ExprListAppend(0, p, &yymsp[-2].minor.yy384);
2827 if( yygotominor.yy462 ) yygotominor.yy462->a[yygotominor.yy462->nExpr-1].sortOrder = yymsp[0].minor.yy230;
2828 }
2829 #line 2832 "parse.c"
2830 break;
2831 case 239:
2832 #line 889 "parse.y"
2833 {sqlite3DropIndex(pParse, yymsp[0].minor.yy285, yymsp[-1].minor.yy230);}
2834 #line 2837 "parse.c"
2835 break;
2836 case 240:
2837 case 241:
2838 #line 893 "parse.y"
2839 {sqlite3Vacuum(pParse);}
2840 #line 2843 "parse.c"
2841 break;
2842 case 242:
2843 case 244:
2844 #line 899 "parse.y"
2845 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy384,&yymsp[-2].minor.yy384,&yymsp[0].minor.yy384,0);}
2846 #line 2849 "parse.c"
2847 break;
2848 case 243:
2849 #line 900 "parse.y"
2850 {sqlite3Pragma(pParse,&yymsp[-3].minor.yy384,&yymsp[-2].minor.yy384,&yymsp[0].minor.yy0,0);}
2851 #line 2854 "parse.c"
2852 break;
2853 case 245:
2854 #line 902 "parse.y"
2855 {
2856 sqlite3Pragma(pParse,&yymsp[-3].minor.yy384,&yymsp[-2].minor.yy384,&yymsp[0].minor.yy384,1);
2857 }
2858 #line 2861 "parse.c"
2859 break;
2860 case 246:
2861 #line 905 "parse.y"
2862 {sqlite3Pragma(pParse,&yymsp[-4].minor.yy384,&yymsp[-3].minor.yy384,&yymsp[-1].minor.yy384,0);}
2863 #line 2866 "parse.c"
2864 break;
2865 case 247:
2866 #line 906 "parse.y"
2867 {sqlite3Pragma(pParse,&yymsp[-1].minor.yy384,&yymsp[0].minor.yy384,0,0);}
2868 #line 2871 "parse.c"
2869 break;
2870 case 253:
2871 #line 918 "parse.y"
2872 {
2873 Token all;
2874 all.z = yymsp[-3].minor.yy384.z;
2875 all.n = (yymsp[0].minor.yy0.z - yymsp[-3].minor.yy384.z) + yymsp[0].minor.yy0.n;
2876 sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy247, &all);
2877 }
2878 #line 2881 "parse.c"
2879 break;
2880 case 254:
2881 #line 927 "parse.y"
2882 {
2883 sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy384, &yymsp[-6].minor.yy384, yymsp[-5].minor.yy230, yymsp[-4].minor.yy132.a, yymsp[-4].minor.yy132.b, yymsp[-2].minor.yy285, yymsp[-1].minor.yy230, yymsp[0].minor.yy178, yymsp[-9].minor.yy230);
2884 yygotominor.yy384 = (yymsp[-6].minor.yy384.n==0?yymsp[-7].minor.yy384:yymsp[-6].minor.yy384);
2885 }
2886 #line 2889 "parse.c"
2887 break;
2888 case 255:
2889 case 258:
2890 #line 933 "parse.y"
2891 { yygotominor.yy230 = TK_BEFORE; }
2892 #line 2895 "parse.c"
2893 break;
2894 case 256:
2895 #line 934 "parse.y"
2896 { yygotominor.yy230 = TK_AFTER; }
2897 #line 2900 "parse.c"
2898 break;
2899 case 257:
2900 #line 935 "parse.y"
2901 { yygotominor.yy230 = TK_INSTEAD;}
2902 #line 2905 "parse.c"
2903 break;
2904 case 259:
2905 case 260:
2906 #line 940 "parse.y"
2907 {yygotominor.yy132.a = yymsp[0].major; yygotominor.yy132.b = 0;}
2908 #line 2911 "parse.c"
2909 break;
2910 case 261:
2911 #line 942 "parse.y"
2912 {yygotominor.yy132.a = TK_UPDATE; yygotominor.yy132.b = yymsp[0].minor.yy160;}
2913 #line 2916 "parse.c"
2914 break;
2915 case 262:
2916 case 263:
2917 #line 945 "parse.y"
2918 { yygotominor.yy230 = TK_ROW; }
2919 #line 2922 "parse.c"
2920 break;
2921 case 264:
2922 #line 947 "parse.y"
2923 { yygotominor.yy230 = TK_STATEMENT; }
2924 #line 2927 "parse.c"
2925 break;
2926 case 265:
2927 #line 951 "parse.y"
2928 { yygotominor.yy178 = 0; }
2929 #line 2932 "parse.c"
2930 break;
2931 case 266:
2932 #line 952 "parse.y"
2933 { yygotominor.yy178 = yymsp[0].minor.yy178; }
2934 #line 2937 "parse.c"
2935 break;
2936 case 267:
2937 #line 956 "parse.y"
2938 {
2939 if( yymsp[-2].minor.yy247 ){
2940 yymsp[-2].minor.yy247->pLast->pNext = yymsp[-1].minor.yy247;
2941 }else{
2942 yymsp[-2].minor.yy247 = yymsp[-1].minor.yy247;
2943 }
2944 yymsp[-2].minor.yy247->pLast = yymsp[-1].minor.yy247;
2945 yygotominor.yy247 = yymsp[-2].minor.yy247;
2946 }
2947 #line 2950 "parse.c"
2948 break;
2949 case 268:
2950 #line 965 "parse.y"
2951 { yygotominor.yy247 = 0; }
2952 #line 2955 "parse.c"
2953 break;
2954 case 269:
2955 #line 971 "parse.y"
2956 { yygotominor.yy247 = sqlite3TriggerUpdateStep(&yymsp[-3].minor.yy384, yymsp[-1].minor.yy462, yymsp[0].minor.yy178, yymsp[-4].minor.yy230); }
2957 #line 2960 "parse.c"
2958 break;
2959 case 270:
2960 #line 976 "parse.y"
2961 {yygotominor.yy247 = sqlite3TriggerInsertStep(&yymsp[-5].minor.yy384, yymsp[-4].minor.yy160, yymsp[-1].minor.yy462, 0, yymsp[-7].minor.yy230);}
2962 #line 2965 "parse.c"
2963 break;
2964 case 271:
2965 #line 979 "parse.y"
2966 {yygotominor.yy247 = sqlite3TriggerInsertStep(&yymsp[-2].minor.yy384, yymsp[-1].minor.yy160, 0, yymsp[0].minor.yy239, yymsp[-4].minor.yy230);}
2967 #line 2970 "parse.c"
2968 break;
2969 case 272:
2970 #line 983 "parse.y"
2971 {yygotominor.yy247 = sqlite3TriggerDeleteStep(&yymsp[-1].minor.yy384, yymsp[0].minor.yy178);}
2972 #line 2975 "parse.c"
2973 break;
2974 case 273:
2975 #line 986 "parse.y"
2976 {yygotominor.yy247 = sqlite3TriggerSelectStep(yymsp[0].minor.yy239); }
2977 #line 2980 "parse.c"
2978 break;
2979 case 274:
2980 #line 989 "parse.y"
2981 {
2982 yygotominor.yy178 = sqlite3Expr(TK_RAISE, 0, 0, 0);
2983 if( yygotominor.yy178 ){
2984 yygotominor.yy178->iColumn = OE_Ignore;
2985 sqlite3ExprSpan(yygotominor.yy178, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0);
2986 }
2987 }
2988 #line 2991 "parse.c"
2989 break;
2990 case 275:
2991 #line 996 "parse.y"
2992 {
2993 yygotominor.yy178 = sqlite3Expr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy384);
2994 if( yygotominor.yy178 ) {
2995 yygotominor.yy178->iColumn = yymsp[-3].minor.yy230;
2996 sqlite3ExprSpan(yygotominor.yy178, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
2997 }
2998 }
2999 #line 3002 "parse.c"
3000 break;
3001 case 276:
3002 #line 1006 "parse.y"
3003 {yygotominor.yy230 = OE_Rollback;}
3004 #line 3007 "parse.c"
3005 break;
3006 case 278:
3007 #line 1008 "parse.y"
3008 {yygotominor.yy230 = OE_Fail;}
3009 #line 3012 "parse.c"
3010 break;
3011 case 279:
3012 #line 1013 "parse.y"
3013 {
3014 sqlite3DropTrigger(pParse,yymsp[0].minor.yy285);
3015 }
3016 #line 3019 "parse.c"
3017 break;
3018 case 280:
3019 #line 1019 "parse.y"
3020 {
3021 sqlite3Attach(pParse, yymsp[-3].minor.yy178, yymsp[-1].minor.yy178, yymsp[0].minor.yy292);
3022 }
3023 #line 3026 "parse.c"
3024 break;
3025 case 281:
3026 #line 1024 "parse.y"
3027 { yygotominor.yy292 = 0; }
3028 #line 3031 "parse.c"
3029 break;
3030 case 282:
3031 #line 1025 "parse.y"
3032 { yygotominor.yy292 = yymsp[0].minor.yy178; }
3033 #line 3036 "parse.c"
3034 break;
3035 case 285:
3036 #line 1031 "parse.y"
3037 {
3038 sqlite3Detach(pParse, yymsp[0].minor.yy178);
3039 }
3040 #line 3043 "parse.c"
3041 break;
3042 case 286:
3043 #line 1037 "parse.y"
3044 {sqlite3Reindex(pParse, 0, 0);}
3045 #line 3048 "parse.c"
3046 break;
3047 case 287:
3048 #line 1038 "parse.y"
3049 {sqlite3Reindex(pParse, &yymsp[-1].minor.yy384, &yymsp[0].minor.yy384);}
3050 #line 3053 "parse.c"
3051 break;
3052 case 288:
3053 #line 1043 "parse.y"
3054 {sqlite3Analyze(pParse, 0, 0);}
3055 #line 3058 "parse.c"
3056 break;
3057 case 289:
3058 #line 1044 "parse.y"
3059 {sqlite3Analyze(pParse, &yymsp[-1].minor.yy384, &yymsp[0].minor.yy384);}
3060 #line 3063 "parse.c"
3061 break;
3062 case 290:
3063 #line 1049 "parse.y"
3064 {
3065 sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy285,&yymsp[0].minor.yy384);
3066 }
3067 #line 3070 "parse.c"
3068 break;
3069 case 291:
3070 #line 1052 "parse.y"
3071 {
3072 sqlite3AlterFinishAddColumn(pParse, &yymsp[0].minor.yy384);
3073 }
3074 #line 3077 "parse.c"
3075 break;
3076 case 292:
3077 #line 1055 "parse.y"
3078 {
3079 sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy285);
3080 }
3081 #line 3084 "parse.c"
3082 break;
3083 };
3084 yygoto = yyRuleInfo[yyruleno].lhs;
3085 yysize = yyRuleInfo[yyruleno].nrhs;
3086 yypParser->yyidx -= yysize;
3087 yyact = yy_find_reduce_action(yymsp[-yysize].stateno,yygoto);
3088 if( yyact < YYNSTATE ){
3089 #ifdef NDEBUG
3090 /* If we are not debugging and the reduce action popped at least
3091 ** one element off the stack, then we can push the new element back
3092 ** onto the stack here, and skip the stack overflow test in yy_shift().
3093 ** That gives a significant speed improvement. */
3094 if( yysize ){
3095 yypParser->yyidx++;
3096 yymsp -= yysize-1;
3097 yymsp->stateno = yyact;
3098 yymsp->major = yygoto;
3099 yymsp->minor = yygotominor;
3100 }else
3101 #endif
3102 {
3103 yy_shift(yypParser,yyact,yygoto,&yygotominor);
3104 }
3105 }else if( yyact == YYNSTATE + YYNRULE + 1 ){
3106 yy_accept(yypParser);
3107 }
3108 }
3109
3110 /*
3111 ** The following code executes when the parse fails
3112 */
3113 static void yy_parse_failed(
3114 yyParser *yypParser /* The parser */
3115 ){
3116 sqlite3ParserARG_FETCH;
3117 #ifndef NDEBUG
3118 if( yyTraceFILE ){
3119 fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
3120 }
3121 #endif
3122 while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
3123 /* Here code is inserted which will be executed whenever the
3124 ** parser fails */
3125 sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
3126 }
3127
3128 /*
3129 ** The following code executes when a syntax error first occurs.
3130 */
3131 static void yy_syntax_error(
3132 yyParser *yypParser, /* The parser */
3133 int yymajor, /* The major type of the error token */
3134 YYMINORTYPE yyminor /* The minor type of the error token */
3135 ){
3136 sqlite3ParserARG_FETCH;
3137 #define TOKEN (yyminor.yy0)
3138 #line 34 "parse.y"
3139
3140 if( !pParse->parseError ){
3141 if( TOKEN.z[0] ){
3142 sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &TOKEN);
3143 }else{
3144 sqlite3ErrorMsg(pParse, "incomplete SQL statement");
3145 }
3146 pParse->parseError = 1;
3147 }
3148 #line 3152 "parse.c"
3149 sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
3150 }
3151
3152 /*
3153 ** The following is executed when the parser accepts
3154 */
3155 static void yy_accept(
3156 yyParser *yypParser /* The parser */
3157 ){
3158 sqlite3ParserARG_FETCH;
3159 #ifndef NDEBUG
3160 if( yyTraceFILE ){
3161 fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
3162 }
3163 #endif
3164 while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
3165 /* Here code is inserted which will be executed whenever the
3166 ** parser accepts */
3167 sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
3168 }
3169
3170 /* The main parser program.
3171 ** The first argument is a pointer to a structure obtained from
3172 ** "sqlite3ParserAlloc" which describes the current state of the parser.
3173 ** The second argument is the major token number. The third is
3174 ** the minor token. The fourth optional argument is whatever the
3175 ** user wants (and specified in the grammar) and is available for
3176 ** use by the action routines.
3177 **
3178 ** Inputs:
3179 ** <ul>
3180 ** <li> A pointer to the parser (an opaque structure.)
3181 ** <li> The major token number.
3182 ** <li> The minor token number.
3183 ** <li> An option argument of a grammar-specified type.
3184 ** </ul>
3185 **
3186 ** Outputs:
3187 ** None.
3188 */
3189 void sqlite3Parser(
3190 void *yyp, /* The parser */
3191 int yymajor, /* The major token code number */
3192 sqlite3ParserTOKENTYPE yyminor /* The value for the token */
3193 sqlite3ParserARG_PDECL /* Optional %extra_argument parameter */
3194 ){
3195 YYMINORTYPE yyminorunion;
3196 int yyact; /* The parser action. */
3197 int yyendofinput; /* True if we are at the end of input */
3198 int yyerrorhit = 0; /* True if yymajor has invoked an error */
3199 yyParser *yypParser; /* The parser */
3200
3201 /* (re)initialize the parser, if necessary */
3202 yypParser = (yyParser*)yyp;
3203 if( yypParser->yyidx<0 ){
3204 /* if( yymajor==0 ) return; // not sure why this was here... */
3205 yypParser->yyidx = 0;
3206 yypParser->yyerrcnt = -1;
3207 yypParser->yystack[0].stateno = 0;
3208 yypParser->yystack[0].major = 0;
3209 }
3210 yyminorunion.yy0 = yyminor;
3211 yyendofinput = (yymajor==0);
3212 sqlite3ParserARG_STORE;
3213
3214 #ifndef NDEBUG
3215 if( yyTraceFILE ){
3216 fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]);
3217 }
3218 #endif
3219
3220 do{
3221 yyact = yy_find_shift_action(yypParser,yymajor);
3222 if( yyact<YYNSTATE ){
3223 yy_shift(yypParser,yyact,yymajor,&yyminorunion);
3224 yypParser->yyerrcnt--;
3225 if( yyendofinput && yypParser->yyidx>=0 ){
3226 yymajor = 0;
3227 }else{
3228 yymajor = YYNOCODE;
3229 }
3230 }else if( yyact < YYNSTATE + YYNRULE ){
3231 yy_reduce(yypParser,yyact-YYNSTATE);
3232 }else if( yyact == YY_ERROR_ACTION ){
3233 int yymx;
3234 #ifndef NDEBUG
3235 if( yyTraceFILE ){
3236 fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
3237 }
3238 #endif
3239 #ifdef YYERRORSYMBOL
3240 /* A syntax error has occurred.
3241 ** The response to an error depends upon whether or not the
3242 ** grammar defines an error token "ERROR".
3243 **
3244 ** This is what we do if the grammar does define ERROR:
3245 **
3246 ** * Call the %syntax_error function.
3247 **
3248 ** * Begin popping the stack until we enter a state where
3249 ** it is legal to shift the error symbol, then shift
3250 ** the error symbol.
3251 **
3252 ** * Set the error count to three.
3253 **
3254 ** * Begin accepting and shifting new tokens. No new error
3255 ** processing will occur until three tokens have been
3256 ** shifted successfully.
3257 **
3258 */
3259 if( yypParser->yyerrcnt<0 ){
3260 yy_syntax_error(yypParser,yymajor,yyminorunion);
3261 }
3262 yymx = yypParser->yystack[yypParser->yyidx].major;
3263 if( yymx==YYERRORSYMBOL || yyerrorhit ){
3264 #ifndef NDEBUG
3265 if( yyTraceFILE ){
3266 fprintf(yyTraceFILE,"%sDiscard input token %s\n",
3267 yyTracePrompt,yyTokenName[yymajor]);
3268 }
3269 #endif
3270 yy_destructor(yymajor,&yyminorunion);
3271 yymajor = YYNOCODE;
3272 }else{
3273 while(
3274 yypParser->yyidx >= 0 &&
3275 yymx != YYERRORSYMBOL &&
3276 (yyact = yy_find_reduce_action(
3277 yypParser->yystack[yypParser->yyidx].stateno,
3278 YYERRORSYMBOL)) >= YYNSTATE
3279 ){
3280 yy_pop_parser_stack(yypParser);
3281 }
3282 if( yypParser->yyidx < 0 || yymajor==0 ){
3283 yy_destructor(yymajor,&yyminorunion);
3284 yy_parse_failed(yypParser);
3285 yymajor = YYNOCODE;
3286 }else if( yymx!=YYERRORSYMBOL ){
3287 YYMINORTYPE u2;
3288 u2.YYERRSYMDT = 0;
3289 yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2);
3290 }
3291 }
3292 yypParser->yyerrcnt = 3;
3293 yyerrorhit = 1;
3294 #else /* YYERRORSYMBOL is not defined */
3295 /* This is what we do if the grammar does not define ERROR:
3296 **
3297 ** * Report an error message, and throw away the input token.
3298 **
3299 ** * If the input token is $, then fail the parse.
3300 **
3301 ** As before, subsequent error messages are suppressed until
3302 ** three input tokens have been successfully shifted.
3303 */
3304 if( yypParser->yyerrcnt<=0 ){
3305 yy_syntax_error(yypParser,yymajor,yyminorunion);
3306 }
3307 yypParser->yyerrcnt = 3;
3308 yy_destructor(yymajor,&yyminorunion);
3309 if( yyendofinput ){
3310 yy_parse_failed(yypParser);
3311 }
3312 yymajor = YYNOCODE;
3313 #endif
3314 }else{
3315 yy_accept(yypParser);
3316 yymajor = YYNOCODE;
3317 }
3318 }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
3319 return;
3320 }