| 1 | /* This file is automatically generated by Lemon from input grammar | 
| 2 | ** source file "parse.y". */ | 
| 3 | /* | 
| 4 | ** 2001-09-15 | 
| 5 | ** | 
| 6 | ** The author disclaims copyright to this source code.  In place of | 
| 7 | ** a legal notice, here is a blessing: | 
| 8 | ** | 
| 9 | **    May you do good and not evil. | 
| 10 | **    May you find forgiveness for yourself and forgive others. | 
| 11 | **    May you share freely, never taking more than you give. | 
| 12 | ** | 
| 13 | ************************************************************************* | 
| 14 | ** This file contains SQLite's SQL parser. | 
| 15 | ** | 
| 16 | ** The canonical source code to this file ("parse.y") is a Lemon grammar  | 
| 17 | ** file that specifies the input grammar and actions to take while parsing. | 
| 18 | ** That input file is processed by Lemon to generate a C-language  | 
| 19 | ** implementation of a parser for the given grammer.  You might be reading | 
| 20 | ** this comment as part of the translated C-code.  Edits should be made | 
| 21 | ** to the original parse.y sources. | 
| 22 | */ | 
| 23 | #line 58 "parse.y" | 
| 24 |  | 
| 25 | #include "sqliteInt.h" | 
| 26 |  | 
| 27 | /* | 
| 28 | ** Disable all error recovery processing in the parser push-down | 
| 29 | ** automaton. | 
| 30 | */ | 
| 31 | #define YYNOERRORRECOVERY 1 | 
| 32 |  | 
| 33 | /* | 
| 34 | ** Make yytestcase() the same as testcase() | 
| 35 | */ | 
| 36 | #define yytestcase(X) testcase(X) | 
| 37 |  | 
| 38 | /* | 
| 39 | ** Indicate that sqlite3ParserFree() will never be called with a null | 
| 40 | ** pointer. | 
| 41 | */ | 
| 42 | #define YYPARSEFREENEVERNULL 1 | 
| 43 |  | 
| 44 | /* | 
| 45 | ** In the amalgamation, the parse.c file generated by lemon and the | 
| 46 | ** tokenize.c file are concatenated.  In that case, sqlite3RunParser() | 
| 47 | ** has access to the the size of the yyParser object and so the parser | 
| 48 | ** engine can be allocated from stack.  In that case, only the | 
| 49 | ** sqlite3ParserInit() and sqlite3ParserFinalize() routines are invoked | 
| 50 | ** and the sqlite3ParserAlloc() and sqlite3ParserFree() routines can be | 
| 51 | ** omitted. | 
| 52 | */ | 
| 53 | #ifdef SQLITE_AMALGAMATION | 
| 54 | # define sqlite3Parser_ENGINEALWAYSONSTACK 1 | 
| 55 | #endif | 
| 56 |  | 
| 57 | /* | 
| 58 | ** Alternative datatype for the argument to the malloc() routine passed | 
| 59 | ** into sqlite3ParserAlloc().  The default is size_t. | 
| 60 | */ | 
| 61 | #define YYMALLOCARGTYPE  u64 | 
| 62 |  | 
| 63 | /* | 
| 64 | ** An instance of the following structure describes the event of a | 
| 65 | ** TRIGGER.  "a" is the event type, one of TK_UPDATE, TK_INSERT, | 
| 66 | ** TK_DELETE, or TK_INSTEAD.  If the event is of the form | 
| 67 | ** | 
| 68 | **      UPDATE ON (a,b,c) | 
| 69 | ** | 
| 70 | ** Then the "b" IdList records the list "a,b,c". | 
| 71 | */ | 
| 72 | struct TrigEvent { int a; IdList * b; }; | 
| 73 |  | 
| 74 | struct FrameBound     { int eType; Expr *pExpr; }; | 
| 75 |  | 
| 76 | /* | 
| 77 | ** Disable lookaside memory allocation for objects that might be | 
| 78 | ** shared across database connections. | 
| 79 | */ | 
| 80 | static void disableLookaside(Parse *pParse){ | 
| 81 |   sqlite3 *db = pParse->db; | 
| 82 |   pParse->disableLookaside++; | 
| 83 |   DisableLookaside; | 
| 84 | } | 
| 85 |  | 
| 86 | #if !defined(SQLITE_ENABLE_UPDATE_DELETE_LIMIT) \ | 
| 87 |  && defined(SQLITE_UDL_CAPABLE_PARSER) | 
| 88 | /* | 
| 89 | ** Issue an error message if an ORDER BY or LIMIT clause occurs on an | 
| 90 | ** UPDATE or DELETE statement. | 
| 91 | */ | 
| 92 | static void updateDeleteLimitError( | 
| 93 |   Parse *pParse, | 
| 94 |   ExprList *pOrderBy, | 
| 95 |   Expr *pLimit | 
| 96 | ){ | 
| 97 |   if( pOrderBy ){ | 
| 98 |     sqlite3ErrorMsg(pParse, "syntax error near \"ORDER BY\"" ); | 
| 99 |   }else{ | 
| 100 |     sqlite3ErrorMsg(pParse, "syntax error near \"LIMIT\"" ); | 
| 101 |   } | 
| 102 |   sqlite3ExprListDelete(pParse->db, pOrderBy); | 
| 103 |   sqlite3ExprDelete(pParse->db, pLimit); | 
| 104 | } | 
| 105 | #endif /* SQLITE_ENABLE_UPDATE_DELETE_LIMIT */ | 
| 106 |  | 
| 107 | #line 502 "parse.y" | 
| 108 |  | 
| 109 |   /* | 
| 110 |   ** For a compound SELECT statement, make sure p->pPrior->pNext==p for | 
| 111 |   ** all elements in the list.  And make sure list length does not exceed | 
| 112 |   ** SQLITE_LIMIT_COMPOUND_SELECT. | 
| 113 |   */ | 
| 114 |   static void parserDoubleLinkSelect(Parse *pParse, Select *p){ | 
| 115 |     assert( p!=0 ); | 
| 116 |     if( p->pPrior ){ | 
| 117 |       Select *pNext = 0, *pLoop = p; | 
| 118 |       int mxSelect, cnt = 1; | 
| 119 |       while(1){ | 
| 120 |         pLoop->pNext = pNext; | 
| 121 |         pLoop->selFlags |= SF_Compound; | 
| 122 |         pNext = pLoop; | 
| 123 |         pLoop = pLoop->pPrior; | 
| 124 |         if( pLoop==0 ) break; | 
| 125 |         cnt++;         | 
| 126 |         if( pLoop->pOrderBy || pLoop->pLimit ){ | 
| 127 |           sqlite3ErrorMsg(pParse,"%s clause should come after %s not before" , | 
| 128 |              pLoop->pOrderBy!=0 ? "ORDER BY"  : "LIMIT" , | 
| 129 |              sqlite3SelectOpName(pNext->op)); | 
| 130 |           break; | 
| 131 |         } | 
| 132 |       } | 
| 133 |       if( (p->selFlags & SF_MultiValue)==0 &&  | 
| 134 |         (mxSelect = pParse->db->aLimit[SQLITE_LIMIT_COMPOUND_SELECT])>0 && | 
| 135 |         cnt>mxSelect | 
| 136 |       ){ | 
| 137 |         sqlite3ErrorMsg(pParse, "too many terms in compound SELECT" ); | 
| 138 |       } | 
| 139 |     } | 
| 140 |   } | 
| 141 |  | 
| 142 |   /* Attach a With object describing the WITH clause to a Select | 
| 143 |   ** object describing the query for which the WITH clause is a prefix. | 
| 144 |   */ | 
| 145 |   static Select *attachWithToSelect(Parse *pParse, Select *pSelect, With *pWith){ | 
| 146 |     if( pSelect ){ | 
| 147 |       pSelect->pWith = pWith; | 
| 148 |       parserDoubleLinkSelect(pParse, pSelect); | 
| 149 |     }else{ | 
| 150 |       sqlite3WithDelete(pParse->db, pWith); | 
| 151 |     } | 
| 152 |     return pSelect; | 
| 153 |   } | 
| 154 | #line 1047 "parse.y" | 
| 155 |  | 
| 156 |  | 
| 157 |   /* Construct a new Expr object from a single token */ | 
| 158 |   static Expr *tokenExpr(Parse *pParse, int op, Token t){ | 
| 159 |     Expr *p = sqlite3DbMallocRawNN(pParse->db, sizeof(Expr)+t.n+1); | 
| 160 |     if( p ){ | 
| 161 |       /* memset(p, 0, sizeof(Expr)); */ | 
| 162 |       p->op = (u8)op; | 
| 163 |       p->affExpr = 0; | 
| 164 |       p->flags = EP_Leaf; | 
| 165 |       ExprClearVVAProperties(p); | 
| 166 |       /* p->iAgg = -1; // Not required */ | 
| 167 |       p->pLeft = p->pRight = 0; | 
| 168 |       p->pAggInfo = 0; | 
| 169 |       memset(&p->x, 0, sizeof(p->x)); | 
| 170 |       memset(&p->y, 0, sizeof(p->y)); | 
| 171 |       p->op2 = 0; | 
| 172 |       p->iTable = 0; | 
| 173 |       p->iColumn = 0; | 
| 174 |       p->u.zToken = (char*)&p[1]; | 
| 175 |       memcpy(p->u.zToken, t.z, t.n); | 
| 176 |       p->u.zToken[t.n] = 0; | 
| 177 |       p->w.iOfst = (int)(t.z - pParse->zTail); | 
| 178 |       if( sqlite3Isquote(p->u.zToken[0]) ){ | 
| 179 |         sqlite3DequoteExpr(p); | 
| 180 |       } | 
| 181 | #if SQLITE_MAX_EXPR_DEPTH>0 | 
| 182 |       p->nHeight = 1; | 
| 183 | #endif   | 
| 184 |       if( IN_RENAME_OBJECT ){ | 
| 185 |         return (Expr*)sqlite3RenameTokenMap(pParse, (void*)p, &t); | 
| 186 |       } | 
| 187 |     } | 
| 188 |     return p; | 
| 189 |   } | 
| 190 |  | 
| 191 | #line 1216 "parse.y" | 
| 192 |  | 
| 193 |   /* A routine to convert a binary TK_IS or TK_ISNOT expression into a | 
| 194 |   ** unary TK_ISNULL or TK_NOTNULL expression. */ | 
| 195 |   static void binaryToUnaryIfNull(Parse *pParse, Expr *pY, Expr *pA, int op){ | 
| 196 |     sqlite3 *db = pParse->db; | 
| 197 |     if( pA && pY && pY->op==TK_NULL && !IN_RENAME_OBJECT ){ | 
| 198 |       pA->op = (u8)op; | 
| 199 |       sqlite3ExprDelete(db, pA->pRight); | 
| 200 |       pA->pRight = 0; | 
| 201 |     } | 
| 202 |   } | 
| 203 | #line 1437 "parse.y" | 
| 204 |  | 
| 205 |   /* Add a single new term to an ExprList that is used to store a | 
| 206 |   ** list of identifiers.  Report an error if the ID list contains | 
| 207 |   ** a COLLATE clause or an ASC or DESC keyword, except ignore the | 
| 208 |   ** error while parsing a legacy schema. | 
| 209 |   */ | 
| 210 |   static ExprList *parserAddExprIdListTerm( | 
| 211 |     Parse *pParse, | 
| 212 |     ExprList *pPrior, | 
| 213 |     Token *pIdToken, | 
| 214 |     int hasCollate, | 
| 215 |     int sortOrder | 
| 216 |   ){ | 
| 217 |     ExprList *p = sqlite3ExprListAppend(pParse, pPrior, 0); | 
| 218 |     if( (hasCollate || sortOrder!=SQLITE_SO_UNDEFINED) | 
| 219 |         && pParse->db->init.busy==0 | 
| 220 |     ){ | 
| 221 |       sqlite3ErrorMsg(pParse, "syntax error after column name \"%.*s\"" , | 
| 222 |                          pIdToken->n, pIdToken->z); | 
| 223 |     } | 
| 224 |     sqlite3ExprListSetName(pParse, p, pIdToken, 1); | 
| 225 |     return p; | 
| 226 |   } | 
| 227 | #line 1916 "parse.y" | 
| 228 |  | 
| 229 | #if TK_SPAN>255 | 
| 230 | # error too many tokens in the grammar | 
| 231 | #endif | 
| 232 | #line 258 "parse.c" | 
| 233 | /**************** End of %include directives **********************************/ | 
| 234 | /* These constants specify the various numeric values for terminal symbols. | 
| 235 | ***************** Begin token definitions *************************************/ | 
| 236 | #ifndef TK_SEMI | 
| 237 | #define TK_SEMI                            1 | 
| 238 | #define TK_EXPLAIN                         2 | 
| 239 | #define TK_QUERY                           3 | 
| 240 | #define TK_PLAN                            4 | 
| 241 | #define TK_BEGIN                           5 | 
| 242 | #define TK_TRANSACTION                     6 | 
| 243 | #define TK_DEFERRED                        7 | 
| 244 | #define TK_IMMEDIATE                       8 | 
| 245 | #define TK_EXCLUSIVE                       9 | 
| 246 | #define TK_COMMIT                         10 | 
| 247 | #define TK_END                            11 | 
| 248 | #define TK_ROLLBACK                       12 | 
| 249 | #define TK_SAVEPOINT                      13 | 
| 250 | #define TK_RELEASE                        14 | 
| 251 | #define TK_TO                             15 | 
| 252 | #define TK_TABLE                          16 | 
| 253 | #define TK_CREATE                         17 | 
| 254 | #define TK_IF                             18 | 
| 255 | #define TK_NOT                            19 | 
| 256 | #define TK_EXISTS                         20 | 
| 257 | #define TK_TEMP                           21 | 
| 258 | #define TK_LP                             22 | 
| 259 | #define TK_RP                             23 | 
| 260 | #define TK_AS                             24 | 
| 261 | #define TK_COMMA                          25 | 
| 262 | #define TK_WITHOUT                        26 | 
| 263 | #define TK_ABORT                          27 | 
| 264 | #define TK_ACTION                         28 | 
| 265 | #define TK_AFTER                          29 | 
| 266 | #define TK_ANALYZE                        30 | 
| 267 | #define TK_ASC                            31 | 
| 268 | #define TK_ATTACH                         32 | 
| 269 | #define TK_BEFORE                         33 | 
| 270 | #define TK_BY                             34 | 
| 271 | #define TK_CASCADE                        35 | 
| 272 | #define TK_CAST                           36 | 
| 273 | #define TK_CONFLICT                       37 | 
| 274 | #define TK_DATABASE                       38 | 
| 275 | #define TK_DESC                           39 | 
| 276 | #define TK_DETACH                         40 | 
| 277 | #define TK_EACH                           41 | 
| 278 | #define TK_FAIL                           42 | 
| 279 | #define TK_OR                             43 | 
| 280 | #define TK_AND                            44 | 
| 281 | #define TK_IS                             45 | 
| 282 | #define TK_MATCH                          46 | 
| 283 | #define TK_LIKE_KW                        47 | 
| 284 | #define TK_BETWEEN                        48 | 
| 285 | #define TK_IN                             49 | 
| 286 | #define TK_ISNULL                         50 | 
| 287 | #define TK_NOTNULL                        51 | 
| 288 | #define TK_NE                             52 | 
| 289 | #define TK_EQ                             53 | 
| 290 | #define TK_GT                             54 | 
| 291 | #define TK_LE                             55 | 
| 292 | #define TK_LT                             56 | 
| 293 | #define TK_GE                             57 | 
| 294 | #define TK_ESCAPE                         58 | 
| 295 | #define TK_ID                             59 | 
| 296 | #define TK_COLUMNKW                       60 | 
| 297 | #define TK_DO                             61 | 
| 298 | #define TK_FOR                            62 | 
| 299 | #define TK_IGNORE                         63 | 
| 300 | #define TK_INITIALLY                      64 | 
| 301 | #define TK_INSTEAD                        65 | 
| 302 | #define TK_NO                             66 | 
| 303 | #define TK_KEY                            67 | 
| 304 | #define TK_OF                             68 | 
| 305 | #define TK_OFFSET                         69 | 
| 306 | #define TK_PRAGMA                         70 | 
| 307 | #define TK_RAISE                          71 | 
| 308 | #define TK_RECURSIVE                      72 | 
| 309 | #define TK_REPLACE                        73 | 
| 310 | #define TK_RESTRICT                       74 | 
| 311 | #define TK_ROW                            75 | 
| 312 | #define TK_ROWS                           76 | 
| 313 | #define TK_TRIGGER                        77 | 
| 314 | #define TK_VACUUM                         78 | 
| 315 | #define TK_VIEW                           79 | 
| 316 | #define TK_VIRTUAL                        80 | 
| 317 | #define TK_WITH                           81 | 
| 318 | #define TK_NULLS                          82 | 
| 319 | #define TK_FIRST                          83 | 
| 320 | #define TK_LAST                           84 | 
| 321 | #define TK_CURRENT                        85 | 
| 322 | #define TK_FOLLOWING                      86 | 
| 323 | #define TK_PARTITION                      87 | 
| 324 | #define TK_PRECEDING                      88 | 
| 325 | #define TK_RANGE                          89 | 
| 326 | #define TK_UNBOUNDED                      90 | 
| 327 | #define TK_EXCLUDE                        91 | 
| 328 | #define TK_GROUPS                         92 | 
| 329 | #define TK_OTHERS                         93 | 
| 330 | #define TK_TIES                           94 | 
| 331 | #define TK_GENERATED                      95 | 
| 332 | #define TK_ALWAYS                         96 | 
| 333 | #define TK_MATERIALIZED                   97 | 
| 334 | #define TK_REINDEX                        98 | 
| 335 | #define TK_RENAME                         99 | 
| 336 | #define TK_CTIME_KW                       100 | 
| 337 | #define TK_ANY                            101 | 
| 338 | #define TK_BITAND                         102 | 
| 339 | #define TK_BITOR                          103 | 
| 340 | #define TK_LSHIFT                         104 | 
| 341 | #define TK_RSHIFT                         105 | 
| 342 | #define TK_PLUS                           106 | 
| 343 | #define TK_MINUS                          107 | 
| 344 | #define TK_STAR                           108 | 
| 345 | #define TK_SLASH                          109 | 
| 346 | #define TK_REM                            110 | 
| 347 | #define TK_CONCAT                         111 | 
| 348 | #define TK_PTR                            112 | 
| 349 | #define TK_COLLATE                        113 | 
| 350 | #define TK_BITNOT                         114 | 
| 351 | #define TK_ON                             115 | 
| 352 | #define TK_INDEXED                        116 | 
| 353 | #define TK_STRING                         117 | 
| 354 | #define TK_JOIN_KW                        118 | 
| 355 | #define TK_CONSTRAINT                     119 | 
| 356 | #define TK_DEFAULT                        120 | 
| 357 | #define TK_NULL                           121 | 
| 358 | #define TK_PRIMARY                        122 | 
| 359 | #define TK_UNIQUE                         123 | 
| 360 | #define TK_CHECK                          124 | 
| 361 | #define TK_REFERENCES                     125 | 
| 362 | #define TK_AUTOINCR                       126 | 
| 363 | #define TK_INSERT                         127 | 
| 364 | #define TK_DELETE                         128 | 
| 365 | #define TK_UPDATE                         129 | 
| 366 | #define TK_SET                            130 | 
| 367 | #define TK_DEFERRABLE                     131 | 
| 368 | #define TK_FOREIGN                        132 | 
| 369 | #define TK_DROP                           133 | 
| 370 | #define TK_UNION                          134 | 
| 371 | #define TK_ALL                            135 | 
| 372 | #define TK_EXCEPT                         136 | 
| 373 | #define TK_INTERSECT                      137 | 
| 374 | #define TK_SELECT                         138 | 
| 375 | #define TK_VALUES                         139 | 
| 376 | #define TK_DISTINCT                       140 | 
| 377 | #define TK_DOT                            141 | 
| 378 | #define TK_FROM                           142 | 
| 379 | #define TK_JOIN                           143 | 
| 380 | #define TK_USING                          144 | 
| 381 | #define TK_ORDER                          145 | 
| 382 | #define TK_GROUP                          146 | 
| 383 | #define TK_HAVING                         147 | 
| 384 | #define TK_LIMIT                          148 | 
| 385 | #define TK_WHERE                          149 | 
| 386 | #define TK_RETURNING                      150 | 
| 387 | #define TK_INTO                           151 | 
| 388 | #define TK_NOTHING                        152 | 
| 389 | #define TK_FLOAT                          153 | 
| 390 | #define TK_BLOB                           154 | 
| 391 | #define TK_INTEGER                        155 | 
| 392 | #define TK_VARIABLE                       156 | 
| 393 | #define TK_CASE                           157 | 
| 394 | #define TK_WHEN                           158 | 
| 395 | #define TK_THEN                           159 | 
| 396 | #define TK_ELSE                           160 | 
| 397 | #define TK_INDEX                          161 | 
| 398 | #define TK_ALTER                          162 | 
| 399 | #define TK_ADD                            163 | 
| 400 | #define TK_WINDOW                         164 | 
| 401 | #define TK_OVER                           165 | 
| 402 | #define TK_FILTER                         166 | 
| 403 | #define TK_COLUMN                         167 | 
| 404 | #define TK_AGG_FUNCTION                   168 | 
| 405 | #define TK_AGG_COLUMN                     169 | 
| 406 | #define TK_TRUEFALSE                      170 | 
| 407 | #define TK_ISNOT                          171 | 
| 408 | #define TK_FUNCTION                       172 | 
| 409 | #define TK_UMINUS                         173 | 
| 410 | #define TK_UPLUS                          174 | 
| 411 | #define TK_TRUTH                          175 | 
| 412 | #define TK_REGISTER                       176 | 
| 413 | #define TK_VECTOR                         177 | 
| 414 | #define TK_SELECT_COLUMN                  178 | 
| 415 | #define TK_IF_NULL_ROW                    179 | 
| 416 | #define TK_ASTERISK                       180 | 
| 417 | #define TK_SPAN                           181 | 
| 418 | #define TK_ERROR                          182 | 
| 419 | #define TK_SPACE                          183 | 
| 420 | #define TK_ILLEGAL                        184 | 
| 421 | #endif | 
| 422 | /**************** End token definitions ***************************************/ | 
| 423 |  | 
| 424 | /* The next sections is a series of control #defines. | 
| 425 | ** various aspects of the generated parser. | 
| 426 | **    YYCODETYPE         is the data type used to store the integer codes | 
| 427 | **                       that represent terminal and non-terminal symbols. | 
| 428 | **                       "unsigned char" is used if there are fewer than | 
| 429 | **                       256 symbols.  Larger types otherwise. | 
| 430 | **    YYNOCODE           is a number of type YYCODETYPE that is not used for | 
| 431 | **                       any terminal or nonterminal symbol. | 
| 432 | **    YYFALLBACK         If defined, this indicates that one or more tokens | 
| 433 | **                       (also known as: "terminal symbols") have fall-back | 
| 434 | **                       values which should be used if the original symbol | 
| 435 | **                       would not parse.  This permits keywords to sometimes | 
| 436 | **                       be used as identifiers, for example. | 
| 437 | **    YYACTIONTYPE       is the data type used for "action codes" - numbers | 
| 438 | **                       that indicate what to do in response to the next | 
| 439 | **                       token. | 
| 440 | **    sqlite3ParserTOKENTYPE     is the data type used for minor type for terminal | 
| 441 | **                       symbols.  Background: A "minor type" is a semantic | 
| 442 | **                       value associated with a terminal or non-terminal | 
| 443 | **                       symbols.  For example, for an "ID" terminal symbol, | 
| 444 | **                       the minor type might be the name of the identifier. | 
| 445 | **                       Each non-terminal can have a different minor type. | 
| 446 | **                       Terminal symbols all have the same minor type, though. | 
| 447 | **                       This macros defines the minor type for terminal  | 
| 448 | **                       symbols. | 
| 449 | **    YYMINORTYPE        is the data type used for all minor types. | 
| 450 | **                       This is typically a union of many types, one of | 
| 451 | **                       which is sqlite3ParserTOKENTYPE.  The entry in the union | 
| 452 | **                       for terminal symbols is called "yy0". | 
| 453 | **    YYSTACKDEPTH       is the maximum depth of the parser's stack.  If | 
| 454 | **                       zero the stack is dynamically sized using realloc() | 
| 455 | **    sqlite3ParserARG_SDECL     A static variable declaration for the %extra_argument | 
| 456 | **    sqlite3ParserARG_PDECL     A parameter declaration for the %extra_argument | 
| 457 | **    sqlite3ParserARG_PARAM     Code to pass %extra_argument as a subroutine parameter | 
| 458 | **    sqlite3ParserARG_STORE     Code to store %extra_argument into yypParser | 
| 459 | **    sqlite3ParserARG_FETCH     Code to extract %extra_argument from yypParser | 
| 460 | **    sqlite3ParserCTX_*         As sqlite3ParserARG_ except for %extra_context | 
| 461 | **    YYERRORSYMBOL      is the code number of the error symbol.  If not | 
| 462 | **                       defined, then do no error processing. | 
| 463 | **    YYNSTATE           the combined number of states. | 
| 464 | **    YYNRULE            the number of rules in the grammar | 
| 465 | **    YYNTOKEN           Number of terminal symbols | 
| 466 | **    YY_MAX_SHIFT       Maximum value for shift actions | 
| 467 | **    YY_MIN_SHIFTREDUCE Minimum value for shift-reduce actions | 
| 468 | **    YY_MAX_SHIFTREDUCE Maximum value for shift-reduce actions | 
| 469 | **    YY_ERROR_ACTION    The yy_action[] code for syntax error | 
| 470 | **    YY_ACCEPT_ACTION   The yy_action[] code for accept | 
| 471 | **    YY_NO_ACTION       The yy_action[] code for no-op | 
| 472 | **    YY_MIN_REDUCE      Minimum value for reduce actions | 
| 473 | **    YY_MAX_REDUCE      Maximum value for reduce actions | 
| 474 | */ | 
| 475 | #ifndef INTERFACE | 
| 476 | # define INTERFACE 1 | 
| 477 | #endif | 
| 478 | /************* Begin control #defines *****************************************/ | 
| 479 | #define YYCODETYPE unsigned short int | 
| 480 | #define YYNOCODE 319 | 
| 481 | #define YYACTIONTYPE unsigned short int | 
| 482 | #define YYWILDCARD 101 | 
| 483 | #define sqlite3ParserTOKENTYPE Token | 
| 484 | typedef union { | 
| 485 |   int yyinit; | 
| 486 |   sqlite3ParserTOKENTYPE yy0; | 
| 487 |   TriggerStep* yy33; | 
| 488 |   Window* yy41; | 
| 489 |   Select* yy47; | 
| 490 |   SrcList* yy131; | 
| 491 |   struct TrigEvent yy180; | 
| 492 |   struct {int value; int mask;} yy231; | 
| 493 |   IdList* yy254; | 
| 494 |   u32 yy285; | 
| 495 |   ExprList* yy322; | 
| 496 |   Cte* yy385; | 
| 497 |   int yy394; | 
| 498 |   Upsert* yy444; | 
| 499 |   u8 yy516; | 
| 500 |   With* yy521; | 
| 501 |   const char* yy522; | 
| 502 |   Expr* yy528; | 
| 503 |   OnOrUsing yy561; | 
| 504 |   struct FrameBound yy595; | 
| 505 | } YYMINORTYPE; | 
| 506 | #ifndef YYSTACKDEPTH | 
| 507 | #define YYSTACKDEPTH 100 | 
| 508 | #endif | 
| 509 | #define sqlite3ParserARG_SDECL | 
| 510 | #define sqlite3ParserARG_PDECL | 
| 511 | #define sqlite3ParserARG_PARAM | 
| 512 | #define sqlite3ParserARG_FETCH | 
| 513 | #define sqlite3ParserARG_STORE | 
| 514 | #define sqlite3ParserCTX_SDECL Parse *pParse; | 
| 515 | #define sqlite3ParserCTX_PDECL ,Parse *pParse | 
| 516 | #define sqlite3ParserCTX_PARAM ,pParse | 
| 517 | #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse; | 
| 518 | #define sqlite3ParserCTX_STORE yypParser->pParse=pParse; | 
| 519 | #define YYFALLBACK 1 | 
| 520 | #define YYNSTATE             576 | 
| 521 | #define YYNRULE              405 | 
| 522 | #define YYNRULE_WITH_ACTION  342 | 
| 523 | #define YYNTOKEN             185 | 
| 524 | #define YY_MAX_SHIFT         575 | 
| 525 | #define YY_MIN_SHIFTREDUCE   835 | 
| 526 | #define YY_MAX_SHIFTREDUCE   1239 | 
| 527 | #define YY_ERROR_ACTION      1240 | 
| 528 | #define YY_ACCEPT_ACTION     1241 | 
| 529 | #define YY_NO_ACTION         1242 | 
| 530 | #define YY_MIN_REDUCE        1243 | 
| 531 | #define YY_MAX_REDUCE        1647 | 
| 532 | /************* End control #defines *******************************************/ | 
| 533 | #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0]))) | 
| 534 |  | 
| 535 | /* Define the yytestcase() macro to be a no-op if is not already defined | 
| 536 | ** otherwise. | 
| 537 | ** | 
| 538 | ** Applications can choose to define yytestcase() in the %include section | 
| 539 | ** to a macro that can assist in verifying code coverage.  For production | 
| 540 | ** code the yytestcase() macro should be turned off.  But it is useful | 
| 541 | ** for testing. | 
| 542 | */ | 
| 543 | #ifndef yytestcase | 
| 544 | # define yytestcase(X) | 
| 545 | #endif | 
| 546 |  | 
| 547 |  | 
| 548 | /* Next are the tables used to determine what action to take based on the | 
| 549 | ** current state and lookahead token.  These tables are used to implement | 
| 550 | ** functions that take a state number and lookahead value and return an | 
| 551 | ** action integer.   | 
| 552 | ** | 
| 553 | ** Suppose the action integer is N.  Then the action is determined as | 
| 554 | ** follows | 
| 555 | ** | 
| 556 | **   0 <= N <= YY_MAX_SHIFT             Shift N.  That is, push the lookahead | 
| 557 | **                                      token onto the stack and goto state N. | 
| 558 | ** | 
| 559 | **   N between YY_MIN_SHIFTREDUCE       Shift to an arbitrary state then | 
| 560 | **     and YY_MAX_SHIFTREDUCE           reduce by rule N-YY_MIN_SHIFTREDUCE. | 
| 561 | ** | 
| 562 | **   N == YY_ERROR_ACTION               A syntax error has occurred. | 
| 563 | ** | 
| 564 | **   N == YY_ACCEPT_ACTION              The parser accepts its input. | 
| 565 | ** | 
| 566 | **   N == YY_NO_ACTION                  No such action.  Denotes unused | 
| 567 | **                                      slots in the yy_action[] table. | 
| 568 | ** | 
| 569 | **   N between YY_MIN_REDUCE            Reduce by rule N-YY_MIN_REDUCE | 
| 570 | **     and YY_MAX_REDUCE | 
| 571 | ** | 
| 572 | ** The action table is constructed as a single large table named yy_action[]. | 
| 573 | ** Given state S and lookahead X, the action is computed as either: | 
| 574 | ** | 
| 575 | **    (A)   N = yy_action[ yy_shift_ofst[S] + X ] | 
| 576 | **    (B)   N = yy_default[S] | 
| 577 | ** | 
| 578 | ** The (A) formula is preferred.  The B formula is used instead if | 
| 579 | ** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X. | 
| 580 | ** | 
| 581 | ** The formulas above are for computing the action when the lookahead is | 
| 582 | ** a terminal symbol.  If the lookahead is a non-terminal (as occurs after | 
| 583 | ** a reduce action) then the yy_reduce_ofst[] array is used in place of | 
| 584 | ** the yy_shift_ofst[] array. | 
| 585 | ** | 
| 586 | ** The following are the tables generated in this section: | 
| 587 | ** | 
| 588 | **  yy_action[]        A single table containing all actions. | 
| 589 | **  yy_lookahead[]     A table containing the lookahead for each entry in | 
| 590 | **                     yy_action.  Used to detect hash collisions. | 
| 591 | **  yy_shift_ofst[]    For each state, the offset into yy_action for | 
| 592 | **                     shifting terminals. | 
| 593 | **  yy_reduce_ofst[]   For each state, the offset into yy_action for | 
| 594 | **                     shifting non-terminals after a reduce. | 
| 595 | **  yy_default[]       Default action for each state. | 
| 596 | ** | 
| 597 | *********** Begin parsing tables **********************************************/ | 
| 598 | #define YY_ACTTAB_COUNT (2098) | 
| 599 | static const YYACTIONTYPE yy_action[] = { | 
| 600 |  /*     0 */   568,  208,  568,  118,  115,  229,  568,  118,  115,  229, | 
| 601 |  /*    10 */   568, 1314,  377, 1293,  408,  562,  562,  562,  568,  409, | 
| 602 |  /*    20 */   378, 1314, 1276,   41,   41,   41,   41,  208, 1526,   71, | 
| 603 |  /*    30 */    71,  971,  419,   41,   41,  491,  303,  279,  303,  972, | 
| 604 |  /*    40 */   397,   71,   71,  125,  126,   80, 1217, 1217, 1050, 1053, | 
| 605 |  /*    50 */  1040, 1040,  123,  123,  124,  124,  124,  124,  476,  409, | 
| 606 |  /*    60 */  1241,    1,    1,  575,    2, 1245,  550,  118,  115,  229, | 
| 607 |  /*    70 */   317,  480,  146,  480,  524,  118,  115,  229,  529, 1327, | 
| 608 |  /*    80 */   417,  523,  142,  125,  126,   80, 1217, 1217, 1050, 1053, | 
| 609 |  /*    90 */  1040, 1040,  123,  123,  124,  124,  124,  124,  118,  115, | 
| 610 |  /*   100 */   229,  327,  122,  122,  122,  122,  121,  121,  120,  120, | 
| 611 |  /*   110 */   120,  119,  116,  444,  284,  284,  284,  284,  442,  442, | 
| 612 |  /*   120 */   442, 1567,  376, 1569, 1192,  375, 1163,  565, 1163,  565, | 
| 613 |  /*   130 */   409, 1567,  537,  259,  226,  444,  101,  145,  449,  316, | 
| 614 |  /*   140 */   559,  240,  122,  122,  122,  122,  121,  121,  120,  120, | 
| 615 |  /*   150 */   120,  119,  116,  444,  125,  126,   80, 1217, 1217, 1050, | 
| 616 |  /*   160 */  1053, 1040, 1040,  123,  123,  124,  124,  124,  124,  142, | 
| 617 |  /*   170 */   294, 1192,  339,  448,  120,  120,  120,  119,  116,  444, | 
| 618 |  /*   180 */   127, 1192, 1193, 1194,  148,  441,  440,  568,  119,  116, | 
| 619 |  /*   190 */   444,  124,  124,  124,  124,  117,  122,  122,  122,  122, | 
| 620 |  /*   200 */   121,  121,  120,  120,  120,  119,  116,  444,  454,  113, | 
| 621 |  /*   210 */    13,   13,  546,  122,  122,  122,  122,  121,  121,  120, | 
| 622 |  /*   220 */   120,  120,  119,  116,  444,  422,  316,  559, 1192, 1193, | 
| 623 |  /*   230 */  1194,  149, 1224,  409, 1224,  124,  124,  124,  124,  122, | 
| 624 |  /*   240 */   122,  122,  122,  121,  121,  120,  120,  120,  119,  116, | 
| 625 |  /*   250 */   444,  465,  342, 1037, 1037, 1051, 1054,  125,  126,   80, | 
| 626 |  /*   260 */  1217, 1217, 1050, 1053, 1040, 1040,  123,  123,  124,  124, | 
| 627 |  /*   270 */   124,  124, 1279,  522,  222, 1192,  568,  409,  224,  514, | 
| 628 |  /*   280 */   175,   82,   83,  122,  122,  122,  122,  121,  121,  120, | 
| 629 |  /*   290 */   120,  120,  119,  116,  444, 1007,   16,   16, 1192,  133, | 
| 630 |  /*   300 */   133,  125,  126,   80, 1217, 1217, 1050, 1053, 1040, 1040, | 
| 631 |  /*   310 */   123,  123,  124,  124,  124,  124,  122,  122,  122,  122, | 
| 632 |  /*   320 */   121,  121,  120,  120,  120,  119,  116,  444, 1041,  546, | 
| 633 |  /*   330 */  1192,  373, 1192, 1193, 1194,  252, 1434,  399,  504,  501, | 
| 634 |  /*   340 */   500,  111,  560,  566,    4,  926,  926,  433,  499,  340, | 
| 635 |  /*   350 */   460,  328,  360,  394, 1237, 1192, 1193, 1194,  563,  568, | 
| 636 |  /*   360 */   122,  122,  122,  122,  121,  121,  120,  120,  120,  119, | 
| 637 |  /*   370 */   116,  444,  284,  284,  369, 1580, 1607,  441,  440,  154, | 
| 638 |  /*   380 */   409,  445,   71,   71, 1286,  565, 1221, 1192, 1193, 1194, | 
| 639 |  /*   390 */    85, 1223,  271,  557,  543,  515, 1561,  568,   98, 1222, | 
| 640 |  /*   400 */     6, 1278,  472,  142,  125,  126,   80, 1217, 1217, 1050, | 
| 641 |  /*   410 */  1053, 1040, 1040,  123,  123,  124,  124,  124,  124,  550, | 
| 642 |  /*   420 */    13,   13, 1027,  507, 1224, 1192, 1224,  549,  109,  109, | 
| 643 |  /*   430 */   222,  568, 1238,  175,  568,  427,  110,  197,  445,  570, | 
| 644 |  /*   440 */   569,  430, 1552, 1017,  325,  551, 1192,  270,  287,  368, | 
| 645 |  /*   450 */   510,  363,  509,  257,   71,   71,  543,   71,   71,  359, | 
| 646 |  /*   460 */   316,  559, 1613,  122,  122,  122,  122,  121,  121,  120, | 
| 647 |  /*   470 */   120,  120,  119,  116,  444, 1017, 1017, 1019, 1020,   27, | 
| 648 |  /*   480 */   284,  284, 1192, 1193, 1194, 1158,  568, 1612,  409,  901, | 
| 649 |  /*   490 */   190,  550,  356,  565,  550,  937,  533,  517, 1158,  516, | 
| 650 |  /*   500 */   413, 1158,  552, 1192, 1193, 1194,  568,  544, 1554,   51, | 
| 651 |  /*   510 */    51,  214,  125,  126,   80, 1217, 1217, 1050, 1053, 1040, | 
| 652 |  /*   520 */  1040,  123,  123,  124,  124,  124,  124, 1192,  474,  135, | 
| 653 |  /*   530 */   135,  409,  284,  284, 1490,  505,  121,  121,  120,  120, | 
| 654 |  /*   540 */   120,  119,  116,  444, 1007,  565,  518,  217,  541, 1561, | 
| 655 |  /*   550 */   316,  559,  142,    6,  532,  125,  126,   80, 1217, 1217, | 
| 656 |  /*   560 */  1050, 1053, 1040, 1040,  123,  123,  124,  124,  124,  124, | 
| 657 |  /*   570 */  1555,  122,  122,  122,  122,  121,  121,  120,  120,  120, | 
| 658 |  /*   580 */   119,  116,  444,  485, 1192, 1193, 1194,  482,  281, 1267, | 
| 659 |  /*   590 */   957,  252, 1192,  373,  504,  501,  500, 1192,  340,  571, | 
| 660 |  /*   600 */  1192,  571,  409,  292,  499,  957,  876,  191,  480,  316, | 
| 661 |  /*   610 */   559,  384,  290,  380,  122,  122,  122,  122,  121,  121, | 
| 662 |  /*   620 */   120,  120,  120,  119,  116,  444,  125,  126,   80, 1217, | 
| 663 |  /*   630 */  1217, 1050, 1053, 1040, 1040,  123,  123,  124,  124,  124, | 
| 664 |  /*   640 */   124,  409,  394, 1136, 1192,  869,  100,  284,  284, 1192, | 
| 665 |  /*   650 */  1193, 1194,  373, 1093, 1192, 1193, 1194, 1192, 1193, 1194, | 
| 666 |  /*   660 */   565,  455,   32,  373,  233,  125,  126,   80, 1217, 1217, | 
| 667 |  /*   670 */  1050, 1053, 1040, 1040,  123,  123,  124,  124,  124,  124, | 
| 668 |  /*   680 */  1433,  959,  568,  228,  958,  122,  122,  122,  122,  121, | 
| 669 |  /*   690 */   121,  120,  120,  120,  119,  116,  444, 1158,  228, 1192, | 
| 670 |  /*   700 */   157, 1192, 1193, 1194, 1553,   13,   13,  301,  957, 1232, | 
| 671 |  /*   710 */  1158,  153,  409, 1158,  373, 1583, 1176,    5,  369, 1580, | 
| 672 |  /*   720 */   429, 1238,    3,  957,  122,  122,  122,  122,  121,  121, | 
| 673 |  /*   730 */   120,  120,  120,  119,  116,  444,  125,  126,   80, 1217, | 
| 674 |  /*   740 */  1217, 1050, 1053, 1040, 1040,  123,  123,  124,  124,  124, | 
| 675 |  /*   750 */   124,  409,  208,  567, 1192, 1028, 1192, 1193, 1194, 1192, | 
| 676 |  /*   760 */   388,  852,  155, 1552,  286,  402, 1098, 1098,  488,  568, | 
| 677 |  /*   770 */   465,  342, 1319, 1319, 1552,  125,  126,   80, 1217, 1217, | 
| 678 |  /*   780 */  1050, 1053, 1040, 1040,  123,  123,  124,  124,  124,  124, | 
| 679 |  /*   790 */   129,  568,   13,   13,  374,  122,  122,  122,  122,  121, | 
| 680 |  /*   800 */   121,  120,  120,  120,  119,  116,  444,  302,  568,  453, | 
| 681 |  /*   810 */   528, 1192, 1193, 1194,   13,   13, 1192, 1193, 1194, 1297, | 
| 682 |  /*   820 */   463, 1267,  409, 1317, 1317, 1552, 1012,  453,  452,  200, | 
| 683 |  /*   830 */   299,   71,   71, 1265,  122,  122,  122,  122,  121,  121, | 
| 684 |  /*   840 */   120,  120,  120,  119,  116,  444,  125,  126,   80, 1217, | 
| 685 |  /*   850 */  1217, 1050, 1053, 1040, 1040,  123,  123,  124,  124,  124, | 
| 686 |  /*   860 */   124,  409,  227, 1073, 1158,  284,  284,  419,  312,  278, | 
| 687 |  /*   870 */   278,  285,  285, 1419,  406,  405,  382, 1158,  565,  568, | 
| 688 |  /*   880 */  1158, 1196,  565, 1600,  565,  125,  126,   80, 1217, 1217, | 
| 689 |  /*   890 */  1050, 1053, 1040, 1040,  123,  123,  124,  124,  124,  124, | 
| 690 |  /*   900 */   453, 1482,   13,   13, 1536,  122,  122,  122,  122,  121, | 
| 691 |  /*   910 */   121,  120,  120,  120,  119,  116,  444,  201,  568,  354, | 
| 692 |  /*   920 */  1586,  575,    2, 1245,  840,  841,  842, 1562,  317, 1212, | 
| 693 |  /*   930 */   146,    6,  409,  255,  254,  253,  206, 1327,    9, 1196, | 
| 694 |  /*   940 */   262,   71,   71,  424,  122,  122,  122,  122,  121,  121, | 
| 695 |  /*   950 */   120,  120,  120,  119,  116,  444,  125,  126,   80, 1217, | 
| 696 |  /*   960 */  1217, 1050, 1053, 1040, 1040,  123,  123,  124,  124,  124, | 
| 697 |  /*   970 */   124,  568,  284,  284,  568, 1213,  409,  574,  313, 1245, | 
| 698 |  /*   980 */   349, 1296,  352,  419,  317,  565,  146,  491,  525, 1643, | 
| 699 |  /*   990 */   395,  371,  491, 1327,   70,   70, 1295,   71,   71,  240, | 
| 700 |  /*  1000 */  1325,  104,   80, 1217, 1217, 1050, 1053, 1040, 1040,  123, | 
| 701 |  /*  1010 */   123,  124,  124,  124,  124,  122,  122,  122,  122,  121, | 
| 702 |  /*  1020 */   121,  120,  120,  120,  119,  116,  444, 1114,  284,  284, | 
| 703 |  /*  1030 */   428,  448, 1525, 1213,  439,  284,  284, 1489, 1352,  311, | 
| 704 |  /*  1040 */   474,  565, 1115,  971,  491,  491,  217, 1263,  565, 1538, | 
| 705 |  /*  1050 */   568,  972,  207,  568, 1027,  240,  383, 1116,  519,  122, | 
| 706 |  /*  1060 */   122,  122,  122,  121,  121,  120,  120,  120,  119,  116, | 
| 707 |  /*  1070 */   444, 1018,  107,   71,   71, 1017,   13,   13,  912,  568, | 
| 708 |  /*  1080 */  1495,  568,  284,  284,   97,  526,  491,  448,  913, 1326, | 
| 709 |  /*  1090 */  1322,  545,  409,  284,  284,  565,  151,  209, 1495, 1497, | 
| 710 |  /*  1100 */   262,  450,   55,   55,   56,   56,  565, 1017, 1017, 1019, | 
| 711 |  /*  1110 */   443,  332,  409,  527,   12,  295,  125,  126,   80, 1217, | 
| 712 |  /*  1120 */  1217, 1050, 1053, 1040, 1040,  123,  123,  124,  124,  124, | 
| 713 |  /*  1130 */   124,  347,  409,  864, 1534, 1213,  125,  126,   80, 1217, | 
| 714 |  /*  1140 */  1217, 1050, 1053, 1040, 1040,  123,  123,  124,  124,  124, | 
| 715 |  /*  1150 */   124, 1137, 1641,  474, 1641,  371,  125,  114,   80, 1217, | 
| 716 |  /*  1160 */  1217, 1050, 1053, 1040, 1040,  123,  123,  124,  124,  124, | 
| 717 |  /*  1170 */   124, 1495,  329,  474,  331,  122,  122,  122,  122,  121, | 
| 718 |  /*  1180 */   121,  120,  120,  120,  119,  116,  444,  203, 1419,  568, | 
| 719 |  /*  1190 */  1294,  864,  464, 1213,  436,  122,  122,  122,  122,  121, | 
| 720 |  /*  1200 */   121,  120,  120,  120,  119,  116,  444,  553, 1137, 1642, | 
| 721 |  /*  1210 */   539, 1642,   15,   15,  892,  122,  122,  122,  122,  121, | 
| 722 |  /*  1220 */   121,  120,  120,  120,  119,  116,  444,  568,  298,  538, | 
| 723 |  /*  1230 */  1135, 1419, 1559, 1560, 1331,  409,    6,    6, 1169, 1268, | 
| 724 |  /*  1240 */   415,  320,  284,  284, 1419,  508,  565,  525,  300,  457, | 
| 725 |  /*  1250 */    43,   43,  568,  893,   12,  565,  330,  478,  425,  407, | 
| 726 |  /*  1260 */   126,   80, 1217, 1217, 1050, 1053, 1040, 1040,  123,  123, | 
| 727 |  /*  1270 */   124,  124,  124,  124,  568,   57,   57,  288, 1192, 1419, | 
| 728 |  /*  1280 */   496,  458,  392,  392,  391,  273,  389, 1135, 1558,  849, | 
| 729 |  /*  1290 */  1169,  407,    6,  568,  321, 1158,  470,   44,   44, 1557, | 
| 730 |  /*  1300 */  1114,  426,  234,    6,  323,  256,  540,  256, 1158,  431, | 
| 731 |  /*  1310 */   568, 1158,  322,   17,  487, 1115,   58,   58,  122,  122, | 
| 732 |  /*  1320 */   122,  122,  121,  121,  120,  120,  120,  119,  116,  444, | 
| 733 |  /*  1330 */  1116,  216,  481,   59,   59, 1192, 1193, 1194,  111,  560, | 
| 734 |  /*  1340 */   324,    4,  236,  456,  526,  568,  237,  456,  568,  437, | 
| 735 |  /*  1350 */   168,  556,  420,  141,  479,  563,  568,  293,  568, 1095, | 
| 736 |  /*  1360 */   568,  293,  568, 1095,  531,  568,  872,    8,   60,   60, | 
| 737 |  /*  1370 */   235,   61,   61,  568,  414,  568,  414,  568,  445,   62, | 
| 738 |  /*  1380 */    62,   45,   45,   46,   46,   47,   47,  199,   49,   49, | 
| 739 |  /*  1390 */   557,  568,  359,  568,  100,  486,   50,   50,   63,   63, | 
| 740 |  /*  1400 */    64,   64,  561,  415,  535,  410,  568, 1027,  568,  534, | 
| 741 |  /*  1410 */   316,  559,  316,  559,   65,   65,   14,   14,  568, 1027, | 
| 742 |  /*  1420 */   568,  512,  932,  872, 1018,  109,  109,  931, 1017,   66, | 
| 743 |  /*  1430 */    66,  131,  131,  110,  451,  445,  570,  569,  416,  177, | 
| 744 |  /*  1440 */  1017,  132,  132,   67,   67,  568,  467,  568,  932,  471, | 
| 745 |  /*  1450 */  1364,  283,  226,  931,  315, 1363,  407,  568,  459,  407, | 
| 746 |  /*  1460 */  1017, 1017, 1019,  239,  407,   86,  213, 1350,   52,   52, | 
| 747 |  /*  1470 */    68,   68, 1017, 1017, 1019, 1020,   27, 1585, 1180,  447, | 
| 748 |  /*  1480 */    69,   69,  288,   97,  108, 1541,  106,  392,  392,  391, | 
| 749 |  /*  1490 */   273,  389,  568,  879,  849,  883,  568,  111,  560,  466, | 
| 750 |  /*  1500 */     4,  568,  152,   30,   38,  568, 1132,  234,  396,  323, | 
| 751 |  /*  1510 */   111,  560,  527,    4,  563,   53,   53,  322,  568,  163, | 
| 752 |  /*  1520 */   163,  568,  337,  468,  164,  164,  333,  563,   76,   76, | 
| 753 |  /*  1530 */   568,  289, 1514,  568,   31, 1513,  568,  445,  338,  483, | 
| 754 |  /*  1540 */   100,   54,   54,  344,   72,   72,  296,  236, 1080,  557, | 
| 755 |  /*  1550 */   445,  879, 1360,  134,  134,  168,   73,   73,  141,  161, | 
| 756 |  /*  1560 */   161, 1574,  557,  535,  568,  319,  568,  348,  536, 1009, | 
| 757 |  /*  1570 */   473,  261,  261,  891,  890,  235,  535,  568, 1027,  568, | 
| 758 |  /*  1580 */   475,  534,  261,  367,  109,  109,  521,  136,  136,  130, | 
| 759 |  /*  1590 */   130, 1027,  110,  366,  445,  570,  569,  109,  109, 1017, | 
| 760 |  /*  1600 */   162,  162,  156,  156,  568,  110, 1080,  445,  570,  569, | 
| 761 |  /*  1610 */   410,  351, 1017,  568,  353,  316,  559,  568,  343,  568, | 
| 762 |  /*  1620 */   100,  497,  357,  258,  100,  898,  899,  140,  140,  355, | 
| 763 |  /*  1630 */  1310, 1017, 1017, 1019, 1020,   27,  139,  139,  362,  451, | 
| 764 |  /*  1640 */   137,  137,  138,  138, 1017, 1017, 1019, 1020,   27, 1180, | 
| 765 |  /*  1650 */   447,  568,  372,  288,  111,  560, 1021,    4,  392,  392, | 
| 766 |  /*  1660 */   391,  273,  389,  568, 1141,  849,  568, 1076,  568,  258, | 
| 767 |  /*  1670 */   492,  563,  568,  211,   75,   75,  555,  962,  234,  261, | 
| 768 |  /*  1680 */   323,  111,  560,  929,    4,  113,   77,   77,  322,   74, | 
| 769 |  /*  1690 */    74,   42,   42, 1373,  445,   48,   48, 1418,  563,  974, | 
| 770 |  /*  1700 */   975, 1092, 1091, 1092, 1091,  862,  557,  150,  930, 1346, | 
| 771 |  /*  1710 */   113, 1358,  554, 1424, 1021, 1275, 1266, 1254,  236, 1253, | 
| 772 |  /*  1720 */  1255,  445, 1593, 1343,  308,  276,  168,  309,   11,  141, | 
| 773 |  /*  1730 */   393,  310,  232,  557, 1405, 1027,  335,  291, 1400,  219, | 
| 774 |  /*  1740 */   336,  109,  109,  936,  297, 1410,  235,  341,  477,  110, | 
| 775 |  /*  1750 */   502,  445,  570,  569, 1393, 1409, 1017,  400, 1293,  365, | 
| 776 |  /*  1760 */   223, 1486, 1027, 1485, 1355, 1356, 1354, 1353,  109,  109, | 
| 777 |  /*  1770 */   204, 1596, 1232,  558,  265,  218,  110,  205,  445,  570, | 
| 778 |  /*  1780 */   569,  410,  387, 1017, 1533,  179,  316,  559, 1017, 1017, | 
| 779 |  /*  1790 */  1019, 1020,   27,  230, 1531, 1229,   79,  560,   85,    4, | 
| 780 |  /*  1800 */   418,  215,  548,   81,   84,  188, 1406,  173,  181,  461, | 
| 781 |  /*  1810 */   451,   35,  462,  563,  183, 1017, 1017, 1019, 1020,   27, | 
| 782 |  /*  1820 */   184, 1491,  185,  186,  495,  242,   98,  398, 1412,   36, | 
| 783 |  /*  1830 */  1411,  484,   91,  469,  401, 1414,  445,  192, 1480,  246, | 
| 784 |  /*  1840 */  1502,  490,  346,  277,  248,  196,  493,  511,  557,  350, | 
| 785 |  /*  1850 */  1256,  249,  250,  403, 1313, 1312,  111,  560,  432,    4, | 
| 786 |  /*  1860 */  1311, 1304,   93, 1611,  883, 1610,  224,  404,  434,  520, | 
| 787 |  /*  1870 */   263,  435, 1579,  563, 1283, 1282,  364, 1027,  306, 1281, | 
| 788 |  /*  1880 */   264, 1609, 1565,  109,  109,  370, 1303,  307, 1564,  438, | 
| 789 |  /*  1890 */   128,  110, 1378,  445,  570,  569,  445,  546, 1017,   10, | 
| 790 |  /*  1900 */  1466,  105,  381, 1377,   34,  572,   99, 1336,  557,  314, | 
| 791 |  /*  1910 */  1186,  530,  272,  274,  379,  210, 1335,  547,  385,  386, | 
| 792 |  /*  1920 */   275,  573, 1251, 1246,  411,  412, 1518,  165,  178, 1519, | 
| 793 |  /*  1930 */  1017, 1017, 1019, 1020,   27, 1517, 1516, 1027,   78,  147, | 
| 794 |  /*  1940 */   166,  220,  221,  109,  109,  836,  304,  167,  446,  212, | 
| 795 |  /*  1950 */   318,  110,  231,  445,  570,  569,  144, 1090, 1017, 1088, | 
| 796 |  /*  1960 */   326,  180,  169, 1212,  182,  334,  238,  915,  241, 1104, | 
| 797 |  /*  1970 */   187,  170,  171,  421,   87,   88,  423,  189,   89,   90, | 
| 798 |  /*  1980 */   172, 1107,  243, 1103,  244,  158,   18,  245,  345,  247, | 
| 799 |  /*  1990 */  1017, 1017, 1019, 1020,   27,  261, 1096,  193, 1226,  489, | 
| 800 |  /*  2000 */   194,   37,  366,  851,  494,  251,  195,  506,   92,   19, | 
| 801 |  /*  2010 */   498,  358,   20,  503,  881,  361,   94,  894,  305,  159, | 
| 802 |  /*  2020 */   513,   39,   95, 1174,  160, 1056,  966, 1143,   96,  174, | 
| 803 |  /*  2030 */  1142,  225,  280,  282,  198,  960,  113, 1164, 1160,  260, | 
| 804 |  /*  2040 */    21,   22,   23, 1162, 1168, 1167, 1148,   24,   33,   25, | 
| 805 |  /*  2050 */   202,  542,   26,  100, 1071,  102, 1057,  103,    7, 1055, | 
| 806 |  /*  2060 */  1059, 1113, 1060, 1112,  266,  267,   28,   40,  390, 1022, | 
| 807 |  /*  2070 */   863,  112,   29,  564, 1182, 1181,  268,  176,  143,  925, | 
| 808 |  /*  2080 */  1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, | 
| 809 |  /*  2090 */  1242, 1242, 1242, 1242,  269, 1602, 1242, 1601, | 
| 810 | }; | 
| 811 | static const YYCODETYPE yy_lookahead[] = { | 
| 812 |  /*     0 */   193,  193,  193,  274,  275,  276,  193,  274,  275,  276, | 
| 813 |  /*    10 */   193,  223,  219,  225,  206,  210,  211,  212,  193,   19, | 
| 814 |  /*    20 */   219,  233,  216,  216,  217,  216,  217,  193,  295,  216, | 
| 815 |  /*    30 */   217,   31,  193,  216,  217,  193,  228,  213,  230,   39, | 
| 816 |  /*    40 */   206,  216,  217,   43,   44,   45,   46,   47,   48,   49, | 
| 817 |  /*    50 */    50,   51,   52,   53,   54,   55,   56,   57,  193,   19, | 
| 818 |  /*    60 */   185,  186,  187,  188,  189,  190,  253,  274,  275,  276, | 
| 819 |  /*    70 */   195,  193,  197,  193,  261,  274,  275,  276,  253,  204, | 
| 820 |  /*    80 */   238,  204,   81,   43,   44,   45,   46,   47,   48,   49, | 
| 821 |  /*    90 */    50,   51,   52,   53,   54,   55,   56,   57,  274,  275, | 
| 822 |  /*   100 */   276,  262,  102,  103,  104,  105,  106,  107,  108,  109, | 
| 823 |  /*   110 */   110,  111,  112,  113,  239,  240,  239,  240,  210,  211, | 
| 824 |  /*   120 */   212,  314,  315,  314,   59,  316,   86,  252,   88,  252, | 
| 825 |  /*   130 */    19,  314,  315,  256,  257,  113,   25,   72,  296,  138, | 
| 826 |  /*   140 */   139,  266,  102,  103,  104,  105,  106,  107,  108,  109, | 
| 827 |  /*   150 */   110,  111,  112,  113,   43,   44,   45,   46,   47,   48, | 
| 828 |  /*   160 */    49,   50,   51,   52,   53,   54,   55,   56,   57,   81, | 
| 829 |  /*   170 */   292,   59,  292,  298,  108,  109,  110,  111,  112,  113, | 
| 830 |  /*   180 */    69,  116,  117,  118,   72,  106,  107,  193,  111,  112, | 
| 831 |  /*   190 */   113,   54,   55,   56,   57,   58,  102,  103,  104,  105, | 
| 832 |  /*   200 */   106,  107,  108,  109,  110,  111,  112,  113,  120,   25, | 
| 833 |  /*   210 */   216,  217,  145,  102,  103,  104,  105,  106,  107,  108, | 
| 834 |  /*   220 */   109,  110,  111,  112,  113,  231,  138,  139,  116,  117, | 
| 835 |  /*   230 */   118,  164,  153,   19,  155,   54,   55,   56,   57,  102, | 
| 836 |  /*   240 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112, | 
| 837 |  /*   250 */   113,  128,  129,   46,   47,   48,   49,   43,   44,   45, | 
| 838 |  /*   260 */    46,   47,   48,   49,   50,   51,   52,   53,   54,   55, | 
| 839 |  /*   270 */    56,   57,  216,  193,   25,   59,  193,   19,  165,  166, | 
| 840 |  /*   280 */   193,   67,   24,  102,  103,  104,  105,  106,  107,  108, | 
| 841 |  /*   290 */   109,  110,  111,  112,  113,   73,  216,  217,   59,  216, | 
| 842 |  /*   300 */   217,   43,   44,   45,   46,   47,   48,   49,   50,   51, | 
| 843 |  /*   310 */    52,   53,   54,   55,   56,   57,  102,  103,  104,  105, | 
| 844 |  /*   320 */   106,  107,  108,  109,  110,  111,  112,  113,  121,  145, | 
| 845 |  /*   330 */    59,  193,  116,  117,  118,  119,  273,  204,  122,  123, | 
| 846 |  /*   340 */   124,   19,   20,  134,   22,  136,  137,   19,  132,  127, | 
| 847 |  /*   350 */   128,  129,   24,   22,   23,  116,  117,  118,   36,  193, | 
| 848 |  /*   360 */   102,  103,  104,  105,  106,  107,  108,  109,  110,  111, | 
| 849 |  /*   370 */   112,  113,  239,  240,  311,  312,  215,  106,  107,  241, | 
| 850 |  /*   380 */    19,   59,  216,  217,  223,  252,  115,  116,  117,  118, | 
| 851 |  /*   390 */   151,  120,   26,   71,  193,  308,  309,  193,  149,  128, | 
| 852 |  /*   400 */   313,  216,  269,   81,   43,   44,   45,   46,   47,   48, | 
| 853 |  /*   410 */    49,   50,   51,   52,   53,   54,   55,   56,   57,  253, | 
| 854 |  /*   420 */   216,  217,  100,   95,  153,   59,  155,  261,  106,  107, | 
| 855 |  /*   430 */    25,  193,  101,  193,  193,  231,  114,   25,  116,  117, | 
| 856 |  /*   440 */   118,  113,  304,  121,  193,  204,   59,  119,  120,  121, | 
| 857 |  /*   450 */   122,  123,  124,  125,  216,  217,  193,  216,  217,  131, | 
| 858 |  /*   460 */   138,  139,  230,  102,  103,  104,  105,  106,  107,  108, | 
| 859 |  /*   470 */   109,  110,  111,  112,  113,  153,  154,  155,  156,  157, | 
| 860 |  /*   480 */   239,  240,  116,  117,  118,   76,  193,   23,   19,   25, | 
| 861 |  /*   490 */    22,  253,   23,  252,  253,  108,   87,  204,   89,  261, | 
| 862 |  /*   500 */   198,   92,  261,  116,  117,  118,  193,  306,  307,  216, | 
| 863 |  /*   510 */   217,  150,   43,   44,   45,   46,   47,   48,   49,   50, | 
| 864 |  /*   520 */    51,   52,   53,   54,   55,   56,   57,   59,  193,  216, | 
| 865 |  /*   530 */   217,   19,  239,  240,  283,   23,  106,  107,  108,  109, | 
| 866 |  /*   540 */   110,  111,  112,  113,   73,  252,  253,  142,  308,  309, | 
| 867 |  /*   550 */   138,  139,   81,  313,  145,   43,   44,   45,   46,   47, | 
| 868 |  /*   560 */    48,   49,   50,   51,   52,   53,   54,   55,   56,   57, | 
| 869 |  /*   570 */   307,  102,  103,  104,  105,  106,  107,  108,  109,  110, | 
| 870 |  /*   580 */   111,  112,  113,  281,  116,  117,  118,  285,   23,  193, | 
| 871 |  /*   590 */    25,  119,   59,  193,  122,  123,  124,   59,  127,  203, | 
| 872 |  /*   600 */    59,  205,   19,  268,  132,   25,   23,   22,  193,  138, | 
| 873 |  /*   610 */   139,  249,  204,  251,  102,  103,  104,  105,  106,  107, | 
| 874 |  /*   620 */   108,  109,  110,  111,  112,  113,   43,   44,   45,   46, | 
| 875 |  /*   630 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56, | 
| 876 |  /*   640 */    57,   19,   22,   23,   59,   23,   25,  239,  240,  116, | 
| 877 |  /*   650 */   117,  118,  193,   11,  116,  117,  118,  116,  117,  118, | 
| 878 |  /*   660 */   252,  269,   22,  193,   15,   43,   44,   45,   46,   47, | 
| 879 |  /*   670 */    48,   49,   50,   51,   52,   53,   54,   55,   56,   57, | 
| 880 |  /*   680 */   273,  143,  193,  118,  143,  102,  103,  104,  105,  106, | 
| 881 |  /*   690 */   107,  108,  109,  110,  111,  112,  113,   76,  118,   59, | 
| 882 |  /*   700 */   241,  116,  117,  118,  304,  216,  217,  292,  143,   60, | 
| 883 |  /*   710 */    89,  241,   19,   92,  193,  193,   23,   22,  311,  312, | 
| 884 |  /*   720 */   231,  101,   22,  143,  102,  103,  104,  105,  106,  107, | 
| 885 |  /*   730 */   108,  109,  110,  111,  112,  113,   43,   44,   45,   46, | 
| 886 |  /*   740 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56, | 
| 887 |  /*   750 */    57,   19,  193,  193,   59,   23,  116,  117,  118,   59, | 
| 888 |  /*   760 */   201,   21,  241,  304,   22,  206,  127,  128,  129,  193, | 
| 889 |  /*   770 */   128,  129,  235,  236,  304,   43,   44,   45,   46,   47, | 
| 890 |  /*   780 */    48,   49,   50,   51,   52,   53,   54,   55,   56,   57, | 
| 891 |  /*   790 */    22,  193,  216,  217,  193,  102,  103,  104,  105,  106, | 
| 892 |  /*   800 */   107,  108,  109,  110,  111,  112,  113,  231,  193,  193, | 
| 893 |  /*   810 */   193,  116,  117,  118,  216,  217,  116,  117,  118,  226, | 
| 894 |  /*   820 */    80,  193,   19,  235,  236,  304,   23,  211,  212,  231, | 
| 895 |  /*   830 */   204,  216,  217,  205,  102,  103,  104,  105,  106,  107, | 
| 896 |  /*   840 */   108,  109,  110,  111,  112,  113,   43,   44,   45,   46, | 
| 897 |  /*   850 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56, | 
| 898 |  /*   860 */    57,   19,  193,  123,   76,  239,  240,  193,  253,  239, | 
| 899 |  /*   870 */   240,  239,  240,  193,  106,  107,  193,   89,  252,  193, | 
| 900 |  /*   880 */    92,   59,  252,  141,  252,   43,   44,   45,   46,   47, | 
| 901 |  /*   890 */    48,   49,   50,   51,   52,   53,   54,   55,   56,   57, | 
| 902 |  /*   900 */   284,  161,  216,  217,  193,  102,  103,  104,  105,  106, | 
| 903 |  /*   910 */   107,  108,  109,  110,  111,  112,  113,  231,  193,   16, | 
| 904 |  /*   920 */   187,  188,  189,  190,    7,    8,    9,  309,  195,   25, | 
| 905 |  /*   930 */   197,  313,   19,  127,  128,  129,  262,  204,   22,  117, | 
| 906 |  /*   940 */    24,  216,  217,  263,  102,  103,  104,  105,  106,  107, | 
| 907 |  /*   950 */   108,  109,  110,  111,  112,  113,   43,   44,   45,   46, | 
| 908 |  /*   960 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56, | 
| 909 |  /*   970 */    57,  193,  239,  240,  193,   59,   19,  188,  253,  190, | 
| 910 |  /*   980 */    77,  226,   79,  193,  195,  252,  197,  193,   19,  301, | 
| 911 |  /*   990 */   302,  193,  193,  204,  216,  217,  226,  216,  217,  266, | 
| 912 |  /*  1000 */   204,  159,   45,   46,   47,   48,   49,   50,   51,   52, | 
| 913 |  /*  1010 */    53,   54,   55,   56,   57,  102,  103,  104,  105,  106, | 
| 914 |  /*  1020 */   107,  108,  109,  110,  111,  112,  113,   12,  239,  240, | 
| 915 |  /*  1030 */   232,  298,  238,  117,  253,  239,  240,  238,  259,  260, | 
| 916 |  /*  1040 */   193,  252,   27,   31,  193,  193,  142,  204,  252,  193, | 
| 917 |  /*  1050 */   193,   39,  262,  193,  100,  266,  278,   42,  204,  102, | 
| 918 |  /*  1060 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112, | 
| 919 |  /*  1070 */   113,  117,  159,  216,  217,  121,  216,  217,   63,  193, | 
| 920 |  /*  1080 */   193,  193,  239,  240,  115,  116,  193,  298,   73,  238, | 
| 921 |  /*  1090 */   238,  231,   19,  239,  240,  252,   22,   24,  211,  212, | 
| 922 |  /*  1100 */    24,  193,  216,  217,  216,  217,  252,  153,  154,  155, | 
| 923 |  /*  1110 */   253,   16,   19,  144,  213,  268,   43,   44,   45,   46, | 
| 924 |  /*  1120 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56, | 
| 925 |  /*  1130 */    57,  238,   19,   59,  193,   59,   43,   44,   45,   46, | 
| 926 |  /*  1140 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56, | 
| 927 |  /*  1150 */    57,   22,   23,  193,   25,  193,   43,   44,   45,   46, | 
| 928 |  /*  1160 */    47,   48,   49,   50,   51,   52,   53,   54,   55,   56, | 
| 929 |  /*  1170 */    57,  284,   77,  193,   79,  102,  103,  104,  105,  106, | 
| 930 |  /*  1180 */   107,  108,  109,  110,  111,  112,  113,  286,  193,  193, | 
| 931 |  /*  1190 */   193,  117,  291,  117,  232,  102,  103,  104,  105,  106, | 
| 932 |  /*  1200 */   107,  108,  109,  110,  111,  112,  113,  204,   22,   23, | 
| 933 |  /*  1210 */    66,   25,  216,  217,   35,  102,  103,  104,  105,  106, | 
| 934 |  /*  1220 */   107,  108,  109,  110,  111,  112,  113,  193,  268,   85, | 
| 935 |  /*  1230 */   101,  193,  309,  309,  240,   19,  313,  313,   94,  208, | 
| 936 |  /*  1240 */   209,  193,  239,  240,  193,   66,  252,   19,  268,  244, | 
| 937 |  /*  1250 */   216,  217,  193,   74,  213,  252,  161,   19,  263,  254, | 
| 938 |  /*  1260 */    44,   45,   46,   47,   48,   49,   50,   51,   52,   53, | 
| 939 |  /*  1270 */    54,   55,   56,   57,  193,  216,  217,    5,   59,  193, | 
| 940 |  /*  1280 */    19,  244,   10,   11,   12,   13,   14,  101,  309,   17, | 
| 941 |  /*  1290 */   146,  254,  313,  193,  193,   76,  115,  216,  217,  309, | 
| 942 |  /*  1300 */    12,  263,   30,  313,   32,   46,   87,   46,   89,  130, | 
| 943 |  /*  1310 */   193,   92,   40,   22,  263,   27,  216,  217,  102,  103, | 
| 944 |  /*  1320 */   104,  105,  106,  107,  108,  109,  110,  111,  112,  113, | 
| 945 |  /*  1330 */    42,  150,  291,  216,  217,  116,  117,  118,   19,   20, | 
| 946 |  /*  1340 */   193,   22,   70,  260,  116,  193,   24,  264,  193,  263, | 
| 947 |  /*  1350 */    78,   63,   61,   81,  116,   36,  193,  260,  193,   29, | 
| 948 |  /*  1360 */   193,  264,  193,   33,  145,  193,   59,   48,  216,  217, | 
| 949 |  /*  1370 */    98,  216,  217,  193,  115,  193,  115,  193,   59,  216, | 
| 950 |  /*  1380 */   217,  216,  217,  216,  217,  216,  217,  255,  216,  217, | 
| 951 |  /*  1390 */    71,  193,  131,  193,   25,   65,  216,  217,  216,  217, | 
| 952 |  /*  1400 */   216,  217,  208,  209,   85,  133,  193,  100,  193,   90, | 
| 953 |  /*  1410 */   138,  139,  138,  139,  216,  217,  216,  217,  193,  100, | 
| 954 |  /*  1420 */   193,  108,  135,  116,  117,  106,  107,  140,  121,  216, | 
| 955 |  /*  1430 */   217,  216,  217,  114,  162,  116,  117,  118,  299,  300, | 
| 956 |  /*  1440 */   121,  216,  217,  216,  217,  193,  244,  193,  135,  244, | 
| 957 |  /*  1450 */   193,  256,  257,  140,  244,  193,  254,  193,  193,  254, | 
| 958 |  /*  1460 */   153,  154,  155,  141,  254,  149,  150,  258,  216,  217, | 
| 959 |  /*  1470 */   216,  217,  153,  154,  155,  156,  157,    0,    1,    2, | 
| 960 |  /*  1480 */   216,  217,    5,  115,  158,  193,  160,   10,   11,   12, | 
| 961 |  /*  1490 */    13,   14,  193,   59,   17,  126,  193,   19,   20,  129, | 
| 962 |  /*  1500 */    22,  193,   22,   22,   24,  193,   23,   30,   25,   32, | 
| 963 |  /*  1510 */    19,   20,  144,   22,   36,  216,  217,   40,  193,  216, | 
| 964 |  /*  1520 */   217,  193,  152,  129,  216,  217,  193,   36,  216,  217, | 
| 965 |  /*  1530 */   193,   99,  193,  193,   53,  193,  193,   59,   23,  193, | 
| 966 |  /*  1540 */    25,  216,  217,  193,  216,  217,  152,   70,   59,   71, | 
| 967 |  /*  1550 */    59,  117,  193,  216,  217,   78,  216,  217,   81,  216, | 
| 968 |  /*  1560 */   217,  318,   71,   85,  193,  133,  193,  193,   90,   23, | 
| 969 |  /*  1570 */    23,   25,   25,  120,  121,   98,   85,  193,  100,  193, | 
| 970 |  /*  1580 */    23,   90,   25,  121,  106,  107,   19,  216,  217,  216, | 
| 971 |  /*  1590 */   217,  100,  114,  131,  116,  117,  118,  106,  107,  121, | 
| 972 |  /*  1600 */   216,  217,  216,  217,  193,  114,  117,  116,  117,  118, | 
| 973 |  /*  1610 */   133,  193,  121,  193,  193,  138,  139,  193,   23,  193, | 
| 974 |  /*  1620 */    25,   23,   23,   25,   25,    7,    8,  216,  217,  193, | 
| 975 |  /*  1630 */   193,  153,  154,  155,  156,  157,  216,  217,  193,  162, | 
| 976 |  /*  1640 */   216,  217,  216,  217,  153,  154,  155,  156,  157,    1, | 
| 977 |  /*  1650 */     2,  193,  193,    5,   19,   20,   59,   22,   10,   11, | 
| 978 |  /*  1660 */    12,   13,   14,  193,   97,   17,  193,   23,  193,   25, | 
| 979 |  /*  1670 */   288,   36,  193,  242,  216,  217,  236,   23,   30,   25, | 
| 980 |  /*  1680 */    32,   19,   20,   23,   22,   25,  216,  217,   40,  216, | 
| 981 |  /*  1690 */   217,  216,  217,  193,   59,  216,  217,  193,   36,   83, | 
| 982 |  /*  1700 */    84,  153,  153,  155,  155,   23,   71,   25,   23,  193, | 
| 983 |  /*  1710 */    25,  193,  193,  193,  117,  193,  193,  193,   70,  193, | 
| 984 |  /*  1720 */   193,   59,  193,  255,  255,  287,   78,  255,  243,   81, | 
| 985 |  /*  1730 */   191,  255,  297,   71,  271,  100,  293,  245,  267,  214, | 
| 986 |  /*  1740 */   246,  106,  107,  108,  246,  271,   98,  245,  293,  114, | 
| 987 |  /*  1750 */   220,  116,  117,  118,  267,  271,  121,  271,  225,  219, | 
| 988 |  /*  1760 */   229,  219,  100,  219,  259,  259,  259,  259,  106,  107, | 
| 989 |  /*  1770 */   249,  196,   60,  280,  141,  243,  114,  249,  116,  117, | 
| 990 |  /*  1780 */   118,  133,  245,  121,  200,  297,  138,  139,  153,  154, | 
| 991 |  /*  1790 */   155,  156,  157,  297,  200,   38,   19,   20,  151,   22, | 
| 992 |  /*  1800 */   200,  150,  140,  294,  294,   22,  272,   43,  234,   18, | 
| 993 |  /*  1810 */   162,  270,  200,   36,  237,  153,  154,  155,  156,  157, | 
| 994 |  /*  1820 */   237,  283,  237,  237,   18,  199,  149,  246,  272,  270, | 
| 995 |  /*  1830 */   272,  200,  158,  246,  246,  234,   59,  234,  246,  199, | 
| 996 |  /*  1840 */   290,   62,  289,  200,  199,   22,  221,  115,   71,  200, | 
| 997 |  /*  1850 */   200,  199,  199,  221,  218,  218,   19,   20,   64,   22, | 
| 998 |  /*  1860 */   218,  227,   22,  224,  126,  224,  165,  221,   24,  305, | 
| 999 |  /*  1870 */   200,  113,  312,   36,  218,  220,  218,  100,  282,  218, | 
| 1000 |  /*  1880 */    91,  218,  317,  106,  107,  221,  227,  282,  317,   82, | 
| 1001 |  /*  1890 */   148,  114,  265,  116,  117,  118,   59,  145,  121,   22, | 
| 1002 |  /*  1900 */   277,  158,  200,  265,   25,  202,  147,  250,   71,  279, | 
| 1003 |  /*  1910 */    13,  146,  194,  194,  249,  248,  250,  140,  247,  246, | 
| 1004 |  /*  1920 */     6,  192,  192,  192,  303,  303,  213,  207,  300,  213, | 
| 1005 |  /*  1930 */   153,  154,  155,  156,  157,  213,  213,  100,  213,  222, | 
| 1006 |  /*  1940 */   207,  214,  214,  106,  107,    4,  222,  207,    3,   22, | 
| 1007 |  /*  1950 */   163,  114,   15,  116,  117,  118,   16,   23,  121,   23, | 
| 1008 |  /*  1960 */   139,  151,  130,   25,  142,   16,   24,   20,  144,    1, | 
| 1009 |  /*  1970 */   142,  130,  130,   61,   53,   53,   37,  151,   53,   53, | 
| 1010 |  /*  1980 */   130,  116,   34,    1,  141,    5,   22,  115,  161,  141, | 
| 1011 |  /*  1990 */   153,  154,  155,  156,  157,   25,   68,   68,   75,   41, | 
| 1012 |  /*  2000 */   115,   24,  131,   20,   19,  125,   22,   96,   22,   22, | 
| 1013 |  /*  2010 */    67,   23,   22,   67,   59,   24,   22,   28,   67,   23, | 
| 1014 |  /*  2020 */    22,   22,  149,   23,   23,   23,  116,   23,   25,   37, | 
| 1015 |  /*  2030 */    97,  141,   23,   23,   22,  143,   25,   75,   88,   34, | 
| 1016 |  /*  2040 */    34,   34,   34,   86,   75,   93,   23,   34,   22,   34, | 
| 1017 |  /*  2050 */    25,   24,   34,   25,   23,  142,   23,  142,   44,   23, | 
| 1018 |  /*  2060 */    23,   23,   11,   23,   25,   22,   22,   22,   15,   23, | 
| 1019 |  /*  2070 */    23,   22,   22,   25,    1,    1,  141,   25,   23,  135, | 
| 1020 |  /*  2080 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1021 |  /*  2090 */   319,  319,  319,  319,  141,  141,  319,  141,  319,  319, | 
| 1022 |  /*  2100 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1023 |  /*  2110 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1024 |  /*  2120 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1025 |  /*  2130 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1026 |  /*  2140 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1027 |  /*  2150 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1028 |  /*  2160 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1029 |  /*  2170 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1030 |  /*  2180 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1031 |  /*  2190 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1032 |  /*  2200 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1033 |  /*  2210 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1034 |  /*  2220 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1035 |  /*  2230 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1036 |  /*  2240 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1037 |  /*  2250 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1038 |  /*  2260 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1039 |  /*  2270 */   319,  319,  319,  319,  319,  319,  319,  319,  319,  319, | 
| 1040 |  /*  2280 */   319,  319,  319, | 
| 1041 | }; | 
| 1042 | #define YY_SHIFT_COUNT    (575) | 
| 1043 | #define YY_SHIFT_MIN      (0) | 
| 1044 | #define YY_SHIFT_MAX      (2074) | 
| 1045 | static const unsigned short int yy_shift_ofst[] = { | 
| 1046 |  /*     0 */  1648, 1477, 1272,  322,  322,    1, 1319, 1478, 1491, 1837, | 
| 1047 |  /*    10 */  1837, 1837,  471,    0,    0,  214, 1093, 1837, 1837, 1837, | 
| 1048 |  /*    20 */  1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, | 
| 1049 |  /*    30 */   271,  271, 1219, 1219,  216,   88,    1,    1,    1,    1, | 
| 1050 |  /*    40 */     1,   40,  111,  258,  361,  469,  512,  583,  622,  693, | 
| 1051 |  /*    50 */   732,  803,  842,  913, 1073, 1093, 1093, 1093, 1093, 1093, | 
| 1052 |  /*    60 */  1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, | 
| 1053 |  /*    70 */  1093, 1093, 1093, 1113, 1093, 1216,  957,  957, 1635, 1662, | 
| 1054 |  /*    80 */  1777, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, | 
| 1055 |  /*    90 */  1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, | 
| 1056 |  /*   100 */  1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, | 
| 1057 |  /*   110 */  1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, | 
| 1058 |  /*   120 */  1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, | 
| 1059 |  /*   130 */   137,  181,  181,  181,  181,  181,  181,  181,   94,  430, | 
| 1060 |  /*   140 */    66,   65,  112,  366,  533,  533,  740, 1261,  533,  533, | 
| 1061 |  /*   150 */    79,   79,  533,  412,  412,  412,   77,  412,  123,  113, | 
| 1062 |  /*   160 */   113,   22,   22, 2098, 2098,  328,  328,  328,  239,  468, | 
| 1063 |  /*   170 */   468,  468,  468, 1015, 1015,  409,  366, 1129, 1186,  533, | 
| 1064 |  /*   180 */   533,  533,  533,  533,  533,  533,  533,  533,  533,  533, | 
| 1065 |  /*   190 */   533,  533,  533,  533,  533,  533,  533,  533,  533,  969, | 
| 1066 |  /*   200 */   621,  621,  533,  642,  788,  788, 1228, 1228,  822,  822, | 
| 1067 |  /*   210 */    67, 1274, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 1307, | 
| 1068 |  /*   220 */   954,  954,  585,  472,  640,  387,  695,  538,  541,  700, | 
| 1069 |  /*   230 */   533,  533,  533,  533,  533,  533,  533,  533,  533,  533, | 
| 1070 |  /*   240 */   222,  533,  533,  533,  533,  533,  533,  533,  533,  533, | 
| 1071 |  /*   250 */   533,  533,  533, 1179, 1179, 1179,  533,  533,  533,  565, | 
| 1072 |  /*   260 */   533,  533,  533,  916, 1144,  533,  533, 1288,  533,  533, | 
| 1073 |  /*   270 */   533,  533,  533,  533,  533,  533,  639, 1330,  209, 1076, | 
| 1074 |  /*   280 */  1076, 1076, 1076,  580,  209,  209, 1313,  768,  917,  649, | 
| 1075 |  /*   290 */  1181, 1316,  405, 1316, 1238,  249, 1181, 1181,  249, 1181, | 
| 1076 |  /*   300 */   405, 1238, 1369,  464, 1259, 1012, 1012, 1012, 1368, 1368, | 
| 1077 |  /*   310 */  1368, 1368,  184,  184, 1326,  904, 1287, 1480, 1712, 1712, | 
| 1078 |  /*   320 */  1633, 1633, 1757, 1757, 1633, 1647, 1651, 1783, 1764, 1791, | 
| 1079 |  /*   330 */  1791, 1791, 1791, 1633, 1806, 1677, 1651, 1651, 1677, 1783, | 
| 1080 |  /*   340 */  1764, 1677, 1764, 1677, 1633, 1806, 1674, 1779, 1633, 1806, | 
| 1081 |  /*   350 */  1823, 1633, 1806, 1633, 1806, 1823, 1732, 1732, 1732, 1794, | 
| 1082 |  /*   360 */  1840, 1840, 1823, 1732, 1738, 1732, 1794, 1732, 1732, 1701, | 
| 1083 |  /*   370 */  1844, 1758, 1758, 1823, 1633, 1789, 1789, 1807, 1807, 1742, | 
| 1084 |  /*   380 */  1752, 1877, 1633, 1743, 1742, 1759, 1765, 1677, 1879, 1897, | 
| 1085 |  /*   390 */  1897, 1914, 1914, 1914, 2098, 2098, 2098, 2098, 2098, 2098, | 
| 1086 |  /*   400 */  2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098,  207, | 
| 1087 |  /*   410 */  1095,  331,  620,  903,  806, 1074, 1483, 1432, 1481, 1322, | 
| 1088 |  /*   420 */  1370, 1394, 1515, 1291, 1546, 1547, 1557, 1595, 1598, 1599, | 
| 1089 |  /*   430 */  1434, 1453, 1618, 1462, 1567, 1489, 1644, 1654, 1616, 1660, | 
| 1090 |  /*   440 */  1548, 1549, 1682, 1685, 1597,  742, 1941, 1945, 1927, 1787, | 
| 1091 |  /*   450 */  1937, 1940, 1934, 1936, 1821, 1810, 1832, 1938, 1938, 1942, | 
| 1092 |  /*   460 */  1822, 1947, 1824, 1949, 1968, 1828, 1841, 1938, 1842, 1912, | 
| 1093 |  /*   470 */  1939, 1938, 1826, 1921, 1922, 1925, 1926, 1850, 1865, 1948, | 
| 1094 |  /*   480 */  1843, 1982, 1980, 1964, 1872, 1827, 1928, 1970, 1929, 1923, | 
| 1095 |  /*   490 */  1958, 1848, 1885, 1977, 1983, 1985, 1871, 1880, 1984, 1943, | 
| 1096 |  /*   500 */  1986, 1987, 1988, 1990, 1946, 1955, 1991, 1911, 1989, 1994, | 
| 1097 |  /*   510 */  1951, 1992, 1996, 1873, 1998, 2000, 2001, 2002, 2003, 2004, | 
| 1098 |  /*   520 */  1999, 1933, 1890, 2009, 2010, 1910, 2005, 2012, 1892, 2011, | 
| 1099 |  /*   530 */  2006, 2007, 2008, 2013, 1950, 1962, 1957, 2014, 1969, 1952, | 
| 1100 |  /*   540 */  2015, 2023, 2026, 2027, 2025, 2028, 2018, 1913, 1915, 2031, | 
| 1101 |  /*   550 */  2011, 2033, 2036, 2037, 2038, 2039, 2040, 2043, 2051, 2044, | 
| 1102 |  /*   560 */  2045, 2046, 2047, 2049, 2050, 2048, 1944, 1935, 1953, 1954, | 
| 1103 |  /*   570 */  1956, 2052, 2055, 2053, 2073, 2074, | 
| 1104 | }; | 
| 1105 | #define YY_REDUCE_COUNT (408) | 
| 1106 | #define YY_REDUCE_MIN   (-271) | 
| 1107 | #define YY_REDUCE_MAX   (1740) | 
| 1108 | static const short yy_reduce_ofst[] = { | 
| 1109 |  /*     0 */  -125,  733,  789,  241,  293, -123, -193, -191, -183, -187, | 
| 1110 |  /*    10 */   166,  238,  133, -207, -199, -267, -176,   -6,  204,  489, | 
| 1111 |  /*    20 */   576, -175,  598,  686,  615,  725,  860,  778,  781,  857, | 
| 1112 |  /*    30 */   616,  887,   87,  240, -192,  408,  626,  796,  843,  854, | 
| 1113 |  /*    40 */  1003, -271, -271, -271, -271, -271, -271, -271, -271, -271, | 
| 1114 |  /*    50 */  -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, | 
| 1115 |  /*    60 */  -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, | 
| 1116 |  /*    70 */  -271, -271, -271, -271, -271, -271, -271, -271,   80,   83, | 
| 1117 |  /*    80 */   313,  886,  888,  996, 1034, 1059, 1081, 1100, 1117, 1152, | 
| 1118 |  /*    90 */  1155, 1163, 1165, 1167, 1169, 1172, 1180, 1182, 1184, 1198, | 
| 1119 |  /*   100 */  1200, 1213, 1215, 1225, 1227, 1252, 1254, 1264, 1299, 1303, | 
| 1120 |  /*   110 */  1308, 1312, 1325, 1328, 1337, 1340, 1343, 1371, 1373, 1384, | 
| 1121 |  /*   120 */  1386, 1411, 1420, 1424, 1426, 1458, 1470, 1473, 1475, 1479, | 
| 1122 |  /*   130 */  -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, | 
| 1123 |  /*   140 */  -271,  138,  459,  396, -158,  470,  302, -212,  521,  201, | 
| 1124 |  /*   150 */  -195,  -92,  559,  630,  632,  630, -271,  632,  901,   63, | 
| 1125 |  /*   160 */   407, -271, -271, -271, -271,  161,  161,  161,  251,  335, | 
| 1126 |  /*   170 */   847,  960,  980,  537,  588,  618,  628,  688,  688, -166, | 
| 1127 |  /*   180 */  -161,  674,  790,  794,  799,  851,  852, -122,  680, -120, | 
| 1128 |  /*   190 */   995, 1038,  415, 1051,  893,  798,  962,  400, 1086,  779, | 
| 1129 |  /*   200 */   923,  924,  263, 1041,  979,  990, 1083, 1097, 1031, 1194, | 
| 1130 |  /*   210 */   362,  994, 1139, 1005, 1037, 1202, 1205, 1195, 1210, -194, | 
| 1131 |  /*   220 */    56,  185, -135,  232,  522,  560,  601,  617,  669,  683, | 
| 1132 |  /*   230 */   711,  856,  908,  941, 1048, 1101, 1147, 1257, 1262, 1265, | 
| 1133 |  /*   240 */   392, 1292, 1333, 1339, 1342, 1346, 1350, 1359, 1374, 1418, | 
| 1134 |  /*   250 */  1421, 1436, 1437,  593,  755,  770,  997, 1445, 1459, 1209, | 
| 1135 |  /*   260 */  1500, 1504, 1516, 1132, 1243, 1518, 1519, 1440, 1520,  560, | 
| 1136 |  /*   270 */  1522, 1523, 1524, 1526, 1527, 1529, 1382, 1438, 1431, 1468, | 
| 1137 |  /*   280 */  1469, 1472, 1476, 1209, 1431, 1431, 1485, 1525, 1539, 1435, | 
| 1138 |  /*   290 */  1463, 1471, 1492, 1487, 1443, 1494, 1474, 1484, 1498, 1486, | 
| 1139 |  /*   300 */  1502, 1455, 1530, 1531, 1533, 1540, 1542, 1544, 1505, 1506, | 
| 1140 |  /*   310 */  1507, 1508, 1521, 1528, 1493, 1537, 1532, 1575, 1488, 1496, | 
| 1141 |  /*   320 */  1584, 1594, 1509, 1510, 1600, 1538, 1534, 1541, 1574, 1577, | 
| 1142 |  /*   330 */  1583, 1585, 1586, 1612, 1626, 1581, 1556, 1558, 1587, 1559, | 
| 1143 |  /*   340 */  1601, 1588, 1603, 1592, 1631, 1640, 1550, 1553, 1643, 1645, | 
| 1144 |  /*   350 */  1625, 1649, 1652, 1650, 1653, 1632, 1636, 1637, 1642, 1634, | 
| 1145 |  /*   360 */  1639, 1641, 1646, 1656, 1655, 1658, 1659, 1661, 1663, 1560, | 
| 1146 |  /*   370 */  1564, 1596, 1605, 1664, 1670, 1565, 1571, 1627, 1638, 1657, | 
| 1147 |  /*   380 */  1665, 1623, 1702, 1630, 1666, 1667, 1671, 1673, 1703, 1718, | 
| 1148 |  /*   390 */  1719, 1729, 1730, 1731, 1621, 1622, 1628, 1720, 1713, 1716, | 
| 1149 |  /*   400 */  1722, 1723, 1733, 1717, 1724, 1727, 1728, 1725, 1740, | 
| 1150 | }; | 
| 1151 | static const YYACTIONTYPE yy_default[] = { | 
| 1152 |  /*     0 */  1647, 1647, 1647, 1475, 1240, 1351, 1240, 1240, 1240, 1475, | 
| 1153 |  /*    10 */  1475, 1475, 1240, 1381, 1381, 1528, 1273, 1240, 1240, 1240, | 
| 1154 |  /*    20 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1474, 1240, 1240, | 
| 1155 |  /*    30 */  1240, 1240, 1563, 1563, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1156 |  /*    40 */  1240, 1240, 1390, 1240, 1397, 1240, 1240, 1240, 1240, 1240, | 
| 1157 |  /*    50 */  1476, 1477, 1240, 1240, 1240, 1527, 1529, 1492, 1404, 1403, | 
| 1158 |  /*    60 */  1402, 1401, 1510, 1369, 1395, 1388, 1392, 1470, 1471, 1469, | 
| 1159 |  /*    70 */  1473, 1477, 1476, 1240, 1391, 1438, 1454, 1437, 1240, 1240, | 
| 1160 |  /*    80 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1161 |  /*    90 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1162 |  /*   100 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1163 |  /*   110 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1164 |  /*   120 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1165 |  /*   130 */  1446, 1453, 1452, 1451, 1460, 1450, 1447, 1440, 1439, 1441, | 
| 1166 |  /*   140 */  1442, 1240, 1240, 1264, 1240, 1240, 1261, 1315, 1240, 1240, | 
| 1167 |  /*   150 */  1240, 1240, 1240, 1547, 1546, 1240, 1443, 1240, 1273, 1432, | 
| 1168 |  /*   160 */  1431, 1457, 1444, 1456, 1455, 1535, 1599, 1598, 1493, 1240, | 
| 1169 |  /*   170 */  1240, 1240, 1240, 1240, 1240, 1563, 1240, 1240, 1240, 1240, | 
| 1170 |  /*   180 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1171 |  /*   190 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1371, | 
| 1172 |  /*   200 */  1563, 1563, 1240, 1273, 1563, 1563, 1372, 1372, 1269, 1269, | 
| 1173 |  /*   210 */  1375, 1240, 1542, 1342, 1342, 1342, 1342, 1351, 1342, 1240, | 
| 1174 |  /*   220 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1175 |  /*   230 */  1240, 1240, 1240, 1240, 1532, 1530, 1240, 1240, 1240, 1240, | 
| 1176 |  /*   240 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1177 |  /*   250 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1178 |  /*   260 */  1240, 1240, 1240, 1347, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1179 |  /*   270 */  1240, 1240, 1240, 1240, 1240, 1592, 1240, 1505, 1329, 1347, | 
| 1180 |  /*   280 */  1347, 1347, 1347, 1349, 1330, 1328, 1341, 1274, 1247, 1639, | 
| 1181 |  /*   290 */  1407, 1396, 1348, 1396, 1636, 1394, 1407, 1407, 1394, 1407, | 
| 1182 |  /*   300 */  1348, 1636, 1290, 1615, 1285, 1381, 1381, 1381, 1371, 1371, | 
| 1183 |  /*   310 */  1371, 1371, 1375, 1375, 1472, 1348, 1341, 1240, 1639, 1639, | 
| 1184 |  /*   320 */  1357, 1357, 1638, 1638, 1357, 1493, 1623, 1416, 1318, 1324, | 
| 1185 |  /*   330 */  1324, 1324, 1324, 1357, 1258, 1394, 1623, 1623, 1394, 1416, | 
| 1186 |  /*   340 */  1318, 1394, 1318, 1394, 1357, 1258, 1509, 1633, 1357, 1258, | 
| 1187 |  /*   350 */  1483, 1357, 1258, 1357, 1258, 1483, 1316, 1316, 1316, 1305, | 
| 1188 |  /*   360 */  1240, 1240, 1483, 1316, 1290, 1316, 1305, 1316, 1316, 1581, | 
| 1189 |  /*   370 */  1240, 1487, 1487, 1483, 1357, 1573, 1573, 1384, 1384, 1389, | 
| 1190 |  /*   380 */  1375, 1478, 1357, 1240, 1389, 1387, 1385, 1394, 1308, 1595, | 
| 1191 |  /*   390 */  1595, 1591, 1591, 1591, 1644, 1644, 1542, 1608, 1273, 1273, | 
| 1192 |  /*   400 */  1273, 1273, 1608, 1292, 1292, 1274, 1274, 1273, 1608, 1240, | 
| 1193 |  /*   410 */  1240, 1240, 1240, 1240, 1240, 1603, 1240, 1537, 1494, 1361, | 
| 1194 |  /*   420 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1195 |  /*   430 */  1240, 1240, 1240, 1240, 1548, 1240, 1240, 1240, 1240, 1240, | 
| 1196 |  /*   440 */  1240, 1240, 1240, 1240, 1240, 1421, 1240, 1243, 1539, 1240, | 
| 1197 |  /*   450 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1398, 1399, 1362, | 
| 1198 |  /*   460 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1413, 1240, 1240, | 
| 1199 |  /*   470 */  1240, 1408, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1200 |  /*   480 */  1635, 1240, 1240, 1240, 1240, 1240, 1240, 1508, 1507, 1240, | 
| 1201 |  /*   490 */  1240, 1359, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1202 |  /*   500 */  1240, 1240, 1240, 1240, 1240, 1288, 1240, 1240, 1240, 1240, | 
| 1203 |  /*   510 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1204 |  /*   520 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1386, | 
| 1205 |  /*   530 */  1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1206 |  /*   540 */  1240, 1240, 1240, 1240, 1578, 1376, 1240, 1240, 1240, 1240, | 
| 1207 |  /*   550 */  1626, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, | 
| 1208 |  /*   560 */  1240, 1240, 1240, 1240, 1240, 1619, 1332, 1423, 1240, 1422, | 
| 1209 |  /*   570 */  1426, 1262, 1240, 1252, 1240, 1240, | 
| 1210 | }; | 
| 1211 | /********** End of lemon-generated parsing tables *****************************/ | 
| 1212 |  | 
| 1213 | /* The next table maps tokens (terminal symbols) into fallback tokens.   | 
| 1214 | ** If a construct like the following: | 
| 1215 | **  | 
| 1216 | **      %fallback ID X Y Z. | 
| 1217 | ** | 
| 1218 | ** appears in the grammar, then ID becomes a fallback token for X, Y, | 
| 1219 | ** and Z.  Whenever one of the tokens X, Y, or Z is input to the parser | 
| 1220 | ** but it does not parse, the type of the token is changed to ID and | 
| 1221 | ** the parse is retried before an error is thrown. | 
| 1222 | ** | 
| 1223 | ** This feature can be used, for example, to cause some keywords in a language | 
| 1224 | ** to revert to identifiers if they keyword does not apply in the context where | 
| 1225 | ** it appears. | 
| 1226 | */ | 
| 1227 | #ifdef YYFALLBACK | 
| 1228 | static const YYCODETYPE yyFallback[] = { | 
| 1229 |     0,  /*          $ => nothing */ | 
| 1230 |     0,  /*       SEMI => nothing */ | 
| 1231 |    59,  /*    EXPLAIN => ID */ | 
| 1232 |    59,  /*      QUERY => ID */ | 
| 1233 |    59,  /*       PLAN => ID */ | 
| 1234 |    59,  /*      BEGIN => ID */ | 
| 1235 |     0,  /* TRANSACTION => nothing */ | 
| 1236 |    59,  /*   DEFERRED => ID */ | 
| 1237 |    59,  /*  IMMEDIATE => ID */ | 
| 1238 |    59,  /*  EXCLUSIVE => ID */ | 
| 1239 |     0,  /*     COMMIT => nothing */ | 
| 1240 |    59,  /*        END => ID */ | 
| 1241 |    59,  /*   ROLLBACK => ID */ | 
| 1242 |    59,  /*  SAVEPOINT => ID */ | 
| 1243 |    59,  /*    RELEASE => ID */ | 
| 1244 |     0,  /*         TO => nothing */ | 
| 1245 |     0,  /*      TABLE => nothing */ | 
| 1246 |     0,  /*     CREATE => nothing */ | 
| 1247 |    59,  /*         IF => ID */ | 
| 1248 |     0,  /*        NOT => nothing */ | 
| 1249 |     0,  /*     EXISTS => nothing */ | 
| 1250 |    59,  /*       TEMP => ID */ | 
| 1251 |     0,  /*         LP => nothing */ | 
| 1252 |     0,  /*         RP => nothing */ | 
| 1253 |     0,  /*         AS => nothing */ | 
| 1254 |     0,  /*      COMMA => nothing */ | 
| 1255 |    59,  /*    WITHOUT => ID */ | 
| 1256 |    59,  /*      ABORT => ID */ | 
| 1257 |    59,  /*     ACTION => ID */ | 
| 1258 |    59,  /*      AFTER => ID */ | 
| 1259 |    59,  /*    ANALYZE => ID */ | 
| 1260 |    59,  /*        ASC => ID */ | 
| 1261 |    59,  /*     ATTACH => ID */ | 
| 1262 |    59,  /*     BEFORE => ID */ | 
| 1263 |    59,  /*         BY => ID */ | 
| 1264 |    59,  /*    CASCADE => ID */ | 
| 1265 |    59,  /*       CAST => ID */ | 
| 1266 |    59,  /*   CONFLICT => ID */ | 
| 1267 |    59,  /*   DATABASE => ID */ | 
| 1268 |    59,  /*       DESC => ID */ | 
| 1269 |    59,  /*     DETACH => ID */ | 
| 1270 |    59,  /*       EACH => ID */ | 
| 1271 |    59,  /*       FAIL => ID */ | 
| 1272 |     0,  /*         OR => nothing */ | 
| 1273 |     0,  /*        AND => nothing */ | 
| 1274 |     0,  /*         IS => nothing */ | 
| 1275 |    59,  /*      MATCH => ID */ | 
| 1276 |    59,  /*    LIKE_KW => ID */ | 
| 1277 |     0,  /*    BETWEEN => nothing */ | 
| 1278 |     0,  /*         IN => nothing */ | 
| 1279 |     0,  /*     ISNULL => nothing */ | 
| 1280 |     0,  /*    NOTNULL => nothing */ | 
| 1281 |     0,  /*         NE => nothing */ | 
| 1282 |     0,  /*         EQ => nothing */ | 
| 1283 |     0,  /*         GT => nothing */ | 
| 1284 |     0,  /*         LE => nothing */ | 
| 1285 |     0,  /*         LT => nothing */ | 
| 1286 |     0,  /*         GE => nothing */ | 
| 1287 |     0,  /*     ESCAPE => nothing */ | 
| 1288 |     0,  /*         ID => nothing */ | 
| 1289 |    59,  /*   COLUMNKW => ID */ | 
| 1290 |    59,  /*         DO => ID */ | 
| 1291 |    59,  /*        FOR => ID */ | 
| 1292 |    59,  /*     IGNORE => ID */ | 
| 1293 |    59,  /*  INITIALLY => ID */ | 
| 1294 |    59,  /*    INSTEAD => ID */ | 
| 1295 |    59,  /*         NO => ID */ | 
| 1296 |    59,  /*        KEY => ID */ | 
| 1297 |    59,  /*         OF => ID */ | 
| 1298 |    59,  /*     OFFSET => ID */ | 
| 1299 |    59,  /*     PRAGMA => ID */ | 
| 1300 |    59,  /*      RAISE => ID */ | 
| 1301 |    59,  /*  RECURSIVE => ID */ | 
| 1302 |    59,  /*    REPLACE => ID */ | 
| 1303 |    59,  /*   RESTRICT => ID */ | 
| 1304 |    59,  /*        ROW => ID */ | 
| 1305 |    59,  /*       ROWS => ID */ | 
| 1306 |    59,  /*    TRIGGER => ID */ | 
| 1307 |    59,  /*     VACUUM => ID */ | 
| 1308 |    59,  /*       VIEW => ID */ | 
| 1309 |    59,  /*    VIRTUAL => ID */ | 
| 1310 |    59,  /*       WITH => ID */ | 
| 1311 |    59,  /*      NULLS => ID */ | 
| 1312 |    59,  /*      FIRST => ID */ | 
| 1313 |    59,  /*       LAST => ID */ | 
| 1314 |    59,  /*    CURRENT => ID */ | 
| 1315 |    59,  /*  FOLLOWING => ID */ | 
| 1316 |    59,  /*  PARTITION => ID */ | 
| 1317 |    59,  /*  PRECEDING => ID */ | 
| 1318 |    59,  /*      RANGE => ID */ | 
| 1319 |    59,  /*  UNBOUNDED => ID */ | 
| 1320 |    59,  /*    EXCLUDE => ID */ | 
| 1321 |    59,  /*     GROUPS => ID */ | 
| 1322 |    59,  /*     OTHERS => ID */ | 
| 1323 |    59,  /*       TIES => ID */ | 
| 1324 |    59,  /*  GENERATED => ID */ | 
| 1325 |    59,  /*     ALWAYS => ID */ | 
| 1326 |    59,  /* MATERIALIZED => ID */ | 
| 1327 |    59,  /*    REINDEX => ID */ | 
| 1328 |    59,  /*     RENAME => ID */ | 
| 1329 |    59,  /*   CTIME_KW => ID */ | 
| 1330 |     0,  /*        ANY => nothing */ | 
| 1331 |     0,  /*     BITAND => nothing */ | 
| 1332 |     0,  /*      BITOR => nothing */ | 
| 1333 |     0,  /*     LSHIFT => nothing */ | 
| 1334 |     0,  /*     RSHIFT => nothing */ | 
| 1335 |     0,  /*       PLUS => nothing */ | 
| 1336 |     0,  /*      MINUS => nothing */ | 
| 1337 |     0,  /*       STAR => nothing */ | 
| 1338 |     0,  /*      SLASH => nothing */ | 
| 1339 |     0,  /*        REM => nothing */ | 
| 1340 |     0,  /*     CONCAT => nothing */ | 
| 1341 |     0,  /*        PTR => nothing */ | 
| 1342 |     0,  /*    COLLATE => nothing */ | 
| 1343 |     0,  /*     BITNOT => nothing */ | 
| 1344 |     0,  /*         ON => nothing */ | 
| 1345 |     0,  /*    INDEXED => nothing */ | 
| 1346 |     0,  /*     STRING => nothing */ | 
| 1347 |     0,  /*    JOIN_KW => nothing */ | 
| 1348 |     0,  /* CONSTRAINT => nothing */ | 
| 1349 |     0,  /*    DEFAULT => nothing */ | 
| 1350 |     0,  /*       NULL => nothing */ | 
| 1351 |     0,  /*    PRIMARY => nothing */ | 
| 1352 |     0,  /*     UNIQUE => nothing */ | 
| 1353 |     0,  /*      CHECK => nothing */ | 
| 1354 |     0,  /* REFERENCES => nothing */ | 
| 1355 |     0,  /*   AUTOINCR => nothing */ | 
| 1356 |     0,  /*     INSERT => nothing */ | 
| 1357 |     0,  /*     DELETE => nothing */ | 
| 1358 |     0,  /*     UPDATE => nothing */ | 
| 1359 |     0,  /*        SET => nothing */ | 
| 1360 |     0,  /* DEFERRABLE => nothing */ | 
| 1361 |     0,  /*    FOREIGN => nothing */ | 
| 1362 |     0,  /*       DROP => nothing */ | 
| 1363 |     0,  /*      UNION => nothing */ | 
| 1364 |     0,  /*        ALL => nothing */ | 
| 1365 |     0,  /*     EXCEPT => nothing */ | 
| 1366 |     0,  /*  INTERSECT => nothing */ | 
| 1367 |     0,  /*     SELECT => nothing */ | 
| 1368 |     0,  /*     VALUES => nothing */ | 
| 1369 |     0,  /*   DISTINCT => nothing */ | 
| 1370 |     0,  /*        DOT => nothing */ | 
| 1371 |     0,  /*       FROM => nothing */ | 
| 1372 |     0,  /*       JOIN => nothing */ | 
| 1373 |     0,  /*      USING => nothing */ | 
| 1374 |     0,  /*      ORDER => nothing */ | 
| 1375 |     0,  /*      GROUP => nothing */ | 
| 1376 |     0,  /*     HAVING => nothing */ | 
| 1377 |     0,  /*      LIMIT => nothing */ | 
| 1378 |     0,  /*      WHERE => nothing */ | 
| 1379 |     0,  /*  RETURNING => nothing */ | 
| 1380 |     0,  /*       INTO => nothing */ | 
| 1381 |     0,  /*    NOTHING => nothing */ | 
| 1382 |     0,  /*      FLOAT => nothing */ | 
| 1383 |     0,  /*       BLOB => nothing */ | 
| 1384 |     0,  /*    INTEGER => nothing */ | 
| 1385 |     0,  /*   VARIABLE => nothing */ | 
| 1386 |     0,  /*       CASE => nothing */ | 
| 1387 |     0,  /*       WHEN => nothing */ | 
| 1388 |     0,  /*       THEN => nothing */ | 
| 1389 |     0,  /*       ELSE => nothing */ | 
| 1390 |     0,  /*      INDEX => nothing */ | 
| 1391 |     0,  /*      ALTER => nothing */ | 
| 1392 |     0,  /*        ADD => nothing */ | 
| 1393 |     0,  /*     WINDOW => nothing */ | 
| 1394 |     0,  /*       OVER => nothing */ | 
| 1395 |     0,  /*     FILTER => nothing */ | 
| 1396 |     0,  /*     COLUMN => nothing */ | 
| 1397 |     0,  /* AGG_FUNCTION => nothing */ | 
| 1398 |     0,  /* AGG_COLUMN => nothing */ | 
| 1399 |     0,  /*  TRUEFALSE => nothing */ | 
| 1400 |     0,  /*      ISNOT => nothing */ | 
| 1401 |     0,  /*   FUNCTION => nothing */ | 
| 1402 |     0,  /*     UMINUS => nothing */ | 
| 1403 |     0,  /*      UPLUS => nothing */ | 
| 1404 |     0,  /*      TRUTH => nothing */ | 
| 1405 |     0,  /*   REGISTER => nothing */ | 
| 1406 |     0,  /*     VECTOR => nothing */ | 
| 1407 |     0,  /* SELECT_COLUMN => nothing */ | 
| 1408 |     0,  /* IF_NULL_ROW => nothing */ | 
| 1409 |     0,  /*   ASTERISK => nothing */ | 
| 1410 |     0,  /*       SPAN => nothing */ | 
| 1411 |     0,  /*      ERROR => nothing */ | 
| 1412 |     0,  /*      SPACE => nothing */ | 
| 1413 |     0,  /*    ILLEGAL => nothing */ | 
| 1414 | }; | 
| 1415 | #endif /* YYFALLBACK */ | 
| 1416 |  | 
| 1417 | /* The following structure represents a single element of the | 
| 1418 | ** parser's stack.  Information stored includes: | 
| 1419 | ** | 
| 1420 | **   +  The state number for the parser at this level of the stack. | 
| 1421 | ** | 
| 1422 | **   +  The value of the token stored at this level of the stack. | 
| 1423 | **      (In other words, the "major" token.) | 
| 1424 | ** | 
| 1425 | **   +  The semantic value stored at this level of the stack.  This is | 
| 1426 | **      the information used by the action routines in the grammar. | 
| 1427 | **      It is sometimes called the "minor" token. | 
| 1428 | ** | 
| 1429 | ** After the "shift" half of a SHIFTREDUCE action, the stateno field | 
| 1430 | ** actually contains the reduce action for the second half of the | 
| 1431 | ** SHIFTREDUCE. | 
| 1432 | */ | 
| 1433 | struct yyStackEntry { | 
| 1434 |   YYACTIONTYPE stateno;  /* The state-number, or reduce action in SHIFTREDUCE */ | 
| 1435 |   YYCODETYPE major;      /* The major token value.  This is the code | 
| 1436 |                          ** number for the token at this stack level */ | 
| 1437 |   YYMINORTYPE minor;     /* The user-supplied minor token value.  This | 
| 1438 |                          ** is the value of the token  */ | 
| 1439 | }; | 
| 1440 | typedef struct yyStackEntry yyStackEntry; | 
| 1441 |  | 
| 1442 | /* The state of the parser is completely contained in an instance of | 
| 1443 | ** the following structure */ | 
| 1444 | struct yyParser { | 
| 1445 |   yyStackEntry *yytos;          /* Pointer to top element of the stack */ | 
| 1446 | #ifdef YYTRACKMAXSTACKDEPTH | 
| 1447 |   int yyhwm;                    /* High-water mark of the stack */ | 
| 1448 | #endif | 
| 1449 | #ifndef YYNOERRORRECOVERY | 
| 1450 |   int yyerrcnt;                 /* Shifts left before out of the error */ | 
| 1451 | #endif | 
| 1452 |   sqlite3ParserARG_SDECL                /* A place to hold %extra_argument */ | 
| 1453 |   sqlite3ParserCTX_SDECL                /* A place to hold %extra_context */ | 
| 1454 | #if YYSTACKDEPTH<=0 | 
| 1455 |   int yystksz;                  /* Current side of the stack */ | 
| 1456 |   yyStackEntry *yystack;        /* The parser's stack */ | 
| 1457 |   yyStackEntry yystk0;          /* First stack entry */ | 
| 1458 | #else | 
| 1459 |   yyStackEntry yystack[YYSTACKDEPTH];  /* The parser's stack */ | 
| 1460 |   yyStackEntry *yystackEnd;            /* Last entry in the stack */ | 
| 1461 | #endif | 
| 1462 | }; | 
| 1463 | typedef struct yyParser yyParser; | 
| 1464 |  | 
| 1465 | #include <assert.h> | 
| 1466 | #ifndef NDEBUG | 
| 1467 | #include <stdio.h> | 
| 1468 | static FILE *yyTraceFILE = 0; | 
| 1469 | static char *yyTracePrompt = 0; | 
| 1470 | #endif /* NDEBUG */ | 
| 1471 |  | 
| 1472 | #ifndef NDEBUG | 
| 1473 | /*  | 
| 1474 | ** Turn parser tracing on by giving a stream to which to write the trace | 
| 1475 | ** and a prompt to preface each trace message.  Tracing is turned off | 
| 1476 | ** by making either argument NULL  | 
| 1477 | ** | 
| 1478 | ** Inputs: | 
| 1479 | ** <ul> | 
| 1480 | ** <li> A FILE* to which trace output should be written. | 
| 1481 | **      If NULL, then tracing is turned off. | 
| 1482 | ** <li> A prefix string written at the beginning of every | 
| 1483 | **      line of trace output.  If NULL, then tracing is | 
| 1484 | **      turned off. | 
| 1485 | ** </ul> | 
| 1486 | ** | 
| 1487 | ** Outputs: | 
| 1488 | ** None. | 
| 1489 | */ | 
| 1490 | void sqlite3ParserTrace(FILE *TraceFILE, char *zTracePrompt){ | 
| 1491 |   yyTraceFILE = TraceFILE; | 
| 1492 |   yyTracePrompt = zTracePrompt; | 
| 1493 |   if( yyTraceFILE==0 ) yyTracePrompt = 0; | 
| 1494 |   else if( yyTracePrompt==0 ) yyTraceFILE = 0; | 
| 1495 | } | 
| 1496 | #endif /* NDEBUG */ | 
| 1497 |  | 
| 1498 | #if defined(YYCOVERAGE) || !defined(NDEBUG) | 
| 1499 | /* For tracing shifts, the names of all terminals and nonterminals | 
| 1500 | ** are required.  The following table supplies these names */ | 
| 1501 | static const char *const yyTokenName[] = {  | 
| 1502 |   /*    0 */ "$" , | 
| 1503 |   /*    1 */ "SEMI" , | 
| 1504 |   /*    2 */ "EXPLAIN" , | 
| 1505 |   /*    3 */ "QUERY" , | 
| 1506 |   /*    4 */ "PLAN" , | 
| 1507 |   /*    5 */ "BEGIN" , | 
| 1508 |   /*    6 */ "TRANSACTION" , | 
| 1509 |   /*    7 */ "DEFERRED" , | 
| 1510 |   /*    8 */ "IMMEDIATE" , | 
| 1511 |   /*    9 */ "EXCLUSIVE" , | 
| 1512 |   /*   10 */ "COMMIT" , | 
| 1513 |   /*   11 */ "END" , | 
| 1514 |   /*   12 */ "ROLLBACK" , | 
| 1515 |   /*   13 */ "SAVEPOINT" , | 
| 1516 |   /*   14 */ "RELEASE" , | 
| 1517 |   /*   15 */ "TO" , | 
| 1518 |   /*   16 */ "TABLE" , | 
| 1519 |   /*   17 */ "CREATE" , | 
| 1520 |   /*   18 */ "IF" , | 
| 1521 |   /*   19 */ "NOT" , | 
| 1522 |   /*   20 */ "EXISTS" , | 
| 1523 |   /*   21 */ "TEMP" , | 
| 1524 |   /*   22 */ "LP" , | 
| 1525 |   /*   23 */ "RP" , | 
| 1526 |   /*   24 */ "AS" , | 
| 1527 |   /*   25 */ "COMMA" , | 
| 1528 |   /*   26 */ "WITHOUT" , | 
| 1529 |   /*   27 */ "ABORT" , | 
| 1530 |   /*   28 */ "ACTION" , | 
| 1531 |   /*   29 */ "AFTER" , | 
| 1532 |   /*   30 */ "ANALYZE" , | 
| 1533 |   /*   31 */ "ASC" , | 
| 1534 |   /*   32 */ "ATTACH" , | 
| 1535 |   /*   33 */ "BEFORE" , | 
| 1536 |   /*   34 */ "BY" , | 
| 1537 |   /*   35 */ "CASCADE" , | 
| 1538 |   /*   36 */ "CAST" , | 
| 1539 |   /*   37 */ "CONFLICT" , | 
| 1540 |   /*   38 */ "DATABASE" , | 
| 1541 |   /*   39 */ "DESC" , | 
| 1542 |   /*   40 */ "DETACH" , | 
| 1543 |   /*   41 */ "EACH" , | 
| 1544 |   /*   42 */ "FAIL" , | 
| 1545 |   /*   43 */ "OR" , | 
| 1546 |   /*   44 */ "AND" , | 
| 1547 |   /*   45 */ "IS" , | 
| 1548 |   /*   46 */ "MATCH" , | 
| 1549 |   /*   47 */ "LIKE_KW" , | 
| 1550 |   /*   48 */ "BETWEEN" , | 
| 1551 |   /*   49 */ "IN" , | 
| 1552 |   /*   50 */ "ISNULL" , | 
| 1553 |   /*   51 */ "NOTNULL" , | 
| 1554 |   /*   52 */ "NE" , | 
| 1555 |   /*   53 */ "EQ" , | 
| 1556 |   /*   54 */ "GT" , | 
| 1557 |   /*   55 */ "LE" , | 
| 1558 |   /*   56 */ "LT" , | 
| 1559 |   /*   57 */ "GE" , | 
| 1560 |   /*   58 */ "ESCAPE" , | 
| 1561 |   /*   59 */ "ID" , | 
| 1562 |   /*   60 */ "COLUMNKW" , | 
| 1563 |   /*   61 */ "DO" , | 
| 1564 |   /*   62 */ "FOR" , | 
| 1565 |   /*   63 */ "IGNORE" , | 
| 1566 |   /*   64 */ "INITIALLY" , | 
| 1567 |   /*   65 */ "INSTEAD" , | 
| 1568 |   /*   66 */ "NO" , | 
| 1569 |   /*   67 */ "KEY" , | 
| 1570 |   /*   68 */ "OF" , | 
| 1571 |   /*   69 */ "OFFSET" , | 
| 1572 |   /*   70 */ "PRAGMA" , | 
| 1573 |   /*   71 */ "RAISE" , | 
| 1574 |   /*   72 */ "RECURSIVE" , | 
| 1575 |   /*   73 */ "REPLACE" , | 
| 1576 |   /*   74 */ "RESTRICT" , | 
| 1577 |   /*   75 */ "ROW" , | 
| 1578 |   /*   76 */ "ROWS" , | 
| 1579 |   /*   77 */ "TRIGGER" , | 
| 1580 |   /*   78 */ "VACUUM" , | 
| 1581 |   /*   79 */ "VIEW" , | 
| 1582 |   /*   80 */ "VIRTUAL" , | 
| 1583 |   /*   81 */ "WITH" , | 
| 1584 |   /*   82 */ "NULLS" , | 
| 1585 |   /*   83 */ "FIRST" , | 
| 1586 |   /*   84 */ "LAST" , | 
| 1587 |   /*   85 */ "CURRENT" , | 
| 1588 |   /*   86 */ "FOLLOWING" , | 
| 1589 |   /*   87 */ "PARTITION" , | 
| 1590 |   /*   88 */ "PRECEDING" , | 
| 1591 |   /*   89 */ "RANGE" , | 
| 1592 |   /*   90 */ "UNBOUNDED" , | 
| 1593 |   /*   91 */ "EXCLUDE" , | 
| 1594 |   /*   92 */ "GROUPS" , | 
| 1595 |   /*   93 */ "OTHERS" , | 
| 1596 |   /*   94 */ "TIES" , | 
| 1597 |   /*   95 */ "GENERATED" , | 
| 1598 |   /*   96 */ "ALWAYS" , | 
| 1599 |   /*   97 */ "MATERIALIZED" , | 
| 1600 |   /*   98 */ "REINDEX" , | 
| 1601 |   /*   99 */ "RENAME" , | 
| 1602 |   /*  100 */ "CTIME_KW" , | 
| 1603 |   /*  101 */ "ANY" , | 
| 1604 |   /*  102 */ "BITAND" , | 
| 1605 |   /*  103 */ "BITOR" , | 
| 1606 |   /*  104 */ "LSHIFT" , | 
| 1607 |   /*  105 */ "RSHIFT" , | 
| 1608 |   /*  106 */ "PLUS" , | 
| 1609 |   /*  107 */ "MINUS" , | 
| 1610 |   /*  108 */ "STAR" , | 
| 1611 |   /*  109 */ "SLASH" , | 
| 1612 |   /*  110 */ "REM" , | 
| 1613 |   /*  111 */ "CONCAT" , | 
| 1614 |   /*  112 */ "PTR" , | 
| 1615 |   /*  113 */ "COLLATE" , | 
| 1616 |   /*  114 */ "BITNOT" , | 
| 1617 |   /*  115 */ "ON" , | 
| 1618 |   /*  116 */ "INDEXED" , | 
| 1619 |   /*  117 */ "STRING" , | 
| 1620 |   /*  118 */ "JOIN_KW" , | 
| 1621 |   /*  119 */ "CONSTRAINT" , | 
| 1622 |   /*  120 */ "DEFAULT" , | 
| 1623 |   /*  121 */ "NULL" , | 
| 1624 |   /*  122 */ "PRIMARY" , | 
| 1625 |   /*  123 */ "UNIQUE" , | 
| 1626 |   /*  124 */ "CHECK" , | 
| 1627 |   /*  125 */ "REFERENCES" , | 
| 1628 |   /*  126 */ "AUTOINCR" , | 
| 1629 |   /*  127 */ "INSERT" , | 
| 1630 |   /*  128 */ "DELETE" , | 
| 1631 |   /*  129 */ "UPDATE" , | 
| 1632 |   /*  130 */ "SET" , | 
| 1633 |   /*  131 */ "DEFERRABLE" , | 
| 1634 |   /*  132 */ "FOREIGN" , | 
| 1635 |   /*  133 */ "DROP" , | 
| 1636 |   /*  134 */ "UNION" , | 
| 1637 |   /*  135 */ "ALL" , | 
| 1638 |   /*  136 */ "EXCEPT" , | 
| 1639 |   /*  137 */ "INTERSECT" , | 
| 1640 |   /*  138 */ "SELECT" , | 
| 1641 |   /*  139 */ "VALUES" , | 
| 1642 |   /*  140 */ "DISTINCT" , | 
| 1643 |   /*  141 */ "DOT" , | 
| 1644 |   /*  142 */ "FROM" , | 
| 1645 |   /*  143 */ "JOIN" , | 
| 1646 |   /*  144 */ "USING" , | 
| 1647 |   /*  145 */ "ORDER" , | 
| 1648 |   /*  146 */ "GROUP" , | 
| 1649 |   /*  147 */ "HAVING" , | 
| 1650 |   /*  148 */ "LIMIT" , | 
| 1651 |   /*  149 */ "WHERE" , | 
| 1652 |   /*  150 */ "RETURNING" , | 
| 1653 |   /*  151 */ "INTO" , | 
| 1654 |   /*  152 */ "NOTHING" , | 
| 1655 |   /*  153 */ "FLOAT" , | 
| 1656 |   /*  154 */ "BLOB" , | 
| 1657 |   /*  155 */ "INTEGER" , | 
| 1658 |   /*  156 */ "VARIABLE" , | 
| 1659 |   /*  157 */ "CASE" , | 
| 1660 |   /*  158 */ "WHEN" , | 
| 1661 |   /*  159 */ "THEN" , | 
| 1662 |   /*  160 */ "ELSE" , | 
| 1663 |   /*  161 */ "INDEX" , | 
| 1664 |   /*  162 */ "ALTER" , | 
| 1665 |   /*  163 */ "ADD" , | 
| 1666 |   /*  164 */ "WINDOW" , | 
| 1667 |   /*  165 */ "OVER" , | 
| 1668 |   /*  166 */ "FILTER" , | 
| 1669 |   /*  167 */ "COLUMN" , | 
| 1670 |   /*  168 */ "AGG_FUNCTION" , | 
| 1671 |   /*  169 */ "AGG_COLUMN" , | 
| 1672 |   /*  170 */ "TRUEFALSE" , | 
| 1673 |   /*  171 */ "ISNOT" , | 
| 1674 |   /*  172 */ "FUNCTION" , | 
| 1675 |   /*  173 */ "UMINUS" , | 
| 1676 |   /*  174 */ "UPLUS" , | 
| 1677 |   /*  175 */ "TRUTH" , | 
| 1678 |   /*  176 */ "REGISTER" , | 
| 1679 |   /*  177 */ "VECTOR" , | 
| 1680 |   /*  178 */ "SELECT_COLUMN" , | 
| 1681 |   /*  179 */ "IF_NULL_ROW" , | 
| 1682 |   /*  180 */ "ASTERISK" , | 
| 1683 |   /*  181 */ "SPAN" , | 
| 1684 |   /*  182 */ "ERROR" , | 
| 1685 |   /*  183 */ "SPACE" , | 
| 1686 |   /*  184 */ "ILLEGAL" , | 
| 1687 |   /*  185 */ "input" , | 
| 1688 |   /*  186 */ "cmdlist" , | 
| 1689 |   /*  187 */ "ecmd" , | 
| 1690 |   /*  188 */ "cmdx" , | 
| 1691 |   /*  189 */ "explain" , | 
| 1692 |   /*  190 */ "cmd" , | 
| 1693 |   /*  191 */ "transtype" , | 
| 1694 |   /*  192 */ "trans_opt" , | 
| 1695 |   /*  193 */ "nm" , | 
| 1696 |   /*  194 */ "savepoint_opt" , | 
| 1697 |   /*  195 */ "create_table" , | 
| 1698 |   /*  196 */ "create_table_args" , | 
| 1699 |   /*  197 */ "createkw" , | 
| 1700 |   /*  198 */ "temp" , | 
| 1701 |   /*  199 */ "ifnotexists" , | 
| 1702 |   /*  200 */ "dbnm" , | 
| 1703 |   /*  201 */ "columnlist" , | 
| 1704 |   /*  202 */ "conslist_opt" , | 
| 1705 |   /*  203 */ "table_option_set" , | 
| 1706 |   /*  204 */ "select" , | 
| 1707 |   /*  205 */ "table_option" , | 
| 1708 |   /*  206 */ "columnname" , | 
| 1709 |   /*  207 */ "carglist" , | 
| 1710 |   /*  208 */ "typetoken" , | 
| 1711 |   /*  209 */ "typename" , | 
| 1712 |   /*  210 */ "signed" , | 
| 1713 |   /*  211 */ "plus_num" , | 
| 1714 |   /*  212 */ "minus_num" , | 
| 1715 |   /*  213 */ "scanpt" , | 
| 1716 |   /*  214 */ "scantok" , | 
| 1717 |   /*  215 */ "ccons" , | 
| 1718 |   /*  216 */ "term" , | 
| 1719 |   /*  217 */ "expr" , | 
| 1720 |   /*  218 */ "onconf" , | 
| 1721 |   /*  219 */ "sortorder" , | 
| 1722 |   /*  220 */ "autoinc" , | 
| 1723 |   /*  221 */ "eidlist_opt" , | 
| 1724 |   /*  222 */ "refargs" , | 
| 1725 |   /*  223 */ "defer_subclause" , | 
| 1726 |   /*  224 */ "generated" , | 
| 1727 |   /*  225 */ "refarg" , | 
| 1728 |   /*  226 */ "refact" , | 
| 1729 |   /*  227 */ "init_deferred_pred_opt" , | 
| 1730 |   /*  228 */ "conslist" , | 
| 1731 |   /*  229 */ "tconscomma" , | 
| 1732 |   /*  230 */ "tcons" , | 
| 1733 |   /*  231 */ "sortlist" , | 
| 1734 |   /*  232 */ "eidlist" , | 
| 1735 |   /*  233 */ "defer_subclause_opt" , | 
| 1736 |   /*  234 */ "orconf" , | 
| 1737 |   /*  235 */ "resolvetype" , | 
| 1738 |   /*  236 */ "raisetype" , | 
| 1739 |   /*  237 */ "ifexists" , | 
| 1740 |   /*  238 */ "fullname" , | 
| 1741 |   /*  239 */ "selectnowith" , | 
| 1742 |   /*  240 */ "oneselect" , | 
| 1743 |   /*  241 */ "wqlist" , | 
| 1744 |   /*  242 */ "multiselect_op" , | 
| 1745 |   /*  243 */ "distinct" , | 
| 1746 |   /*  244 */ "selcollist" , | 
| 1747 |   /*  245 */ "from" , | 
| 1748 |   /*  246 */ "where_opt" , | 
| 1749 |   /*  247 */ "groupby_opt" , | 
| 1750 |   /*  248 */ "having_opt" , | 
| 1751 |   /*  249 */ "orderby_opt" , | 
| 1752 |   /*  250 */ "limit_opt" , | 
| 1753 |   /*  251 */ "window_clause" , | 
| 1754 |   /*  252 */ "values" , | 
| 1755 |   /*  253 */ "nexprlist" , | 
| 1756 |   /*  254 */ "sclp" , | 
| 1757 |   /*  255 */ "as" , | 
| 1758 |   /*  256 */ "seltablist" , | 
| 1759 |   /*  257 */ "stl_prefix" , | 
| 1760 |   /*  258 */ "joinop" , | 
| 1761 |   /*  259 */ "on_using" , | 
| 1762 |   /*  260 */ "indexed_by" , | 
| 1763 |   /*  261 */ "exprlist" , | 
| 1764 |   /*  262 */ "xfullname" , | 
| 1765 |   /*  263 */ "idlist" , | 
| 1766 |   /*  264 */ "indexed_opt" , | 
| 1767 |   /*  265 */ "nulls" , | 
| 1768 |   /*  266 */ "with" , | 
| 1769 |   /*  267 */ "where_opt_ret" , | 
| 1770 |   /*  268 */ "setlist" , | 
| 1771 |   /*  269 */ "insert_cmd" , | 
| 1772 |   /*  270 */ "idlist_opt" , | 
| 1773 |   /*  271 */ "upsert" , | 
| 1774 |   /*  272 */ "returning" , | 
| 1775 |   /*  273 */ "filter_over" , | 
| 1776 |   /*  274 */ "likeop" , | 
| 1777 |   /*  275 */ "between_op" , | 
| 1778 |   /*  276 */ "in_op" , | 
| 1779 |   /*  277 */ "paren_exprlist" , | 
| 1780 |   /*  278 */ "case_operand" , | 
| 1781 |   /*  279 */ "case_exprlist" , | 
| 1782 |   /*  280 */ "case_else" , | 
| 1783 |   /*  281 */ "uniqueflag" , | 
| 1784 |   /*  282 */ "collate" , | 
| 1785 |   /*  283 */ "vinto" , | 
| 1786 |   /*  284 */ "nmnum" , | 
| 1787 |   /*  285 */ "trigger_decl" , | 
| 1788 |   /*  286 */ "trigger_cmd_list" , | 
| 1789 |   /*  287 */ "trigger_time" , | 
| 1790 |   /*  288 */ "trigger_event" , | 
| 1791 |   /*  289 */ "foreach_clause" , | 
| 1792 |   /*  290 */ "when_clause" , | 
| 1793 |   /*  291 */ "trigger_cmd" , | 
| 1794 |   /*  292 */ "trnm" , | 
| 1795 |   /*  293 */ "tridxby" , | 
| 1796 |   /*  294 */ "database_kw_opt" , | 
| 1797 |   /*  295 */ "key_opt" , | 
| 1798 |   /*  296 */ "add_column_fullname" , | 
| 1799 |   /*  297 */ "kwcolumn_opt" , | 
| 1800 |   /*  298 */ "create_vtab" , | 
| 1801 |   /*  299 */ "vtabarglist" , | 
| 1802 |   /*  300 */ "vtabarg" , | 
| 1803 |   /*  301 */ "vtabargtoken" , | 
| 1804 |   /*  302 */ "lp" , | 
| 1805 |   /*  303 */ "anylist" , | 
| 1806 |   /*  304 */ "wqitem" , | 
| 1807 |   /*  305 */ "wqas" , | 
| 1808 |   /*  306 */ "windowdefn_list" , | 
| 1809 |   /*  307 */ "windowdefn" , | 
| 1810 |   /*  308 */ "window" , | 
| 1811 |   /*  309 */ "frame_opt" , | 
| 1812 |   /*  310 */ "part_opt" , | 
| 1813 |   /*  311 */ "filter_clause" , | 
| 1814 |   /*  312 */ "over_clause" , | 
| 1815 |   /*  313 */ "range_or_rows" , | 
| 1816 |   /*  314 */ "frame_bound" , | 
| 1817 |   /*  315 */ "frame_bound_s" , | 
| 1818 |   /*  316 */ "frame_bound_e" , | 
| 1819 |   /*  317 */ "frame_exclude_opt" , | 
| 1820 |   /*  318 */ "frame_exclude" , | 
| 1821 | }; | 
| 1822 | #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ | 
| 1823 |  | 
| 1824 | #ifndef NDEBUG | 
| 1825 | /* For tracing reduce actions, the names of all rules are required. | 
| 1826 | */ | 
| 1827 | static const char *const yyRuleName[] = { | 
| 1828 |  /*   0 */ "explain ::= EXPLAIN" , | 
| 1829 |  /*   1 */ "explain ::= EXPLAIN QUERY PLAN" , | 
| 1830 |  /*   2 */ "cmdx ::= cmd" , | 
| 1831 |  /*   3 */ "cmd ::= BEGIN transtype trans_opt" , | 
| 1832 |  /*   4 */ "transtype ::=" , | 
| 1833 |  /*   5 */ "transtype ::= DEFERRED" , | 
| 1834 |  /*   6 */ "transtype ::= IMMEDIATE" , | 
| 1835 |  /*   7 */ "transtype ::= EXCLUSIVE" , | 
| 1836 |  /*   8 */ "cmd ::= COMMIT|END trans_opt" , | 
| 1837 |  /*   9 */ "cmd ::= ROLLBACK trans_opt" , | 
| 1838 |  /*  10 */ "cmd ::= SAVEPOINT nm" , | 
| 1839 |  /*  11 */ "cmd ::= RELEASE savepoint_opt nm" , | 
| 1840 |  /*  12 */ "cmd ::= ROLLBACK trans_opt TO savepoint_opt nm" , | 
| 1841 |  /*  13 */ "create_table ::= createkw temp TABLE ifnotexists nm dbnm" , | 
| 1842 |  /*  14 */ "createkw ::= CREATE" , | 
| 1843 |  /*  15 */ "ifnotexists ::=" , | 
| 1844 |  /*  16 */ "ifnotexists ::= IF NOT EXISTS" , | 
| 1845 |  /*  17 */ "temp ::= TEMP" , | 
| 1846 |  /*  18 */ "temp ::=" , | 
| 1847 |  /*  19 */ "create_table_args ::= LP columnlist conslist_opt RP table_option_set" , | 
| 1848 |  /*  20 */ "create_table_args ::= AS select" , | 
| 1849 |  /*  21 */ "table_option_set ::=" , | 
| 1850 |  /*  22 */ "table_option_set ::= table_option_set COMMA table_option" , | 
| 1851 |  /*  23 */ "table_option ::= WITHOUT nm" , | 
| 1852 |  /*  24 */ "table_option ::= nm" , | 
| 1853 |  /*  25 */ "columnname ::= nm typetoken" , | 
| 1854 |  /*  26 */ "typetoken ::=" , | 
| 1855 |  /*  27 */ "typetoken ::= typename LP signed RP" , | 
| 1856 |  /*  28 */ "typetoken ::= typename LP signed COMMA signed RP" , | 
| 1857 |  /*  29 */ "typename ::= typename ID|STRING" , | 
| 1858 |  /*  30 */ "scanpt ::=" , | 
| 1859 |  /*  31 */ "scantok ::=" , | 
| 1860 |  /*  32 */ "ccons ::= CONSTRAINT nm" , | 
| 1861 |  /*  33 */ "ccons ::= DEFAULT scantok term" , | 
| 1862 |  /*  34 */ "ccons ::= DEFAULT LP expr RP" , | 
| 1863 |  /*  35 */ "ccons ::= DEFAULT PLUS scantok term" , | 
| 1864 |  /*  36 */ "ccons ::= DEFAULT MINUS scantok term" , | 
| 1865 |  /*  37 */ "ccons ::= DEFAULT scantok ID|INDEXED" , | 
| 1866 |  /*  38 */ "ccons ::= NOT NULL onconf" , | 
| 1867 |  /*  39 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc" , | 
| 1868 |  /*  40 */ "ccons ::= UNIQUE onconf" , | 
| 1869 |  /*  41 */ "ccons ::= CHECK LP expr RP" , | 
| 1870 |  /*  42 */ "ccons ::= REFERENCES nm eidlist_opt refargs" , | 
| 1871 |  /*  43 */ "ccons ::= defer_subclause" , | 
| 1872 |  /*  44 */ "ccons ::= COLLATE ID|STRING" , | 
| 1873 |  /*  45 */ "generated ::= LP expr RP" , | 
| 1874 |  /*  46 */ "generated ::= LP expr RP ID" , | 
| 1875 |  /*  47 */ "autoinc ::=" , | 
| 1876 |  /*  48 */ "autoinc ::= AUTOINCR" , | 
| 1877 |  /*  49 */ "refargs ::=" , | 
| 1878 |  /*  50 */ "refargs ::= refargs refarg" , | 
| 1879 |  /*  51 */ "refarg ::= MATCH nm" , | 
| 1880 |  /*  52 */ "refarg ::= ON INSERT refact" , | 
| 1881 |  /*  53 */ "refarg ::= ON DELETE refact" , | 
| 1882 |  /*  54 */ "refarg ::= ON UPDATE refact" , | 
| 1883 |  /*  55 */ "refact ::= SET NULL" , | 
| 1884 |  /*  56 */ "refact ::= SET DEFAULT" , | 
| 1885 |  /*  57 */ "refact ::= CASCADE" , | 
| 1886 |  /*  58 */ "refact ::= RESTRICT" , | 
| 1887 |  /*  59 */ "refact ::= NO ACTION" , | 
| 1888 |  /*  60 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt" , | 
| 1889 |  /*  61 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt" , | 
| 1890 |  /*  62 */ "init_deferred_pred_opt ::=" , | 
| 1891 |  /*  63 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED" , | 
| 1892 |  /*  64 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE" , | 
| 1893 |  /*  65 */ "conslist_opt ::=" , | 
| 1894 |  /*  66 */ "tconscomma ::= COMMA" , | 
| 1895 |  /*  67 */ "tcons ::= CONSTRAINT nm" , | 
| 1896 |  /*  68 */ "tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf" , | 
| 1897 |  /*  69 */ "tcons ::= UNIQUE LP sortlist RP onconf" , | 
| 1898 |  /*  70 */ "tcons ::= CHECK LP expr RP onconf" , | 
| 1899 |  /*  71 */ "tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt" , | 
| 1900 |  /*  72 */ "defer_subclause_opt ::=" , | 
| 1901 |  /*  73 */ "onconf ::=" , | 
| 1902 |  /*  74 */ "onconf ::= ON CONFLICT resolvetype" , | 
| 1903 |  /*  75 */ "orconf ::=" , | 
| 1904 |  /*  76 */ "orconf ::= OR resolvetype" , | 
| 1905 |  /*  77 */ "resolvetype ::= IGNORE" , | 
| 1906 |  /*  78 */ "resolvetype ::= REPLACE" , | 
| 1907 |  /*  79 */ "cmd ::= DROP TABLE ifexists fullname" , | 
| 1908 |  /*  80 */ "ifexists ::= IF EXISTS" , | 
| 1909 |  /*  81 */ "ifexists ::=" , | 
| 1910 |  /*  82 */ "cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select" , | 
| 1911 |  /*  83 */ "cmd ::= DROP VIEW ifexists fullname" , | 
| 1912 |  /*  84 */ "cmd ::= select" , | 
| 1913 |  /*  85 */ "select ::= WITH wqlist selectnowith" , | 
| 1914 |  /*  86 */ "select ::= WITH RECURSIVE wqlist selectnowith" , | 
| 1915 |  /*  87 */ "select ::= selectnowith" , | 
| 1916 |  /*  88 */ "selectnowith ::= selectnowith multiselect_op oneselect" , | 
| 1917 |  /*  89 */ "multiselect_op ::= UNION" , | 
| 1918 |  /*  90 */ "multiselect_op ::= UNION ALL" , | 
| 1919 |  /*  91 */ "multiselect_op ::= EXCEPT|INTERSECT" , | 
| 1920 |  /*  92 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt" , | 
| 1921 |  /*  93 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt" , | 
| 1922 |  /*  94 */ "values ::= VALUES LP nexprlist RP" , | 
| 1923 |  /*  95 */ "values ::= values COMMA LP nexprlist RP" , | 
| 1924 |  /*  96 */ "distinct ::= DISTINCT" , | 
| 1925 |  /*  97 */ "distinct ::= ALL" , | 
| 1926 |  /*  98 */ "distinct ::=" , | 
| 1927 |  /*  99 */ "sclp ::=" , | 
| 1928 |  /* 100 */ "selcollist ::= sclp scanpt expr scanpt as" , | 
| 1929 |  /* 101 */ "selcollist ::= sclp scanpt STAR" , | 
| 1930 |  /* 102 */ "selcollist ::= sclp scanpt nm DOT STAR" , | 
| 1931 |  /* 103 */ "as ::= AS nm" , | 
| 1932 |  /* 104 */ "as ::=" , | 
| 1933 |  /* 105 */ "from ::=" , | 
| 1934 |  /* 106 */ "from ::= FROM seltablist" , | 
| 1935 |  /* 107 */ "stl_prefix ::= seltablist joinop" , | 
| 1936 |  /* 108 */ "stl_prefix ::=" , | 
| 1937 |  /* 109 */ "seltablist ::= stl_prefix nm dbnm as on_using" , | 
| 1938 |  /* 110 */ "seltablist ::= stl_prefix nm dbnm as indexed_by on_using" , | 
| 1939 |  /* 111 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_using" , | 
| 1940 |  /* 112 */ "seltablist ::= stl_prefix LP select RP as on_using" , | 
| 1941 |  /* 113 */ "seltablist ::= stl_prefix LP seltablist RP as on_using" , | 
| 1942 |  /* 114 */ "dbnm ::=" , | 
| 1943 |  /* 115 */ "dbnm ::= DOT nm" , | 
| 1944 |  /* 116 */ "fullname ::= nm" , | 
| 1945 |  /* 117 */ "fullname ::= nm DOT nm" , | 
| 1946 |  /* 118 */ "xfullname ::= nm" , | 
| 1947 |  /* 119 */ "xfullname ::= nm DOT nm" , | 
| 1948 |  /* 120 */ "xfullname ::= nm DOT nm AS nm" , | 
| 1949 |  /* 121 */ "xfullname ::= nm AS nm" , | 
| 1950 |  /* 122 */ "joinop ::= COMMA|JOIN" , | 
| 1951 |  /* 123 */ "joinop ::= JOIN_KW JOIN" , | 
| 1952 |  /* 124 */ "joinop ::= JOIN_KW nm JOIN" , | 
| 1953 |  /* 125 */ "joinop ::= JOIN_KW nm nm JOIN" , | 
| 1954 |  /* 126 */ "on_using ::= ON expr" , | 
| 1955 |  /* 127 */ "on_using ::= USING LP idlist RP" , | 
| 1956 |  /* 128 */ "on_using ::=" , | 
| 1957 |  /* 129 */ "indexed_opt ::=" , | 
| 1958 |  /* 130 */ "indexed_by ::= INDEXED BY nm" , | 
| 1959 |  /* 131 */ "indexed_by ::= NOT INDEXED" , | 
| 1960 |  /* 132 */ "orderby_opt ::=" , | 
| 1961 |  /* 133 */ "orderby_opt ::= ORDER BY sortlist" , | 
| 1962 |  /* 134 */ "sortlist ::= sortlist COMMA expr sortorder nulls" , | 
| 1963 |  /* 135 */ "sortlist ::= expr sortorder nulls" , | 
| 1964 |  /* 136 */ "sortorder ::= ASC" , | 
| 1965 |  /* 137 */ "sortorder ::= DESC" , | 
| 1966 |  /* 138 */ "sortorder ::=" , | 
| 1967 |  /* 139 */ "nulls ::= NULLS FIRST" , | 
| 1968 |  /* 140 */ "nulls ::= NULLS LAST" , | 
| 1969 |  /* 141 */ "nulls ::=" , | 
| 1970 |  /* 142 */ "groupby_opt ::=" , | 
| 1971 |  /* 143 */ "groupby_opt ::= GROUP BY nexprlist" , | 
| 1972 |  /* 144 */ "having_opt ::=" , | 
| 1973 |  /* 145 */ "having_opt ::= HAVING expr" , | 
| 1974 |  /* 146 */ "limit_opt ::=" , | 
| 1975 |  /* 147 */ "limit_opt ::= LIMIT expr" , | 
| 1976 |  /* 148 */ "limit_opt ::= LIMIT expr OFFSET expr" , | 
| 1977 |  /* 149 */ "limit_opt ::= LIMIT expr COMMA expr" , | 
| 1978 |  /* 150 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret" , | 
| 1979 |  /* 151 */ "where_opt ::=" , | 
| 1980 |  /* 152 */ "where_opt ::= WHERE expr" , | 
| 1981 |  /* 153 */ "where_opt_ret ::=" , | 
| 1982 |  /* 154 */ "where_opt_ret ::= WHERE expr" , | 
| 1983 |  /* 155 */ "where_opt_ret ::= RETURNING selcollist" , | 
| 1984 |  /* 156 */ "where_opt_ret ::= WHERE expr RETURNING selcollist" , | 
| 1985 |  /* 157 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret" , | 
| 1986 |  /* 158 */ "setlist ::= setlist COMMA nm EQ expr" , | 
| 1987 |  /* 159 */ "setlist ::= setlist COMMA LP idlist RP EQ expr" , | 
| 1988 |  /* 160 */ "setlist ::= nm EQ expr" , | 
| 1989 |  /* 161 */ "setlist ::= LP idlist RP EQ expr" , | 
| 1990 |  /* 162 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert" , | 
| 1991 |  /* 163 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning" , | 
| 1992 |  /* 164 */ "upsert ::=" , | 
| 1993 |  /* 165 */ "upsert ::= RETURNING selcollist" , | 
| 1994 |  /* 166 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert" , | 
| 1995 |  /* 167 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert" , | 
| 1996 |  /* 168 */ "upsert ::= ON CONFLICT DO NOTHING returning" , | 
| 1997 |  /* 169 */ "upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning" , | 
| 1998 |  /* 170 */ "returning ::= RETURNING selcollist" , | 
| 1999 |  /* 171 */ "insert_cmd ::= INSERT orconf" , | 
| 2000 |  /* 172 */ "insert_cmd ::= REPLACE" , | 
| 2001 |  /* 173 */ "idlist_opt ::=" , | 
| 2002 |  /* 174 */ "idlist_opt ::= LP idlist RP" , | 
| 2003 |  /* 175 */ "idlist ::= idlist COMMA nm" , | 
| 2004 |  /* 176 */ "idlist ::= nm" , | 
| 2005 |  /* 177 */ "expr ::= LP expr RP" , | 
| 2006 |  /* 178 */ "expr ::= ID|INDEXED" , | 
| 2007 |  /* 179 */ "expr ::= JOIN_KW" , | 
| 2008 |  /* 180 */ "expr ::= nm DOT nm" , | 
| 2009 |  /* 181 */ "expr ::= nm DOT nm DOT nm" , | 
| 2010 |  /* 182 */ "term ::= NULL|FLOAT|BLOB" , | 
| 2011 |  /* 183 */ "term ::= STRING" , | 
| 2012 |  /* 184 */ "term ::= INTEGER" , | 
| 2013 |  /* 185 */ "expr ::= VARIABLE" , | 
| 2014 |  /* 186 */ "expr ::= expr COLLATE ID|STRING" , | 
| 2015 |  /* 187 */ "expr ::= CAST LP expr AS typetoken RP" , | 
| 2016 |  /* 188 */ "expr ::= ID|INDEXED LP distinct exprlist RP" , | 
| 2017 |  /* 189 */ "expr ::= ID|INDEXED LP STAR RP" , | 
| 2018 |  /* 190 */ "expr ::= ID|INDEXED LP distinct exprlist RP filter_over" , | 
| 2019 |  /* 191 */ "expr ::= ID|INDEXED LP STAR RP filter_over" , | 
| 2020 |  /* 192 */ "term ::= CTIME_KW" , | 
| 2021 |  /* 193 */ "expr ::= LP nexprlist COMMA expr RP" , | 
| 2022 |  /* 194 */ "expr ::= expr AND expr" , | 
| 2023 |  /* 195 */ "expr ::= expr OR expr" , | 
| 2024 |  /* 196 */ "expr ::= expr LT|GT|GE|LE expr" , | 
| 2025 |  /* 197 */ "expr ::= expr EQ|NE expr" , | 
| 2026 |  /* 198 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr" , | 
| 2027 |  /* 199 */ "expr ::= expr PLUS|MINUS expr" , | 
| 2028 |  /* 200 */ "expr ::= expr STAR|SLASH|REM expr" , | 
| 2029 |  /* 201 */ "expr ::= expr CONCAT expr" , | 
| 2030 |  /* 202 */ "likeop ::= NOT LIKE_KW|MATCH" , | 
| 2031 |  /* 203 */ "expr ::= expr likeop expr" , | 
| 2032 |  /* 204 */ "expr ::= expr likeop expr ESCAPE expr" , | 
| 2033 |  /* 205 */ "expr ::= expr ISNULL|NOTNULL" , | 
| 2034 |  /* 206 */ "expr ::= expr NOT NULL" , | 
| 2035 |  /* 207 */ "expr ::= expr IS expr" , | 
| 2036 |  /* 208 */ "expr ::= expr IS NOT expr" , | 
| 2037 |  /* 209 */ "expr ::= expr IS NOT DISTINCT FROM expr" , | 
| 2038 |  /* 210 */ "expr ::= expr IS DISTINCT FROM expr" , | 
| 2039 |  /* 211 */ "expr ::= NOT expr" , | 
| 2040 |  /* 212 */ "expr ::= BITNOT expr" , | 
| 2041 |  /* 213 */ "expr ::= PLUS|MINUS expr" , | 
| 2042 |  /* 214 */ "expr ::= expr PTR expr" , | 
| 2043 |  /* 215 */ "between_op ::= BETWEEN" , | 
| 2044 |  /* 216 */ "between_op ::= NOT BETWEEN" , | 
| 2045 |  /* 217 */ "expr ::= expr between_op expr AND expr" , | 
| 2046 |  /* 218 */ "in_op ::= IN" , | 
| 2047 |  /* 219 */ "in_op ::= NOT IN" , | 
| 2048 |  /* 220 */ "expr ::= expr in_op LP exprlist RP" , | 
| 2049 |  /* 221 */ "expr ::= LP select RP" , | 
| 2050 |  /* 222 */ "expr ::= expr in_op LP select RP" , | 
| 2051 |  /* 223 */ "expr ::= expr in_op nm dbnm paren_exprlist" , | 
| 2052 |  /* 224 */ "expr ::= EXISTS LP select RP" , | 
| 2053 |  /* 225 */ "expr ::= CASE case_operand case_exprlist case_else END" , | 
| 2054 |  /* 226 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr" , | 
| 2055 |  /* 227 */ "case_exprlist ::= WHEN expr THEN expr" , | 
| 2056 |  /* 228 */ "case_else ::= ELSE expr" , | 
| 2057 |  /* 229 */ "case_else ::=" , | 
| 2058 |  /* 230 */ "case_operand ::= expr" , | 
| 2059 |  /* 231 */ "case_operand ::=" , | 
| 2060 |  /* 232 */ "exprlist ::=" , | 
| 2061 |  /* 233 */ "nexprlist ::= nexprlist COMMA expr" , | 
| 2062 |  /* 234 */ "nexprlist ::= expr" , | 
| 2063 |  /* 235 */ "paren_exprlist ::=" , | 
| 2064 |  /* 236 */ "paren_exprlist ::= LP exprlist RP" , | 
| 2065 |  /* 237 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt" , | 
| 2066 |  /* 238 */ "uniqueflag ::= UNIQUE" , | 
| 2067 |  /* 239 */ "uniqueflag ::=" , | 
| 2068 |  /* 240 */ "eidlist_opt ::=" , | 
| 2069 |  /* 241 */ "eidlist_opt ::= LP eidlist RP" , | 
| 2070 |  /* 242 */ "eidlist ::= eidlist COMMA nm collate sortorder" , | 
| 2071 |  /* 243 */ "eidlist ::= nm collate sortorder" , | 
| 2072 |  /* 244 */ "collate ::=" , | 
| 2073 |  /* 245 */ "collate ::= COLLATE ID|STRING" , | 
| 2074 |  /* 246 */ "cmd ::= DROP INDEX ifexists fullname" , | 
| 2075 |  /* 247 */ "cmd ::= VACUUM vinto" , | 
| 2076 |  /* 248 */ "cmd ::= VACUUM nm vinto" , | 
| 2077 |  /* 249 */ "vinto ::= INTO expr" , | 
| 2078 |  /* 250 */ "vinto ::=" , | 
| 2079 |  /* 251 */ "cmd ::= PRAGMA nm dbnm" , | 
| 2080 |  /* 252 */ "cmd ::= PRAGMA nm dbnm EQ nmnum" , | 
| 2081 |  /* 253 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP" , | 
| 2082 |  /* 254 */ "cmd ::= PRAGMA nm dbnm EQ minus_num" , | 
| 2083 |  /* 255 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP" , | 
| 2084 |  /* 256 */ "plus_num ::= PLUS INTEGER|FLOAT" , | 
| 2085 |  /* 257 */ "minus_num ::= MINUS INTEGER|FLOAT" , | 
| 2086 |  /* 258 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END" , | 
| 2087 |  /* 259 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause" , | 
| 2088 |  /* 260 */ "trigger_time ::= BEFORE|AFTER" , | 
| 2089 |  /* 261 */ "trigger_time ::= INSTEAD OF" , | 
| 2090 |  /* 262 */ "trigger_time ::=" , | 
| 2091 |  /* 263 */ "trigger_event ::= DELETE|INSERT" , | 
| 2092 |  /* 264 */ "trigger_event ::= UPDATE" , | 
| 2093 |  /* 265 */ "trigger_event ::= UPDATE OF idlist" , | 
| 2094 |  /* 266 */ "when_clause ::=" , | 
| 2095 |  /* 267 */ "when_clause ::= WHEN expr" , | 
| 2096 |  /* 268 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI" , | 
| 2097 |  /* 269 */ "trigger_cmd_list ::= trigger_cmd SEMI" , | 
| 2098 |  /* 270 */ "trnm ::= nm DOT nm" , | 
| 2099 |  /* 271 */ "tridxby ::= INDEXED BY nm" , | 
| 2100 |  /* 272 */ "tridxby ::= NOT INDEXED" , | 
| 2101 |  /* 273 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt" , | 
| 2102 |  /* 274 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt" , | 
| 2103 |  /* 275 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt" , | 
| 2104 |  /* 276 */ "trigger_cmd ::= scanpt select scanpt" , | 
| 2105 |  /* 277 */ "expr ::= RAISE LP IGNORE RP" , | 
| 2106 |  /* 278 */ "expr ::= RAISE LP raisetype COMMA nm RP" , | 
| 2107 |  /* 279 */ "raisetype ::= ROLLBACK" , | 
| 2108 |  /* 280 */ "raisetype ::= ABORT" , | 
| 2109 |  /* 281 */ "raisetype ::= FAIL" , | 
| 2110 |  /* 282 */ "cmd ::= DROP TRIGGER ifexists fullname" , | 
| 2111 |  /* 283 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt" , | 
| 2112 |  /* 284 */ "cmd ::= DETACH database_kw_opt expr" , | 
| 2113 |  /* 285 */ "key_opt ::=" , | 
| 2114 |  /* 286 */ "key_opt ::= KEY expr" , | 
| 2115 |  /* 287 */ "cmd ::= REINDEX" , | 
| 2116 |  /* 288 */ "cmd ::= REINDEX nm dbnm" , | 
| 2117 |  /* 289 */ "cmd ::= ANALYZE" , | 
| 2118 |  /* 290 */ "cmd ::= ANALYZE nm dbnm" , | 
| 2119 |  /* 291 */ "cmd ::= ALTER TABLE fullname RENAME TO nm" , | 
| 2120 |  /* 292 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist" , | 
| 2121 |  /* 293 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm" , | 
| 2122 |  /* 294 */ "add_column_fullname ::= fullname" , | 
| 2123 |  /* 295 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm" , | 
| 2124 |  /* 296 */ "cmd ::= create_vtab" , | 
| 2125 |  /* 297 */ "cmd ::= create_vtab LP vtabarglist RP" , | 
| 2126 |  /* 298 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm" , | 
| 2127 |  /* 299 */ "vtabarg ::=" , | 
| 2128 |  /* 300 */ "vtabargtoken ::= ANY" , | 
| 2129 |  /* 301 */ "vtabargtoken ::= lp anylist RP" , | 
| 2130 |  /* 302 */ "lp ::= LP" , | 
| 2131 |  /* 303 */ "with ::= WITH wqlist" , | 
| 2132 |  /* 304 */ "with ::= WITH RECURSIVE wqlist" , | 
| 2133 |  /* 305 */ "wqas ::= AS" , | 
| 2134 |  /* 306 */ "wqas ::= AS MATERIALIZED" , | 
| 2135 |  /* 307 */ "wqas ::= AS NOT MATERIALIZED" , | 
| 2136 |  /* 308 */ "wqitem ::= nm eidlist_opt wqas LP select RP" , | 
| 2137 |  /* 309 */ "wqlist ::= wqitem" , | 
| 2138 |  /* 310 */ "wqlist ::= wqlist COMMA wqitem" , | 
| 2139 |  /* 311 */ "windowdefn_list ::= windowdefn" , | 
| 2140 |  /* 312 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn" , | 
| 2141 |  /* 313 */ "windowdefn ::= nm AS LP window RP" , | 
| 2142 |  /* 314 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt" , | 
| 2143 |  /* 315 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt" , | 
| 2144 |  /* 316 */ "window ::= ORDER BY sortlist frame_opt" , | 
| 2145 |  /* 317 */ "window ::= nm ORDER BY sortlist frame_opt" , | 
| 2146 |  /* 318 */ "window ::= frame_opt" , | 
| 2147 |  /* 319 */ "window ::= nm frame_opt" , | 
| 2148 |  /* 320 */ "frame_opt ::=" , | 
| 2149 |  /* 321 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt" , | 
| 2150 |  /* 322 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt" , | 
| 2151 |  /* 323 */ "range_or_rows ::= RANGE|ROWS|GROUPS" , | 
| 2152 |  /* 324 */ "frame_bound_s ::= frame_bound" , | 
| 2153 |  /* 325 */ "frame_bound_s ::= UNBOUNDED PRECEDING" , | 
| 2154 |  /* 326 */ "frame_bound_e ::= frame_bound" , | 
| 2155 |  /* 327 */ "frame_bound_e ::= UNBOUNDED FOLLOWING" , | 
| 2156 |  /* 328 */ "frame_bound ::= expr PRECEDING|FOLLOWING" , | 
| 2157 |  /* 329 */ "frame_bound ::= CURRENT ROW" , | 
| 2158 |  /* 330 */ "frame_exclude_opt ::=" , | 
| 2159 |  /* 331 */ "frame_exclude_opt ::= EXCLUDE frame_exclude" , | 
| 2160 |  /* 332 */ "frame_exclude ::= NO OTHERS" , | 
| 2161 |  /* 333 */ "frame_exclude ::= CURRENT ROW" , | 
| 2162 |  /* 334 */ "frame_exclude ::= GROUP|TIES" , | 
| 2163 |  /* 335 */ "window_clause ::= WINDOW windowdefn_list" , | 
| 2164 |  /* 336 */ "filter_over ::= filter_clause over_clause" , | 
| 2165 |  /* 337 */ "filter_over ::= over_clause" , | 
| 2166 |  /* 338 */ "filter_over ::= filter_clause" , | 
| 2167 |  /* 339 */ "over_clause ::= OVER LP window RP" , | 
| 2168 |  /* 340 */ "over_clause ::= OVER nm" , | 
| 2169 |  /* 341 */ "filter_clause ::= FILTER LP WHERE expr RP" , | 
| 2170 |  /* 342 */ "input ::= cmdlist" , | 
| 2171 |  /* 343 */ "cmdlist ::= cmdlist ecmd" , | 
| 2172 |  /* 344 */ "cmdlist ::= ecmd" , | 
| 2173 |  /* 345 */ "ecmd ::= SEMI" , | 
| 2174 |  /* 346 */ "ecmd ::= cmdx SEMI" , | 
| 2175 |  /* 347 */ "ecmd ::= explain cmdx SEMI" , | 
| 2176 |  /* 348 */ "trans_opt ::=" , | 
| 2177 |  /* 349 */ "trans_opt ::= TRANSACTION" , | 
| 2178 |  /* 350 */ "trans_opt ::= TRANSACTION nm" , | 
| 2179 |  /* 351 */ "savepoint_opt ::= SAVEPOINT" , | 
| 2180 |  /* 352 */ "savepoint_opt ::=" , | 
| 2181 |  /* 353 */ "cmd ::= create_table create_table_args" , | 
| 2182 |  /* 354 */ "table_option_set ::= table_option" , | 
| 2183 |  /* 355 */ "columnlist ::= columnlist COMMA columnname carglist" , | 
| 2184 |  /* 356 */ "columnlist ::= columnname carglist" , | 
| 2185 |  /* 357 */ "nm ::= ID|INDEXED" , | 
| 2186 |  /* 358 */ "nm ::= STRING" , | 
| 2187 |  /* 359 */ "nm ::= JOIN_KW" , | 
| 2188 |  /* 360 */ "typetoken ::= typename" , | 
| 2189 |  /* 361 */ "typename ::= ID|STRING" , | 
| 2190 |  /* 362 */ "signed ::= plus_num" , | 
| 2191 |  /* 363 */ "signed ::= minus_num" , | 
| 2192 |  /* 364 */ "carglist ::= carglist ccons" , | 
| 2193 |  /* 365 */ "carglist ::=" , | 
| 2194 |  /* 366 */ "ccons ::= NULL onconf" , | 
| 2195 |  /* 367 */ "ccons ::= GENERATED ALWAYS AS generated" , | 
| 2196 |  /* 368 */ "ccons ::= AS generated" , | 
| 2197 |  /* 369 */ "conslist_opt ::= COMMA conslist" , | 
| 2198 |  /* 370 */ "conslist ::= conslist tconscomma tcons" , | 
| 2199 |  /* 371 */ "conslist ::= tcons" , | 
| 2200 |  /* 372 */ "tconscomma ::=" , | 
| 2201 |  /* 373 */ "defer_subclause_opt ::= defer_subclause" , | 
| 2202 |  /* 374 */ "resolvetype ::= raisetype" , | 
| 2203 |  /* 375 */ "selectnowith ::= oneselect" , | 
| 2204 |  /* 376 */ "oneselect ::= values" , | 
| 2205 |  /* 377 */ "sclp ::= selcollist COMMA" , | 
| 2206 |  /* 378 */ "as ::= ID|STRING" , | 
| 2207 |  /* 379 */ "indexed_opt ::= indexed_by" , | 
| 2208 |  /* 380 */ "returning ::=" , | 
| 2209 |  /* 381 */ "expr ::= term" , | 
| 2210 |  /* 382 */ "likeop ::= LIKE_KW|MATCH" , | 
| 2211 |  /* 383 */ "exprlist ::= nexprlist" , | 
| 2212 |  /* 384 */ "nmnum ::= plus_num" , | 
| 2213 |  /* 385 */ "nmnum ::= nm" , | 
| 2214 |  /* 386 */ "nmnum ::= ON" , | 
| 2215 |  /* 387 */ "nmnum ::= DELETE" , | 
| 2216 |  /* 388 */ "nmnum ::= DEFAULT" , | 
| 2217 |  /* 389 */ "plus_num ::= INTEGER|FLOAT" , | 
| 2218 |  /* 390 */ "foreach_clause ::=" , | 
| 2219 |  /* 391 */ "foreach_clause ::= FOR EACH ROW" , | 
| 2220 |  /* 392 */ "trnm ::= nm" , | 
| 2221 |  /* 393 */ "tridxby ::=" , | 
| 2222 |  /* 394 */ "database_kw_opt ::= DATABASE" , | 
| 2223 |  /* 395 */ "database_kw_opt ::=" , | 
| 2224 |  /* 396 */ "kwcolumn_opt ::=" , | 
| 2225 |  /* 397 */ "kwcolumn_opt ::= COLUMNKW" , | 
| 2226 |  /* 398 */ "vtabarglist ::= vtabarg" , | 
| 2227 |  /* 399 */ "vtabarglist ::= vtabarglist COMMA vtabarg" , | 
| 2228 |  /* 400 */ "vtabarg ::= vtabarg vtabargtoken" , | 
| 2229 |  /* 401 */ "anylist ::=" , | 
| 2230 |  /* 402 */ "anylist ::= anylist LP anylist RP" , | 
| 2231 |  /* 403 */ "anylist ::= anylist ANY" , | 
| 2232 |  /* 404 */ "with ::=" , | 
| 2233 | }; | 
| 2234 | #endif /* NDEBUG */ | 
| 2235 |  | 
| 2236 |  | 
| 2237 | #if YYSTACKDEPTH<=0 | 
| 2238 | /* | 
| 2239 | ** Try to increase the size of the parser stack.  Return the number | 
| 2240 | ** of errors.  Return 0 on success. | 
| 2241 | */ | 
| 2242 | static int yyGrowStack(yyParser *p){ | 
| 2243 |   int newSize; | 
| 2244 |   int idx; | 
| 2245 |   yyStackEntry *pNew; | 
| 2246 |  | 
| 2247 |   newSize = p->yystksz*2 + 100; | 
| 2248 |   idx = p->yytos ? (int)(p->yytos - p->yystack) : 0; | 
| 2249 |   if( p->yystack==&p->yystk0 ){ | 
| 2250 |     pNew = malloc(newSize*sizeof(pNew[0])); | 
| 2251 |     if( pNew ) pNew[0] = p->yystk0; | 
| 2252 |   }else{ | 
| 2253 |     pNew = realloc(p->yystack, newSize*sizeof(pNew[0])); | 
| 2254 |   } | 
| 2255 |   if( pNew ){ | 
| 2256 |     p->yystack = pNew; | 
| 2257 |     p->yytos = &p->yystack[idx]; | 
| 2258 | #ifndef NDEBUG | 
| 2259 |     if( yyTraceFILE ){ | 
| 2260 |       fprintf(yyTraceFILE,"%sStack grows from %d to %d entries.\n" , | 
| 2261 |               yyTracePrompt, p->yystksz, newSize); | 
| 2262 |     } | 
| 2263 | #endif | 
| 2264 |     p->yystksz = newSize; | 
| 2265 |   } | 
| 2266 |   return pNew==0;  | 
| 2267 | } | 
| 2268 | #endif | 
| 2269 |  | 
| 2270 | /* Datatype of the argument to the memory allocated passed as the | 
| 2271 | ** second argument to sqlite3ParserAlloc() below.  This can be changed by | 
| 2272 | ** putting an appropriate #define in the %include section of the input | 
| 2273 | ** grammar. | 
| 2274 | */ | 
| 2275 | #ifndef YYMALLOCARGTYPE | 
| 2276 | # define YYMALLOCARGTYPE size_t | 
| 2277 | #endif | 
| 2278 |  | 
| 2279 | /* Initialize a new parser that has already been allocated. | 
| 2280 | */ | 
| 2281 | void sqlite3ParserInit(void *yypRawParser sqlite3ParserCTX_PDECL){ | 
| 2282 |   yyParser *yypParser = (yyParser*)yypRawParser; | 
| 2283 |   sqlite3ParserCTX_STORE | 
| 2284 | #ifdef YYTRACKMAXSTACKDEPTH | 
| 2285 |   yypParser->yyhwm = 0; | 
| 2286 | #endif | 
| 2287 | #if YYSTACKDEPTH<=0 | 
| 2288 |   yypParser->yytos = NULL; | 
| 2289 |   yypParser->yystack = NULL; | 
| 2290 |   yypParser->yystksz = 0; | 
| 2291 |   if( yyGrowStack(yypParser) ){ | 
| 2292 |     yypParser->yystack = &yypParser->yystk0; | 
| 2293 |     yypParser->yystksz = 1; | 
| 2294 |   } | 
| 2295 | #endif | 
| 2296 | #ifndef YYNOERRORRECOVERY | 
| 2297 |   yypParser->yyerrcnt = -1; | 
| 2298 | #endif | 
| 2299 |   yypParser->yytos = yypParser->yystack; | 
| 2300 |   yypParser->yystack[0].stateno = 0; | 
| 2301 |   yypParser->yystack[0].major = 0; | 
| 2302 | #if YYSTACKDEPTH>0 | 
| 2303 |   yypParser->yystackEnd = &yypParser->yystack[YYSTACKDEPTH-1]; | 
| 2304 | #endif | 
| 2305 | } | 
| 2306 |  | 
| 2307 | #ifndef sqlite3Parser_ENGINEALWAYSONSTACK | 
| 2308 | /*  | 
| 2309 | ** This function allocates a new parser. | 
| 2310 | ** The only argument is a pointer to a function which works like | 
| 2311 | ** malloc. | 
| 2312 | ** | 
| 2313 | ** Inputs: | 
| 2314 | ** A pointer to the function used to allocate memory. | 
| 2315 | ** | 
| 2316 | ** Outputs: | 
| 2317 | ** A pointer to a parser.  This pointer is used in subsequent calls | 
| 2318 | ** to sqlite3Parser and sqlite3ParserFree. | 
| 2319 | */ | 
| 2320 | void *sqlite3ParserAlloc(void *(*mallocProc)(YYMALLOCARGTYPE) sqlite3ParserCTX_PDECL){ | 
| 2321 |   yyParser *yypParser; | 
| 2322 |   yypParser = (yyParser*)(*mallocProc)( (YYMALLOCARGTYPE)sizeof(yyParser) ); | 
| 2323 |   if( yypParser ){ | 
| 2324 |     sqlite3ParserCTX_STORE | 
| 2325 |     sqlite3ParserInit(yypParser sqlite3ParserCTX_PARAM); | 
| 2326 |   } | 
| 2327 |   return (void*)yypParser; | 
| 2328 | } | 
| 2329 | #endif /* sqlite3Parser_ENGINEALWAYSONSTACK */ | 
| 2330 |  | 
| 2331 |  | 
| 2332 | /* The following function deletes the "minor type" or semantic value | 
| 2333 | ** associated with a symbol.  The symbol can be either a terminal | 
| 2334 | ** or nonterminal. "yymajor" is the symbol code, and "yypminor" is | 
| 2335 | ** a pointer to the value to be deleted.  The code used to do the  | 
| 2336 | ** deletions is derived from the %destructor and/or %token_destructor | 
| 2337 | ** directives of the input grammar. | 
| 2338 | */ | 
| 2339 | static void yy_destructor( | 
| 2340 |   yyParser *yypParser,    /* The parser */ | 
| 2341 |   YYCODETYPE yymajor,     /* Type code for object to destroy */ | 
| 2342 |   YYMINORTYPE *yypminor   /* The object to be destroyed */ | 
| 2343 | ){ | 
| 2344 |   sqlite3ParserARG_FETCH | 
| 2345 |   sqlite3ParserCTX_FETCH | 
| 2346 |   switch( yymajor ){ | 
| 2347 |     /* Here is inserted the actions which take place when a | 
| 2348 |     ** terminal or non-terminal is destroyed.  This can happen | 
| 2349 |     ** when the symbol is popped from the stack during a | 
| 2350 |     ** reduce or during error processing or when a parser is  | 
| 2351 |     ** being destroyed before it is finished parsing. | 
| 2352 |     ** | 
| 2353 |     ** Note: during a reduce, the only symbols destroyed are those | 
| 2354 |     ** which appear on the RHS of the rule, but which are *not* used | 
| 2355 |     ** inside the C code. | 
| 2356 |     */ | 
| 2357 | /********* Begin destructor definitions ***************************************/ | 
| 2358 |     case 204: /* select */ | 
| 2359 |     case 239: /* selectnowith */ | 
| 2360 |     case 240: /* oneselect */ | 
| 2361 |     case 252: /* values */ | 
| 2362 | { | 
| 2363 | #line 496 "parse.y" | 
| 2364 | sqlite3SelectDelete(pParse->db, (yypminor->yy47)); | 
| 2365 | #line 2390 "parse.c" | 
| 2366 | } | 
| 2367 |       break; | 
| 2368 |     case 216: /* term */ | 
| 2369 |     case 217: /* expr */ | 
| 2370 |     case 246: /* where_opt */ | 
| 2371 |     case 248: /* having_opt */ | 
| 2372 |     case 267: /* where_opt_ret */ | 
| 2373 |     case 278: /* case_operand */ | 
| 2374 |     case 280: /* case_else */ | 
| 2375 |     case 283: /* vinto */ | 
| 2376 |     case 290: /* when_clause */ | 
| 2377 |     case 295: /* key_opt */ | 
| 2378 |     case 311: /* filter_clause */ | 
| 2379 | { | 
| 2380 | #line 1045 "parse.y" | 
| 2381 | sqlite3ExprDelete(pParse->db, (yypminor->yy528)); | 
| 2382 | #line 2407 "parse.c" | 
| 2383 | } | 
| 2384 |       break; | 
| 2385 |     case 221: /* eidlist_opt */ | 
| 2386 |     case 231: /* sortlist */ | 
| 2387 |     case 232: /* eidlist */ | 
| 2388 |     case 244: /* selcollist */ | 
| 2389 |     case 247: /* groupby_opt */ | 
| 2390 |     case 249: /* orderby_opt */ | 
| 2391 |     case 253: /* nexprlist */ | 
| 2392 |     case 254: /* sclp */ | 
| 2393 |     case 261: /* exprlist */ | 
| 2394 |     case 268: /* setlist */ | 
| 2395 |     case 277: /* paren_exprlist */ | 
| 2396 |     case 279: /* case_exprlist */ | 
| 2397 |     case 310: /* part_opt */ | 
| 2398 | { | 
| 2399 | #line 1435 "parse.y" | 
| 2400 | sqlite3ExprListDelete(pParse->db, (yypminor->yy322)); | 
| 2401 | #line 2426 "parse.c" | 
| 2402 | } | 
| 2403 |       break; | 
| 2404 |     case 238: /* fullname */ | 
| 2405 |     case 245: /* from */ | 
| 2406 |     case 256: /* seltablist */ | 
| 2407 |     case 257: /* stl_prefix */ | 
| 2408 |     case 262: /* xfullname */ | 
| 2409 | { | 
| 2410 | #line 751 "parse.y" | 
| 2411 | sqlite3SrcListDelete(pParse->db, (yypminor->yy131)); | 
| 2412 | #line 2437 "parse.c" | 
| 2413 | } | 
| 2414 |       break; | 
| 2415 |     case 241: /* wqlist */ | 
| 2416 | { | 
| 2417 | #line 1722 "parse.y" | 
| 2418 | sqlite3WithDelete(pParse->db, (yypminor->yy521)); | 
| 2419 | #line 2444 "parse.c" | 
| 2420 | } | 
| 2421 |       break; | 
| 2422 |     case 251: /* window_clause */ | 
| 2423 |     case 306: /* windowdefn_list */ | 
| 2424 | { | 
| 2425 | #line 1851 "parse.y" | 
| 2426 | sqlite3WindowListDelete(pParse->db, (yypminor->yy41)); | 
| 2427 | #line 2452 "parse.c" | 
| 2428 | } | 
| 2429 |       break; | 
| 2430 |     case 263: /* idlist */ | 
| 2431 |     case 270: /* idlist_opt */ | 
| 2432 | { | 
| 2433 | #line 1030 "parse.y" | 
| 2434 | sqlite3IdListDelete(pParse->db, (yypminor->yy254)); | 
| 2435 | #line 2460 "parse.c" | 
| 2436 | } | 
| 2437 |       break; | 
| 2438 |     case 273: /* filter_over */ | 
| 2439 |     case 307: /* windowdefn */ | 
| 2440 |     case 308: /* window */ | 
| 2441 |     case 309: /* frame_opt */ | 
| 2442 |     case 312: /* over_clause */ | 
| 2443 | { | 
| 2444 | #line 1788 "parse.y" | 
| 2445 | sqlite3WindowDelete(pParse->db, (yypminor->yy41)); | 
| 2446 | #line 2471 "parse.c" | 
| 2447 | } | 
| 2448 |       break; | 
| 2449 |     case 286: /* trigger_cmd_list */ | 
| 2450 |     case 291: /* trigger_cmd */ | 
| 2451 | { | 
| 2452 | #line 1550 "parse.y" | 
| 2453 | sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy33)); | 
| 2454 | #line 2479 "parse.c" | 
| 2455 | } | 
| 2456 |       break; | 
| 2457 |     case 288: /* trigger_event */ | 
| 2458 | { | 
| 2459 | #line 1536 "parse.y" | 
| 2460 | sqlite3IdListDelete(pParse->db, (yypminor->yy180).b); | 
| 2461 | #line 2486 "parse.c" | 
| 2462 | } | 
| 2463 |       break; | 
| 2464 |     case 314: /* frame_bound */ | 
| 2465 |     case 315: /* frame_bound_s */ | 
| 2466 |     case 316: /* frame_bound_e */ | 
| 2467 | { | 
| 2468 | #line 1793 "parse.y" | 
| 2469 | sqlite3ExprDelete(pParse->db, (yypminor->yy595).pExpr); | 
| 2470 | #line 2495 "parse.c" | 
| 2471 | } | 
| 2472 |       break; | 
| 2473 | /********* End destructor definitions *****************************************/ | 
| 2474 |     default:  break;   /* If no destructor action specified: do nothing */ | 
| 2475 |   } | 
| 2476 | } | 
| 2477 |  | 
| 2478 | /* | 
| 2479 | ** Pop the parser's stack once. | 
| 2480 | ** | 
| 2481 | ** If there is a destructor routine associated with the token which | 
| 2482 | ** is popped from the stack, then call it. | 
| 2483 | */ | 
| 2484 | static void yy_pop_parser_stack(yyParser *pParser){ | 
| 2485 |   yyStackEntry *yytos; | 
| 2486 |   assert( pParser->yytos!=0 ); | 
| 2487 |   assert( pParser->yytos > pParser->yystack ); | 
| 2488 |   yytos = pParser->yytos--; | 
| 2489 | #ifndef NDEBUG | 
| 2490 |   if( yyTraceFILE ){ | 
| 2491 |     fprintf(yyTraceFILE,"%sPopping %s\n" , | 
| 2492 |       yyTracePrompt, | 
| 2493 |       yyTokenName[yytos->major]); | 
| 2494 |   } | 
| 2495 | #endif | 
| 2496 |   yy_destructor(pParser, yytos->major, &yytos->minor); | 
| 2497 | } | 
| 2498 |  | 
| 2499 | /* | 
| 2500 | ** Clear all secondary memory allocations from the parser | 
| 2501 | */ | 
| 2502 | void sqlite3ParserFinalize(void *p){ | 
| 2503 |   yyParser *pParser = (yyParser*)p; | 
| 2504 |   while( pParser->yytos>pParser->yystack ) yy_pop_parser_stack(pParser); | 
| 2505 | #if YYSTACKDEPTH<=0 | 
| 2506 |   if( pParser->yystack!=&pParser->yystk0 ) free(pParser->yystack); | 
| 2507 | #endif | 
| 2508 | } | 
| 2509 |  | 
| 2510 | #ifndef sqlite3Parser_ENGINEALWAYSONSTACK | 
| 2511 | /*  | 
| 2512 | ** Deallocate and destroy a parser.  Destructors are called for | 
| 2513 | ** all stack elements before shutting the parser down. | 
| 2514 | ** | 
| 2515 | ** If the YYPARSEFREENEVERNULL macro exists (for example because it | 
| 2516 | ** is defined in a %include section of the input grammar) then it is | 
| 2517 | ** assumed that the input pointer is never NULL. | 
| 2518 | */ | 
| 2519 | void sqlite3ParserFree( | 
| 2520 |   void *p,                    /* The parser to be deleted */ | 
| 2521 |   void (*freeProc)(void*)     /* Function used to reclaim memory */ | 
| 2522 | ){ | 
| 2523 | #ifndef YYPARSEFREENEVERNULL | 
| 2524 |   if( p==0 ) return; | 
| 2525 | #endif | 
| 2526 |   sqlite3ParserFinalize(p); | 
| 2527 |   (*freeProc)(p); | 
| 2528 | } | 
| 2529 | #endif /* sqlite3Parser_ENGINEALWAYSONSTACK */ | 
| 2530 |  | 
| 2531 | /* | 
| 2532 | ** Return the peak depth of the stack for a parser. | 
| 2533 | */ | 
| 2534 | #ifdef YYTRACKMAXSTACKDEPTH | 
| 2535 | int sqlite3ParserStackPeak(void *p){ | 
| 2536 |   yyParser *pParser = (yyParser*)p; | 
| 2537 |   return pParser->yyhwm; | 
| 2538 | } | 
| 2539 | #endif | 
| 2540 |  | 
| 2541 | /* This array of booleans keeps track of the parser statement | 
| 2542 | ** coverage.  The element yycoverage[X][Y] is set when the parser | 
| 2543 | ** is in state X and has a lookahead token Y.  In a well-tested | 
| 2544 | ** systems, every element of this matrix should end up being set. | 
| 2545 | */ | 
| 2546 | #if defined(YYCOVERAGE) | 
| 2547 | static unsigned char yycoverage[YYNSTATE][YYNTOKEN]; | 
| 2548 | #endif | 
| 2549 |  | 
| 2550 | /* | 
| 2551 | ** Write into out a description of every state/lookahead combination that | 
| 2552 | ** | 
| 2553 | **   (1)  has not been used by the parser, and | 
| 2554 | **   (2)  is not a syntax error. | 
| 2555 | ** | 
| 2556 | ** Return the number of missed state/lookahead combinations. | 
| 2557 | */ | 
| 2558 | #if defined(YYCOVERAGE) | 
| 2559 | int sqlite3ParserCoverage(FILE *out){ | 
| 2560 |   int stateno, iLookAhead, i; | 
| 2561 |   int nMissed = 0; | 
| 2562 |   for(stateno=0; stateno<YYNSTATE; stateno++){ | 
| 2563 |     i = yy_shift_ofst[stateno]; | 
| 2564 |     for(iLookAhead=0; iLookAhead<YYNTOKEN; iLookAhead++){ | 
| 2565 |       if( yy_lookahead[i+iLookAhead]!=iLookAhead ) continue; | 
| 2566 |       if( yycoverage[stateno][iLookAhead]==0 ) nMissed++; | 
| 2567 |       if( out ){ | 
| 2568 |         fprintf(out,"State %d lookahead %s %s\n" , stateno, | 
| 2569 |                 yyTokenName[iLookAhead], | 
| 2570 |                 yycoverage[stateno][iLookAhead] ? "ok"  : "missed" ); | 
| 2571 |       } | 
| 2572 |     } | 
| 2573 |   } | 
| 2574 |   return nMissed; | 
| 2575 | } | 
| 2576 | #endif | 
| 2577 |  | 
| 2578 | /* | 
| 2579 | ** Find the appropriate action for a parser given the terminal | 
| 2580 | ** look-ahead token iLookAhead. | 
| 2581 | */ | 
| 2582 | static YYACTIONTYPE yy_find_shift_action( | 
| 2583 |   YYCODETYPE iLookAhead,    /* The look-ahead token */ | 
| 2584 |   YYACTIONTYPE stateno      /* Current state number */ | 
| 2585 | ){ | 
| 2586 |   int i; | 
| 2587 |  | 
| 2588 |   if( stateno>YY_MAX_SHIFT ) return stateno; | 
| 2589 |   assert( stateno <= YY_SHIFT_COUNT ); | 
| 2590 | #if defined(YYCOVERAGE) | 
| 2591 |   yycoverage[stateno][iLookAhead] = 1; | 
| 2592 | #endif | 
| 2593 |   do{ | 
| 2594 |     i = yy_shift_ofst[stateno]; | 
| 2595 |     assert( i>=0 ); | 
| 2596 |     assert( i<=YY_ACTTAB_COUNT ); | 
| 2597 |     assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD ); | 
| 2598 |     assert( iLookAhead!=YYNOCODE ); | 
| 2599 |     assert( iLookAhead < YYNTOKEN ); | 
| 2600 |     i += iLookAhead; | 
| 2601 |     assert( i<(int)YY_NLOOKAHEAD ); | 
| 2602 |     if( yy_lookahead[i]!=iLookAhead ){ | 
| 2603 | #ifdef YYFALLBACK | 
| 2604 |       YYCODETYPE iFallback;            /* Fallback token */ | 
| 2605 |       assert( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0]) ); | 
| 2606 |       iFallback = yyFallback[iLookAhead]; | 
| 2607 |       if( iFallback!=0 ){ | 
| 2608 | #ifndef NDEBUG | 
| 2609 |         if( yyTraceFILE ){ | 
| 2610 |           fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n" , | 
| 2611 |              yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); | 
| 2612 |         } | 
| 2613 | #endif | 
| 2614 |         assert( yyFallback[iFallback]==0 ); /* Fallback loop must terminate */ | 
| 2615 |         iLookAhead = iFallback; | 
| 2616 |         continue; | 
| 2617 |       } | 
| 2618 | #endif | 
| 2619 | #ifdef YYWILDCARD | 
| 2620 |       { | 
| 2621 |         int j = i - iLookAhead + YYWILDCARD; | 
| 2622 |         assert( j<(int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])) ); | 
| 2623 |         if( yy_lookahead[j]==YYWILDCARD && iLookAhead>0 ){ | 
| 2624 | #ifndef NDEBUG | 
| 2625 |           if( yyTraceFILE ){ | 
| 2626 |             fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n" , | 
| 2627 |                yyTracePrompt, yyTokenName[iLookAhead], | 
| 2628 |                yyTokenName[YYWILDCARD]); | 
| 2629 |           } | 
| 2630 | #endif /* NDEBUG */ | 
| 2631 |           return yy_action[j]; | 
| 2632 |         } | 
| 2633 |       } | 
| 2634 | #endif /* YYWILDCARD */ | 
| 2635 |       return yy_default[stateno]; | 
| 2636 |     }else{ | 
| 2637 |       assert( i>=0 && i<(int)(sizeof(yy_action)/sizeof(yy_action[0])) ); | 
| 2638 |       return yy_action[i]; | 
| 2639 |     } | 
| 2640 |   }while(1); | 
| 2641 | } | 
| 2642 |  | 
| 2643 | /* | 
| 2644 | ** Find the appropriate action for a parser given the non-terminal | 
| 2645 | ** look-ahead token iLookAhead. | 
| 2646 | */ | 
| 2647 | static YYACTIONTYPE yy_find_reduce_action( | 
| 2648 |   YYACTIONTYPE stateno,     /* Current state number */ | 
| 2649 |   YYCODETYPE iLookAhead     /* The look-ahead token */ | 
| 2650 | ){ | 
| 2651 |   int i; | 
| 2652 | #ifdef YYERRORSYMBOL | 
| 2653 |   if( stateno>YY_REDUCE_COUNT ){ | 
| 2654 |     return yy_default[stateno]; | 
| 2655 |   } | 
| 2656 | #else | 
| 2657 |   assert( stateno<=YY_REDUCE_COUNT ); | 
| 2658 | #endif | 
| 2659 |   i = yy_reduce_ofst[stateno]; | 
| 2660 |   assert( iLookAhead!=YYNOCODE ); | 
| 2661 |   i += iLookAhead; | 
| 2662 | #ifdef YYERRORSYMBOL | 
| 2663 |   if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){ | 
| 2664 |     return yy_default[stateno]; | 
| 2665 |   } | 
| 2666 | #else | 
| 2667 |   assert( i>=0 && i<YY_ACTTAB_COUNT ); | 
| 2668 |   assert( yy_lookahead[i]==iLookAhead ); | 
| 2669 | #endif | 
| 2670 |   return yy_action[i]; | 
| 2671 | } | 
| 2672 |  | 
| 2673 | /* | 
| 2674 | ** The following routine is called if the stack overflows. | 
| 2675 | */ | 
| 2676 | static void yyStackOverflow(yyParser *yypParser){ | 
| 2677 |    sqlite3ParserARG_FETCH | 
| 2678 |    sqlite3ParserCTX_FETCH | 
| 2679 | #ifndef NDEBUG | 
| 2680 |    if( yyTraceFILE ){ | 
| 2681 |      fprintf(yyTraceFILE,"%sStack Overflow!\n" ,yyTracePrompt); | 
| 2682 |    } | 
| 2683 | #endif | 
| 2684 |    while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); | 
| 2685 |    /* Here code is inserted which will execute if the parser | 
| 2686 |    ** stack every overflows */ | 
| 2687 | /******** Begin %stack_overflow code ******************************************/ | 
| 2688 | #line 47 "parse.y" | 
| 2689 |  | 
| 2690 |   sqlite3ErrorMsg(pParse, "parser stack overflow" ); | 
| 2691 | #line 2716 "parse.c" | 
| 2692 | /******** End %stack_overflow code ********************************************/ | 
| 2693 |    sqlite3ParserARG_STORE /* Suppress warning about unused %extra_argument var */ | 
| 2694 |    sqlite3ParserCTX_STORE | 
| 2695 | } | 
| 2696 |  | 
| 2697 | /* | 
| 2698 | ** Print tracing information for a SHIFT action | 
| 2699 | */ | 
| 2700 | #ifndef NDEBUG | 
| 2701 | static void yyTraceShift(yyParser *yypParser, int yyNewState, const char *zTag){ | 
| 2702 |   if( yyTraceFILE ){ | 
| 2703 |     if( yyNewState<YYNSTATE ){ | 
| 2704 |       fprintf(yyTraceFILE,"%s%s '%s', go to state %d\n" , | 
| 2705 |          yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], | 
| 2706 |          yyNewState); | 
| 2707 |     }else{ | 
| 2708 |       fprintf(yyTraceFILE,"%s%s '%s', pending reduce %d\n" , | 
| 2709 |          yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], | 
| 2710 |          yyNewState - YY_MIN_REDUCE); | 
| 2711 |     } | 
| 2712 |   } | 
| 2713 | } | 
| 2714 | #else | 
| 2715 | # define yyTraceShift(X,Y,Z) | 
| 2716 | #endif | 
| 2717 |  | 
| 2718 | /* | 
| 2719 | ** Perform a shift action. | 
| 2720 | */ | 
| 2721 | static void yy_shift( | 
| 2722 |   yyParser *yypParser,          /* The parser to be shifted */ | 
| 2723 |   YYACTIONTYPE yyNewState,      /* The new state to shift in */ | 
| 2724 |   YYCODETYPE yyMajor,           /* The major token to shift in */ | 
| 2725 |   sqlite3ParserTOKENTYPE yyMinor        /* The minor token to shift in */ | 
| 2726 | ){ | 
| 2727 |   yyStackEntry *yytos; | 
| 2728 |   yypParser->yytos++; | 
| 2729 | #ifdef YYTRACKMAXSTACKDEPTH | 
| 2730 |   if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){ | 
| 2731 |     yypParser->yyhwm++; | 
| 2732 |     assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack) ); | 
| 2733 |   } | 
| 2734 | #endif | 
| 2735 | #if YYSTACKDEPTH>0  | 
| 2736 |   if( yypParser->yytos>yypParser->yystackEnd ){ | 
| 2737 |     yypParser->yytos--; | 
| 2738 |     yyStackOverflow(yypParser); | 
| 2739 |     return; | 
| 2740 |   } | 
| 2741 | #else | 
| 2742 |   if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz] ){ | 
| 2743 |     if( yyGrowStack(yypParser) ){ | 
| 2744 |       yypParser->yytos--; | 
| 2745 |       yyStackOverflow(yypParser); | 
| 2746 |       return; | 
| 2747 |     } | 
| 2748 |   } | 
| 2749 | #endif | 
| 2750 |   if( yyNewState > YY_MAX_SHIFT ){ | 
| 2751 |     yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE; | 
| 2752 |   } | 
| 2753 |   yytos = yypParser->yytos; | 
| 2754 |   yytos->stateno = yyNewState; | 
| 2755 |   yytos->major = yyMajor; | 
| 2756 |   yytos->minor.yy0 = yyMinor; | 
| 2757 |   yyTraceShift(yypParser, yyNewState, "Shift" ); | 
| 2758 | } | 
| 2759 |  | 
| 2760 | /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side | 
| 2761 | ** of that rule */ | 
| 2762 | static const YYCODETYPE yyRuleInfoLhs[] = { | 
| 2763 |    189,  /* (0) explain ::= EXPLAIN */ | 
| 2764 |    189,  /* (1) explain ::= EXPLAIN QUERY PLAN */ | 
| 2765 |    188,  /* (2) cmdx ::= cmd */ | 
| 2766 |    190,  /* (3) cmd ::= BEGIN transtype trans_opt */ | 
| 2767 |    191,  /* (4) transtype ::= */ | 
| 2768 |    191,  /* (5) transtype ::= DEFERRED */ | 
| 2769 |    191,  /* (6) transtype ::= IMMEDIATE */ | 
| 2770 |    191,  /* (7) transtype ::= EXCLUSIVE */ | 
| 2771 |    190,  /* (8) cmd ::= COMMIT|END trans_opt */ | 
| 2772 |    190,  /* (9) cmd ::= ROLLBACK trans_opt */ | 
| 2773 |    190,  /* (10) cmd ::= SAVEPOINT nm */ | 
| 2774 |    190,  /* (11) cmd ::= RELEASE savepoint_opt nm */ | 
| 2775 |    190,  /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */ | 
| 2776 |    195,  /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */ | 
| 2777 |    197,  /* (14) createkw ::= CREATE */ | 
| 2778 |    199,  /* (15) ifnotexists ::= */ | 
| 2779 |    199,  /* (16) ifnotexists ::= IF NOT EXISTS */ | 
| 2780 |    198,  /* (17) temp ::= TEMP */ | 
| 2781 |    198,  /* (18) temp ::= */ | 
| 2782 |    196,  /* (19) create_table_args ::= LP columnlist conslist_opt RP table_option_set */ | 
| 2783 |    196,  /* (20) create_table_args ::= AS select */ | 
| 2784 |    203,  /* (21) table_option_set ::= */ | 
| 2785 |    203,  /* (22) table_option_set ::= table_option_set COMMA table_option */ | 
| 2786 |    205,  /* (23) table_option ::= WITHOUT nm */ | 
| 2787 |    205,  /* (24) table_option ::= nm */ | 
| 2788 |    206,  /* (25) columnname ::= nm typetoken */ | 
| 2789 |    208,  /* (26) typetoken ::= */ | 
| 2790 |    208,  /* (27) typetoken ::= typename LP signed RP */ | 
| 2791 |    208,  /* (28) typetoken ::= typename LP signed COMMA signed RP */ | 
| 2792 |    209,  /* (29) typename ::= typename ID|STRING */ | 
| 2793 |    213,  /* (30) scanpt ::= */ | 
| 2794 |    214,  /* (31) scantok ::= */ | 
| 2795 |    215,  /* (32) ccons ::= CONSTRAINT nm */ | 
| 2796 |    215,  /* (33) ccons ::= DEFAULT scantok term */ | 
| 2797 |    215,  /* (34) ccons ::= DEFAULT LP expr RP */ | 
| 2798 |    215,  /* (35) ccons ::= DEFAULT PLUS scantok term */ | 
| 2799 |    215,  /* (36) ccons ::= DEFAULT MINUS scantok term */ | 
| 2800 |    215,  /* (37) ccons ::= DEFAULT scantok ID|INDEXED */ | 
| 2801 |    215,  /* (38) ccons ::= NOT NULL onconf */ | 
| 2802 |    215,  /* (39) ccons ::= PRIMARY KEY sortorder onconf autoinc */ | 
| 2803 |    215,  /* (40) ccons ::= UNIQUE onconf */ | 
| 2804 |    215,  /* (41) ccons ::= CHECK LP expr RP */ | 
| 2805 |    215,  /* (42) ccons ::= REFERENCES nm eidlist_opt refargs */ | 
| 2806 |    215,  /* (43) ccons ::= defer_subclause */ | 
| 2807 |    215,  /* (44) ccons ::= COLLATE ID|STRING */ | 
| 2808 |    224,  /* (45) generated ::= LP expr RP */ | 
| 2809 |    224,  /* (46) generated ::= LP expr RP ID */ | 
| 2810 |    220,  /* (47) autoinc ::= */ | 
| 2811 |    220,  /* (48) autoinc ::= AUTOINCR */ | 
| 2812 |    222,  /* (49) refargs ::= */ | 
| 2813 |    222,  /* (50) refargs ::= refargs refarg */ | 
| 2814 |    225,  /* (51) refarg ::= MATCH nm */ | 
| 2815 |    225,  /* (52) refarg ::= ON INSERT refact */ | 
| 2816 |    225,  /* (53) refarg ::= ON DELETE refact */ | 
| 2817 |    225,  /* (54) refarg ::= ON UPDATE refact */ | 
| 2818 |    226,  /* (55) refact ::= SET NULL */ | 
| 2819 |    226,  /* (56) refact ::= SET DEFAULT */ | 
| 2820 |    226,  /* (57) refact ::= CASCADE */ | 
| 2821 |    226,  /* (58) refact ::= RESTRICT */ | 
| 2822 |    226,  /* (59) refact ::= NO ACTION */ | 
| 2823 |    223,  /* (60) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */ | 
| 2824 |    223,  /* (61) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ | 
| 2825 |    227,  /* (62) init_deferred_pred_opt ::= */ | 
| 2826 |    227,  /* (63) init_deferred_pred_opt ::= INITIALLY DEFERRED */ | 
| 2827 |    227,  /* (64) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ | 
| 2828 |    202,  /* (65) conslist_opt ::= */ | 
| 2829 |    229,  /* (66) tconscomma ::= COMMA */ | 
| 2830 |    230,  /* (67) tcons ::= CONSTRAINT nm */ | 
| 2831 |    230,  /* (68) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */ | 
| 2832 |    230,  /* (69) tcons ::= UNIQUE LP sortlist RP onconf */ | 
| 2833 |    230,  /* (70) tcons ::= CHECK LP expr RP onconf */ | 
| 2834 |    230,  /* (71) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */ | 
| 2835 |    233,  /* (72) defer_subclause_opt ::= */ | 
| 2836 |    218,  /* (73) onconf ::= */ | 
| 2837 |    218,  /* (74) onconf ::= ON CONFLICT resolvetype */ | 
| 2838 |    234,  /* (75) orconf ::= */ | 
| 2839 |    234,  /* (76) orconf ::= OR resolvetype */ | 
| 2840 |    235,  /* (77) resolvetype ::= IGNORE */ | 
| 2841 |    235,  /* (78) resolvetype ::= REPLACE */ | 
| 2842 |    190,  /* (79) cmd ::= DROP TABLE ifexists fullname */ | 
| 2843 |    237,  /* (80) ifexists ::= IF EXISTS */ | 
| 2844 |    237,  /* (81) ifexists ::= */ | 
| 2845 |    190,  /* (82) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */ | 
| 2846 |    190,  /* (83) cmd ::= DROP VIEW ifexists fullname */ | 
| 2847 |    190,  /* (84) cmd ::= select */ | 
| 2848 |    204,  /* (85) select ::= WITH wqlist selectnowith */ | 
| 2849 |    204,  /* (86) select ::= WITH RECURSIVE wqlist selectnowith */ | 
| 2850 |    204,  /* (87) select ::= selectnowith */ | 
| 2851 |    239,  /* (88) selectnowith ::= selectnowith multiselect_op oneselect */ | 
| 2852 |    242,  /* (89) multiselect_op ::= UNION */ | 
| 2853 |    242,  /* (90) multiselect_op ::= UNION ALL */ | 
| 2854 |    242,  /* (91) multiselect_op ::= EXCEPT|INTERSECT */ | 
| 2855 |    240,  /* (92) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */ | 
| 2856 |    240,  /* (93) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */ | 
| 2857 |    252,  /* (94) values ::= VALUES LP nexprlist RP */ | 
| 2858 |    252,  /* (95) values ::= values COMMA LP nexprlist RP */ | 
| 2859 |    243,  /* (96) distinct ::= DISTINCT */ | 
| 2860 |    243,  /* (97) distinct ::= ALL */ | 
| 2861 |    243,  /* (98) distinct ::= */ | 
| 2862 |    254,  /* (99) sclp ::= */ | 
| 2863 |    244,  /* (100) selcollist ::= sclp scanpt expr scanpt as */ | 
| 2864 |    244,  /* (101) selcollist ::= sclp scanpt STAR */ | 
| 2865 |    244,  /* (102) selcollist ::= sclp scanpt nm DOT STAR */ | 
| 2866 |    255,  /* (103) as ::= AS nm */ | 
| 2867 |    255,  /* (104) as ::= */ | 
| 2868 |    245,  /* (105) from ::= */ | 
| 2869 |    245,  /* (106) from ::= FROM seltablist */ | 
| 2870 |    257,  /* (107) stl_prefix ::= seltablist joinop */ | 
| 2871 |    257,  /* (108) stl_prefix ::= */ | 
| 2872 |    256,  /* (109) seltablist ::= stl_prefix nm dbnm as on_using */ | 
| 2873 |    256,  /* (110) seltablist ::= stl_prefix nm dbnm as indexed_by on_using */ | 
| 2874 |    256,  /* (111) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_using */ | 
| 2875 |    256,  /* (112) seltablist ::= stl_prefix LP select RP as on_using */ | 
| 2876 |    256,  /* (113) seltablist ::= stl_prefix LP seltablist RP as on_using */ | 
| 2877 |    200,  /* (114) dbnm ::= */ | 
| 2878 |    200,  /* (115) dbnm ::= DOT nm */ | 
| 2879 |    238,  /* (116) fullname ::= nm */ | 
| 2880 |    238,  /* (117) fullname ::= nm DOT nm */ | 
| 2881 |    262,  /* (118) xfullname ::= nm */ | 
| 2882 |    262,  /* (119) xfullname ::= nm DOT nm */ | 
| 2883 |    262,  /* (120) xfullname ::= nm DOT nm AS nm */ | 
| 2884 |    262,  /* (121) xfullname ::= nm AS nm */ | 
| 2885 |    258,  /* (122) joinop ::= COMMA|JOIN */ | 
| 2886 |    258,  /* (123) joinop ::= JOIN_KW JOIN */ | 
| 2887 |    258,  /* (124) joinop ::= JOIN_KW nm JOIN */ | 
| 2888 |    258,  /* (125) joinop ::= JOIN_KW nm nm JOIN */ | 
| 2889 |    259,  /* (126) on_using ::= ON expr */ | 
| 2890 |    259,  /* (127) on_using ::= USING LP idlist RP */ | 
| 2891 |    259,  /* (128) on_using ::= */ | 
| 2892 |    264,  /* (129) indexed_opt ::= */ | 
| 2893 |    260,  /* (130) indexed_by ::= INDEXED BY nm */ | 
| 2894 |    260,  /* (131) indexed_by ::= NOT INDEXED */ | 
| 2895 |    249,  /* (132) orderby_opt ::= */ | 
| 2896 |    249,  /* (133) orderby_opt ::= ORDER BY sortlist */ | 
| 2897 |    231,  /* (134) sortlist ::= sortlist COMMA expr sortorder nulls */ | 
| 2898 |    231,  /* (135) sortlist ::= expr sortorder nulls */ | 
| 2899 |    219,  /* (136) sortorder ::= ASC */ | 
| 2900 |    219,  /* (137) sortorder ::= DESC */ | 
| 2901 |    219,  /* (138) sortorder ::= */ | 
| 2902 |    265,  /* (139) nulls ::= NULLS FIRST */ | 
| 2903 |    265,  /* (140) nulls ::= NULLS LAST */ | 
| 2904 |    265,  /* (141) nulls ::= */ | 
| 2905 |    247,  /* (142) groupby_opt ::= */ | 
| 2906 |    247,  /* (143) groupby_opt ::= GROUP BY nexprlist */ | 
| 2907 |    248,  /* (144) having_opt ::= */ | 
| 2908 |    248,  /* (145) having_opt ::= HAVING expr */ | 
| 2909 |    250,  /* (146) limit_opt ::= */ | 
| 2910 |    250,  /* (147) limit_opt ::= LIMIT expr */ | 
| 2911 |    250,  /* (148) limit_opt ::= LIMIT expr OFFSET expr */ | 
| 2912 |    250,  /* (149) limit_opt ::= LIMIT expr COMMA expr */ | 
| 2913 |    190,  /* (150) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */ | 
| 2914 |    246,  /* (151) where_opt ::= */ | 
| 2915 |    246,  /* (152) where_opt ::= WHERE expr */ | 
| 2916 |    267,  /* (153) where_opt_ret ::= */ | 
| 2917 |    267,  /* (154) where_opt_ret ::= WHERE expr */ | 
| 2918 |    267,  /* (155) where_opt_ret ::= RETURNING selcollist */ | 
| 2919 |    267,  /* (156) where_opt_ret ::= WHERE expr RETURNING selcollist */ | 
| 2920 |    190,  /* (157) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */ | 
| 2921 |    268,  /* (158) setlist ::= setlist COMMA nm EQ expr */ | 
| 2922 |    268,  /* (159) setlist ::= setlist COMMA LP idlist RP EQ expr */ | 
| 2923 |    268,  /* (160) setlist ::= nm EQ expr */ | 
| 2924 |    268,  /* (161) setlist ::= LP idlist RP EQ expr */ | 
| 2925 |    190,  /* (162) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */ | 
| 2926 |    190,  /* (163) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */ | 
| 2927 |    271,  /* (164) upsert ::= */ | 
| 2928 |    271,  /* (165) upsert ::= RETURNING selcollist */ | 
| 2929 |    271,  /* (166) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */ | 
| 2930 |    271,  /* (167) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */ | 
| 2931 |    271,  /* (168) upsert ::= ON CONFLICT DO NOTHING returning */ | 
| 2932 |    271,  /* (169) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */ | 
| 2933 |    272,  /* (170) returning ::= RETURNING selcollist */ | 
| 2934 |    269,  /* (171) insert_cmd ::= INSERT orconf */ | 
| 2935 |    269,  /* (172) insert_cmd ::= REPLACE */ | 
| 2936 |    270,  /* (173) idlist_opt ::= */ | 
| 2937 |    270,  /* (174) idlist_opt ::= LP idlist RP */ | 
| 2938 |    263,  /* (175) idlist ::= idlist COMMA nm */ | 
| 2939 |    263,  /* (176) idlist ::= nm */ | 
| 2940 |    217,  /* (177) expr ::= LP expr RP */ | 
| 2941 |    217,  /* (178) expr ::= ID|INDEXED */ | 
| 2942 |    217,  /* (179) expr ::= JOIN_KW */ | 
| 2943 |    217,  /* (180) expr ::= nm DOT nm */ | 
| 2944 |    217,  /* (181) expr ::= nm DOT nm DOT nm */ | 
| 2945 |    216,  /* (182) term ::= NULL|FLOAT|BLOB */ | 
| 2946 |    216,  /* (183) term ::= STRING */ | 
| 2947 |    216,  /* (184) term ::= INTEGER */ | 
| 2948 |    217,  /* (185) expr ::= VARIABLE */ | 
| 2949 |    217,  /* (186) expr ::= expr COLLATE ID|STRING */ | 
| 2950 |    217,  /* (187) expr ::= CAST LP expr AS typetoken RP */ | 
| 2951 |    217,  /* (188) expr ::= ID|INDEXED LP distinct exprlist RP */ | 
| 2952 |    217,  /* (189) expr ::= ID|INDEXED LP STAR RP */ | 
| 2953 |    217,  /* (190) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */ | 
| 2954 |    217,  /* (191) expr ::= ID|INDEXED LP STAR RP filter_over */ | 
| 2955 |    216,  /* (192) term ::= CTIME_KW */ | 
| 2956 |    217,  /* (193) expr ::= LP nexprlist COMMA expr RP */ | 
| 2957 |    217,  /* (194) expr ::= expr AND expr */ | 
| 2958 |    217,  /* (195) expr ::= expr OR expr */ | 
| 2959 |    217,  /* (196) expr ::= expr LT|GT|GE|LE expr */ | 
| 2960 |    217,  /* (197) expr ::= expr EQ|NE expr */ | 
| 2961 |    217,  /* (198) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ | 
| 2962 |    217,  /* (199) expr ::= expr PLUS|MINUS expr */ | 
| 2963 |    217,  /* (200) expr ::= expr STAR|SLASH|REM expr */ | 
| 2964 |    217,  /* (201) expr ::= expr CONCAT expr */ | 
| 2965 |    274,  /* (202) likeop ::= NOT LIKE_KW|MATCH */ | 
| 2966 |    217,  /* (203) expr ::= expr likeop expr */ | 
| 2967 |    217,  /* (204) expr ::= expr likeop expr ESCAPE expr */ | 
| 2968 |    217,  /* (205) expr ::= expr ISNULL|NOTNULL */ | 
| 2969 |    217,  /* (206) expr ::= expr NOT NULL */ | 
| 2970 |    217,  /* (207) expr ::= expr IS expr */ | 
| 2971 |    217,  /* (208) expr ::= expr IS NOT expr */ | 
| 2972 |    217,  /* (209) expr ::= expr IS NOT DISTINCT FROM expr */ | 
| 2973 |    217,  /* (210) expr ::= expr IS DISTINCT FROM expr */ | 
| 2974 |    217,  /* (211) expr ::= NOT expr */ | 
| 2975 |    217,  /* (212) expr ::= BITNOT expr */ | 
| 2976 |    217,  /* (213) expr ::= PLUS|MINUS expr */ | 
| 2977 |    217,  /* (214) expr ::= expr PTR expr */ | 
| 2978 |    275,  /* (215) between_op ::= BETWEEN */ | 
| 2979 |    275,  /* (216) between_op ::= NOT BETWEEN */ | 
| 2980 |    217,  /* (217) expr ::= expr between_op expr AND expr */ | 
| 2981 |    276,  /* (218) in_op ::= IN */ | 
| 2982 |    276,  /* (219) in_op ::= NOT IN */ | 
| 2983 |    217,  /* (220) expr ::= expr in_op LP exprlist RP */ | 
| 2984 |    217,  /* (221) expr ::= LP select RP */ | 
| 2985 |    217,  /* (222) expr ::= expr in_op LP select RP */ | 
| 2986 |    217,  /* (223) expr ::= expr in_op nm dbnm paren_exprlist */ | 
| 2987 |    217,  /* (224) expr ::= EXISTS LP select RP */ | 
| 2988 |    217,  /* (225) expr ::= CASE case_operand case_exprlist case_else END */ | 
| 2989 |    279,  /* (226) case_exprlist ::= case_exprlist WHEN expr THEN expr */ | 
| 2990 |    279,  /* (227) case_exprlist ::= WHEN expr THEN expr */ | 
| 2991 |    280,  /* (228) case_else ::= ELSE expr */ | 
| 2992 |    280,  /* (229) case_else ::= */ | 
| 2993 |    278,  /* (230) case_operand ::= expr */ | 
| 2994 |    278,  /* (231) case_operand ::= */ | 
| 2995 |    261,  /* (232) exprlist ::= */ | 
| 2996 |    253,  /* (233) nexprlist ::= nexprlist COMMA expr */ | 
| 2997 |    253,  /* (234) nexprlist ::= expr */ | 
| 2998 |    277,  /* (235) paren_exprlist ::= */ | 
| 2999 |    277,  /* (236) paren_exprlist ::= LP exprlist RP */ | 
| 3000 |    190,  /* (237) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ | 
| 3001 |    281,  /* (238) uniqueflag ::= UNIQUE */ | 
| 3002 |    281,  /* (239) uniqueflag ::= */ | 
| 3003 |    221,  /* (240) eidlist_opt ::= */ | 
| 3004 |    221,  /* (241) eidlist_opt ::= LP eidlist RP */ | 
| 3005 |    232,  /* (242) eidlist ::= eidlist COMMA nm collate sortorder */ | 
| 3006 |    232,  /* (243) eidlist ::= nm collate sortorder */ | 
| 3007 |    282,  /* (244) collate ::= */ | 
| 3008 |    282,  /* (245) collate ::= COLLATE ID|STRING */ | 
| 3009 |    190,  /* (246) cmd ::= DROP INDEX ifexists fullname */ | 
| 3010 |    190,  /* (247) cmd ::= VACUUM vinto */ | 
| 3011 |    190,  /* (248) cmd ::= VACUUM nm vinto */ | 
| 3012 |    283,  /* (249) vinto ::= INTO expr */ | 
| 3013 |    283,  /* (250) vinto ::= */ | 
| 3014 |    190,  /* (251) cmd ::= PRAGMA nm dbnm */ | 
| 3015 |    190,  /* (252) cmd ::= PRAGMA nm dbnm EQ nmnum */ | 
| 3016 |    190,  /* (253) cmd ::= PRAGMA nm dbnm LP nmnum RP */ | 
| 3017 |    190,  /* (254) cmd ::= PRAGMA nm dbnm EQ minus_num */ | 
| 3018 |    190,  /* (255) cmd ::= PRAGMA nm dbnm LP minus_num RP */ | 
| 3019 |    211,  /* (256) plus_num ::= PLUS INTEGER|FLOAT */ | 
| 3020 |    212,  /* (257) minus_num ::= MINUS INTEGER|FLOAT */ | 
| 3021 |    190,  /* (258) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ | 
| 3022 |    285,  /* (259) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ | 
| 3023 |    287,  /* (260) trigger_time ::= BEFORE|AFTER */ | 
| 3024 |    287,  /* (261) trigger_time ::= INSTEAD OF */ | 
| 3025 |    287,  /* (262) trigger_time ::= */ | 
| 3026 |    288,  /* (263) trigger_event ::= DELETE|INSERT */ | 
| 3027 |    288,  /* (264) trigger_event ::= UPDATE */ | 
| 3028 |    288,  /* (265) trigger_event ::= UPDATE OF idlist */ | 
| 3029 |    290,  /* (266) when_clause ::= */ | 
| 3030 |    290,  /* (267) when_clause ::= WHEN expr */ | 
| 3031 |    286,  /* (268) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ | 
| 3032 |    286,  /* (269) trigger_cmd_list ::= trigger_cmd SEMI */ | 
| 3033 |    292,  /* (270) trnm ::= nm DOT nm */ | 
| 3034 |    293,  /* (271) tridxby ::= INDEXED BY nm */ | 
| 3035 |    293,  /* (272) tridxby ::= NOT INDEXED */ | 
| 3036 |    291,  /* (273) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */ | 
| 3037 |    291,  /* (274) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */ | 
| 3038 |    291,  /* (275) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ | 
| 3039 |    291,  /* (276) trigger_cmd ::= scanpt select scanpt */ | 
| 3040 |    217,  /* (277) expr ::= RAISE LP IGNORE RP */ | 
| 3041 |    217,  /* (278) expr ::= RAISE LP raisetype COMMA nm RP */ | 
| 3042 |    236,  /* (279) raisetype ::= ROLLBACK */ | 
| 3043 |    236,  /* (280) raisetype ::= ABORT */ | 
| 3044 |    236,  /* (281) raisetype ::= FAIL */ | 
| 3045 |    190,  /* (282) cmd ::= DROP TRIGGER ifexists fullname */ | 
| 3046 |    190,  /* (283) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ | 
| 3047 |    190,  /* (284) cmd ::= DETACH database_kw_opt expr */ | 
| 3048 |    295,  /* (285) key_opt ::= */ | 
| 3049 |    295,  /* (286) key_opt ::= KEY expr */ | 
| 3050 |    190,  /* (287) cmd ::= REINDEX */ | 
| 3051 |    190,  /* (288) cmd ::= REINDEX nm dbnm */ | 
| 3052 |    190,  /* (289) cmd ::= ANALYZE */ | 
| 3053 |    190,  /* (290) cmd ::= ANALYZE nm dbnm */ | 
| 3054 |    190,  /* (291) cmd ::= ALTER TABLE fullname RENAME TO nm */ | 
| 3055 |    190,  /* (292) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ | 
| 3056 |    190,  /* (293) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */ | 
| 3057 |    296,  /* (294) add_column_fullname ::= fullname */ | 
| 3058 |    190,  /* (295) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */ | 
| 3059 |    190,  /* (296) cmd ::= create_vtab */ | 
| 3060 |    190,  /* (297) cmd ::= create_vtab LP vtabarglist RP */ | 
| 3061 |    298,  /* (298) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ | 
| 3062 |    300,  /* (299) vtabarg ::= */ | 
| 3063 |    301,  /* (300) vtabargtoken ::= ANY */ | 
| 3064 |    301,  /* (301) vtabargtoken ::= lp anylist RP */ | 
| 3065 |    302,  /* (302) lp ::= LP */ | 
| 3066 |    266,  /* (303) with ::= WITH wqlist */ | 
| 3067 |    266,  /* (304) with ::= WITH RECURSIVE wqlist */ | 
| 3068 |    305,  /* (305) wqas ::= AS */ | 
| 3069 |    305,  /* (306) wqas ::= AS MATERIALIZED */ | 
| 3070 |    305,  /* (307) wqas ::= AS NOT MATERIALIZED */ | 
| 3071 |    304,  /* (308) wqitem ::= nm eidlist_opt wqas LP select RP */ | 
| 3072 |    241,  /* (309) wqlist ::= wqitem */ | 
| 3073 |    241,  /* (310) wqlist ::= wqlist COMMA wqitem */ | 
| 3074 |    306,  /* (311) windowdefn_list ::= windowdefn */ | 
| 3075 |    306,  /* (312) windowdefn_list ::= windowdefn_list COMMA windowdefn */ | 
| 3076 |    307,  /* (313) windowdefn ::= nm AS LP window RP */ | 
| 3077 |    308,  /* (314) window ::= PARTITION BY nexprlist orderby_opt frame_opt */ | 
| 3078 |    308,  /* (315) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */ | 
| 3079 |    308,  /* (316) window ::= ORDER BY sortlist frame_opt */ | 
| 3080 |    308,  /* (317) window ::= nm ORDER BY sortlist frame_opt */ | 
| 3081 |    308,  /* (318) window ::= frame_opt */ | 
| 3082 |    308,  /* (319) window ::= nm frame_opt */ | 
| 3083 |    309,  /* (320) frame_opt ::= */ | 
| 3084 |    309,  /* (321) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */ | 
| 3085 |    309,  /* (322) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */ | 
| 3086 |    313,  /* (323) range_or_rows ::= RANGE|ROWS|GROUPS */ | 
| 3087 |    315,  /* (324) frame_bound_s ::= frame_bound */ | 
| 3088 |    315,  /* (325) frame_bound_s ::= UNBOUNDED PRECEDING */ | 
| 3089 |    316,  /* (326) frame_bound_e ::= frame_bound */ | 
| 3090 |    316,  /* (327) frame_bound_e ::= UNBOUNDED FOLLOWING */ | 
| 3091 |    314,  /* (328) frame_bound ::= expr PRECEDING|FOLLOWING */ | 
| 3092 |    314,  /* (329) frame_bound ::= CURRENT ROW */ | 
| 3093 |    317,  /* (330) frame_exclude_opt ::= */ | 
| 3094 |    317,  /* (331) frame_exclude_opt ::= EXCLUDE frame_exclude */ | 
| 3095 |    318,  /* (332) frame_exclude ::= NO OTHERS */ | 
| 3096 |    318,  /* (333) frame_exclude ::= CURRENT ROW */ | 
| 3097 |    318,  /* (334) frame_exclude ::= GROUP|TIES */ | 
| 3098 |    251,  /* (335) window_clause ::= WINDOW windowdefn_list */ | 
| 3099 |    273,  /* (336) filter_over ::= filter_clause over_clause */ | 
| 3100 |    273,  /* (337) filter_over ::= over_clause */ | 
| 3101 |    273,  /* (338) filter_over ::= filter_clause */ | 
| 3102 |    312,  /* (339) over_clause ::= OVER LP window RP */ | 
| 3103 |    312,  /* (340) over_clause ::= OVER nm */ | 
| 3104 |    311,  /* (341) filter_clause ::= FILTER LP WHERE expr RP */ | 
| 3105 |    185,  /* (342) input ::= cmdlist */ | 
| 3106 |    186,  /* (343) cmdlist ::= cmdlist ecmd */ | 
| 3107 |    186,  /* (344) cmdlist ::= ecmd */ | 
| 3108 |    187,  /* (345) ecmd ::= SEMI */ | 
| 3109 |    187,  /* (346) ecmd ::= cmdx SEMI */ | 
| 3110 |    187,  /* (347) ecmd ::= explain cmdx SEMI */ | 
| 3111 |    192,  /* (348) trans_opt ::= */ | 
| 3112 |    192,  /* (349) trans_opt ::= TRANSACTION */ | 
| 3113 |    192,  /* (350) trans_opt ::= TRANSACTION nm */ | 
| 3114 |    194,  /* (351) savepoint_opt ::= SAVEPOINT */ | 
| 3115 |    194,  /* (352) savepoint_opt ::= */ | 
| 3116 |    190,  /* (353) cmd ::= create_table create_table_args */ | 
| 3117 |    203,  /* (354) table_option_set ::= table_option */ | 
| 3118 |    201,  /* (355) columnlist ::= columnlist COMMA columnname carglist */ | 
| 3119 |    201,  /* (356) columnlist ::= columnname carglist */ | 
| 3120 |    193,  /* (357) nm ::= ID|INDEXED */ | 
| 3121 |    193,  /* (358) nm ::= STRING */ | 
| 3122 |    193,  /* (359) nm ::= JOIN_KW */ | 
| 3123 |    208,  /* (360) typetoken ::= typename */ | 
| 3124 |    209,  /* (361) typename ::= ID|STRING */ | 
| 3125 |    210,  /* (362) signed ::= plus_num */ | 
| 3126 |    210,  /* (363) signed ::= minus_num */ | 
| 3127 |    207,  /* (364) carglist ::= carglist ccons */ | 
| 3128 |    207,  /* (365) carglist ::= */ | 
| 3129 |    215,  /* (366) ccons ::= NULL onconf */ | 
| 3130 |    215,  /* (367) ccons ::= GENERATED ALWAYS AS generated */ | 
| 3131 |    215,  /* (368) ccons ::= AS generated */ | 
| 3132 |    202,  /* (369) conslist_opt ::= COMMA conslist */ | 
| 3133 |    228,  /* (370) conslist ::= conslist tconscomma tcons */ | 
| 3134 |    228,  /* (371) conslist ::= tcons */ | 
| 3135 |    229,  /* (372) tconscomma ::= */ | 
| 3136 |    233,  /* (373) defer_subclause_opt ::= defer_subclause */ | 
| 3137 |    235,  /* (374) resolvetype ::= raisetype */ | 
| 3138 |    239,  /* (375) selectnowith ::= oneselect */ | 
| 3139 |    240,  /* (376) oneselect ::= values */ | 
| 3140 |    254,  /* (377) sclp ::= selcollist COMMA */ | 
| 3141 |    255,  /* (378) as ::= ID|STRING */ | 
| 3142 |    264,  /* (379) indexed_opt ::= indexed_by */ | 
| 3143 |    272,  /* (380) returning ::= */ | 
| 3144 |    217,  /* (381) expr ::= term */ | 
| 3145 |    274,  /* (382) likeop ::= LIKE_KW|MATCH */ | 
| 3146 |    261,  /* (383) exprlist ::= nexprlist */ | 
| 3147 |    284,  /* (384) nmnum ::= plus_num */ | 
| 3148 |    284,  /* (385) nmnum ::= nm */ | 
| 3149 |    284,  /* (386) nmnum ::= ON */ | 
| 3150 |    284,  /* (387) nmnum ::= DELETE */ | 
| 3151 |    284,  /* (388) nmnum ::= DEFAULT */ | 
| 3152 |    211,  /* (389) plus_num ::= INTEGER|FLOAT */ | 
| 3153 |    289,  /* (390) foreach_clause ::= */ | 
| 3154 |    289,  /* (391) foreach_clause ::= FOR EACH ROW */ | 
| 3155 |    292,  /* (392) trnm ::= nm */ | 
| 3156 |    293,  /* (393) tridxby ::= */ | 
| 3157 |    294,  /* (394) database_kw_opt ::= DATABASE */ | 
| 3158 |    294,  /* (395) database_kw_opt ::= */ | 
| 3159 |    297,  /* (396) kwcolumn_opt ::= */ | 
| 3160 |    297,  /* (397) kwcolumn_opt ::= COLUMNKW */ | 
| 3161 |    299,  /* (398) vtabarglist ::= vtabarg */ | 
| 3162 |    299,  /* (399) vtabarglist ::= vtabarglist COMMA vtabarg */ | 
| 3163 |    300,  /* (400) vtabarg ::= vtabarg vtabargtoken */ | 
| 3164 |    303,  /* (401) anylist ::= */ | 
| 3165 |    303,  /* (402) anylist ::= anylist LP anylist RP */ | 
| 3166 |    303,  /* (403) anylist ::= anylist ANY */ | 
| 3167 |    266,  /* (404) with ::= */ | 
| 3168 | }; | 
| 3169 |  | 
| 3170 | /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number | 
| 3171 | ** of symbols on the right-hand side of that rule. */ | 
| 3172 | static const signed char yyRuleInfoNRhs[] = { | 
| 3173 |    -1,  /* (0) explain ::= EXPLAIN */ | 
| 3174 |    -3,  /* (1) explain ::= EXPLAIN QUERY PLAN */ | 
| 3175 |    -1,  /* (2) cmdx ::= cmd */ | 
| 3176 |    -3,  /* (3) cmd ::= BEGIN transtype trans_opt */ | 
| 3177 |     0,  /* (4) transtype ::= */ | 
| 3178 |    -1,  /* (5) transtype ::= DEFERRED */ | 
| 3179 |    -1,  /* (6) transtype ::= IMMEDIATE */ | 
| 3180 |    -1,  /* (7) transtype ::= EXCLUSIVE */ | 
| 3181 |    -2,  /* (8) cmd ::= COMMIT|END trans_opt */ | 
| 3182 |    -2,  /* (9) cmd ::= ROLLBACK trans_opt */ | 
| 3183 |    -2,  /* (10) cmd ::= SAVEPOINT nm */ | 
| 3184 |    -3,  /* (11) cmd ::= RELEASE savepoint_opt nm */ | 
| 3185 |    -5,  /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */ | 
| 3186 |    -6,  /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */ | 
| 3187 |    -1,  /* (14) createkw ::= CREATE */ | 
| 3188 |     0,  /* (15) ifnotexists ::= */ | 
| 3189 |    -3,  /* (16) ifnotexists ::= IF NOT EXISTS */ | 
| 3190 |    -1,  /* (17) temp ::= TEMP */ | 
| 3191 |     0,  /* (18) temp ::= */ | 
| 3192 |    -5,  /* (19) create_table_args ::= LP columnlist conslist_opt RP table_option_set */ | 
| 3193 |    -2,  /* (20) create_table_args ::= AS select */ | 
| 3194 |     0,  /* (21) table_option_set ::= */ | 
| 3195 |    -3,  /* (22) table_option_set ::= table_option_set COMMA table_option */ | 
| 3196 |    -2,  /* (23) table_option ::= WITHOUT nm */ | 
| 3197 |    -1,  /* (24) table_option ::= nm */ | 
| 3198 |    -2,  /* (25) columnname ::= nm typetoken */ | 
| 3199 |     0,  /* (26) typetoken ::= */ | 
| 3200 |    -4,  /* (27) typetoken ::= typename LP signed RP */ | 
| 3201 |    -6,  /* (28) typetoken ::= typename LP signed COMMA signed RP */ | 
| 3202 |    -2,  /* (29) typename ::= typename ID|STRING */ | 
| 3203 |     0,  /* (30) scanpt ::= */ | 
| 3204 |     0,  /* (31) scantok ::= */ | 
| 3205 |    -2,  /* (32) ccons ::= CONSTRAINT nm */ | 
| 3206 |    -3,  /* (33) ccons ::= DEFAULT scantok term */ | 
| 3207 |    -4,  /* (34) ccons ::= DEFAULT LP expr RP */ | 
| 3208 |    -4,  /* (35) ccons ::= DEFAULT PLUS scantok term */ | 
| 3209 |    -4,  /* (36) ccons ::= DEFAULT MINUS scantok term */ | 
| 3210 |    -3,  /* (37) ccons ::= DEFAULT scantok ID|INDEXED */ | 
| 3211 |    -3,  /* (38) ccons ::= NOT NULL onconf */ | 
| 3212 |    -5,  /* (39) ccons ::= PRIMARY KEY sortorder onconf autoinc */ | 
| 3213 |    -2,  /* (40) ccons ::= UNIQUE onconf */ | 
| 3214 |    -4,  /* (41) ccons ::= CHECK LP expr RP */ | 
| 3215 |    -4,  /* (42) ccons ::= REFERENCES nm eidlist_opt refargs */ | 
| 3216 |    -1,  /* (43) ccons ::= defer_subclause */ | 
| 3217 |    -2,  /* (44) ccons ::= COLLATE ID|STRING */ | 
| 3218 |    -3,  /* (45) generated ::= LP expr RP */ | 
| 3219 |    -4,  /* (46) generated ::= LP expr RP ID */ | 
| 3220 |     0,  /* (47) autoinc ::= */ | 
| 3221 |    -1,  /* (48) autoinc ::= AUTOINCR */ | 
| 3222 |     0,  /* (49) refargs ::= */ | 
| 3223 |    -2,  /* (50) refargs ::= refargs refarg */ | 
| 3224 |    -2,  /* (51) refarg ::= MATCH nm */ | 
| 3225 |    -3,  /* (52) refarg ::= ON INSERT refact */ | 
| 3226 |    -3,  /* (53) refarg ::= ON DELETE refact */ | 
| 3227 |    -3,  /* (54) refarg ::= ON UPDATE refact */ | 
| 3228 |    -2,  /* (55) refact ::= SET NULL */ | 
| 3229 |    -2,  /* (56) refact ::= SET DEFAULT */ | 
| 3230 |    -1,  /* (57) refact ::= CASCADE */ | 
| 3231 |    -1,  /* (58) refact ::= RESTRICT */ | 
| 3232 |    -2,  /* (59) refact ::= NO ACTION */ | 
| 3233 |    -3,  /* (60) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */ | 
| 3234 |    -2,  /* (61) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ | 
| 3235 |     0,  /* (62) init_deferred_pred_opt ::= */ | 
| 3236 |    -2,  /* (63) init_deferred_pred_opt ::= INITIALLY DEFERRED */ | 
| 3237 |    -2,  /* (64) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ | 
| 3238 |     0,  /* (65) conslist_opt ::= */ | 
| 3239 |    -1,  /* (66) tconscomma ::= COMMA */ | 
| 3240 |    -2,  /* (67) tcons ::= CONSTRAINT nm */ | 
| 3241 |    -7,  /* (68) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */ | 
| 3242 |    -5,  /* (69) tcons ::= UNIQUE LP sortlist RP onconf */ | 
| 3243 |    -5,  /* (70) tcons ::= CHECK LP expr RP onconf */ | 
| 3244 |   -10,  /* (71) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */ | 
| 3245 |     0,  /* (72) defer_subclause_opt ::= */ | 
| 3246 |     0,  /* (73) onconf ::= */ | 
| 3247 |    -3,  /* (74) onconf ::= ON CONFLICT resolvetype */ | 
| 3248 |     0,  /* (75) orconf ::= */ | 
| 3249 |    -2,  /* (76) orconf ::= OR resolvetype */ | 
| 3250 |    -1,  /* (77) resolvetype ::= IGNORE */ | 
| 3251 |    -1,  /* (78) resolvetype ::= REPLACE */ | 
| 3252 |    -4,  /* (79) cmd ::= DROP TABLE ifexists fullname */ | 
| 3253 |    -2,  /* (80) ifexists ::= IF EXISTS */ | 
| 3254 |     0,  /* (81) ifexists ::= */ | 
| 3255 |    -9,  /* (82) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */ | 
| 3256 |    -4,  /* (83) cmd ::= DROP VIEW ifexists fullname */ | 
| 3257 |    -1,  /* (84) cmd ::= select */ | 
| 3258 |    -3,  /* (85) select ::= WITH wqlist selectnowith */ | 
| 3259 |    -4,  /* (86) select ::= WITH RECURSIVE wqlist selectnowith */ | 
| 3260 |    -1,  /* (87) select ::= selectnowith */ | 
| 3261 |    -3,  /* (88) selectnowith ::= selectnowith multiselect_op oneselect */ | 
| 3262 |    -1,  /* (89) multiselect_op ::= UNION */ | 
| 3263 |    -2,  /* (90) multiselect_op ::= UNION ALL */ | 
| 3264 |    -1,  /* (91) multiselect_op ::= EXCEPT|INTERSECT */ | 
| 3265 |    -9,  /* (92) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */ | 
| 3266 |   -10,  /* (93) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */ | 
| 3267 |    -4,  /* (94) values ::= VALUES LP nexprlist RP */ | 
| 3268 |    -5,  /* (95) values ::= values COMMA LP nexprlist RP */ | 
| 3269 |    -1,  /* (96) distinct ::= DISTINCT */ | 
| 3270 |    -1,  /* (97) distinct ::= ALL */ | 
| 3271 |     0,  /* (98) distinct ::= */ | 
| 3272 |     0,  /* (99) sclp ::= */ | 
| 3273 |    -5,  /* (100) selcollist ::= sclp scanpt expr scanpt as */ | 
| 3274 |    -3,  /* (101) selcollist ::= sclp scanpt STAR */ | 
| 3275 |    -5,  /* (102) selcollist ::= sclp scanpt nm DOT STAR */ | 
| 3276 |    -2,  /* (103) as ::= AS nm */ | 
| 3277 |     0,  /* (104) as ::= */ | 
| 3278 |     0,  /* (105) from ::= */ | 
| 3279 |    -2,  /* (106) from ::= FROM seltablist */ | 
| 3280 |    -2,  /* (107) stl_prefix ::= seltablist joinop */ | 
| 3281 |     0,  /* (108) stl_prefix ::= */ | 
| 3282 |    -5,  /* (109) seltablist ::= stl_prefix nm dbnm as on_using */ | 
| 3283 |    -6,  /* (110) seltablist ::= stl_prefix nm dbnm as indexed_by on_using */ | 
| 3284 |    -8,  /* (111) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_using */ | 
| 3285 |    -6,  /* (112) seltablist ::= stl_prefix LP select RP as on_using */ | 
| 3286 |    -6,  /* (113) seltablist ::= stl_prefix LP seltablist RP as on_using */ | 
| 3287 |     0,  /* (114) dbnm ::= */ | 
| 3288 |    -2,  /* (115) dbnm ::= DOT nm */ | 
| 3289 |    -1,  /* (116) fullname ::= nm */ | 
| 3290 |    -3,  /* (117) fullname ::= nm DOT nm */ | 
| 3291 |    -1,  /* (118) xfullname ::= nm */ | 
| 3292 |    -3,  /* (119) xfullname ::= nm DOT nm */ | 
| 3293 |    -5,  /* (120) xfullname ::= nm DOT nm AS nm */ | 
| 3294 |    -3,  /* (121) xfullname ::= nm AS nm */ | 
| 3295 |    -1,  /* (122) joinop ::= COMMA|JOIN */ | 
| 3296 |    -2,  /* (123) joinop ::= JOIN_KW JOIN */ | 
| 3297 |    -3,  /* (124) joinop ::= JOIN_KW nm JOIN */ | 
| 3298 |    -4,  /* (125) joinop ::= JOIN_KW nm nm JOIN */ | 
| 3299 |    -2,  /* (126) on_using ::= ON expr */ | 
| 3300 |    -4,  /* (127) on_using ::= USING LP idlist RP */ | 
| 3301 |     0,  /* (128) on_using ::= */ | 
| 3302 |     0,  /* (129) indexed_opt ::= */ | 
| 3303 |    -3,  /* (130) indexed_by ::= INDEXED BY nm */ | 
| 3304 |    -2,  /* (131) indexed_by ::= NOT INDEXED */ | 
| 3305 |     0,  /* (132) orderby_opt ::= */ | 
| 3306 |    -3,  /* (133) orderby_opt ::= ORDER BY sortlist */ | 
| 3307 |    -5,  /* (134) sortlist ::= sortlist COMMA expr sortorder nulls */ | 
| 3308 |    -3,  /* (135) sortlist ::= expr sortorder nulls */ | 
| 3309 |    -1,  /* (136) sortorder ::= ASC */ | 
| 3310 |    -1,  /* (137) sortorder ::= DESC */ | 
| 3311 |     0,  /* (138) sortorder ::= */ | 
| 3312 |    -2,  /* (139) nulls ::= NULLS FIRST */ | 
| 3313 |    -2,  /* (140) nulls ::= NULLS LAST */ | 
| 3314 |     0,  /* (141) nulls ::= */ | 
| 3315 |     0,  /* (142) groupby_opt ::= */ | 
| 3316 |    -3,  /* (143) groupby_opt ::= GROUP BY nexprlist */ | 
| 3317 |     0,  /* (144) having_opt ::= */ | 
| 3318 |    -2,  /* (145) having_opt ::= HAVING expr */ | 
| 3319 |     0,  /* (146) limit_opt ::= */ | 
| 3320 |    -2,  /* (147) limit_opt ::= LIMIT expr */ | 
| 3321 |    -4,  /* (148) limit_opt ::= LIMIT expr OFFSET expr */ | 
| 3322 |    -4,  /* (149) limit_opt ::= LIMIT expr COMMA expr */ | 
| 3323 |    -6,  /* (150) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */ | 
| 3324 |     0,  /* (151) where_opt ::= */ | 
| 3325 |    -2,  /* (152) where_opt ::= WHERE expr */ | 
| 3326 |     0,  /* (153) where_opt_ret ::= */ | 
| 3327 |    -2,  /* (154) where_opt_ret ::= WHERE expr */ | 
| 3328 |    -2,  /* (155) where_opt_ret ::= RETURNING selcollist */ | 
| 3329 |    -4,  /* (156) where_opt_ret ::= WHERE expr RETURNING selcollist */ | 
| 3330 |    -9,  /* (157) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */ | 
| 3331 |    -5,  /* (158) setlist ::= setlist COMMA nm EQ expr */ | 
| 3332 |    -7,  /* (159) setlist ::= setlist COMMA LP idlist RP EQ expr */ | 
| 3333 |    -3,  /* (160) setlist ::= nm EQ expr */ | 
| 3334 |    -5,  /* (161) setlist ::= LP idlist RP EQ expr */ | 
| 3335 |    -7,  /* (162) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */ | 
| 3336 |    -8,  /* (163) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */ | 
| 3337 |     0,  /* (164) upsert ::= */ | 
| 3338 |    -2,  /* (165) upsert ::= RETURNING selcollist */ | 
| 3339 |   -12,  /* (166) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */ | 
| 3340 |    -9,  /* (167) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */ | 
| 3341 |    -5,  /* (168) upsert ::= ON CONFLICT DO NOTHING returning */ | 
| 3342 |    -8,  /* (169) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */ | 
| 3343 |    -2,  /* (170) returning ::= RETURNING selcollist */ | 
| 3344 |    -2,  /* (171) insert_cmd ::= INSERT orconf */ | 
| 3345 |    -1,  /* (172) insert_cmd ::= REPLACE */ | 
| 3346 |     0,  /* (173) idlist_opt ::= */ | 
| 3347 |    -3,  /* (174) idlist_opt ::= LP idlist RP */ | 
| 3348 |    -3,  /* (175) idlist ::= idlist COMMA nm */ | 
| 3349 |    -1,  /* (176) idlist ::= nm */ | 
| 3350 |    -3,  /* (177) expr ::= LP expr RP */ | 
| 3351 |    -1,  /* (178) expr ::= ID|INDEXED */ | 
| 3352 |    -1,  /* (179) expr ::= JOIN_KW */ | 
| 3353 |    -3,  /* (180) expr ::= nm DOT nm */ | 
| 3354 |    -5,  /* (181) expr ::= nm DOT nm DOT nm */ | 
| 3355 |    -1,  /* (182) term ::= NULL|FLOAT|BLOB */ | 
| 3356 |    -1,  /* (183) term ::= STRING */ | 
| 3357 |    -1,  /* (184) term ::= INTEGER */ | 
| 3358 |    -1,  /* (185) expr ::= VARIABLE */ | 
| 3359 |    -3,  /* (186) expr ::= expr COLLATE ID|STRING */ | 
| 3360 |    -6,  /* (187) expr ::= CAST LP expr AS typetoken RP */ | 
| 3361 |    -5,  /* (188) expr ::= ID|INDEXED LP distinct exprlist RP */ | 
| 3362 |    -4,  /* (189) expr ::= ID|INDEXED LP STAR RP */ | 
| 3363 |    -6,  /* (190) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */ | 
| 3364 |    -5,  /* (191) expr ::= ID|INDEXED LP STAR RP filter_over */ | 
| 3365 |    -1,  /* (192) term ::= CTIME_KW */ | 
| 3366 |    -5,  /* (193) expr ::= LP nexprlist COMMA expr RP */ | 
| 3367 |    -3,  /* (194) expr ::= expr AND expr */ | 
| 3368 |    -3,  /* (195) expr ::= expr OR expr */ | 
| 3369 |    -3,  /* (196) expr ::= expr LT|GT|GE|LE expr */ | 
| 3370 |    -3,  /* (197) expr ::= expr EQ|NE expr */ | 
| 3371 |    -3,  /* (198) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ | 
| 3372 |    -3,  /* (199) expr ::= expr PLUS|MINUS expr */ | 
| 3373 |    -3,  /* (200) expr ::= expr STAR|SLASH|REM expr */ | 
| 3374 |    -3,  /* (201) expr ::= expr CONCAT expr */ | 
| 3375 |    -2,  /* (202) likeop ::= NOT LIKE_KW|MATCH */ | 
| 3376 |    -3,  /* (203) expr ::= expr likeop expr */ | 
| 3377 |    -5,  /* (204) expr ::= expr likeop expr ESCAPE expr */ | 
| 3378 |    -2,  /* (205) expr ::= expr ISNULL|NOTNULL */ | 
| 3379 |    -3,  /* (206) expr ::= expr NOT NULL */ | 
| 3380 |    -3,  /* (207) expr ::= expr IS expr */ | 
| 3381 |    -4,  /* (208) expr ::= expr IS NOT expr */ | 
| 3382 |    -6,  /* (209) expr ::= expr IS NOT DISTINCT FROM expr */ | 
| 3383 |    -5,  /* (210) expr ::= expr IS DISTINCT FROM expr */ | 
| 3384 |    -2,  /* (211) expr ::= NOT expr */ | 
| 3385 |    -2,  /* (212) expr ::= BITNOT expr */ | 
| 3386 |    -2,  /* (213) expr ::= PLUS|MINUS expr */ | 
| 3387 |    -3,  /* (214) expr ::= expr PTR expr */ | 
| 3388 |    -1,  /* (215) between_op ::= BETWEEN */ | 
| 3389 |    -2,  /* (216) between_op ::= NOT BETWEEN */ | 
| 3390 |    -5,  /* (217) expr ::= expr between_op expr AND expr */ | 
| 3391 |    -1,  /* (218) in_op ::= IN */ | 
| 3392 |    -2,  /* (219) in_op ::= NOT IN */ | 
| 3393 |    -5,  /* (220) expr ::= expr in_op LP exprlist RP */ | 
| 3394 |    -3,  /* (221) expr ::= LP select RP */ | 
| 3395 |    -5,  /* (222) expr ::= expr in_op LP select RP */ | 
| 3396 |    -5,  /* (223) expr ::= expr in_op nm dbnm paren_exprlist */ | 
| 3397 |    -4,  /* (224) expr ::= EXISTS LP select RP */ | 
| 3398 |    -5,  /* (225) expr ::= CASE case_operand case_exprlist case_else END */ | 
| 3399 |    -5,  /* (226) case_exprlist ::= case_exprlist WHEN expr THEN expr */ | 
| 3400 |    -4,  /* (227) case_exprlist ::= WHEN expr THEN expr */ | 
| 3401 |    -2,  /* (228) case_else ::= ELSE expr */ | 
| 3402 |     0,  /* (229) case_else ::= */ | 
| 3403 |    -1,  /* (230) case_operand ::= expr */ | 
| 3404 |     0,  /* (231) case_operand ::= */ | 
| 3405 |     0,  /* (232) exprlist ::= */ | 
| 3406 |    -3,  /* (233) nexprlist ::= nexprlist COMMA expr */ | 
| 3407 |    -1,  /* (234) nexprlist ::= expr */ | 
| 3408 |     0,  /* (235) paren_exprlist ::= */ | 
| 3409 |    -3,  /* (236) paren_exprlist ::= LP exprlist RP */ | 
| 3410 |   -12,  /* (237) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ | 
| 3411 |    -1,  /* (238) uniqueflag ::= UNIQUE */ | 
| 3412 |     0,  /* (239) uniqueflag ::= */ | 
| 3413 |     0,  /* (240) eidlist_opt ::= */ | 
| 3414 |    -3,  /* (241) eidlist_opt ::= LP eidlist RP */ | 
| 3415 |    -5,  /* (242) eidlist ::= eidlist COMMA nm collate sortorder */ | 
| 3416 |    -3,  /* (243) eidlist ::= nm collate sortorder */ | 
| 3417 |     0,  /* (244) collate ::= */ | 
| 3418 |    -2,  /* (245) collate ::= COLLATE ID|STRING */ | 
| 3419 |    -4,  /* (246) cmd ::= DROP INDEX ifexists fullname */ | 
| 3420 |    -2,  /* (247) cmd ::= VACUUM vinto */ | 
| 3421 |    -3,  /* (248) cmd ::= VACUUM nm vinto */ | 
| 3422 |    -2,  /* (249) vinto ::= INTO expr */ | 
| 3423 |     0,  /* (250) vinto ::= */ | 
| 3424 |    -3,  /* (251) cmd ::= PRAGMA nm dbnm */ | 
| 3425 |    -5,  /* (252) cmd ::= PRAGMA nm dbnm EQ nmnum */ | 
| 3426 |    -6,  /* (253) cmd ::= PRAGMA nm dbnm LP nmnum RP */ | 
| 3427 |    -5,  /* (254) cmd ::= PRAGMA nm dbnm EQ minus_num */ | 
| 3428 |    -6,  /* (255) cmd ::= PRAGMA nm dbnm LP minus_num RP */ | 
| 3429 |    -2,  /* (256) plus_num ::= PLUS INTEGER|FLOAT */ | 
| 3430 |    -2,  /* (257) minus_num ::= MINUS INTEGER|FLOAT */ | 
| 3431 |    -5,  /* (258) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ | 
| 3432 |   -11,  /* (259) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ | 
| 3433 |    -1,  /* (260) trigger_time ::= BEFORE|AFTER */ | 
| 3434 |    -2,  /* (261) trigger_time ::= INSTEAD OF */ | 
| 3435 |     0,  /* (262) trigger_time ::= */ | 
| 3436 |    -1,  /* (263) trigger_event ::= DELETE|INSERT */ | 
| 3437 |    -1,  /* (264) trigger_event ::= UPDATE */ | 
| 3438 |    -3,  /* (265) trigger_event ::= UPDATE OF idlist */ | 
| 3439 |     0,  /* (266) when_clause ::= */ | 
| 3440 |    -2,  /* (267) when_clause ::= WHEN expr */ | 
| 3441 |    -3,  /* (268) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ | 
| 3442 |    -2,  /* (269) trigger_cmd_list ::= trigger_cmd SEMI */ | 
| 3443 |    -3,  /* (270) trnm ::= nm DOT nm */ | 
| 3444 |    -3,  /* (271) tridxby ::= INDEXED BY nm */ | 
| 3445 |    -2,  /* (272) tridxby ::= NOT INDEXED */ | 
| 3446 |    -9,  /* (273) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */ | 
| 3447 |    -8,  /* (274) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */ | 
| 3448 |    -6,  /* (275) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ | 
| 3449 |    -3,  /* (276) trigger_cmd ::= scanpt select scanpt */ | 
| 3450 |    -4,  /* (277) expr ::= RAISE LP IGNORE RP */ | 
| 3451 |    -6,  /* (278) expr ::= RAISE LP raisetype COMMA nm RP */ | 
| 3452 |    -1,  /* (279) raisetype ::= ROLLBACK */ | 
| 3453 |    -1,  /* (280) raisetype ::= ABORT */ | 
| 3454 |    -1,  /* (281) raisetype ::= FAIL */ | 
| 3455 |    -4,  /* (282) cmd ::= DROP TRIGGER ifexists fullname */ | 
| 3456 |    -6,  /* (283) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ | 
| 3457 |    -3,  /* (284) cmd ::= DETACH database_kw_opt expr */ | 
| 3458 |     0,  /* (285) key_opt ::= */ | 
| 3459 |    -2,  /* (286) key_opt ::= KEY expr */ | 
| 3460 |    -1,  /* (287) cmd ::= REINDEX */ | 
| 3461 |    -3,  /* (288) cmd ::= REINDEX nm dbnm */ | 
| 3462 |    -1,  /* (289) cmd ::= ANALYZE */ | 
| 3463 |    -3,  /* (290) cmd ::= ANALYZE nm dbnm */ | 
| 3464 |    -6,  /* (291) cmd ::= ALTER TABLE fullname RENAME TO nm */ | 
| 3465 |    -7,  /* (292) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ | 
| 3466 |    -6,  /* (293) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */ | 
| 3467 |    -1,  /* (294) add_column_fullname ::= fullname */ | 
| 3468 |    -8,  /* (295) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */ | 
| 3469 |    -1,  /* (296) cmd ::= create_vtab */ | 
| 3470 |    -4,  /* (297) cmd ::= create_vtab LP vtabarglist RP */ | 
| 3471 |    -8,  /* (298) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ | 
| 3472 |     0,  /* (299) vtabarg ::= */ | 
| 3473 |    -1,  /* (300) vtabargtoken ::= ANY */ | 
| 3474 |    -3,  /* (301) vtabargtoken ::= lp anylist RP */ | 
| 3475 |    -1,  /* (302) lp ::= LP */ | 
| 3476 |    -2,  /* (303) with ::= WITH wqlist */ | 
| 3477 |    -3,  /* (304) with ::= WITH RECURSIVE wqlist */ | 
| 3478 |    -1,  /* (305) wqas ::= AS */ | 
| 3479 |    -2,  /* (306) wqas ::= AS MATERIALIZED */ | 
| 3480 |    -3,  /* (307) wqas ::= AS NOT MATERIALIZED */ | 
| 3481 |    -6,  /* (308) wqitem ::= nm eidlist_opt wqas LP select RP */ | 
| 3482 |    -1,  /* (309) wqlist ::= wqitem */ | 
| 3483 |    -3,  /* (310) wqlist ::= wqlist COMMA wqitem */ | 
| 3484 |    -1,  /* (311) windowdefn_list ::= windowdefn */ | 
| 3485 |    -3,  /* (312) windowdefn_list ::= windowdefn_list COMMA windowdefn */ | 
| 3486 |    -5,  /* (313) windowdefn ::= nm AS LP window RP */ | 
| 3487 |    -5,  /* (314) window ::= PARTITION BY nexprlist orderby_opt frame_opt */ | 
| 3488 |    -6,  /* (315) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */ | 
| 3489 |    -4,  /* (316) window ::= ORDER BY sortlist frame_opt */ | 
| 3490 |    -5,  /* (317) window ::= nm ORDER BY sortlist frame_opt */ | 
| 3491 |    -1,  /* (318) window ::= frame_opt */ | 
| 3492 |    -2,  /* (319) window ::= nm frame_opt */ | 
| 3493 |     0,  /* (320) frame_opt ::= */ | 
| 3494 |    -3,  /* (321) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */ | 
| 3495 |    -6,  /* (322) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */ | 
| 3496 |    -1,  /* (323) range_or_rows ::= RANGE|ROWS|GROUPS */ | 
| 3497 |    -1,  /* (324) frame_bound_s ::= frame_bound */ | 
| 3498 |    -2,  /* (325) frame_bound_s ::= UNBOUNDED PRECEDING */ | 
| 3499 |    -1,  /* (326) frame_bound_e ::= frame_bound */ | 
| 3500 |    -2,  /* (327) frame_bound_e ::= UNBOUNDED FOLLOWING */ | 
| 3501 |    -2,  /* (328) frame_bound ::= expr PRECEDING|FOLLOWING */ | 
| 3502 |    -2,  /* (329) frame_bound ::= CURRENT ROW */ | 
| 3503 |     0,  /* (330) frame_exclude_opt ::= */ | 
| 3504 |    -2,  /* (331) frame_exclude_opt ::= EXCLUDE frame_exclude */ | 
| 3505 |    -2,  /* (332) frame_exclude ::= NO OTHERS */ | 
| 3506 |    -2,  /* (333) frame_exclude ::= CURRENT ROW */ | 
| 3507 |    -1,  /* (334) frame_exclude ::= GROUP|TIES */ | 
| 3508 |    -2,  /* (335) window_clause ::= WINDOW windowdefn_list */ | 
| 3509 |    -2,  /* (336) filter_over ::= filter_clause over_clause */ | 
| 3510 |    -1,  /* (337) filter_over ::= over_clause */ | 
| 3511 |    -1,  /* (338) filter_over ::= filter_clause */ | 
| 3512 |    -4,  /* (339) over_clause ::= OVER LP window RP */ | 
| 3513 |    -2,  /* (340) over_clause ::= OVER nm */ | 
| 3514 |    -5,  /* (341) filter_clause ::= FILTER LP WHERE expr RP */ | 
| 3515 |    -1,  /* (342) input ::= cmdlist */ | 
| 3516 |    -2,  /* (343) cmdlist ::= cmdlist ecmd */ | 
| 3517 |    -1,  /* (344) cmdlist ::= ecmd */ | 
| 3518 |    -1,  /* (345) ecmd ::= SEMI */ | 
| 3519 |    -2,  /* (346) ecmd ::= cmdx SEMI */ | 
| 3520 |    -3,  /* (347) ecmd ::= explain cmdx SEMI */ | 
| 3521 |     0,  /* (348) trans_opt ::= */ | 
| 3522 |    -1,  /* (349) trans_opt ::= TRANSACTION */ | 
| 3523 |    -2,  /* (350) trans_opt ::= TRANSACTION nm */ | 
| 3524 |    -1,  /* (351) savepoint_opt ::= SAVEPOINT */ | 
| 3525 |     0,  /* (352) savepoint_opt ::= */ | 
| 3526 |    -2,  /* (353) cmd ::= create_table create_table_args */ | 
| 3527 |    -1,  /* (354) table_option_set ::= table_option */ | 
| 3528 |    -4,  /* (355) columnlist ::= columnlist COMMA columnname carglist */ | 
| 3529 |    -2,  /* (356) columnlist ::= columnname carglist */ | 
| 3530 |    -1,  /* (357) nm ::= ID|INDEXED */ | 
| 3531 |    -1,  /* (358) nm ::= STRING */ | 
| 3532 |    -1,  /* (359) nm ::= JOIN_KW */ | 
| 3533 |    -1,  /* (360) typetoken ::= typename */ | 
| 3534 |    -1,  /* (361) typename ::= ID|STRING */ | 
| 3535 |    -1,  /* (362) signed ::= plus_num */ | 
| 3536 |    -1,  /* (363) signed ::= minus_num */ | 
| 3537 |    -2,  /* (364) carglist ::= carglist ccons */ | 
| 3538 |     0,  /* (365) carglist ::= */ | 
| 3539 |    -2,  /* (366) ccons ::= NULL onconf */ | 
| 3540 |    -4,  /* (367) ccons ::= GENERATED ALWAYS AS generated */ | 
| 3541 |    -2,  /* (368) ccons ::= AS generated */ | 
| 3542 |    -2,  /* (369) conslist_opt ::= COMMA conslist */ | 
| 3543 |    -3,  /* (370) conslist ::= conslist tconscomma tcons */ | 
| 3544 |    -1,  /* (371) conslist ::= tcons */ | 
| 3545 |     0,  /* (372) tconscomma ::= */ | 
| 3546 |    -1,  /* (373) defer_subclause_opt ::= defer_subclause */ | 
| 3547 |    -1,  /* (374) resolvetype ::= raisetype */ | 
| 3548 |    -1,  /* (375) selectnowith ::= oneselect */ | 
| 3549 |    -1,  /* (376) oneselect ::= values */ | 
| 3550 |    -2,  /* (377) sclp ::= selcollist COMMA */ | 
| 3551 |    -1,  /* (378) as ::= ID|STRING */ | 
| 3552 |    -1,  /* (379) indexed_opt ::= indexed_by */ | 
| 3553 |     0,  /* (380) returning ::= */ | 
| 3554 |    -1,  /* (381) expr ::= term */ | 
| 3555 |    -1,  /* (382) likeop ::= LIKE_KW|MATCH */ | 
| 3556 |    -1,  /* (383) exprlist ::= nexprlist */ | 
| 3557 |    -1,  /* (384) nmnum ::= plus_num */ | 
| 3558 |    -1,  /* (385) nmnum ::= nm */ | 
| 3559 |    -1,  /* (386) nmnum ::= ON */ | 
| 3560 |    -1,  /* (387) nmnum ::= DELETE */ | 
| 3561 |    -1,  /* (388) nmnum ::= DEFAULT */ | 
| 3562 |    -1,  /* (389) plus_num ::= INTEGER|FLOAT */ | 
| 3563 |     0,  /* (390) foreach_clause ::= */ | 
| 3564 |    -3,  /* (391) foreach_clause ::= FOR EACH ROW */ | 
| 3565 |    -1,  /* (392) trnm ::= nm */ | 
| 3566 |     0,  /* (393) tridxby ::= */ | 
| 3567 |    -1,  /* (394) database_kw_opt ::= DATABASE */ | 
| 3568 |     0,  /* (395) database_kw_opt ::= */ | 
| 3569 |     0,  /* (396) kwcolumn_opt ::= */ | 
| 3570 |    -1,  /* (397) kwcolumn_opt ::= COLUMNKW */ | 
| 3571 |    -1,  /* (398) vtabarglist ::= vtabarg */ | 
| 3572 |    -3,  /* (399) vtabarglist ::= vtabarglist COMMA vtabarg */ | 
| 3573 |    -2,  /* (400) vtabarg ::= vtabarg vtabargtoken */ | 
| 3574 |     0,  /* (401) anylist ::= */ | 
| 3575 |    -4,  /* (402) anylist ::= anylist LP anylist RP */ | 
| 3576 |    -2,  /* (403) anylist ::= anylist ANY */ | 
| 3577 |     0,  /* (404) with ::= */ | 
| 3578 | }; | 
| 3579 |  | 
| 3580 | static void yy_accept(yyParser*);  /* Forward Declaration */ | 
| 3581 |  | 
| 3582 | /* | 
| 3583 | ** Perform a reduce action and the shift that must immediately | 
| 3584 | ** follow the reduce. | 
| 3585 | ** | 
| 3586 | ** The yyLookahead and yyLookaheadToken parameters provide reduce actions | 
| 3587 | ** access to the lookahead token (if any).  The yyLookahead will be YYNOCODE | 
| 3588 | ** if the lookahead token has already been consumed.  As this procedure is | 
| 3589 | ** only called from one place, optimizing compilers will in-line it, which | 
| 3590 | ** means that the extra parameters have no performance impact. | 
| 3591 | */ | 
| 3592 | static YYACTIONTYPE yy_reduce( | 
| 3593 |   yyParser *yypParser,         /* The parser */ | 
| 3594 |   unsigned int yyruleno,       /* Number of the rule by which to reduce */ | 
| 3595 |   int yyLookahead,             /* Lookahead token, or YYNOCODE if none */ | 
| 3596 |   sqlite3ParserTOKENTYPE yyLookaheadToken  /* Value of the lookahead token */ | 
| 3597 |   sqlite3ParserCTX_PDECL                   /* %extra_context */ | 
| 3598 | ){ | 
| 3599 |   int yygoto;                     /* The next state */ | 
| 3600 |   YYACTIONTYPE yyact;             /* The next action */ | 
| 3601 |   yyStackEntry *yymsp;            /* The top of the parser's stack */ | 
| 3602 |   int yysize;                     /* Amount to pop the stack */ | 
| 3603 |   sqlite3ParserARG_FETCH | 
| 3604 |   (void)yyLookahead; | 
| 3605 |   (void)yyLookaheadToken; | 
| 3606 |   yymsp = yypParser->yytos; | 
| 3607 |  | 
| 3608 |   switch( yyruleno ){ | 
| 3609 |   /* Beginning here are the reduction cases.  A typical example | 
| 3610 |   ** follows: | 
| 3611 |   **   case 0: | 
| 3612 |   **  #line <lineno> <grammarfile> | 
| 3613 |   **     { ... }           // User supplied code | 
| 3614 |   **  #line <lineno> <thisfile> | 
| 3615 |   **     break; | 
| 3616 |   */ | 
| 3617 | /********** Begin reduce actions **********************************************/ | 
| 3618 |         YYMINORTYPE yylhsminor; | 
| 3619 |       case 0: /* explain ::= EXPLAIN */ | 
| 3620 | #line 151 "parse.y" | 
| 3621 | { pParse->explain = 1; } | 
| 3622 | #line 3647 "parse.c" | 
| 3623 |         break; | 
| 3624 |       case 1: /* explain ::= EXPLAIN QUERY PLAN */ | 
| 3625 | #line 152 "parse.y" | 
| 3626 | { pParse->explain = 2; } | 
| 3627 | #line 3652 "parse.c" | 
| 3628 |         break; | 
| 3629 |       case 2: /* cmdx ::= cmd */ | 
| 3630 | #line 154 "parse.y" | 
| 3631 | { sqlite3FinishCoding(pParse); } | 
| 3632 | #line 3657 "parse.c" | 
| 3633 |         break; | 
| 3634 |       case 3: /* cmd ::= BEGIN transtype trans_opt */ | 
| 3635 | #line 159 "parse.y" | 
| 3636 | {sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy394);} | 
| 3637 | #line 3662 "parse.c" | 
| 3638 |         break; | 
| 3639 |       case 4: /* transtype ::= */ | 
| 3640 | #line 164 "parse.y" | 
| 3641 | {yymsp[1].minor.yy394 = TK_DEFERRED;} | 
| 3642 | #line 3667 "parse.c" | 
| 3643 |         break; | 
| 3644 |       case 5: /* transtype ::= DEFERRED */ | 
| 3645 |       case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6); | 
| 3646 |       case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7); | 
| 3647 |       case 323: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==323); | 
| 3648 | #line 165 "parse.y" | 
| 3649 | {yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-X*/} | 
| 3650 | #line 3675 "parse.c" | 
| 3651 |         break; | 
| 3652 |       case 8: /* cmd ::= COMMIT|END trans_opt */ | 
| 3653 |       case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9); | 
| 3654 | #line 168 "parse.y" | 
| 3655 | {sqlite3EndTransaction(pParse,yymsp[-1].major);} | 
| 3656 | #line 3681 "parse.c" | 
| 3657 |         break; | 
| 3658 |       case 10: /* cmd ::= SAVEPOINT nm */ | 
| 3659 | #line 173 "parse.y" | 
| 3660 | { | 
| 3661 |   sqlite3Savepoint(pParse, SAVEPOINT_BEGIN, &yymsp[0].minor.yy0); | 
| 3662 | } | 
| 3663 | #line 3688 "parse.c" | 
| 3664 |         break; | 
| 3665 |       case 11: /* cmd ::= RELEASE savepoint_opt nm */ | 
| 3666 | #line 176 "parse.y" | 
| 3667 | { | 
| 3668 |   sqlite3Savepoint(pParse, SAVEPOINT_RELEASE, &yymsp[0].minor.yy0); | 
| 3669 | } | 
| 3670 | #line 3695 "parse.c" | 
| 3671 |         break; | 
| 3672 |       case 12: /* cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */ | 
| 3673 | #line 179 "parse.y" | 
| 3674 | { | 
| 3675 |   sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0); | 
| 3676 | } | 
| 3677 | #line 3702 "parse.c" | 
| 3678 |         break; | 
| 3679 |       case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */ | 
| 3680 | #line 186 "parse.y" | 
| 3681 | { | 
| 3682 |    sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy394,0,0,yymsp[-2].minor.yy394); | 
| 3683 | } | 
| 3684 | #line 3709 "parse.c" | 
| 3685 |         break; | 
| 3686 |       case 14: /* createkw ::= CREATE */ | 
| 3687 | #line 189 "parse.y" | 
| 3688 | {disableLookaside(pParse);} | 
| 3689 | #line 3714 "parse.c" | 
| 3690 |         break; | 
| 3691 |       case 15: /* ifnotexists ::= */ | 
| 3692 |       case 18: /* temp ::= */ yytestcase(yyruleno==18); | 
| 3693 |       case 47: /* autoinc ::= */ yytestcase(yyruleno==47); | 
| 3694 |       case 62: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==62); | 
| 3695 |       case 72: /* defer_subclause_opt ::= */ yytestcase(yyruleno==72); | 
| 3696 |       case 81: /* ifexists ::= */ yytestcase(yyruleno==81); | 
| 3697 |       case 98: /* distinct ::= */ yytestcase(yyruleno==98); | 
| 3698 |       case 244: /* collate ::= */ yytestcase(yyruleno==244); | 
| 3699 | #line 192 "parse.y" | 
| 3700 | {yymsp[1].minor.yy394 = 0;} | 
| 3701 | #line 3726 "parse.c" | 
| 3702 |         break; | 
| 3703 |       case 16: /* ifnotexists ::= IF NOT EXISTS */ | 
| 3704 | #line 193 "parse.y" | 
| 3705 | {yymsp[-2].minor.yy394 = 1;} | 
| 3706 | #line 3731 "parse.c" | 
| 3707 |         break; | 
| 3708 |       case 17: /* temp ::= TEMP */ | 
| 3709 | #line 196 "parse.y" | 
| 3710 | {yymsp[0].minor.yy394 = pParse->db->init.busy==0;} | 
| 3711 | #line 3736 "parse.c" | 
| 3712 |         break; | 
| 3713 |       case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_option_set */ | 
| 3714 | #line 199 "parse.y" | 
| 3715 | { | 
| 3716 |   sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy285,0); | 
| 3717 | } | 
| 3718 | #line 3743 "parse.c" | 
| 3719 |         break; | 
| 3720 |       case 20: /* create_table_args ::= AS select */ | 
| 3721 | #line 202 "parse.y" | 
| 3722 | { | 
| 3723 |   sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy47); | 
| 3724 |   sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy47); | 
| 3725 | } | 
| 3726 | #line 3751 "parse.c" | 
| 3727 |         break; | 
| 3728 |       case 21: /* table_option_set ::= */ | 
| 3729 | #line 208 "parse.y" | 
| 3730 | {yymsp[1].minor.yy285 = 0;} | 
| 3731 | #line 3756 "parse.c" | 
| 3732 |         break; | 
| 3733 |       case 22: /* table_option_set ::= table_option_set COMMA table_option */ | 
| 3734 | #line 210 "parse.y" | 
| 3735 | {yylhsminor.yy285 = yymsp[-2].minor.yy285|yymsp[0].minor.yy285;} | 
| 3736 | #line 3761 "parse.c" | 
| 3737 |   yymsp[-2].minor.yy285 = yylhsminor.yy285; | 
| 3738 |         break; | 
| 3739 |       case 23: /* table_option ::= WITHOUT nm */ | 
| 3740 | #line 211 "parse.y" | 
| 3741 | { | 
| 3742 |   if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid" ,5)==0 ){ | 
| 3743 |     yymsp[-1].minor.yy285 = TF_WithoutRowid | TF_NoVisibleRowid; | 
| 3744 |   }else{ | 
| 3745 |     yymsp[-1].minor.yy285 = 0; | 
| 3746 |     sqlite3ErrorMsg(pParse, "unknown table option: %.*s" , yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z); | 
| 3747 |   } | 
| 3748 | } | 
| 3749 | #line 3774 "parse.c" | 
| 3750 |         break; | 
| 3751 |       case 24: /* table_option ::= nm */ | 
| 3752 | #line 219 "parse.y" | 
| 3753 | { | 
| 3754 |   if( yymsp[0].minor.yy0.n==6 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"strict" ,6)==0 ){ | 
| 3755 |     yylhsminor.yy285 = TF_Strict; | 
| 3756 |   }else{ | 
| 3757 |     yylhsminor.yy285 = 0; | 
| 3758 |     sqlite3ErrorMsg(pParse, "unknown table option: %.*s" , yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z); | 
| 3759 |   } | 
| 3760 | } | 
| 3761 | #line 3786 "parse.c" | 
| 3762 |   yymsp[0].minor.yy285 = yylhsminor.yy285; | 
| 3763 |         break; | 
| 3764 |       case 25: /* columnname ::= nm typetoken */ | 
| 3765 | #line 229 "parse.y" | 
| 3766 | {sqlite3AddColumn(pParse,yymsp[-1].minor.yy0,yymsp[0].minor.yy0);} | 
| 3767 | #line 3792 "parse.c" | 
| 3768 |         break; | 
| 3769 |       case 26: /* typetoken ::= */ | 
| 3770 |       case 65: /* conslist_opt ::= */ yytestcase(yyruleno==65); | 
| 3771 |       case 104: /* as ::= */ yytestcase(yyruleno==104); | 
| 3772 | #line 316 "parse.y" | 
| 3773 | {yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = 0;} | 
| 3774 | #line 3799 "parse.c" | 
| 3775 |         break; | 
| 3776 |       case 27: /* typetoken ::= typename LP signed RP */ | 
| 3777 | #line 318 "parse.y" | 
| 3778 | { | 
| 3779 |   yymsp[-3].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy0.z); | 
| 3780 | } | 
| 3781 | #line 3806 "parse.c" | 
| 3782 |         break; | 
| 3783 |       case 28: /* typetoken ::= typename LP signed COMMA signed RP */ | 
| 3784 | #line 321 "parse.y" | 
| 3785 | { | 
| 3786 |   yymsp[-5].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-5].minor.yy0.z); | 
| 3787 | } | 
| 3788 | #line 3813 "parse.c" | 
| 3789 |         break; | 
| 3790 |       case 29: /* typename ::= typename ID|STRING */ | 
| 3791 | #line 326 "parse.y" | 
| 3792 | {yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);} | 
| 3793 | #line 3818 "parse.c" | 
| 3794 |         break; | 
| 3795 |       case 30: /* scanpt ::= */ | 
| 3796 | #line 344 "parse.y" | 
| 3797 | { | 
| 3798 |   assert( yyLookahead!=YYNOCODE ); | 
| 3799 |   yymsp[1].minor.yy522 = yyLookaheadToken.z; | 
| 3800 | } | 
| 3801 | #line 3826 "parse.c" | 
| 3802 |         break; | 
| 3803 |       case 31: /* scantok ::= */ | 
| 3804 | #line 348 "parse.y" | 
| 3805 | { | 
| 3806 |   assert( yyLookahead!=YYNOCODE ); | 
| 3807 |   yymsp[1].minor.yy0 = yyLookaheadToken; | 
| 3808 | } | 
| 3809 | #line 3834 "parse.c" | 
| 3810 |         break; | 
| 3811 |       case 32: /* ccons ::= CONSTRAINT nm */ | 
| 3812 |       case 67: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==67); | 
| 3813 | #line 358 "parse.y" | 
| 3814 | {pParse->constraintName = yymsp[0].minor.yy0;} | 
| 3815 | #line 3840 "parse.c" | 
| 3816 |         break; | 
| 3817 |       case 33: /* ccons ::= DEFAULT scantok term */ | 
| 3818 | #line 360 "parse.y" | 
| 3819 | {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy528,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);} | 
| 3820 | #line 3845 "parse.c" | 
| 3821 |         break; | 
| 3822 |       case 34: /* ccons ::= DEFAULT LP expr RP */ | 
| 3823 | #line 362 "parse.y" | 
| 3824 | {sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy528,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);} | 
| 3825 | #line 3850 "parse.c" | 
| 3826 |         break; | 
| 3827 |       case 35: /* ccons ::= DEFAULT PLUS scantok term */ | 
| 3828 | #line 364 "parse.y" | 
| 3829 | {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy528,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);} | 
| 3830 | #line 3855 "parse.c" | 
| 3831 |         break; | 
| 3832 |       case 36: /* ccons ::= DEFAULT MINUS scantok term */ | 
| 3833 | #line 365 "parse.y" | 
| 3834 | { | 
| 3835 |   Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy528, 0); | 
| 3836 |   sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]); | 
| 3837 | } | 
| 3838 | #line 3863 "parse.c" | 
| 3839 |         break; | 
| 3840 |       case 37: /* ccons ::= DEFAULT scantok ID|INDEXED */ | 
| 3841 | #line 369 "parse.y" | 
| 3842 | { | 
| 3843 |   Expr *p = tokenExpr(pParse, TK_STRING, yymsp[0].minor.yy0); | 
| 3844 |   if( p ){ | 
| 3845 |     sqlite3ExprIdToTrueFalse(p); | 
| 3846 |     testcase( p->op==TK_TRUEFALSE && sqlite3ExprTruthValue(p) ); | 
| 3847 |   } | 
| 3848 |     sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n); | 
| 3849 | } | 
| 3850 | #line 3875 "parse.c" | 
| 3851 |         break; | 
| 3852 |       case 38: /* ccons ::= NOT NULL onconf */ | 
| 3853 | #line 382 "parse.y" | 
| 3854 | {sqlite3AddNotNull(pParse, yymsp[0].minor.yy394);} | 
| 3855 | #line 3880 "parse.c" | 
| 3856 |         break; | 
| 3857 |       case 39: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */ | 
| 3858 | #line 384 "parse.y" | 
| 3859 | {sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy394,yymsp[0].minor.yy394,yymsp[-2].minor.yy394);} | 
| 3860 | #line 3885 "parse.c" | 
| 3861 |         break; | 
| 3862 |       case 40: /* ccons ::= UNIQUE onconf */ | 
| 3863 | #line 385 "parse.y" | 
| 3864 | {sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy394,0,0,0,0, | 
| 3865 |                                    SQLITE_IDXTYPE_UNIQUE);} | 
| 3866 | #line 3891 "parse.c" | 
| 3867 |         break; | 
| 3868 |       case 41: /* ccons ::= CHECK LP expr RP */ | 
| 3869 | #line 387 "parse.y" | 
| 3870 | {sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy528,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);} | 
| 3871 | #line 3896 "parse.c" | 
| 3872 |         break; | 
| 3873 |       case 42: /* ccons ::= REFERENCES nm eidlist_opt refargs */ | 
| 3874 | #line 389 "parse.y" | 
| 3875 | {sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy322,yymsp[0].minor.yy394);} | 
| 3876 | #line 3901 "parse.c" | 
| 3877 |         break; | 
| 3878 |       case 43: /* ccons ::= defer_subclause */ | 
| 3879 | #line 390 "parse.y" | 
| 3880 | {sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy394);} | 
| 3881 | #line 3906 "parse.c" | 
| 3882 |         break; | 
| 3883 |       case 44: /* ccons ::= COLLATE ID|STRING */ | 
| 3884 | #line 391 "parse.y" | 
| 3885 | {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);} | 
| 3886 | #line 3911 "parse.c" | 
| 3887 |         break; | 
| 3888 |       case 45: /* generated ::= LP expr RP */ | 
| 3889 | #line 394 "parse.y" | 
| 3890 | {sqlite3AddGenerated(pParse,yymsp[-1].minor.yy528,0);} | 
| 3891 | #line 3916 "parse.c" | 
| 3892 |         break; | 
| 3893 |       case 46: /* generated ::= LP expr RP ID */ | 
| 3894 | #line 395 "parse.y" | 
| 3895 | {sqlite3AddGenerated(pParse,yymsp[-2].minor.yy528,&yymsp[0].minor.yy0);} | 
| 3896 | #line 3921 "parse.c" | 
| 3897 |         break; | 
| 3898 |       case 48: /* autoinc ::= AUTOINCR */ | 
| 3899 | #line 400 "parse.y" | 
| 3900 | {yymsp[0].minor.yy394 = 1;} | 
| 3901 | #line 3926 "parse.c" | 
| 3902 |         break; | 
| 3903 |       case 49: /* refargs ::= */ | 
| 3904 | #line 408 "parse.y" | 
| 3905 | { yymsp[1].minor.yy394 = OE_None*0x0101; /* EV: R-19803-45884 */} | 
| 3906 | #line 3931 "parse.c" | 
| 3907 |         break; | 
| 3908 |       case 50: /* refargs ::= refargs refarg */ | 
| 3909 | #line 409 "parse.y" | 
| 3910 | { yymsp[-1].minor.yy394 = (yymsp[-1].minor.yy394 & ~yymsp[0].minor.yy231.mask) | yymsp[0].minor.yy231.value; } | 
| 3911 | #line 3936 "parse.c" | 
| 3912 |         break; | 
| 3913 |       case 51: /* refarg ::= MATCH nm */ | 
| 3914 | #line 411 "parse.y" | 
| 3915 | { yymsp[-1].minor.yy231.value = 0;     yymsp[-1].minor.yy231.mask = 0x000000; } | 
| 3916 | #line 3941 "parse.c" | 
| 3917 |         break; | 
| 3918 |       case 52: /* refarg ::= ON INSERT refact */ | 
| 3919 | #line 412 "parse.y" | 
| 3920 | { yymsp[-2].minor.yy231.value = 0;     yymsp[-2].minor.yy231.mask = 0x000000; } | 
| 3921 | #line 3946 "parse.c" | 
| 3922 |         break; | 
| 3923 |       case 53: /* refarg ::= ON DELETE refact */ | 
| 3924 | #line 413 "parse.y" | 
| 3925 | { yymsp[-2].minor.yy231.value = yymsp[0].minor.yy394;     yymsp[-2].minor.yy231.mask = 0x0000ff; } | 
| 3926 | #line 3951 "parse.c" | 
| 3927 |         break; | 
| 3928 |       case 54: /* refarg ::= ON UPDATE refact */ | 
| 3929 | #line 414 "parse.y" | 
| 3930 | { yymsp[-2].minor.yy231.value = yymsp[0].minor.yy394<<8;  yymsp[-2].minor.yy231.mask = 0x00ff00; } | 
| 3931 | #line 3956 "parse.c" | 
| 3932 |         break; | 
| 3933 |       case 55: /* refact ::= SET NULL */ | 
| 3934 | #line 416 "parse.y" | 
| 3935 | { yymsp[-1].minor.yy394 = OE_SetNull;  /* EV: R-33326-45252 */} | 
| 3936 | #line 3961 "parse.c" | 
| 3937 |         break; | 
| 3938 |       case 56: /* refact ::= SET DEFAULT */ | 
| 3939 | #line 417 "parse.y" | 
| 3940 | { yymsp[-1].minor.yy394 = OE_SetDflt;  /* EV: R-33326-45252 */} | 
| 3941 | #line 3966 "parse.c" | 
| 3942 |         break; | 
| 3943 |       case 57: /* refact ::= CASCADE */ | 
| 3944 | #line 418 "parse.y" | 
| 3945 | { yymsp[0].minor.yy394 = OE_Cascade;  /* EV: R-33326-45252 */} | 
| 3946 | #line 3971 "parse.c" | 
| 3947 |         break; | 
| 3948 |       case 58: /* refact ::= RESTRICT */ | 
| 3949 | #line 419 "parse.y" | 
| 3950 | { yymsp[0].minor.yy394 = OE_Restrict; /* EV: R-33326-45252 */} | 
| 3951 | #line 3976 "parse.c" | 
| 3952 |         break; | 
| 3953 |       case 59: /* refact ::= NO ACTION */ | 
| 3954 | #line 420 "parse.y" | 
| 3955 | { yymsp[-1].minor.yy394 = OE_None;     /* EV: R-33326-45252 */} | 
| 3956 | #line 3981 "parse.c" | 
| 3957 |         break; | 
| 3958 |       case 60: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */ | 
| 3959 | #line 422 "parse.y" | 
| 3960 | {yymsp[-2].minor.yy394 = 0;} | 
| 3961 | #line 3986 "parse.c" | 
| 3962 |         break; | 
| 3963 |       case 61: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ | 
| 3964 |       case 76: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==76); | 
| 3965 |       case 171: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==171); | 
| 3966 | #line 423 "parse.y" | 
| 3967 | {yymsp[-1].minor.yy394 = yymsp[0].minor.yy394;} | 
| 3968 | #line 3993 "parse.c" | 
| 3969 |         break; | 
| 3970 |       case 63: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */ | 
| 3971 |       case 80: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==80); | 
| 3972 |       case 216: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==216); | 
| 3973 |       case 219: /* in_op ::= NOT IN */ yytestcase(yyruleno==219); | 
| 3974 |       case 245: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==245); | 
| 3975 | #line 426 "parse.y" | 
| 3976 | {yymsp[-1].minor.yy394 = 1;} | 
| 3977 | #line 4002 "parse.c" | 
| 3978 |         break; | 
| 3979 |       case 64: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ | 
| 3980 | #line 427 "parse.y" | 
| 3981 | {yymsp[-1].minor.yy394 = 0;} | 
| 3982 | #line 4007 "parse.c" | 
| 3983 |         break; | 
| 3984 |       case 66: /* tconscomma ::= COMMA */ | 
| 3985 | #line 433 "parse.y" | 
| 3986 | {pParse->constraintName.n = 0;} | 
| 3987 | #line 4012 "parse.c" | 
| 3988 |         break; | 
| 3989 |       case 68: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */ | 
| 3990 | #line 437 "parse.y" | 
| 3991 | {sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy322,yymsp[0].minor.yy394,yymsp[-2].minor.yy394,0);} | 
| 3992 | #line 4017 "parse.c" | 
| 3993 |         break; | 
| 3994 |       case 69: /* tcons ::= UNIQUE LP sortlist RP onconf */ | 
| 3995 | #line 439 "parse.y" | 
| 3996 | {sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy322,yymsp[0].minor.yy394,0,0,0,0, | 
| 3997 |                                        SQLITE_IDXTYPE_UNIQUE);} | 
| 3998 | #line 4023 "parse.c" | 
| 3999 |         break; | 
| 4000 |       case 70: /* tcons ::= CHECK LP expr RP onconf */ | 
| 4001 | #line 442 "parse.y" | 
| 4002 | {sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy528,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);} | 
| 4003 | #line 4028 "parse.c" | 
| 4004 |         break; | 
| 4005 |       case 71: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */ | 
| 4006 | #line 444 "parse.y" | 
| 4007 | { | 
| 4008 |     sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy322, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy322, yymsp[-1].minor.yy394); | 
| 4009 |     sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy394); | 
| 4010 | } | 
| 4011 | #line 4036 "parse.c" | 
| 4012 |         break; | 
| 4013 |       case 73: /* onconf ::= */ | 
| 4014 |       case 75: /* orconf ::= */ yytestcase(yyruleno==75); | 
| 4015 | #line 458 "parse.y" | 
| 4016 | {yymsp[1].minor.yy394 = OE_Default;} | 
| 4017 | #line 4042 "parse.c" | 
| 4018 |         break; | 
| 4019 |       case 74: /* onconf ::= ON CONFLICT resolvetype */ | 
| 4020 | #line 459 "parse.y" | 
| 4021 | {yymsp[-2].minor.yy394 = yymsp[0].minor.yy394;} | 
| 4022 | #line 4047 "parse.c" | 
| 4023 |         break; | 
| 4024 |       case 77: /* resolvetype ::= IGNORE */ | 
| 4025 | #line 463 "parse.y" | 
| 4026 | {yymsp[0].minor.yy394 = OE_Ignore;} | 
| 4027 | #line 4052 "parse.c" | 
| 4028 |         break; | 
| 4029 |       case 78: /* resolvetype ::= REPLACE */ | 
| 4030 |       case 172: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==172); | 
| 4031 | #line 464 "parse.y" | 
| 4032 | {yymsp[0].minor.yy394 = OE_Replace;} | 
| 4033 | #line 4058 "parse.c" | 
| 4034 |         break; | 
| 4035 |       case 79: /* cmd ::= DROP TABLE ifexists fullname */ | 
| 4036 | #line 468 "parse.y" | 
| 4037 | { | 
| 4038 |   sqlite3DropTable(pParse, yymsp[0].minor.yy131, 0, yymsp[-1].minor.yy394); | 
| 4039 | } | 
| 4040 | #line 4065 "parse.c" | 
| 4041 |         break; | 
| 4042 |       case 82: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */ | 
| 4043 | #line 479 "parse.y" | 
| 4044 | { | 
| 4045 |   sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy322, yymsp[0].minor.yy47, yymsp[-7].minor.yy394, yymsp[-5].minor.yy394); | 
| 4046 | } | 
| 4047 | #line 4072 "parse.c" | 
| 4048 |         break; | 
| 4049 |       case 83: /* cmd ::= DROP VIEW ifexists fullname */ | 
| 4050 | #line 482 "parse.y" | 
| 4051 | { | 
| 4052 |   sqlite3DropTable(pParse, yymsp[0].minor.yy131, 1, yymsp[-1].minor.yy394); | 
| 4053 | } | 
| 4054 | #line 4079 "parse.c" | 
| 4055 |         break; | 
| 4056 |       case 84: /* cmd ::= select */ | 
| 4057 | #line 489 "parse.y" | 
| 4058 | { | 
| 4059 |   SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0, 0}; | 
| 4060 |   sqlite3Select(pParse, yymsp[0].minor.yy47, &dest); | 
| 4061 |   sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy47); | 
| 4062 | } | 
| 4063 | #line 4088 "parse.c" | 
| 4064 |         break; | 
| 4065 |       case 85: /* select ::= WITH wqlist selectnowith */ | 
| 4066 | #line 551 "parse.y" | 
| 4067 | {yymsp[-2].minor.yy47 = attachWithToSelect(pParse,yymsp[0].minor.yy47,yymsp[-1].minor.yy521);} | 
| 4068 | #line 4093 "parse.c" | 
| 4069 |         break; | 
| 4070 |       case 86: /* select ::= WITH RECURSIVE wqlist selectnowith */ | 
| 4071 | #line 553 "parse.y" | 
| 4072 | {yymsp[-3].minor.yy47 = attachWithToSelect(pParse,yymsp[0].minor.yy47,yymsp[-1].minor.yy521);} | 
| 4073 | #line 4098 "parse.c" | 
| 4074 |         break; | 
| 4075 |       case 87: /* select ::= selectnowith */ | 
| 4076 | #line 555 "parse.y" | 
| 4077 | { | 
| 4078 |   Select *p = yymsp[0].minor.yy47; | 
| 4079 |   if( p ){ | 
| 4080 |     parserDoubleLinkSelect(pParse, p); | 
| 4081 |   } | 
| 4082 |   yymsp[0].minor.yy47 = p; /*A-overwrites-X*/ | 
| 4083 | } | 
| 4084 | #line 4109 "parse.c" | 
| 4085 |         break; | 
| 4086 |       case 88: /* selectnowith ::= selectnowith multiselect_op oneselect */ | 
| 4087 | #line 565 "parse.y" | 
| 4088 | { | 
| 4089 |   Select *pRhs = yymsp[0].minor.yy47; | 
| 4090 |   Select *pLhs = yymsp[-2].minor.yy47; | 
| 4091 |   if( pRhs && pRhs->pPrior ){ | 
| 4092 |     SrcList *pFrom; | 
| 4093 |     Token x; | 
| 4094 |     x.n = 0; | 
| 4095 |     parserDoubleLinkSelect(pParse, pRhs); | 
| 4096 |     pFrom = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&x,pRhs,0); | 
| 4097 |     pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0); | 
| 4098 |   } | 
| 4099 |   if( pRhs ){ | 
| 4100 |     pRhs->op = (u8)yymsp[-1].minor.yy394; | 
| 4101 |     pRhs->pPrior = pLhs; | 
| 4102 |     if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue; | 
| 4103 |     pRhs->selFlags &= ~SF_MultiValue; | 
| 4104 |     if( yymsp[-1].minor.yy394!=TK_ALL ) pParse->hasCompound = 1; | 
| 4105 |   }else{ | 
| 4106 |     sqlite3SelectDelete(pParse->db, pLhs); | 
| 4107 |   } | 
| 4108 |   yymsp[-2].minor.yy47 = pRhs; | 
| 4109 | } | 
| 4110 | #line 4135 "parse.c" | 
| 4111 |         break; | 
| 4112 |       case 89: /* multiselect_op ::= UNION */ | 
| 4113 |       case 91: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==91); | 
| 4114 | #line 588 "parse.y" | 
| 4115 | {yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-OP*/} | 
| 4116 | #line 4141 "parse.c" | 
| 4117 |         break; | 
| 4118 |       case 90: /* multiselect_op ::= UNION ALL */ | 
| 4119 | #line 589 "parse.y" | 
| 4120 | {yymsp[-1].minor.yy394 = TK_ALL;} | 
| 4121 | #line 4146 "parse.c" | 
| 4122 |         break; | 
| 4123 |       case 92: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */ | 
| 4124 | #line 595 "parse.y" | 
| 4125 | { | 
| 4126 |   yymsp[-8].minor.yy47 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy322,yymsp[-5].minor.yy131,yymsp[-4].minor.yy528,yymsp[-3].minor.yy322,yymsp[-2].minor.yy528,yymsp[-1].minor.yy322,yymsp[-7].minor.yy394,yymsp[0].minor.yy528); | 
| 4127 | } | 
| 4128 | #line 4153 "parse.c" | 
| 4129 |         break; | 
| 4130 |       case 93: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */ | 
| 4131 | #line 601 "parse.y" | 
| 4132 | { | 
| 4133 |   yymsp[-9].minor.yy47 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy322,yymsp[-6].minor.yy131,yymsp[-5].minor.yy528,yymsp[-4].minor.yy322,yymsp[-3].minor.yy528,yymsp[-1].minor.yy322,yymsp[-8].minor.yy394,yymsp[0].minor.yy528); | 
| 4134 |   if( yymsp[-9].minor.yy47 ){ | 
| 4135 |     yymsp[-9].minor.yy47->pWinDefn = yymsp[-2].minor.yy41; | 
| 4136 |   }else{ | 
| 4137 |     sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy41); | 
| 4138 |   } | 
| 4139 | } | 
| 4140 | #line 4165 "parse.c" | 
| 4141 |         break; | 
| 4142 |       case 94: /* values ::= VALUES LP nexprlist RP */ | 
| 4143 | #line 616 "parse.y" | 
| 4144 | { | 
| 4145 |   yymsp[-3].minor.yy47 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy322,0,0,0,0,0,SF_Values,0); | 
| 4146 | } | 
| 4147 | #line 4172 "parse.c" | 
| 4148 |         break; | 
| 4149 |       case 95: /* values ::= values COMMA LP nexprlist RP */ | 
| 4150 | #line 619 "parse.y" | 
| 4151 | { | 
| 4152 |   Select *pRight, *pLeft = yymsp[-4].minor.yy47; | 
| 4153 |   pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy322,0,0,0,0,0,SF_Values|SF_MultiValue,0); | 
| 4154 |   if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue; | 
| 4155 |   if( pRight ){ | 
| 4156 |     pRight->op = TK_ALL; | 
| 4157 |     pRight->pPrior = pLeft; | 
| 4158 |     yymsp[-4].minor.yy47 = pRight; | 
| 4159 |   }else{ | 
| 4160 |     yymsp[-4].minor.yy47 = pLeft; | 
| 4161 |   } | 
| 4162 | } | 
| 4163 | #line 4188 "parse.c" | 
| 4164 |         break; | 
| 4165 |       case 96: /* distinct ::= DISTINCT */ | 
| 4166 | #line 636 "parse.y" | 
| 4167 | {yymsp[0].minor.yy394 = SF_Distinct;} | 
| 4168 | #line 4193 "parse.c" | 
| 4169 |         break; | 
| 4170 |       case 97: /* distinct ::= ALL */ | 
| 4171 | #line 637 "parse.y" | 
| 4172 | {yymsp[0].minor.yy394 = SF_All;} | 
| 4173 | #line 4198 "parse.c" | 
| 4174 |         break; | 
| 4175 |       case 99: /* sclp ::= */ | 
| 4176 |       case 132: /* orderby_opt ::= */ yytestcase(yyruleno==132); | 
| 4177 |       case 142: /* groupby_opt ::= */ yytestcase(yyruleno==142); | 
| 4178 |       case 232: /* exprlist ::= */ yytestcase(yyruleno==232); | 
| 4179 |       case 235: /* paren_exprlist ::= */ yytestcase(yyruleno==235); | 
| 4180 |       case 240: /* eidlist_opt ::= */ yytestcase(yyruleno==240); | 
| 4181 | #line 650 "parse.y" | 
| 4182 | {yymsp[1].minor.yy322 = 0;} | 
| 4183 | #line 4208 "parse.c" | 
| 4184 |         break; | 
| 4185 |       case 100: /* selcollist ::= sclp scanpt expr scanpt as */ | 
| 4186 | #line 651 "parse.y" | 
| 4187 | { | 
| 4188 |    yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy322, yymsp[-2].minor.yy528); | 
| 4189 |    if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy322, &yymsp[0].minor.yy0, 1); | 
| 4190 |    sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy322,yymsp[-3].minor.yy522,yymsp[-1].minor.yy522); | 
| 4191 | } | 
| 4192 | #line 4217 "parse.c" | 
| 4193 |         break; | 
| 4194 |       case 101: /* selcollist ::= sclp scanpt STAR */ | 
| 4195 | #line 656 "parse.y" | 
| 4196 | { | 
| 4197 |   Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0); | 
| 4198 |   yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy322, p); | 
| 4199 | } | 
| 4200 | #line 4225 "parse.c" | 
| 4201 |         break; | 
| 4202 |       case 102: /* selcollist ::= sclp scanpt nm DOT STAR */ | 
| 4203 | #line 660 "parse.y" | 
| 4204 | { | 
| 4205 |   Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0); | 
| 4206 |   Expr *pLeft = tokenExpr(pParse, TK_ID, yymsp[-2].minor.yy0); | 
| 4207 |   Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight); | 
| 4208 |   yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, pDot); | 
| 4209 | } | 
| 4210 | #line 4235 "parse.c" | 
| 4211 |         break; | 
| 4212 |       case 103: /* as ::= AS nm */ | 
| 4213 |       case 115: /* dbnm ::= DOT nm */ yytestcase(yyruleno==115); | 
| 4214 |       case 256: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==256); | 
| 4215 |       case 257: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==257); | 
| 4216 | #line 671 "parse.y" | 
| 4217 | {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;} | 
| 4218 | #line 4243 "parse.c" | 
| 4219 |         break; | 
| 4220 |       case 105: /* from ::= */ | 
| 4221 |       case 108: /* stl_prefix ::= */ yytestcase(yyruleno==108); | 
| 4222 | #line 685 "parse.y" | 
| 4223 | {yymsp[1].minor.yy131 = 0;} | 
| 4224 | #line 4249 "parse.c" | 
| 4225 |         break; | 
| 4226 |       case 106: /* from ::= FROM seltablist */ | 
| 4227 | #line 686 "parse.y" | 
| 4228 | { | 
| 4229 |   yymsp[-1].minor.yy131 = yymsp[0].minor.yy131; | 
| 4230 |   sqlite3SrcListShiftJoinType(pParse,yymsp[-1].minor.yy131); | 
| 4231 | } | 
| 4232 | #line 4257 "parse.c" | 
| 4233 |         break; | 
| 4234 |       case 107: /* stl_prefix ::= seltablist joinop */ | 
| 4235 | #line 694 "parse.y" | 
| 4236 | { | 
| 4237 |    if( ALWAYS(yymsp[-1].minor.yy131 && yymsp[-1].minor.yy131->nSrc>0) ) yymsp[-1].minor.yy131->a[yymsp[-1].minor.yy131->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy394; | 
| 4238 | } | 
| 4239 | #line 4264 "parse.c" | 
| 4240 |         break; | 
| 4241 |       case 109: /* seltablist ::= stl_prefix nm dbnm as on_using */ | 
| 4242 | #line 698 "parse.y" | 
| 4243 | { | 
| 4244 |   yymsp[-4].minor.yy131 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-4].minor.yy131,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy561); | 
| 4245 | } | 
| 4246 | #line 4271 "parse.c" | 
| 4247 |         break; | 
| 4248 |       case 110: /* seltablist ::= stl_prefix nm dbnm as indexed_by on_using */ | 
| 4249 | #line 701 "parse.y" | 
| 4250 | { | 
| 4251 |   yymsp[-5].minor.yy131 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy131,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,0,&yymsp[0].minor.yy561); | 
| 4252 |   sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy131, &yymsp[-1].minor.yy0); | 
| 4253 | } | 
| 4254 | #line 4279 "parse.c" | 
| 4255 |         break; | 
| 4256 |       case 111: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_using */ | 
| 4257 | #line 705 "parse.y" | 
| 4258 | { | 
| 4259 |   yymsp[-7].minor.yy131 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-7].minor.yy131,&yymsp[-6].minor.yy0,&yymsp[-5].minor.yy0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy561); | 
| 4260 |   sqlite3SrcListFuncArgs(pParse, yymsp[-7].minor.yy131, yymsp[-3].minor.yy322); | 
| 4261 | } | 
| 4262 | #line 4287 "parse.c" | 
| 4263 |         break; | 
| 4264 |       case 112: /* seltablist ::= stl_prefix LP select RP as on_using */ | 
| 4265 | #line 710 "parse.y" | 
| 4266 | { | 
| 4267 |     yymsp[-5].minor.yy131 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy131,0,0,&yymsp[-1].minor.yy0,yymsp[-3].minor.yy47,&yymsp[0].minor.yy561); | 
| 4268 |   } | 
| 4269 | #line 4294 "parse.c" | 
| 4270 |         break; | 
| 4271 |       case 113: /* seltablist ::= stl_prefix LP seltablist RP as on_using */ | 
| 4272 | #line 713 "parse.y" | 
| 4273 | { | 
| 4274 |     if( yymsp[-5].minor.yy131==0 && yymsp[-1].minor.yy0.n==0 && yymsp[0].minor.yy561.pOn==0 && yymsp[0].minor.yy561.pUsing==0 ){ | 
| 4275 |       yymsp[-5].minor.yy131 = yymsp[-3].minor.yy131; | 
| 4276 |     }else if( yymsp[-3].minor.yy131->nSrc==1 ){ | 
| 4277 |       yymsp[-5].minor.yy131 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy131,0,0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy561); | 
| 4278 |       if( yymsp[-5].minor.yy131 ){ | 
| 4279 |         SrcItem *pNew = &yymsp[-5].minor.yy131->a[yymsp[-5].minor.yy131->nSrc-1]; | 
| 4280 |         SrcItem *pOld = yymsp[-3].minor.yy131->a; | 
| 4281 |         pNew->zName = pOld->zName; | 
| 4282 |         pNew->zDatabase = pOld->zDatabase; | 
| 4283 |         pNew->pSelect = pOld->pSelect; | 
| 4284 |         if( pNew->pSelect && (pNew->pSelect->selFlags & SF_NestedFrom)!=0 ){ | 
| 4285 |           pNew->fg.isNestedFrom = 1; | 
| 4286 |         } | 
| 4287 |         if( pOld->fg.isTabFunc ){ | 
| 4288 |           pNew->u1.pFuncArg = pOld->u1.pFuncArg; | 
| 4289 |           pOld->u1.pFuncArg = 0; | 
| 4290 |           pOld->fg.isTabFunc = 0; | 
| 4291 |           pNew->fg.isTabFunc = 1; | 
| 4292 |         } | 
| 4293 |         pOld->zName = pOld->zDatabase = 0; | 
| 4294 |         pOld->pSelect = 0; | 
| 4295 |       } | 
| 4296 |       sqlite3SrcListDelete(pParse->db, yymsp[-3].minor.yy131); | 
| 4297 |     }else{ | 
| 4298 |       Select *pSubquery; | 
| 4299 |       sqlite3SrcListShiftJoinType(pParse,yymsp[-3].minor.yy131); | 
| 4300 |       pSubquery = sqlite3SelectNew(pParse,0,yymsp[-3].minor.yy131,0,0,0,0,SF_NestedFrom,0); | 
| 4301 |       yymsp[-5].minor.yy131 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy131,0,0,&yymsp[-1].minor.yy0,pSubquery,&yymsp[0].minor.yy561); | 
| 4302 |     } | 
| 4303 |   } | 
| 4304 | #line 4329 "parse.c" | 
| 4305 |         break; | 
| 4306 |       case 114: /* dbnm ::= */ | 
| 4307 |       case 129: /* indexed_opt ::= */ yytestcase(yyruleno==129); | 
| 4308 | #line 747 "parse.y" | 
| 4309 | {yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;} | 
| 4310 | #line 4335 "parse.c" | 
| 4311 |         break; | 
| 4312 |       case 116: /* fullname ::= nm */ | 
| 4313 | #line 752 "parse.y" | 
| 4314 | { | 
| 4315 |   yylhsminor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); | 
| 4316 |   if( IN_RENAME_OBJECT && yylhsminor.yy131 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy131->a[0].zName, &yymsp[0].minor.yy0); | 
| 4317 | } | 
| 4318 | #line 4343 "parse.c" | 
| 4319 |   yymsp[0].minor.yy131 = yylhsminor.yy131; | 
| 4320 |         break; | 
| 4321 |       case 117: /* fullname ::= nm DOT nm */ | 
| 4322 | #line 756 "parse.y" | 
| 4323 | { | 
| 4324 |   yylhsminor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); | 
| 4325 |   if( IN_RENAME_OBJECT && yylhsminor.yy131 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy131->a[0].zName, &yymsp[0].minor.yy0); | 
| 4326 | } | 
| 4327 | #line 4352 "parse.c" | 
| 4328 |   yymsp[-2].minor.yy131 = yylhsminor.yy131; | 
| 4329 |         break; | 
| 4330 |       case 118: /* xfullname ::= nm */ | 
| 4331 | #line 764 "parse.y" | 
| 4332 | {yymsp[0].minor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/} | 
| 4333 | #line 4358 "parse.c" | 
| 4334 |         break; | 
| 4335 |       case 119: /* xfullname ::= nm DOT nm */ | 
| 4336 | #line 766 "parse.y" | 
| 4337 | {yymsp[-2].minor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/} | 
| 4338 | #line 4363 "parse.c" | 
| 4339 |         break; | 
| 4340 |       case 120: /* xfullname ::= nm DOT nm AS nm */ | 
| 4341 | #line 767 "parse.y" | 
| 4342 | { | 
| 4343 |    yymsp[-4].minor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/ | 
| 4344 |    if( yymsp[-4].minor.yy131 ) yymsp[-4].minor.yy131->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0); | 
| 4345 | } | 
| 4346 | #line 4371 "parse.c" | 
| 4347 |         break; | 
| 4348 |       case 121: /* xfullname ::= nm AS nm */ | 
| 4349 | #line 771 "parse.y" | 
| 4350 | {   | 
| 4351 |    yymsp[-2].minor.yy131 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/ | 
| 4352 |    if( yymsp[-2].minor.yy131 ) yymsp[-2].minor.yy131->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0); | 
| 4353 | } | 
| 4354 | #line 4379 "parse.c" | 
| 4355 |         break; | 
| 4356 |       case 122: /* joinop ::= COMMA|JOIN */ | 
| 4357 | #line 777 "parse.y" | 
| 4358 | { yymsp[0].minor.yy394 = JT_INNER; } | 
| 4359 | #line 4384 "parse.c" | 
| 4360 |         break; | 
| 4361 |       case 123: /* joinop ::= JOIN_KW JOIN */ | 
| 4362 | #line 779 "parse.y" | 
| 4363 | {yymsp[-1].minor.yy394 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0);  /*X-overwrites-A*/} | 
| 4364 | #line 4389 "parse.c" | 
| 4365 |         break; | 
| 4366 |       case 124: /* joinop ::= JOIN_KW nm JOIN */ | 
| 4367 | #line 781 "parse.y" | 
| 4368 | {yymsp[-2].minor.yy394 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/} | 
| 4369 | #line 4394 "parse.c" | 
| 4370 |         break; | 
| 4371 |       case 125: /* joinop ::= JOIN_KW nm nm JOIN */ | 
| 4372 | #line 783 "parse.y" | 
| 4373 | {yymsp[-3].minor.yy394 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/} | 
| 4374 | #line 4399 "parse.c" | 
| 4375 |         break; | 
| 4376 |       case 126: /* on_using ::= ON expr */ | 
| 4377 | #line 804 "parse.y" | 
| 4378 | {yymsp[-1].minor.yy561.pOn = yymsp[0].minor.yy528; yymsp[-1].minor.yy561.pUsing = 0;} | 
| 4379 | #line 4404 "parse.c" | 
| 4380 |         break; | 
| 4381 |       case 127: /* on_using ::= USING LP idlist RP */ | 
| 4382 | #line 805 "parse.y" | 
| 4383 | {yymsp[-3].minor.yy561.pOn = 0; yymsp[-3].minor.yy561.pUsing = yymsp[-1].minor.yy254;} | 
| 4384 | #line 4409 "parse.c" | 
| 4385 |         break; | 
| 4386 |       case 128: /* on_using ::= */ | 
| 4387 | #line 806 "parse.y" | 
| 4388 | {yymsp[1].minor.yy561.pOn = 0; yymsp[1].minor.yy561.pUsing = 0;} | 
| 4389 | #line 4414 "parse.c" | 
| 4390 |         break; | 
| 4391 |       case 130: /* indexed_by ::= INDEXED BY nm */ | 
| 4392 | #line 822 "parse.y" | 
| 4393 | {yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;} | 
| 4394 | #line 4419 "parse.c" | 
| 4395 |         break; | 
| 4396 |       case 131: /* indexed_by ::= NOT INDEXED */ | 
| 4397 | #line 823 "parse.y" | 
| 4398 | {yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;} | 
| 4399 | #line 4424 "parse.c" | 
| 4400 |         break; | 
| 4401 |       case 133: /* orderby_opt ::= ORDER BY sortlist */ | 
| 4402 |       case 143: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==143); | 
| 4403 | #line 836 "parse.y" | 
| 4404 | {yymsp[-2].minor.yy322 = yymsp[0].minor.yy322;} | 
| 4405 | #line 4430 "parse.c" | 
| 4406 |         break; | 
| 4407 |       case 134: /* sortlist ::= sortlist COMMA expr sortorder nulls */ | 
| 4408 | #line 837 "parse.y" | 
| 4409 | { | 
| 4410 |   yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322,yymsp[-2].minor.yy528); | 
| 4411 |   sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy322,yymsp[-1].minor.yy394,yymsp[0].minor.yy394); | 
| 4412 | } | 
| 4413 | #line 4438 "parse.c" | 
| 4414 |         break; | 
| 4415 |       case 135: /* sortlist ::= expr sortorder nulls */ | 
| 4416 | #line 841 "parse.y" | 
| 4417 | { | 
| 4418 |   yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy528); /*A-overwrites-Y*/ | 
| 4419 |   sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy322,yymsp[-1].minor.yy394,yymsp[0].minor.yy394); | 
| 4420 | } | 
| 4421 | #line 4446 "parse.c" | 
| 4422 |         break; | 
| 4423 |       case 136: /* sortorder ::= ASC */ | 
| 4424 | #line 848 "parse.y" | 
| 4425 | {yymsp[0].minor.yy394 = SQLITE_SO_ASC;} | 
| 4426 | #line 4451 "parse.c" | 
| 4427 |         break; | 
| 4428 |       case 137: /* sortorder ::= DESC */ | 
| 4429 | #line 849 "parse.y" | 
| 4430 | {yymsp[0].minor.yy394 = SQLITE_SO_DESC;} | 
| 4431 | #line 4456 "parse.c" | 
| 4432 |         break; | 
| 4433 |       case 138: /* sortorder ::= */ | 
| 4434 |       case 141: /* nulls ::= */ yytestcase(yyruleno==141); | 
| 4435 | #line 850 "parse.y" | 
| 4436 | {yymsp[1].minor.yy394 = SQLITE_SO_UNDEFINED;} | 
| 4437 | #line 4462 "parse.c" | 
| 4438 |         break; | 
| 4439 |       case 139: /* nulls ::= NULLS FIRST */ | 
| 4440 | #line 853 "parse.y" | 
| 4441 | {yymsp[-1].minor.yy394 = SQLITE_SO_ASC;} | 
| 4442 | #line 4467 "parse.c" | 
| 4443 |         break; | 
| 4444 |       case 140: /* nulls ::= NULLS LAST */ | 
| 4445 | #line 854 "parse.y" | 
| 4446 | {yymsp[-1].minor.yy394 = SQLITE_SO_DESC;} | 
| 4447 | #line 4472 "parse.c" | 
| 4448 |         break; | 
| 4449 |       case 144: /* having_opt ::= */ | 
| 4450 |       case 146: /* limit_opt ::= */ yytestcase(yyruleno==146); | 
| 4451 |       case 151: /* where_opt ::= */ yytestcase(yyruleno==151); | 
| 4452 |       case 153: /* where_opt_ret ::= */ yytestcase(yyruleno==153); | 
| 4453 |       case 229: /* case_else ::= */ yytestcase(yyruleno==229); | 
| 4454 |       case 231: /* case_operand ::= */ yytestcase(yyruleno==231); | 
| 4455 |       case 250: /* vinto ::= */ yytestcase(yyruleno==250); | 
| 4456 | #line 864 "parse.y" | 
| 4457 | {yymsp[1].minor.yy528 = 0;} | 
| 4458 | #line 4483 "parse.c" | 
| 4459 |         break; | 
| 4460 |       case 145: /* having_opt ::= HAVING expr */ | 
| 4461 |       case 152: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==152); | 
| 4462 |       case 154: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==154); | 
| 4463 |       case 228: /* case_else ::= ELSE expr */ yytestcase(yyruleno==228); | 
| 4464 |       case 249: /* vinto ::= INTO expr */ yytestcase(yyruleno==249); | 
| 4465 | #line 865 "parse.y" | 
| 4466 | {yymsp[-1].minor.yy528 = yymsp[0].minor.yy528;} | 
| 4467 | #line 4492 "parse.c" | 
| 4468 |         break; | 
| 4469 |       case 147: /* limit_opt ::= LIMIT expr */ | 
| 4470 | #line 879 "parse.y" | 
| 4471 | {yymsp[-1].minor.yy528 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy528,0);} | 
| 4472 | #line 4497 "parse.c" | 
| 4473 |         break; | 
| 4474 |       case 148: /* limit_opt ::= LIMIT expr OFFSET expr */ | 
| 4475 | #line 881 "parse.y" | 
| 4476 | {yymsp[-3].minor.yy528 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy528,yymsp[0].minor.yy528);} | 
| 4477 | #line 4502 "parse.c" | 
| 4478 |         break; | 
| 4479 |       case 149: /* limit_opt ::= LIMIT expr COMMA expr */ | 
| 4480 | #line 883 "parse.y" | 
| 4481 | {yymsp[-3].minor.yy528 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy528,yymsp[-2].minor.yy528);} | 
| 4482 | #line 4507 "parse.c" | 
| 4483 |         break; | 
| 4484 |       case 150: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */ | 
| 4485 | #line 901 "parse.y" | 
| 4486 | { | 
| 4487 |   sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy131, &yymsp[-1].minor.yy0); | 
| 4488 |   sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy131,yymsp[0].minor.yy528,0,0); | 
| 4489 | } | 
| 4490 | #line 4515 "parse.c" | 
| 4491 |         break; | 
| 4492 |       case 155: /* where_opt_ret ::= RETURNING selcollist */ | 
| 4493 | #line 917 "parse.y" | 
| 4494 | {sqlite3AddReturning(pParse,yymsp[0].minor.yy322); yymsp[-1].minor.yy528 = 0;} | 
| 4495 | #line 4520 "parse.c" | 
| 4496 |         break; | 
| 4497 |       case 156: /* where_opt_ret ::= WHERE expr RETURNING selcollist */ | 
| 4498 | #line 919 "parse.y" | 
| 4499 | {sqlite3AddReturning(pParse,yymsp[0].minor.yy322); yymsp[-3].minor.yy528 = yymsp[-2].minor.yy528;} | 
| 4500 | #line 4525 "parse.c" | 
| 4501 |         break; | 
| 4502 |       case 157: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */ | 
| 4503 | #line 951 "parse.y" | 
| 4504 | { | 
| 4505 |   sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy131, &yymsp[-4].minor.yy0); | 
| 4506 |   sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy322,"set list" );  | 
| 4507 |   if( yymsp[-1].minor.yy131 ){ | 
| 4508 |     SrcList *pFromClause = yymsp[-1].minor.yy131; | 
| 4509 |     if( pFromClause->nSrc>1 ){ | 
| 4510 |       Select *pSubquery; | 
| 4511 |       Token as; | 
| 4512 |       pSubquery = sqlite3SelectNew(pParse,0,pFromClause,0,0,0,0,SF_NestedFrom,0); | 
| 4513 |       as.n = 0; | 
| 4514 |       as.z = 0; | 
| 4515 |       pFromClause = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&as,pSubquery,0); | 
| 4516 |     } | 
| 4517 |     yymsp[-5].minor.yy131 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy131, pFromClause); | 
| 4518 |   } | 
| 4519 |   sqlite3Update(pParse,yymsp[-5].minor.yy131,yymsp[-2].minor.yy322,yymsp[0].minor.yy528,yymsp[-6].minor.yy394,0,0,0); | 
| 4520 | } | 
| 4521 | #line 4546 "parse.c" | 
| 4522 |         break; | 
| 4523 |       case 158: /* setlist ::= setlist COMMA nm EQ expr */ | 
| 4524 | #line 975 "parse.y" | 
| 4525 | { | 
| 4526 |   yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy322, yymsp[0].minor.yy528); | 
| 4527 |   sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy322, &yymsp[-2].minor.yy0, 1); | 
| 4528 | } | 
| 4529 | #line 4554 "parse.c" | 
| 4530 |         break; | 
| 4531 |       case 159: /* setlist ::= setlist COMMA LP idlist RP EQ expr */ | 
| 4532 | #line 979 "parse.y" | 
| 4533 | { | 
| 4534 |   yymsp[-6].minor.yy322 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy322, yymsp[-3].minor.yy254, yymsp[0].minor.yy528); | 
| 4535 | } | 
| 4536 | #line 4561 "parse.c" | 
| 4537 |         break; | 
| 4538 |       case 160: /* setlist ::= nm EQ expr */ | 
| 4539 | #line 982 "parse.y" | 
| 4540 | { | 
| 4541 |   yylhsminor.yy322 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy528); | 
| 4542 |   sqlite3ExprListSetName(pParse, yylhsminor.yy322, &yymsp[-2].minor.yy0, 1); | 
| 4543 | } | 
| 4544 | #line 4569 "parse.c" | 
| 4545 |   yymsp[-2].minor.yy322 = yylhsminor.yy322; | 
| 4546 |         break; | 
| 4547 |       case 161: /* setlist ::= LP idlist RP EQ expr */ | 
| 4548 | #line 986 "parse.y" | 
| 4549 | { | 
| 4550 |   yymsp[-4].minor.yy322 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy254, yymsp[0].minor.yy528); | 
| 4551 | } | 
| 4552 | #line 4577 "parse.c" | 
| 4553 |         break; | 
| 4554 |       case 162: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */ | 
| 4555 | #line 993 "parse.y" | 
| 4556 | { | 
| 4557 |   sqlite3Insert(pParse, yymsp[-3].minor.yy131, yymsp[-1].minor.yy47, yymsp[-2].minor.yy254, yymsp[-5].minor.yy394, yymsp[0].minor.yy444); | 
| 4558 | } | 
| 4559 | #line 4584 "parse.c" | 
| 4560 |         break; | 
| 4561 |       case 163: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */ | 
| 4562 | #line 997 "parse.y" | 
| 4563 | { | 
| 4564 |   sqlite3Insert(pParse, yymsp[-4].minor.yy131, 0, yymsp[-3].minor.yy254, yymsp[-6].minor.yy394, 0); | 
| 4565 | } | 
| 4566 | #line 4591 "parse.c" | 
| 4567 |         break; | 
| 4568 |       case 164: /* upsert ::= */ | 
| 4569 | #line 1008 "parse.y" | 
| 4570 | { yymsp[1].minor.yy444 = 0; } | 
| 4571 | #line 4596 "parse.c" | 
| 4572 |         break; | 
| 4573 |       case 165: /* upsert ::= RETURNING selcollist */ | 
| 4574 | #line 1009 "parse.y" | 
| 4575 | { yymsp[-1].minor.yy444 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy322); } | 
| 4576 | #line 4601 "parse.c" | 
| 4577 |         break; | 
| 4578 |       case 166: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */ | 
| 4579 | #line 1012 "parse.y" | 
| 4580 | { yymsp[-11].minor.yy444 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy322,yymsp[-6].minor.yy528,yymsp[-2].minor.yy322,yymsp[-1].minor.yy528,yymsp[0].minor.yy444);} | 
| 4581 | #line 4606 "parse.c" | 
| 4582 |         break; | 
| 4583 |       case 167: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */ | 
| 4584 | #line 1014 "parse.y" | 
| 4585 | { yymsp[-8].minor.yy444 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy322,yymsp[-3].minor.yy528,0,0,yymsp[0].minor.yy444); } | 
| 4586 | #line 4611 "parse.c" | 
| 4587 |         break; | 
| 4588 |       case 168: /* upsert ::= ON CONFLICT DO NOTHING returning */ | 
| 4589 | #line 1016 "parse.y" | 
| 4590 | { yymsp[-4].minor.yy444 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); } | 
| 4591 | #line 4616 "parse.c" | 
| 4592 |         break; | 
| 4593 |       case 169: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */ | 
| 4594 | #line 1018 "parse.y" | 
| 4595 | { yymsp[-7].minor.yy444 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy322,yymsp[-1].minor.yy528,0);} | 
| 4596 | #line 4621 "parse.c" | 
| 4597 |         break; | 
| 4598 |       case 170: /* returning ::= RETURNING selcollist */ | 
| 4599 | #line 1020 "parse.y" | 
| 4600 | {sqlite3AddReturning(pParse,yymsp[0].minor.yy322);} | 
| 4601 | #line 4626 "parse.c" | 
| 4602 |         break; | 
| 4603 |       case 173: /* idlist_opt ::= */ | 
| 4604 | #line 1032 "parse.y" | 
| 4605 | {yymsp[1].minor.yy254 = 0;} | 
| 4606 | #line 4631 "parse.c" | 
| 4607 |         break; | 
| 4608 |       case 174: /* idlist_opt ::= LP idlist RP */ | 
| 4609 | #line 1033 "parse.y" | 
| 4610 | {yymsp[-2].minor.yy254 = yymsp[-1].minor.yy254;} | 
| 4611 | #line 4636 "parse.c" | 
| 4612 |         break; | 
| 4613 |       case 175: /* idlist ::= idlist COMMA nm */ | 
| 4614 | #line 1035 "parse.y" | 
| 4615 | {yymsp[-2].minor.yy254 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy254,&yymsp[0].minor.yy0);} | 
| 4616 | #line 4641 "parse.c" | 
| 4617 |         break; | 
| 4618 |       case 176: /* idlist ::= nm */ | 
| 4619 | #line 1037 "parse.y" | 
| 4620 | {yymsp[0].minor.yy254 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/} | 
| 4621 | #line 4646 "parse.c" | 
| 4622 |         break; | 
| 4623 |       case 177: /* expr ::= LP expr RP */ | 
| 4624 | #line 1086 "parse.y" | 
| 4625 | {yymsp[-2].minor.yy528 = yymsp[-1].minor.yy528;} | 
| 4626 | #line 4651 "parse.c" | 
| 4627 |         break; | 
| 4628 |       case 178: /* expr ::= ID|INDEXED */ | 
| 4629 |       case 179: /* expr ::= JOIN_KW */ yytestcase(yyruleno==179); | 
| 4630 | #line 1087 "parse.y" | 
| 4631 | {yymsp[0].minor.yy528=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/} | 
| 4632 | #line 4657 "parse.c" | 
| 4633 |         break; | 
| 4634 |       case 180: /* expr ::= nm DOT nm */ | 
| 4635 | #line 1089 "parse.y" | 
| 4636 | { | 
| 4637 |   Expr *temp1 = tokenExpr(pParse,TK_ID,yymsp[-2].minor.yy0); | 
| 4638 |   Expr *temp2 = tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); | 
| 4639 |   yylhsminor.yy528 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2); | 
| 4640 | } | 
| 4641 | #line 4666 "parse.c" | 
| 4642 |   yymsp[-2].minor.yy528 = yylhsminor.yy528; | 
| 4643 |         break; | 
| 4644 |       case 181: /* expr ::= nm DOT nm DOT nm */ | 
| 4645 | #line 1094 "parse.y" | 
| 4646 | { | 
| 4647 |   Expr *temp1 = tokenExpr(pParse,TK_ID,yymsp[-4].minor.yy0); | 
| 4648 |   Expr *temp2 = tokenExpr(pParse,TK_ID,yymsp[-2].minor.yy0); | 
| 4649 |   Expr *temp3 = tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); | 
| 4650 |   Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3); | 
| 4651 |   if( IN_RENAME_OBJECT ){ | 
| 4652 |     sqlite3RenameTokenRemap(pParse, 0, temp1); | 
| 4653 |   } | 
| 4654 |   yylhsminor.yy528 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4); | 
| 4655 | } | 
| 4656 | #line 4681 "parse.c" | 
| 4657 |   yymsp[-4].minor.yy528 = yylhsminor.yy528; | 
| 4658 |         break; | 
| 4659 |       case 182: /* term ::= NULL|FLOAT|BLOB */ | 
| 4660 |       case 183: /* term ::= STRING */ yytestcase(yyruleno==183); | 
| 4661 | #line 1104 "parse.y" | 
| 4662 | {yymsp[0].minor.yy528=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/} | 
| 4663 | #line 4688 "parse.c" | 
| 4664 |         break; | 
| 4665 |       case 184: /* term ::= INTEGER */ | 
| 4666 | #line 1106 "parse.y" | 
| 4667 | { | 
| 4668 |   yylhsminor.yy528 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1); | 
| 4669 |   if( yylhsminor.yy528 ) yylhsminor.yy528->w.iOfst = (int)(yymsp[0].minor.yy0.z - pParse->zTail); | 
| 4670 | } | 
| 4671 | #line 4696 "parse.c" | 
| 4672 |   yymsp[0].minor.yy528 = yylhsminor.yy528; | 
| 4673 |         break; | 
| 4674 |       case 185: /* expr ::= VARIABLE */ | 
| 4675 | #line 1110 "parse.y" | 
| 4676 | { | 
| 4677 |   if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){ | 
| 4678 |     u32 n = yymsp[0].minor.yy0.n; | 
| 4679 |     yymsp[0].minor.yy528 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0); | 
| 4680 |     sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy528, n); | 
| 4681 |   }else{ | 
| 4682 |     /* When doing a nested parse, one can include terms in an expression | 
| 4683 |     ** that look like this:   #1 #2 ...  These terms refer to registers | 
| 4684 |     ** in the virtual machine.  #N is the N-th register. */ | 
| 4685 |     Token t = yymsp[0].minor.yy0; /*A-overwrites-X*/ | 
| 4686 |     assert( t.n>=2 ); | 
| 4687 |     if( pParse->nested==0 ){ | 
| 4688 |       sqlite3ErrorMsg(pParse, "near \"%T\": syntax error" , &t); | 
| 4689 |       yymsp[0].minor.yy528 = 0; | 
| 4690 |     }else{ | 
| 4691 |       yymsp[0].minor.yy528 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0); | 
| 4692 |       if( yymsp[0].minor.yy528 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy528->iTable); | 
| 4693 |     } | 
| 4694 |   } | 
| 4695 | } | 
| 4696 | #line 4721 "parse.c" | 
| 4697 |         break; | 
| 4698 |       case 186: /* expr ::= expr COLLATE ID|STRING */ | 
| 4699 | #line 1130 "parse.y" | 
| 4700 | { | 
| 4701 |   yymsp[-2].minor.yy528 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy528, &yymsp[0].minor.yy0, 1); | 
| 4702 | } | 
| 4703 | #line 4728 "parse.c" | 
| 4704 |         break; | 
| 4705 |       case 187: /* expr ::= CAST LP expr AS typetoken RP */ | 
| 4706 | #line 1134 "parse.y" | 
| 4707 | { | 
| 4708 |   yymsp[-5].minor.yy528 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1); | 
| 4709 |   sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy528, yymsp[-3].minor.yy528, 0); | 
| 4710 | } | 
| 4711 | #line 4736 "parse.c" | 
| 4712 |         break; | 
| 4713 |       case 188: /* expr ::= ID|INDEXED LP distinct exprlist RP */ | 
| 4714 | #line 1141 "parse.y" | 
| 4715 | { | 
| 4716 |   yylhsminor.yy528 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy322, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy394); | 
| 4717 | } | 
| 4718 | #line 4743 "parse.c" | 
| 4719 |   yymsp[-4].minor.yy528 = yylhsminor.yy528; | 
| 4720 |         break; | 
| 4721 |       case 189: /* expr ::= ID|INDEXED LP STAR RP */ | 
| 4722 | #line 1144 "parse.y" | 
| 4723 | { | 
| 4724 |   yylhsminor.yy528 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0); | 
| 4725 | } | 
| 4726 | #line 4751 "parse.c" | 
| 4727 |   yymsp[-3].minor.yy528 = yylhsminor.yy528; | 
| 4728 |         break; | 
| 4729 |       case 190: /* expr ::= ID|INDEXED LP distinct exprlist RP filter_over */ | 
| 4730 | #line 1149 "parse.y" | 
| 4731 | { | 
| 4732 |   yylhsminor.yy528 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy322, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy394); | 
| 4733 |   sqlite3WindowAttach(pParse, yylhsminor.yy528, yymsp[0].minor.yy41); | 
| 4734 | } | 
| 4735 | #line 4760 "parse.c" | 
| 4736 |   yymsp[-5].minor.yy528 = yylhsminor.yy528; | 
| 4737 |         break; | 
| 4738 |       case 191: /* expr ::= ID|INDEXED LP STAR RP filter_over */ | 
| 4739 | #line 1153 "parse.y" | 
| 4740 | { | 
| 4741 |   yylhsminor.yy528 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0); | 
| 4742 |   sqlite3WindowAttach(pParse, yylhsminor.yy528, yymsp[0].minor.yy41); | 
| 4743 | } | 
| 4744 | #line 4769 "parse.c" | 
| 4745 |   yymsp[-4].minor.yy528 = yylhsminor.yy528; | 
| 4746 |         break; | 
| 4747 |       case 192: /* term ::= CTIME_KW */ | 
| 4748 | #line 1159 "parse.y" | 
| 4749 | { | 
| 4750 |   yylhsminor.yy528 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0); | 
| 4751 | } | 
| 4752 | #line 4777 "parse.c" | 
| 4753 |   yymsp[0].minor.yy528 = yylhsminor.yy528; | 
| 4754 |         break; | 
| 4755 |       case 193: /* expr ::= LP nexprlist COMMA expr RP */ | 
| 4756 | #line 1163 "parse.y" | 
| 4757 | { | 
| 4758 |   ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy322, yymsp[-1].minor.yy528); | 
| 4759 |   yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0); | 
| 4760 |   if( yymsp[-4].minor.yy528 ){ | 
| 4761 |     yymsp[-4].minor.yy528->x.pList = pList; | 
| 4762 |     if( ALWAYS(pList->nExpr) ){ | 
| 4763 |       yymsp[-4].minor.yy528->flags |= pList->a[0].pExpr->flags & EP_Propagate; | 
| 4764 |     } | 
| 4765 |   }else{ | 
| 4766 |     sqlite3ExprListDelete(pParse->db, pList); | 
| 4767 |   } | 
| 4768 | } | 
| 4769 | #line 4794 "parse.c" | 
| 4770 |         break; | 
| 4771 |       case 194: /* expr ::= expr AND expr */ | 
| 4772 | #line 1176 "parse.y" | 
| 4773 | {yymsp[-2].minor.yy528=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy528,yymsp[0].minor.yy528);} | 
| 4774 | #line 4799 "parse.c" | 
| 4775 |         break; | 
| 4776 |       case 195: /* expr ::= expr OR expr */ | 
| 4777 |       case 196: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==196); | 
| 4778 |       case 197: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==197); | 
| 4779 |       case 198: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==198); | 
| 4780 |       case 199: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==199); | 
| 4781 |       case 200: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==200); | 
| 4782 |       case 201: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==201); | 
| 4783 | #line 1177 "parse.y" | 
| 4784 | {yymsp[-2].minor.yy528=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy528,yymsp[0].minor.yy528);} | 
| 4785 | #line 4810 "parse.c" | 
| 4786 |         break; | 
| 4787 |       case 202: /* likeop ::= NOT LIKE_KW|MATCH */ | 
| 4788 | #line 1190 "parse.y" | 
| 4789 | {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/} | 
| 4790 | #line 4815 "parse.c" | 
| 4791 |         break; | 
| 4792 |       case 203: /* expr ::= expr likeop expr */ | 
| 4793 | #line 1191 "parse.y" | 
| 4794 | { | 
| 4795 |   ExprList *pList; | 
| 4796 |   int bNot = yymsp[-1].minor.yy0.n & 0x80000000; | 
| 4797 |   yymsp[-1].minor.yy0.n &= 0x7fffffff; | 
| 4798 |   pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy528); | 
| 4799 |   pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy528); | 
| 4800 |   yymsp[-2].minor.yy528 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0); | 
| 4801 |   if( bNot ) yymsp[-2].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy528, 0); | 
| 4802 |   if( yymsp[-2].minor.yy528 ) yymsp[-2].minor.yy528->flags |= EP_InfixFunc; | 
| 4803 | } | 
| 4804 | #line 4829 "parse.c" | 
| 4805 |         break; | 
| 4806 |       case 204: /* expr ::= expr likeop expr ESCAPE expr */ | 
| 4807 | #line 1201 "parse.y" | 
| 4808 | { | 
| 4809 |   ExprList *pList; | 
| 4810 |   int bNot = yymsp[-3].minor.yy0.n & 0x80000000; | 
| 4811 |   yymsp[-3].minor.yy0.n &= 0x7fffffff; | 
| 4812 |   pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528); | 
| 4813 |   pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy528); | 
| 4814 |   pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy528); | 
| 4815 |   yymsp[-4].minor.yy528 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0); | 
| 4816 |   if( bNot ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0); | 
| 4817 |   if( yymsp[-4].minor.yy528 ) yymsp[-4].minor.yy528->flags |= EP_InfixFunc; | 
| 4818 | } | 
| 4819 | #line 4844 "parse.c" | 
| 4820 |         break; | 
| 4821 |       case 205: /* expr ::= expr ISNULL|NOTNULL */ | 
| 4822 | #line 1213 "parse.y" | 
| 4823 | {yymsp[-1].minor.yy528 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy528,0);} | 
| 4824 | #line 4849 "parse.c" | 
| 4825 |         break; | 
| 4826 |       case 206: /* expr ::= expr NOT NULL */ | 
| 4827 | #line 1214 "parse.y" | 
| 4828 | {yymsp[-2].minor.yy528 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy528,0);} | 
| 4829 | #line 4854 "parse.c" | 
| 4830 |         break; | 
| 4831 |       case 207: /* expr ::= expr IS expr */ | 
| 4832 | #line 1235 "parse.y" | 
| 4833 | { | 
| 4834 |   yymsp[-2].minor.yy528 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy528,yymsp[0].minor.yy528); | 
| 4835 |   binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-2].minor.yy528, TK_ISNULL); | 
| 4836 | } | 
| 4837 | #line 4862 "parse.c" | 
| 4838 |         break; | 
| 4839 |       case 208: /* expr ::= expr IS NOT expr */ | 
| 4840 | #line 1239 "parse.y" | 
| 4841 | { | 
| 4842 |   yymsp[-3].minor.yy528 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy528,yymsp[0].minor.yy528); | 
| 4843 |   binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-3].minor.yy528, TK_NOTNULL); | 
| 4844 | } | 
| 4845 | #line 4870 "parse.c" | 
| 4846 |         break; | 
| 4847 |       case 209: /* expr ::= expr IS NOT DISTINCT FROM expr */ | 
| 4848 | #line 1243 "parse.y" | 
| 4849 | { | 
| 4850 |   yymsp[-5].minor.yy528 = sqlite3PExpr(pParse,TK_IS,yymsp[-5].minor.yy528,yymsp[0].minor.yy528); | 
| 4851 |   binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-5].minor.yy528, TK_ISNULL); | 
| 4852 | } | 
| 4853 | #line 4878 "parse.c" | 
| 4854 |         break; | 
| 4855 |       case 210: /* expr ::= expr IS DISTINCT FROM expr */ | 
| 4856 | #line 1247 "parse.y" | 
| 4857 | { | 
| 4858 |   yymsp[-4].minor.yy528 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-4].minor.yy528,yymsp[0].minor.yy528); | 
| 4859 |   binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-4].minor.yy528, TK_NOTNULL); | 
| 4860 | } | 
| 4861 | #line 4886 "parse.c" | 
| 4862 |         break; | 
| 4863 |       case 211: /* expr ::= NOT expr */ | 
| 4864 |       case 212: /* expr ::= BITNOT expr */ yytestcase(yyruleno==212); | 
| 4865 | #line 1253 "parse.y" | 
| 4866 | {yymsp[-1].minor.yy528 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy528, 0);/*A-overwrites-B*/} | 
| 4867 | #line 4892 "parse.c" | 
| 4868 |         break; | 
| 4869 |       case 213: /* expr ::= PLUS|MINUS expr */ | 
| 4870 | #line 1256 "parse.y" | 
| 4871 | { | 
| 4872 |   yymsp[-1].minor.yy528 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy528, 0); | 
| 4873 |   /*A-overwrites-B*/ | 
| 4874 | } | 
| 4875 | #line 4900 "parse.c" | 
| 4876 |         break; | 
| 4877 |       case 214: /* expr ::= expr PTR expr */ | 
| 4878 | #line 1261 "parse.y" | 
| 4879 | { | 
| 4880 |   ExprList *pList = sqlite3ExprListAppend(pParse, 0, yymsp[-2].minor.yy528); | 
| 4881 |   pList = sqlite3ExprListAppend(pParse, pList, yymsp[0].minor.yy528); | 
| 4882 |   yylhsminor.yy528 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0); | 
| 4883 | } | 
| 4884 | #line 4909 "parse.c" | 
| 4885 |   yymsp[-2].minor.yy528 = yylhsminor.yy528; | 
| 4886 |         break; | 
| 4887 |       case 215: /* between_op ::= BETWEEN */ | 
| 4888 |       case 218: /* in_op ::= IN */ yytestcase(yyruleno==218); | 
| 4889 | #line 1268 "parse.y" | 
| 4890 | {yymsp[0].minor.yy394 = 0;} | 
| 4891 | #line 4916 "parse.c" | 
| 4892 |         break; | 
| 4893 |       case 217: /* expr ::= expr between_op expr AND expr */ | 
| 4894 | #line 1270 "parse.y" | 
| 4895 | { | 
| 4896 |   ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528); | 
| 4897 |   pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy528); | 
| 4898 |   yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy528, 0); | 
| 4899 |   if( yymsp[-4].minor.yy528 ){ | 
| 4900 |     yymsp[-4].minor.yy528->x.pList = pList; | 
| 4901 |   }else{ | 
| 4902 |     sqlite3ExprListDelete(pParse->db, pList); | 
| 4903 |   }  | 
| 4904 |   if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0); | 
| 4905 | } | 
| 4906 | #line 4931 "parse.c" | 
| 4907 |         break; | 
| 4908 |       case 220: /* expr ::= expr in_op LP exprlist RP */ | 
| 4909 | #line 1285 "parse.y" | 
| 4910 | { | 
| 4911 |     if( yymsp[-1].minor.yy322==0 ){ | 
| 4912 |       /* Expressions of the form | 
| 4913 |       ** | 
| 4914 |       **      expr1 IN () | 
| 4915 |       **      expr1 NOT IN () | 
| 4916 |       ** | 
| 4917 |       ** simplify to constants 0 (false) and 1 (true), respectively, | 
| 4918 |       ** regardless of the value of expr1. | 
| 4919 |       */ | 
| 4920 |       sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy528); | 
| 4921 |       yymsp[-4].minor.yy528 = sqlite3Expr(pParse->db, TK_STRING, yymsp[-3].minor.yy394 ? "true"  : "false" ); | 
| 4922 |       if( yymsp[-4].minor.yy528 ) sqlite3ExprIdToTrueFalse(yymsp[-4].minor.yy528); | 
| 4923 |     }else{ | 
| 4924 |       Expr *pRHS = yymsp[-1].minor.yy322->a[0].pExpr; | 
| 4925 |       if( yymsp[-1].minor.yy322->nExpr==1 && sqlite3ExprIsConstant(pRHS) && yymsp[-4].minor.yy528->op!=TK_VECTOR ){ | 
| 4926 |         yymsp[-1].minor.yy322->a[0].pExpr = 0; | 
| 4927 |         sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy322); | 
| 4928 |         pRHS = sqlite3PExpr(pParse, TK_UPLUS, pRHS, 0); | 
| 4929 |         yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy528, pRHS); | 
| 4930 |       }else{ | 
| 4931 |         yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0); | 
| 4932 |         if( yymsp[-4].minor.yy528==0 ){ | 
| 4933 |           sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy322); | 
| 4934 |         }else if( yymsp[-4].minor.yy528->pLeft->op==TK_VECTOR ){ | 
| 4935 |           int nExpr = yymsp[-4].minor.yy528->pLeft->x.pList->nExpr; | 
| 4936 |           Select *pSelectRHS = sqlite3ExprListToValues(pParse, nExpr, yymsp[-1].minor.yy322); | 
| 4937 |           if( pSelectRHS ){ | 
| 4938 |             parserDoubleLinkSelect(pParse, pSelectRHS); | 
| 4939 |             sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, pSelectRHS); | 
| 4940 |           } | 
| 4941 |         }else{ | 
| 4942 |           yymsp[-4].minor.yy528->x.pList = yymsp[-1].minor.yy322; | 
| 4943 |           sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy528); | 
| 4944 |         } | 
| 4945 |       } | 
| 4946 |       if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0); | 
| 4947 |     } | 
| 4948 |   } | 
| 4949 | #line 4974 "parse.c" | 
| 4950 |         break; | 
| 4951 |       case 221: /* expr ::= LP select RP */ | 
| 4952 | #line 1324 "parse.y" | 
| 4953 | { | 
| 4954 |     yymsp[-2].minor.yy528 = sqlite3PExpr(pParse, TK_SELECT, 0, 0); | 
| 4955 |     sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy528, yymsp[-1].minor.yy47); | 
| 4956 |   } | 
| 4957 | #line 4982 "parse.c" | 
| 4958 |         break; | 
| 4959 |       case 222: /* expr ::= expr in_op LP select RP */ | 
| 4960 | #line 1328 "parse.y" | 
| 4961 | { | 
| 4962 |     yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0); | 
| 4963 |     sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, yymsp[-1].minor.yy47); | 
| 4964 |     if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0); | 
| 4965 |   } | 
| 4966 | #line 4991 "parse.c" | 
| 4967 |         break; | 
| 4968 |       case 223: /* expr ::= expr in_op nm dbnm paren_exprlist */ | 
| 4969 | #line 1333 "parse.y" | 
| 4970 | { | 
| 4971 |     SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0); | 
| 4972 |     Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0); | 
| 4973 |     if( yymsp[0].minor.yy322 )  sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy322); | 
| 4974 |     yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0); | 
| 4975 |     sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, pSelect); | 
| 4976 |     if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0); | 
| 4977 |   } | 
| 4978 | #line 5003 "parse.c" | 
| 4979 |         break; | 
| 4980 |       case 224: /* expr ::= EXISTS LP select RP */ | 
| 4981 | #line 1341 "parse.y" | 
| 4982 | { | 
| 4983 |     Expr *p; | 
| 4984 |     p = yymsp[-3].minor.yy528 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0); | 
| 4985 |     sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy47); | 
| 4986 |   } | 
| 4987 | #line 5012 "parse.c" | 
| 4988 |         break; | 
| 4989 |       case 225: /* expr ::= CASE case_operand case_exprlist case_else END */ | 
| 4990 | #line 1349 "parse.y" | 
| 4991 | { | 
| 4992 |   yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy528, 0); | 
| 4993 |   if( yymsp[-4].minor.yy528 ){ | 
| 4994 |     yymsp[-4].minor.yy528->x.pList = yymsp[-1].minor.yy528 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[-1].minor.yy528) : yymsp[-2].minor.yy322; | 
| 4995 |     sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy528); | 
| 4996 |   }else{ | 
| 4997 |     sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy322); | 
| 4998 |     sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy528); | 
| 4999 |   } | 
| 5000 | } | 
| 5001 | #line 5026 "parse.c" | 
| 5002 |         break; | 
| 5003 |       case 226: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ | 
| 5004 | #line 1361 "parse.y" | 
| 5005 | { | 
| 5006 |   yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[-2].minor.yy528); | 
| 5007 |   yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[0].minor.yy528); | 
| 5008 | } | 
| 5009 | #line 5034 "parse.c" | 
| 5010 |         break; | 
| 5011 |       case 227: /* case_exprlist ::= WHEN expr THEN expr */ | 
| 5012 | #line 1365 "parse.y" | 
| 5013 | { | 
| 5014 |   yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528); | 
| 5015 |   yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy322, yymsp[0].minor.yy528); | 
| 5016 | } | 
| 5017 | #line 5042 "parse.c" | 
| 5018 |         break; | 
| 5019 |       case 230: /* case_operand ::= expr */ | 
| 5020 | #line 1375 "parse.y" | 
| 5021 | {yymsp[0].minor.yy528 = yymsp[0].minor.yy528; /*A-overwrites-X*/} | 
| 5022 | #line 5047 "parse.c" | 
| 5023 |         break; | 
| 5024 |       case 233: /* nexprlist ::= nexprlist COMMA expr */ | 
| 5025 | #line 1386 "parse.y" | 
| 5026 | {yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[0].minor.yy528);} | 
| 5027 | #line 5052 "parse.c" | 
| 5028 |         break; | 
| 5029 |       case 234: /* nexprlist ::= expr */ | 
| 5030 | #line 1388 "parse.y" | 
| 5031 | {yymsp[0].minor.yy322 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy528); /*A-overwrites-Y*/} | 
| 5032 | #line 5057 "parse.c" | 
| 5033 |         break; | 
| 5034 |       case 236: /* paren_exprlist ::= LP exprlist RP */ | 
| 5035 |       case 241: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==241); | 
| 5036 | #line 1396 "parse.y" | 
| 5037 | {yymsp[-2].minor.yy322 = yymsp[-1].minor.yy322;} | 
| 5038 | #line 5063 "parse.c" | 
| 5039 |         break; | 
| 5040 |       case 237: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ | 
| 5041 | #line 1403 "parse.y" | 
| 5042 | { | 
| 5043 |   sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,  | 
| 5044 |                      sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy322, yymsp[-10].minor.yy394, | 
| 5045 |                       &yymsp[-11].minor.yy0, yymsp[0].minor.yy528, SQLITE_SO_ASC, yymsp[-8].minor.yy394, SQLITE_IDXTYPE_APPDEF); | 
| 5046 |   if( IN_RENAME_OBJECT && pParse->pNewIndex ){ | 
| 5047 |     sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0); | 
| 5048 |   } | 
| 5049 | } | 
| 5050 | #line 5075 "parse.c" | 
| 5051 |         break; | 
| 5052 |       case 238: /* uniqueflag ::= UNIQUE */ | 
| 5053 |       case 280: /* raisetype ::= ABORT */ yytestcase(yyruleno==280); | 
| 5054 | #line 1413 "parse.y" | 
| 5055 | {yymsp[0].minor.yy394 = OE_Abort;} | 
| 5056 | #line 5081 "parse.c" | 
| 5057 |         break; | 
| 5058 |       case 239: /* uniqueflag ::= */ | 
| 5059 | #line 1414 "parse.y" | 
| 5060 | {yymsp[1].minor.yy394 = OE_None;} | 
| 5061 | #line 5086 "parse.c" | 
| 5062 |         break; | 
| 5063 |       case 242: /* eidlist ::= eidlist COMMA nm collate sortorder */ | 
| 5064 | #line 1464 "parse.y" | 
| 5065 | { | 
| 5066 |   yymsp[-4].minor.yy322 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy322, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy394, yymsp[0].minor.yy394); | 
| 5067 | } | 
| 5068 | #line 5093 "parse.c" | 
| 5069 |         break; | 
| 5070 |       case 243: /* eidlist ::= nm collate sortorder */ | 
| 5071 | #line 1467 "parse.y" | 
| 5072 | { | 
| 5073 |   yymsp[-2].minor.yy322 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy394, yymsp[0].minor.yy394); /*A-overwrites-Y*/ | 
| 5074 | } | 
| 5075 | #line 5100 "parse.c" | 
| 5076 |         break; | 
| 5077 |       case 246: /* cmd ::= DROP INDEX ifexists fullname */ | 
| 5078 | #line 1478 "parse.y" | 
| 5079 | {sqlite3DropIndex(pParse, yymsp[0].minor.yy131, yymsp[-1].minor.yy394);} | 
| 5080 | #line 5105 "parse.c" | 
| 5081 |         break; | 
| 5082 |       case 247: /* cmd ::= VACUUM vinto */ | 
| 5083 | #line 1485 "parse.y" | 
| 5084 | {sqlite3Vacuum(pParse,0,yymsp[0].minor.yy528);} | 
| 5085 | #line 5110 "parse.c" | 
| 5086 |         break; | 
| 5087 |       case 248: /* cmd ::= VACUUM nm vinto */ | 
| 5088 | #line 1486 "parse.y" | 
| 5089 | {sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy528);} | 
| 5090 | #line 5115 "parse.c" | 
| 5091 |         break; | 
| 5092 |       case 251: /* cmd ::= PRAGMA nm dbnm */ | 
| 5093 | #line 1494 "parse.y" | 
| 5094 | {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);} | 
| 5095 | #line 5120 "parse.c" | 
| 5096 |         break; | 
| 5097 |       case 252: /* cmd ::= PRAGMA nm dbnm EQ nmnum */ | 
| 5098 | #line 1495 "parse.y" | 
| 5099 | {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);} | 
| 5100 | #line 5125 "parse.c" | 
| 5101 |         break; | 
| 5102 |       case 253: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */ | 
| 5103 | #line 1496 "parse.y" | 
| 5104 | {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);} | 
| 5105 | #line 5130 "parse.c" | 
| 5106 |         break; | 
| 5107 |       case 254: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ | 
| 5108 | #line 1498 "parse.y" | 
| 5109 | {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);} | 
| 5110 | #line 5135 "parse.c" | 
| 5111 |         break; | 
| 5112 |       case 255: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ | 
| 5113 | #line 1500 "parse.y" | 
| 5114 | {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);} | 
| 5115 | #line 5140 "parse.c" | 
| 5116 |         break; | 
| 5117 |       case 258: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ | 
| 5118 | #line 1516 "parse.y" | 
| 5119 | { | 
| 5120 |   Token all; | 
| 5121 |   all.z = yymsp[-3].minor.yy0.z; | 
| 5122 |   all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n; | 
| 5123 |   sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy33, &all); | 
| 5124 | } | 
| 5125 | #line 5150 "parse.c" | 
| 5126 |         break; | 
| 5127 |       case 259: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ | 
| 5128 | #line 1525 "parse.y" | 
| 5129 | { | 
| 5130 |   sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy394, yymsp[-4].minor.yy180.a, yymsp[-4].minor.yy180.b, yymsp[-2].minor.yy131, yymsp[0].minor.yy528, yymsp[-10].minor.yy394, yymsp[-8].minor.yy394); | 
| 5131 |   yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/ | 
| 5132 | } | 
| 5133 | #line 5158 "parse.c" | 
| 5134 |         break; | 
| 5135 |       case 260: /* trigger_time ::= BEFORE|AFTER */ | 
| 5136 | #line 1531 "parse.y" | 
| 5137 | { yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-X*/ } | 
| 5138 | #line 5163 "parse.c" | 
| 5139 |         break; | 
| 5140 |       case 261: /* trigger_time ::= INSTEAD OF */ | 
| 5141 | #line 1532 "parse.y" | 
| 5142 | { yymsp[-1].minor.yy394 = TK_INSTEAD;} | 
| 5143 | #line 5168 "parse.c" | 
| 5144 |         break; | 
| 5145 |       case 262: /* trigger_time ::= */ | 
| 5146 | #line 1533 "parse.y" | 
| 5147 | { yymsp[1].minor.yy394 = TK_BEFORE; } | 
| 5148 | #line 5173 "parse.c" | 
| 5149 |         break; | 
| 5150 |       case 263: /* trigger_event ::= DELETE|INSERT */ | 
| 5151 |       case 264: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==264); | 
| 5152 | #line 1537 "parse.y" | 
| 5153 | {yymsp[0].minor.yy180.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy180.b = 0;} | 
| 5154 | #line 5179 "parse.c" | 
| 5155 |         break; | 
| 5156 |       case 265: /* trigger_event ::= UPDATE OF idlist */ | 
| 5157 | #line 1539 "parse.y" | 
| 5158 | {yymsp[-2].minor.yy180.a = TK_UPDATE; yymsp[-2].minor.yy180.b = yymsp[0].minor.yy254;} | 
| 5159 | #line 5184 "parse.c" | 
| 5160 |         break; | 
| 5161 |       case 266: /* when_clause ::= */ | 
| 5162 |       case 285: /* key_opt ::= */ yytestcase(yyruleno==285); | 
| 5163 | #line 1546 "parse.y" | 
| 5164 | { yymsp[1].minor.yy528 = 0; } | 
| 5165 | #line 5190 "parse.c" | 
| 5166 |         break; | 
| 5167 |       case 267: /* when_clause ::= WHEN expr */ | 
| 5168 |       case 286: /* key_opt ::= KEY expr */ yytestcase(yyruleno==286); | 
| 5169 | #line 1547 "parse.y" | 
| 5170 | { yymsp[-1].minor.yy528 = yymsp[0].minor.yy528; } | 
| 5171 | #line 5196 "parse.c" | 
| 5172 |         break; | 
| 5173 |       case 268: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ | 
| 5174 | #line 1551 "parse.y" | 
| 5175 | { | 
| 5176 |   assert( yymsp[-2].minor.yy33!=0 ); | 
| 5177 |   yymsp[-2].minor.yy33->pLast->pNext = yymsp[-1].minor.yy33; | 
| 5178 |   yymsp[-2].minor.yy33->pLast = yymsp[-1].minor.yy33; | 
| 5179 | } | 
| 5180 | #line 5205 "parse.c" | 
| 5181 |         break; | 
| 5182 |       case 269: /* trigger_cmd_list ::= trigger_cmd SEMI */ | 
| 5183 | #line 1556 "parse.y" | 
| 5184 | {  | 
| 5185 |   assert( yymsp[-1].minor.yy33!=0 ); | 
| 5186 |   yymsp[-1].minor.yy33->pLast = yymsp[-1].minor.yy33; | 
| 5187 | } | 
| 5188 | #line 5213 "parse.c" | 
| 5189 |         break; | 
| 5190 |       case 270: /* trnm ::= nm DOT nm */ | 
| 5191 | #line 1567 "parse.y" | 
| 5192 | { | 
| 5193 |   yymsp[-2].minor.yy0 = yymsp[0].minor.yy0; | 
| 5194 |   sqlite3ErrorMsg(pParse,  | 
| 5195 |         "qualified table names are not allowed on INSERT, UPDATE, and DELETE "  | 
| 5196 |         "statements within triggers" ); | 
| 5197 | } | 
| 5198 | #line 5223 "parse.c" | 
| 5199 |         break; | 
| 5200 |       case 271: /* tridxby ::= INDEXED BY nm */ | 
| 5201 | #line 1579 "parse.y" | 
| 5202 | { | 
| 5203 |   sqlite3ErrorMsg(pParse, | 
| 5204 |         "the INDEXED BY clause is not allowed on UPDATE or DELETE statements "  | 
| 5205 |         "within triggers" ); | 
| 5206 | } | 
| 5207 | #line 5232 "parse.c" | 
| 5208 |         break; | 
| 5209 |       case 272: /* tridxby ::= NOT INDEXED */ | 
| 5210 | #line 1584 "parse.y" | 
| 5211 | { | 
| 5212 |   sqlite3ErrorMsg(pParse, | 
| 5213 |         "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "  | 
| 5214 |         "within triggers" ); | 
| 5215 | } | 
| 5216 | #line 5241 "parse.c" | 
| 5217 |         break; | 
| 5218 |       case 273: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */ | 
| 5219 | #line 1597 "parse.y" | 
| 5220 | {yylhsminor.yy33 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy131, yymsp[-3].minor.yy322, yymsp[-1].minor.yy528, yymsp[-7].minor.yy394, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy522);} | 
| 5221 | #line 5246 "parse.c" | 
| 5222 |   yymsp[-8].minor.yy33 = yylhsminor.yy33; | 
| 5223 |         break; | 
| 5224 |       case 274: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */ | 
| 5225 | #line 1601 "parse.y" | 
| 5226 | { | 
| 5227 |    yylhsminor.yy33 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy254,yymsp[-2].minor.yy47,yymsp[-6].minor.yy394,yymsp[-1].minor.yy444,yymsp[-7].minor.yy522,yymsp[0].minor.yy522);/*yylhsminor.yy33-overwrites-yymsp[-6].minor.yy394*/ | 
| 5228 | } | 
| 5229 | #line 5254 "parse.c" | 
| 5230 |   yymsp[-7].minor.yy33 = yylhsminor.yy33; | 
| 5231 |         break; | 
| 5232 |       case 275: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ | 
| 5233 | #line 1606 "parse.y" | 
| 5234 | {yylhsminor.yy33 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy528, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy522);} | 
| 5235 | #line 5260 "parse.c" | 
| 5236 |   yymsp[-5].minor.yy33 = yylhsminor.yy33; | 
| 5237 |         break; | 
| 5238 |       case 276: /* trigger_cmd ::= scanpt select scanpt */ | 
| 5239 | #line 1610 "parse.y" | 
| 5240 | {yylhsminor.yy33 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy47, yymsp[-2].minor.yy522, yymsp[0].minor.yy522); /*yylhsminor.yy33-overwrites-yymsp[-1].minor.yy47*/} | 
| 5241 | #line 5266 "parse.c" | 
| 5242 |   yymsp[-2].minor.yy33 = yylhsminor.yy33; | 
| 5243 |         break; | 
| 5244 |       case 277: /* expr ::= RAISE LP IGNORE RP */ | 
| 5245 | #line 1613 "parse.y" | 
| 5246 | { | 
| 5247 |   yymsp[-3].minor.yy528 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);  | 
| 5248 |   if( yymsp[-3].minor.yy528 ){ | 
| 5249 |     yymsp[-3].minor.yy528->affExpr = OE_Ignore; | 
| 5250 |   } | 
| 5251 | } | 
| 5252 | #line 5277 "parse.c" | 
| 5253 |         break; | 
| 5254 |       case 278: /* expr ::= RAISE LP raisetype COMMA nm RP */ | 
| 5255 | #line 1619 "parse.y" | 
| 5256 | { | 
| 5257 |   yymsp[-5].minor.yy528 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1); | 
| 5258 |   if( yymsp[-5].minor.yy528 ) { | 
| 5259 |     yymsp[-5].minor.yy528->affExpr = (char)yymsp[-3].minor.yy394; | 
| 5260 |   } | 
| 5261 | } | 
| 5262 | #line 5287 "parse.c" | 
| 5263 |         break; | 
| 5264 |       case 279: /* raisetype ::= ROLLBACK */ | 
| 5265 | #line 1628 "parse.y" | 
| 5266 | {yymsp[0].minor.yy394 = OE_Rollback;} | 
| 5267 | #line 5292 "parse.c" | 
| 5268 |         break; | 
| 5269 |       case 281: /* raisetype ::= FAIL */ | 
| 5270 | #line 1630 "parse.y" | 
| 5271 | {yymsp[0].minor.yy394 = OE_Fail;} | 
| 5272 | #line 5297 "parse.c" | 
| 5273 |         break; | 
| 5274 |       case 282: /* cmd ::= DROP TRIGGER ifexists fullname */ | 
| 5275 | #line 1635 "parse.y" | 
| 5276 | { | 
| 5277 |   sqlite3DropTrigger(pParse,yymsp[0].minor.yy131,yymsp[-1].minor.yy394); | 
| 5278 | } | 
| 5279 | #line 5304 "parse.c" | 
| 5280 |         break; | 
| 5281 |       case 283: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ | 
| 5282 | #line 1642 "parse.y" | 
| 5283 | { | 
| 5284 |   sqlite3Attach(pParse, yymsp[-3].minor.yy528, yymsp[-1].minor.yy528, yymsp[0].minor.yy528); | 
| 5285 | } | 
| 5286 | #line 5311 "parse.c" | 
| 5287 |         break; | 
| 5288 |       case 284: /* cmd ::= DETACH database_kw_opt expr */ | 
| 5289 | #line 1645 "parse.y" | 
| 5290 | { | 
| 5291 |   sqlite3Detach(pParse, yymsp[0].minor.yy528); | 
| 5292 | } | 
| 5293 | #line 5318 "parse.c" | 
| 5294 |         break; | 
| 5295 |       case 287: /* cmd ::= REINDEX */ | 
| 5296 | #line 1660 "parse.y" | 
| 5297 | {sqlite3Reindex(pParse, 0, 0);} | 
| 5298 | #line 5323 "parse.c" | 
| 5299 |         break; | 
| 5300 |       case 288: /* cmd ::= REINDEX nm dbnm */ | 
| 5301 | #line 1661 "parse.y" | 
| 5302 | {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);} | 
| 5303 | #line 5328 "parse.c" | 
| 5304 |         break; | 
| 5305 |       case 289: /* cmd ::= ANALYZE */ | 
| 5306 | #line 1666 "parse.y" | 
| 5307 | {sqlite3Analyze(pParse, 0, 0);} | 
| 5308 | #line 5333 "parse.c" | 
| 5309 |         break; | 
| 5310 |       case 290: /* cmd ::= ANALYZE nm dbnm */ | 
| 5311 | #line 1667 "parse.y" | 
| 5312 | {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);} | 
| 5313 | #line 5338 "parse.c" | 
| 5314 |         break; | 
| 5315 |       case 291: /* cmd ::= ALTER TABLE fullname RENAME TO nm */ | 
| 5316 | #line 1673 "parse.y" | 
| 5317 | { | 
| 5318 |   sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy131,&yymsp[0].minor.yy0); | 
| 5319 | } | 
| 5320 | #line 5345 "parse.c" | 
| 5321 |         break; | 
| 5322 |       case 292: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ | 
| 5323 | #line 1677 "parse.y" | 
| 5324 | { | 
| 5325 |   yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n; | 
| 5326 |   sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0); | 
| 5327 | } | 
| 5328 | #line 5353 "parse.c" | 
| 5329 |         break; | 
| 5330 |       case 293: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */ | 
| 5331 | #line 1681 "parse.y" | 
| 5332 | { | 
| 5333 |   sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy131, &yymsp[0].minor.yy0); | 
| 5334 | } | 
| 5335 | #line 5360 "parse.c" | 
| 5336 |         break; | 
| 5337 |       case 294: /* add_column_fullname ::= fullname */ | 
| 5338 | #line 1685 "parse.y" | 
| 5339 | { | 
| 5340 |   disableLookaside(pParse); | 
| 5341 |   sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy131); | 
| 5342 | } | 
| 5343 | #line 5368 "parse.c" | 
| 5344 |         break; | 
| 5345 |       case 295: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */ | 
| 5346 | #line 1689 "parse.y" | 
| 5347 | { | 
| 5348 |   sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy131, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); | 
| 5349 | } | 
| 5350 | #line 5375 "parse.c" | 
| 5351 |         break; | 
| 5352 |       case 296: /* cmd ::= create_vtab */ | 
| 5353 | #line 1701 "parse.y" | 
| 5354 | {sqlite3VtabFinishParse(pParse,0);} | 
| 5355 | #line 5380 "parse.c" | 
| 5356 |         break; | 
| 5357 |       case 297: /* cmd ::= create_vtab LP vtabarglist RP */ | 
| 5358 | #line 1702 "parse.y" | 
| 5359 | {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);} | 
| 5360 | #line 5385 "parse.c" | 
| 5361 |         break; | 
| 5362 |       case 298: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ | 
| 5363 | #line 1704 "parse.y" | 
| 5364 | { | 
| 5365 |     sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy394); | 
| 5366 | } | 
| 5367 | #line 5392 "parse.c" | 
| 5368 |         break; | 
| 5369 |       case 299: /* vtabarg ::= */ | 
| 5370 | #line 1709 "parse.y" | 
| 5371 | {sqlite3VtabArgInit(pParse);} | 
| 5372 | #line 5397 "parse.c" | 
| 5373 |         break; | 
| 5374 |       case 300: /* vtabargtoken ::= ANY */ | 
| 5375 |       case 301: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==301); | 
| 5376 |       case 302: /* lp ::= LP */ yytestcase(yyruleno==302); | 
| 5377 | #line 1711 "parse.y" | 
| 5378 | {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);} | 
| 5379 | #line 5404 "parse.c" | 
| 5380 |         break; | 
| 5381 |       case 303: /* with ::= WITH wqlist */ | 
| 5382 |       case 304: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==304); | 
| 5383 | #line 1728 "parse.y" | 
| 5384 | { sqlite3WithPush(pParse, yymsp[0].minor.yy521, 1); } | 
| 5385 | #line 5410 "parse.c" | 
| 5386 |         break; | 
| 5387 |       case 305: /* wqas ::= AS */ | 
| 5388 | #line 1732 "parse.y" | 
| 5389 | {yymsp[0].minor.yy516 = M10d_Any;} | 
| 5390 | #line 5415 "parse.c" | 
| 5391 |         break; | 
| 5392 |       case 306: /* wqas ::= AS MATERIALIZED */ | 
| 5393 | #line 1733 "parse.y" | 
| 5394 | {yymsp[-1].minor.yy516 = M10d_Yes;} | 
| 5395 | #line 5420 "parse.c" | 
| 5396 |         break; | 
| 5397 |       case 307: /* wqas ::= AS NOT MATERIALIZED */ | 
| 5398 | #line 1734 "parse.y" | 
| 5399 | {yymsp[-2].minor.yy516 = M10d_No;} | 
| 5400 | #line 5425 "parse.c" | 
| 5401 |         break; | 
| 5402 |       case 308: /* wqitem ::= nm eidlist_opt wqas LP select RP */ | 
| 5403 | #line 1735 "parse.y" | 
| 5404 | { | 
| 5405 |   yymsp[-5].minor.yy385 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy322, yymsp[-1].minor.yy47, yymsp[-3].minor.yy516); /*A-overwrites-X*/ | 
| 5406 | } | 
| 5407 | #line 5432 "parse.c" | 
| 5408 |         break; | 
| 5409 |       case 309: /* wqlist ::= wqitem */ | 
| 5410 | #line 1738 "parse.y" | 
| 5411 | { | 
| 5412 |   yymsp[0].minor.yy521 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy385); /*A-overwrites-X*/ | 
| 5413 | } | 
| 5414 | #line 5439 "parse.c" | 
| 5415 |         break; | 
| 5416 |       case 310: /* wqlist ::= wqlist COMMA wqitem */ | 
| 5417 | #line 1741 "parse.y" | 
| 5418 | { | 
| 5419 |   yymsp[-2].minor.yy521 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy521, yymsp[0].minor.yy385); | 
| 5420 | } | 
| 5421 | #line 5446 "parse.c" | 
| 5422 |         break; | 
| 5423 |       case 311: /* windowdefn_list ::= windowdefn */ | 
| 5424 | #line 1755 "parse.y" | 
| 5425 | { yylhsminor.yy41 = yymsp[0].minor.yy41; } | 
| 5426 | #line 5451 "parse.c" | 
| 5427 |   yymsp[0].minor.yy41 = yylhsminor.yy41; | 
| 5428 |         break; | 
| 5429 |       case 312: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */ | 
| 5430 | #line 1756 "parse.y" | 
| 5431 | { | 
| 5432 |   assert( yymsp[0].minor.yy41!=0 ); | 
| 5433 |   sqlite3WindowChain(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy41); | 
| 5434 |   yymsp[0].minor.yy41->pNextWin = yymsp[-2].minor.yy41; | 
| 5435 |   yylhsminor.yy41 = yymsp[0].minor.yy41; | 
| 5436 | } | 
| 5437 | #line 5462 "parse.c" | 
| 5438 |   yymsp[-2].minor.yy41 = yylhsminor.yy41; | 
| 5439 |         break; | 
| 5440 |       case 313: /* windowdefn ::= nm AS LP window RP */ | 
| 5441 | #line 1765 "parse.y" | 
| 5442 | { | 
| 5443 |   if( ALWAYS(yymsp[-1].minor.yy41) ){ | 
| 5444 |     yymsp[-1].minor.yy41->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n); | 
| 5445 |   } | 
| 5446 |   yylhsminor.yy41 = yymsp[-1].minor.yy41; | 
| 5447 | } | 
| 5448 | #line 5473 "parse.c" | 
| 5449 |   yymsp[-4].minor.yy41 = yylhsminor.yy41; | 
| 5450 |         break; | 
| 5451 |       case 314: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */ | 
| 5452 | #line 1799 "parse.y" | 
| 5453 | { | 
| 5454 |   yymsp[-4].minor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy322, yymsp[-1].minor.yy322, 0); | 
| 5455 | } | 
| 5456 | #line 5481 "parse.c" | 
| 5457 |         break; | 
| 5458 |       case 315: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */ | 
| 5459 | #line 1802 "parse.y" | 
| 5460 | { | 
| 5461 |   yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy322, yymsp[-1].minor.yy322, &yymsp[-5].minor.yy0); | 
| 5462 | } | 
| 5463 | #line 5488 "parse.c" | 
| 5464 |   yymsp[-5].minor.yy41 = yylhsminor.yy41; | 
| 5465 |         break; | 
| 5466 |       case 316: /* window ::= ORDER BY sortlist frame_opt */ | 
| 5467 | #line 1805 "parse.y" | 
| 5468 | { | 
| 5469 |   yymsp[-3].minor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, yymsp[-1].minor.yy322, 0); | 
| 5470 | } | 
| 5471 | #line 5496 "parse.c" | 
| 5472 |         break; | 
| 5473 |       case 317: /* window ::= nm ORDER BY sortlist frame_opt */ | 
| 5474 | #line 1808 "parse.y" | 
| 5475 | { | 
| 5476 |   yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, yymsp[-1].minor.yy322, &yymsp[-4].minor.yy0); | 
| 5477 | } | 
| 5478 | #line 5503 "parse.c" | 
| 5479 |   yymsp[-4].minor.yy41 = yylhsminor.yy41; | 
| 5480 |         break; | 
| 5481 |       case 318: /* window ::= frame_opt */ | 
| 5482 |       case 337: /* filter_over ::= over_clause */ yytestcase(yyruleno==337); | 
| 5483 | #line 1811 "parse.y" | 
| 5484 | { | 
| 5485 |   yylhsminor.yy41 = yymsp[0].minor.yy41; | 
| 5486 | } | 
| 5487 | #line 5512 "parse.c" | 
| 5488 |   yymsp[0].minor.yy41 = yylhsminor.yy41; | 
| 5489 |         break; | 
| 5490 |       case 319: /* window ::= nm frame_opt */ | 
| 5491 | #line 1814 "parse.y" | 
| 5492 | { | 
| 5493 |   yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, 0, &yymsp[-1].minor.yy0); | 
| 5494 | } | 
| 5495 | #line 5520 "parse.c" | 
| 5496 |   yymsp[-1].minor.yy41 = yylhsminor.yy41; | 
| 5497 |         break; | 
| 5498 |       case 320: /* frame_opt ::= */ | 
| 5499 | #line 1818 "parse.y" | 
| 5500 | {  | 
| 5501 |   yymsp[1].minor.yy41 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0); | 
| 5502 | } | 
| 5503 | #line 5528 "parse.c" | 
| 5504 |         break; | 
| 5505 |       case 321: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */ | 
| 5506 | #line 1821 "parse.y" | 
| 5507 | {  | 
| 5508 |   yylhsminor.yy41 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy394, yymsp[-1].minor.yy595.eType, yymsp[-1].minor.yy595.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy516); | 
| 5509 | } | 
| 5510 | #line 5535 "parse.c" | 
| 5511 |   yymsp[-2].minor.yy41 = yylhsminor.yy41; | 
| 5512 |         break; | 
| 5513 |       case 322: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */ | 
| 5514 | #line 1825 "parse.y" | 
| 5515 | {  | 
| 5516 |   yylhsminor.yy41 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy394, yymsp[-3].minor.yy595.eType, yymsp[-3].minor.yy595.pExpr, yymsp[-1].minor.yy595.eType, yymsp[-1].minor.yy595.pExpr, yymsp[0].minor.yy516); | 
| 5517 | } | 
| 5518 | #line 5543 "parse.c" | 
| 5519 |   yymsp[-5].minor.yy41 = yylhsminor.yy41; | 
| 5520 |         break; | 
| 5521 |       case 324: /* frame_bound_s ::= frame_bound */ | 
| 5522 |       case 326: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==326); | 
| 5523 | #line 1831 "parse.y" | 
| 5524 | {yylhsminor.yy595 = yymsp[0].minor.yy595;} | 
| 5525 | #line 5550 "parse.c" | 
| 5526 |   yymsp[0].minor.yy595 = yylhsminor.yy595; | 
| 5527 |         break; | 
| 5528 |       case 325: /* frame_bound_s ::= UNBOUNDED PRECEDING */ | 
| 5529 |       case 327: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==327); | 
| 5530 |       case 329: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==329); | 
| 5531 | #line 1832 "parse.y" | 
| 5532 | {yylhsminor.yy595.eType = yymsp[-1].major; yylhsminor.yy595.pExpr = 0;} | 
| 5533 | #line 5558 "parse.c" | 
| 5534 |   yymsp[-1].minor.yy595 = yylhsminor.yy595; | 
| 5535 |         break; | 
| 5536 |       case 328: /* frame_bound ::= expr PRECEDING|FOLLOWING */ | 
| 5537 | #line 1837 "parse.y" | 
| 5538 | {yylhsminor.yy595.eType = yymsp[0].major; yylhsminor.yy595.pExpr = yymsp[-1].minor.yy528;} | 
| 5539 | #line 5564 "parse.c" | 
| 5540 |   yymsp[-1].minor.yy595 = yylhsminor.yy595; | 
| 5541 |         break; | 
| 5542 |       case 330: /* frame_exclude_opt ::= */ | 
| 5543 | #line 1841 "parse.y" | 
| 5544 | {yymsp[1].minor.yy516 = 0;} | 
| 5545 | #line 5570 "parse.c" | 
| 5546 |         break; | 
| 5547 |       case 331: /* frame_exclude_opt ::= EXCLUDE frame_exclude */ | 
| 5548 | #line 1842 "parse.y" | 
| 5549 | {yymsp[-1].minor.yy516 = yymsp[0].minor.yy516;} | 
| 5550 | #line 5575 "parse.c" | 
| 5551 |         break; | 
| 5552 |       case 332: /* frame_exclude ::= NO OTHERS */ | 
| 5553 |       case 333: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==333); | 
| 5554 | #line 1845 "parse.y" | 
| 5555 | {yymsp[-1].minor.yy516 = yymsp[-1].major; /*A-overwrites-X*/} | 
| 5556 | #line 5581 "parse.c" | 
| 5557 |         break; | 
| 5558 |       case 334: /* frame_exclude ::= GROUP|TIES */ | 
| 5559 | #line 1847 "parse.y" | 
| 5560 | {yymsp[0].minor.yy516 = yymsp[0].major; /*A-overwrites-X*/} | 
| 5561 | #line 5586 "parse.c" | 
| 5562 |         break; | 
| 5563 |       case 335: /* window_clause ::= WINDOW windowdefn_list */ | 
| 5564 | #line 1852 "parse.y" | 
| 5565 | { yymsp[-1].minor.yy41 = yymsp[0].minor.yy41; } | 
| 5566 | #line 5591 "parse.c" | 
| 5567 |         break; | 
| 5568 |       case 336: /* filter_over ::= filter_clause over_clause */ | 
| 5569 | #line 1854 "parse.y" | 
| 5570 | { | 
| 5571 |   if( yymsp[0].minor.yy41 ){ | 
| 5572 |     yymsp[0].minor.yy41->pFilter = yymsp[-1].minor.yy528; | 
| 5573 |   }else{ | 
| 5574 |     sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy528); | 
| 5575 |   } | 
| 5576 |   yylhsminor.yy41 = yymsp[0].minor.yy41; | 
| 5577 | } | 
| 5578 | #line 5603 "parse.c" | 
| 5579 |   yymsp[-1].minor.yy41 = yylhsminor.yy41; | 
| 5580 |         break; | 
| 5581 |       case 338: /* filter_over ::= filter_clause */ | 
| 5582 | #line 1865 "parse.y" | 
| 5583 | { | 
| 5584 |   yylhsminor.yy41 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window)); | 
| 5585 |   if( yylhsminor.yy41 ){ | 
| 5586 |     yylhsminor.yy41->eFrmType = TK_FILTER; | 
| 5587 |     yylhsminor.yy41->pFilter = yymsp[0].minor.yy528; | 
| 5588 |   }else{ | 
| 5589 |     sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy528); | 
| 5590 |   } | 
| 5591 | } | 
| 5592 | #line 5617 "parse.c" | 
| 5593 |   yymsp[0].minor.yy41 = yylhsminor.yy41; | 
| 5594 |         break; | 
| 5595 |       case 339: /* over_clause ::= OVER LP window RP */ | 
| 5596 | #line 1875 "parse.y" | 
| 5597 | { | 
| 5598 |   yymsp[-3].minor.yy41 = yymsp[-1].minor.yy41; | 
| 5599 |   assert( yymsp[-3].minor.yy41!=0 ); | 
| 5600 | } | 
| 5601 | #line 5626 "parse.c" | 
| 5602 |         break; | 
| 5603 |       case 340: /* over_clause ::= OVER nm */ | 
| 5604 | #line 1879 "parse.y" | 
| 5605 | { | 
| 5606 |   yymsp[-1].minor.yy41 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window)); | 
| 5607 |   if( yymsp[-1].minor.yy41 ){ | 
| 5608 |     yymsp[-1].minor.yy41->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n); | 
| 5609 |   } | 
| 5610 | } | 
| 5611 | #line 5636 "parse.c" | 
| 5612 |         break; | 
| 5613 |       case 341: /* filter_clause ::= FILTER LP WHERE expr RP */ | 
| 5614 | #line 1886 "parse.y" | 
| 5615 | { yymsp[-4].minor.yy528 = yymsp[-1].minor.yy528; } | 
| 5616 | #line 5641 "parse.c" | 
| 5617 |         break; | 
| 5618 |       default: | 
| 5619 |       /* (342) input ::= cmdlist */ yytestcase(yyruleno==342); | 
| 5620 |       /* (343) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==343); | 
| 5621 |       /* (344) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=344); | 
| 5622 |       /* (345) ecmd ::= SEMI */ yytestcase(yyruleno==345); | 
| 5623 |       /* (346) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==346); | 
| 5624 |       /* (347) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=347); | 
| 5625 |       /* (348) trans_opt ::= */ yytestcase(yyruleno==348); | 
| 5626 |       /* (349) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==349); | 
| 5627 |       /* (350) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==350); | 
| 5628 |       /* (351) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==351); | 
| 5629 |       /* (352) savepoint_opt ::= */ yytestcase(yyruleno==352); | 
| 5630 |       /* (353) cmd ::= create_table create_table_args */ yytestcase(yyruleno==353); | 
| 5631 |       /* (354) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=354); | 
| 5632 |       /* (355) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==355); | 
| 5633 |       /* (356) columnlist ::= columnname carglist */ yytestcase(yyruleno==356); | 
| 5634 |       /* (357) nm ::= ID|INDEXED */ yytestcase(yyruleno==357); | 
| 5635 |       /* (358) nm ::= STRING */ yytestcase(yyruleno==358); | 
| 5636 |       /* (359) nm ::= JOIN_KW */ yytestcase(yyruleno==359); | 
| 5637 |       /* (360) typetoken ::= typename */ yytestcase(yyruleno==360); | 
| 5638 |       /* (361) typename ::= ID|STRING */ yytestcase(yyruleno==361); | 
| 5639 |       /* (362) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=362); | 
| 5640 |       /* (363) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=363); | 
| 5641 |       /* (364) carglist ::= carglist ccons */ yytestcase(yyruleno==364); | 
| 5642 |       /* (365) carglist ::= */ yytestcase(yyruleno==365); | 
| 5643 |       /* (366) ccons ::= NULL onconf */ yytestcase(yyruleno==366); | 
| 5644 |       /* (367) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==367); | 
| 5645 |       /* (368) ccons ::= AS generated */ yytestcase(yyruleno==368); | 
| 5646 |       /* (369) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==369); | 
| 5647 |       /* (370) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==370); | 
| 5648 |       /* (371) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=371); | 
| 5649 |       /* (372) tconscomma ::= */ yytestcase(yyruleno==372); | 
| 5650 |       /* (373) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=373); | 
| 5651 |       /* (374) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=374); | 
| 5652 |       /* (375) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=375); | 
| 5653 |       /* (376) oneselect ::= values */ yytestcase(yyruleno==376); | 
| 5654 |       /* (377) sclp ::= selcollist COMMA */ yytestcase(yyruleno==377); | 
| 5655 |       /* (378) as ::= ID|STRING */ yytestcase(yyruleno==378); | 
| 5656 |       /* (379) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=379); | 
| 5657 |       /* (380) returning ::= */ yytestcase(yyruleno==380); | 
| 5658 |       /* (381) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=381); | 
| 5659 |       /* (382) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==382); | 
| 5660 |       /* (383) exprlist ::= nexprlist */ yytestcase(yyruleno==383); | 
| 5661 |       /* (384) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=384); | 
| 5662 |       /* (385) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=385); | 
| 5663 |       /* (386) nmnum ::= ON */ yytestcase(yyruleno==386); | 
| 5664 |       /* (387) nmnum ::= DELETE */ yytestcase(yyruleno==387); | 
| 5665 |       /* (388) nmnum ::= DEFAULT */ yytestcase(yyruleno==388); | 
| 5666 |       /* (389) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==389); | 
| 5667 |       /* (390) foreach_clause ::= */ yytestcase(yyruleno==390); | 
| 5668 |       /* (391) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==391); | 
| 5669 |       /* (392) trnm ::= nm */ yytestcase(yyruleno==392); | 
| 5670 |       /* (393) tridxby ::= */ yytestcase(yyruleno==393); | 
| 5671 |       /* (394) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==394); | 
| 5672 |       /* (395) database_kw_opt ::= */ yytestcase(yyruleno==395); | 
| 5673 |       /* (396) kwcolumn_opt ::= */ yytestcase(yyruleno==396); | 
| 5674 |       /* (397) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==397); | 
| 5675 |       /* (398) vtabarglist ::= vtabarg */ yytestcase(yyruleno==398); | 
| 5676 |       /* (399) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==399); | 
| 5677 |       /* (400) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==400); | 
| 5678 |       /* (401) anylist ::= */ yytestcase(yyruleno==401); | 
| 5679 |       /* (402) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==402); | 
| 5680 |       /* (403) anylist ::= anylist ANY */ yytestcase(yyruleno==403); | 
| 5681 |       /* (404) with ::= */ yytestcase(yyruleno==404); | 
| 5682 |         break; | 
| 5683 | /********** End reduce actions ************************************************/ | 
| 5684 |   }; | 
| 5685 |   assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) ); | 
| 5686 |   yygoto = yyRuleInfoLhs[yyruleno]; | 
| 5687 |   yysize = yyRuleInfoNRhs[yyruleno]; | 
| 5688 |   yyact = yy_find_reduce_action(yymsp[yysize].stateno,(YYCODETYPE)yygoto); | 
| 5689 |  | 
| 5690 |   /* There are no SHIFTREDUCE actions on nonterminals because the table | 
| 5691 |   ** generator has simplified them to pure REDUCE actions. */ | 
| 5692 |   assert( !(yyact>YY_MAX_SHIFT && yyact<=YY_MAX_SHIFTREDUCE) ); | 
| 5693 |  | 
| 5694 |   /* It is not possible for a REDUCE to be followed by an error */ | 
| 5695 |   assert( yyact!=YY_ERROR_ACTION ); | 
| 5696 |  | 
| 5697 |   yymsp += yysize+1; | 
| 5698 |   yypParser->yytos = yymsp; | 
| 5699 |   yymsp->stateno = (YYACTIONTYPE)yyact; | 
| 5700 |   yymsp->major = (YYCODETYPE)yygoto; | 
| 5701 |   yyTraceShift(yypParser, yyact, "... then shift" ); | 
| 5702 |   return yyact; | 
| 5703 | } | 
| 5704 |  | 
| 5705 | /* | 
| 5706 | ** The following code executes when the parse fails | 
| 5707 | */ | 
| 5708 | #ifndef YYNOERRORRECOVERY | 
| 5709 | static void yy_parse_failed( | 
| 5710 |   yyParser *yypParser           /* The parser */ | 
| 5711 | ){ | 
| 5712 |   sqlite3ParserARG_FETCH | 
| 5713 |   sqlite3ParserCTX_FETCH | 
| 5714 | #ifndef NDEBUG | 
| 5715 |   if( yyTraceFILE ){ | 
| 5716 |     fprintf(yyTraceFILE,"%sFail!\n" ,yyTracePrompt); | 
| 5717 |   } | 
| 5718 | #endif | 
| 5719 |   while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); | 
| 5720 |   /* Here code is inserted which will be executed whenever the | 
| 5721 |   ** parser fails */ | 
| 5722 | /************ Begin %parse_failure code ***************************************/ | 
| 5723 | /************ End %parse_failure code *****************************************/ | 
| 5724 |   sqlite3ParserARG_STORE /* Suppress warning about unused %extra_argument variable */ | 
| 5725 |   sqlite3ParserCTX_STORE | 
| 5726 | } | 
| 5727 | #endif /* YYNOERRORRECOVERY */ | 
| 5728 |  | 
| 5729 | /* | 
| 5730 | ** The following code executes when a syntax error first occurs. | 
| 5731 | */ | 
| 5732 | static void yy_syntax_error( | 
| 5733 |   yyParser *yypParser,           /* The parser */ | 
| 5734 |   int yymajor,                   /* The major type of the error token */ | 
| 5735 |   sqlite3ParserTOKENTYPE yyminor         /* The minor type of the error token */ | 
| 5736 | ){ | 
| 5737 |   sqlite3ParserARG_FETCH | 
| 5738 |   sqlite3ParserCTX_FETCH | 
| 5739 | #define TOKEN yyminor | 
| 5740 | /************ Begin %syntax_error code ****************************************/ | 
| 5741 | #line 39 "parse.y" | 
| 5742 |  | 
| 5743 |   UNUSED_PARAMETER(yymajor);  /* Silence some compiler warnings */ | 
| 5744 |   if( TOKEN.z[0] ){ | 
| 5745 |     sqlite3ErrorMsg(pParse, "near \"%T\": syntax error" , &TOKEN); | 
| 5746 |   }else{ | 
| 5747 |     sqlite3ErrorMsg(pParse, "incomplete input" ); | 
| 5748 |   } | 
| 5749 | #line 5774 "parse.c" | 
| 5750 | /************ End %syntax_error code ******************************************/ | 
| 5751 |   sqlite3ParserARG_STORE /* Suppress warning about unused %extra_argument variable */ | 
| 5752 |   sqlite3ParserCTX_STORE | 
| 5753 | } | 
| 5754 |  | 
| 5755 | /* | 
| 5756 | ** The following is executed when the parser accepts | 
| 5757 | */ | 
| 5758 | static void yy_accept( | 
| 5759 |   yyParser *yypParser           /* The parser */ | 
| 5760 | ){ | 
| 5761 |   sqlite3ParserARG_FETCH | 
| 5762 |   sqlite3ParserCTX_FETCH | 
| 5763 | #ifndef NDEBUG | 
| 5764 |   if( yyTraceFILE ){ | 
| 5765 |     fprintf(yyTraceFILE,"%sAccept!\n" ,yyTracePrompt); | 
| 5766 |   } | 
| 5767 | #endif | 
| 5768 | #ifndef YYNOERRORRECOVERY | 
| 5769 |   yypParser->yyerrcnt = -1; | 
| 5770 | #endif | 
| 5771 |   assert( yypParser->yytos==yypParser->yystack ); | 
| 5772 |   /* Here code is inserted which will be executed whenever the | 
| 5773 |   ** parser accepts */ | 
| 5774 | /*********** Begin %parse_accept code *****************************************/ | 
| 5775 | /*********** End %parse_accept code *******************************************/ | 
| 5776 |   sqlite3ParserARG_STORE /* Suppress warning about unused %extra_argument variable */ | 
| 5777 |   sqlite3ParserCTX_STORE | 
| 5778 | } | 
| 5779 |  | 
| 5780 | /* The main parser program. | 
| 5781 | ** The first argument is a pointer to a structure obtained from | 
| 5782 | ** "sqlite3ParserAlloc" which describes the current state of the parser. | 
| 5783 | ** The second argument is the major token number.  The third is | 
| 5784 | ** the minor token.  The fourth optional argument is whatever the | 
| 5785 | ** user wants (and specified in the grammar) and is available for | 
| 5786 | ** use by the action routines. | 
| 5787 | ** | 
| 5788 | ** Inputs: | 
| 5789 | ** <ul> | 
| 5790 | ** <li> A pointer to the parser (an opaque structure.) | 
| 5791 | ** <li> The major token number. | 
| 5792 | ** <li> The minor token number. | 
| 5793 | ** <li> An option argument of a grammar-specified type. | 
| 5794 | ** </ul> | 
| 5795 | ** | 
| 5796 | ** Outputs: | 
| 5797 | ** None. | 
| 5798 | */ | 
| 5799 | void sqlite3Parser( | 
| 5800 |   void *yyp,                   /* The parser */ | 
| 5801 |   int yymajor,                 /* The major token code number */ | 
| 5802 |   sqlite3ParserTOKENTYPE yyminor       /* The value for the token */ | 
| 5803 |   sqlite3ParserARG_PDECL               /* Optional %extra_argument parameter */ | 
| 5804 | ){ | 
| 5805 |   YYMINORTYPE yyminorunion; | 
| 5806 |   YYACTIONTYPE yyact;   /* The parser action. */ | 
| 5807 | #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) | 
| 5808 |   int yyendofinput;     /* True if we are at the end of input */ | 
| 5809 | #endif | 
| 5810 | #ifdef YYERRORSYMBOL | 
| 5811 |   int yyerrorhit = 0;   /* True if yymajor has invoked an error */ | 
| 5812 | #endif | 
| 5813 |   yyParser *yypParser = (yyParser*)yyp;  /* The parser */ | 
| 5814 |   sqlite3ParserCTX_FETCH | 
| 5815 |   sqlite3ParserARG_STORE | 
| 5816 |  | 
| 5817 |   assert( yypParser->yytos!=0 ); | 
| 5818 | #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) | 
| 5819 |   yyendofinput = (yymajor==0); | 
| 5820 | #endif | 
| 5821 |  | 
| 5822 |   yyact = yypParser->yytos->stateno; | 
| 5823 | #ifndef NDEBUG | 
| 5824 |   if( yyTraceFILE ){ | 
| 5825 |     if( yyact < YY_MIN_REDUCE ){ | 
| 5826 |       fprintf(yyTraceFILE,"%sInput '%s' in state %d\n" , | 
| 5827 |               yyTracePrompt,yyTokenName[yymajor],yyact); | 
| 5828 |     }else{ | 
| 5829 |       fprintf(yyTraceFILE,"%sInput '%s' with pending reduce %d\n" , | 
| 5830 |               yyTracePrompt,yyTokenName[yymajor],yyact-YY_MIN_REDUCE); | 
| 5831 |     } | 
| 5832 |   } | 
| 5833 | #endif | 
| 5834 |  | 
| 5835 |   while(1){ /* Exit by "break" */ | 
| 5836 |     assert( yypParser->yytos>=yypParser->yystack ); | 
| 5837 |     assert( yyact==yypParser->yytos->stateno ); | 
| 5838 |     yyact = yy_find_shift_action((YYCODETYPE)yymajor,yyact); | 
| 5839 |     if( yyact >= YY_MIN_REDUCE ){ | 
| 5840 |       unsigned int yyruleno = yyact - YY_MIN_REDUCE; /* Reduce by this rule */ | 
| 5841 | #ifndef NDEBUG | 
| 5842 |       assert( yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ); | 
| 5843 |       if( yyTraceFILE ){ | 
| 5844 |         int yysize = yyRuleInfoNRhs[yyruleno]; | 
| 5845 |         if( yysize ){ | 
| 5846 |           fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n" , | 
| 5847 |             yyTracePrompt, | 
| 5848 |             yyruleno, yyRuleName[yyruleno], | 
| 5849 |             yyruleno<YYNRULE_WITH_ACTION ? ""  : " without external action" , | 
| 5850 |             yypParser->yytos[yysize].stateno); | 
| 5851 |         }else{ | 
| 5852 |           fprintf(yyTraceFILE, "%sReduce %d [%s]%s.\n" , | 
| 5853 |             yyTracePrompt, yyruleno, yyRuleName[yyruleno], | 
| 5854 |             yyruleno<YYNRULE_WITH_ACTION ? ""  : " without external action" ); | 
| 5855 |         } | 
| 5856 |       } | 
| 5857 | #endif /* NDEBUG */ | 
| 5858 |  | 
| 5859 |       /* Check that the stack is large enough to grow by a single entry | 
| 5860 |       ** if the RHS of the rule is empty.  This ensures that there is room | 
| 5861 |       ** enough on the stack to push the LHS value */ | 
| 5862 |       if( yyRuleInfoNRhs[yyruleno]==0 ){ | 
| 5863 | #ifdef YYTRACKMAXSTACKDEPTH | 
| 5864 |         if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){ | 
| 5865 |           yypParser->yyhwm++; | 
| 5866 |           assert( yypParser->yyhwm == | 
| 5867 |                   (int)(yypParser->yytos - yypParser->yystack)); | 
| 5868 |         } | 
| 5869 | #endif | 
| 5870 | #if YYSTACKDEPTH>0  | 
| 5871 |         if( yypParser->yytos>=yypParser->yystackEnd ){ | 
| 5872 |           yyStackOverflow(yypParser); | 
| 5873 |           break; | 
| 5874 |         } | 
| 5875 | #else | 
| 5876 |         if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){ | 
| 5877 |           if( yyGrowStack(yypParser) ){ | 
| 5878 |             yyStackOverflow(yypParser); | 
| 5879 |             break; | 
| 5880 |           } | 
| 5881 |         } | 
| 5882 | #endif | 
| 5883 |       } | 
| 5884 |       yyact = yy_reduce(yypParser,yyruleno,yymajor,yyminor sqlite3ParserCTX_PARAM); | 
| 5885 |     }else if( yyact <= YY_MAX_SHIFTREDUCE ){ | 
| 5886 |       yy_shift(yypParser,yyact,(YYCODETYPE)yymajor,yyminor); | 
| 5887 | #ifndef YYNOERRORRECOVERY | 
| 5888 |       yypParser->yyerrcnt--; | 
| 5889 | #endif | 
| 5890 |       break; | 
| 5891 |     }else if( yyact==YY_ACCEPT_ACTION ){ | 
| 5892 |       yypParser->yytos--; | 
| 5893 |       yy_accept(yypParser); | 
| 5894 |       return; | 
| 5895 |     }else{ | 
| 5896 |       assert( yyact == YY_ERROR_ACTION ); | 
| 5897 |       yyminorunion.yy0 = yyminor; | 
| 5898 | #ifdef YYERRORSYMBOL | 
| 5899 |       int yymx; | 
| 5900 | #endif | 
| 5901 | #ifndef NDEBUG | 
| 5902 |       if( yyTraceFILE ){ | 
| 5903 |         fprintf(yyTraceFILE,"%sSyntax Error!\n" ,yyTracePrompt); | 
| 5904 |       } | 
| 5905 | #endif | 
| 5906 | #ifdef YYERRORSYMBOL | 
| 5907 |       /* A syntax error has occurred. | 
| 5908 |       ** The response to an error depends upon whether or not the | 
| 5909 |       ** grammar defines an error token "ERROR".   | 
| 5910 |       ** | 
| 5911 |       ** This is what we do if the grammar does define ERROR: | 
| 5912 |       ** | 
| 5913 |       **  * Call the %syntax_error function. | 
| 5914 |       ** | 
| 5915 |       **  * Begin popping the stack until we enter a state where | 
| 5916 |       **    it is legal to shift the error symbol, then shift | 
| 5917 |       **    the error symbol. | 
| 5918 |       ** | 
| 5919 |       **  * Set the error count to three. | 
| 5920 |       ** | 
| 5921 |       **  * Begin accepting and shifting new tokens.  No new error | 
| 5922 |       **    processing will occur until three tokens have been | 
| 5923 |       **    shifted successfully. | 
| 5924 |       ** | 
| 5925 |       */ | 
| 5926 |       if( yypParser->yyerrcnt<0 ){ | 
| 5927 |         yy_syntax_error(yypParser,yymajor,yyminor); | 
| 5928 |       } | 
| 5929 |       yymx = yypParser->yytos->major; | 
| 5930 |       if( yymx==YYERRORSYMBOL || yyerrorhit ){ | 
| 5931 | #ifndef NDEBUG | 
| 5932 |         if( yyTraceFILE ){ | 
| 5933 |           fprintf(yyTraceFILE,"%sDiscard input token %s\n" , | 
| 5934 |              yyTracePrompt,yyTokenName[yymajor]); | 
| 5935 |         } | 
| 5936 | #endif | 
| 5937 |         yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion); | 
| 5938 |         yymajor = YYNOCODE; | 
| 5939 |       }else{ | 
| 5940 |         while( yypParser->yytos > yypParser->yystack ){ | 
| 5941 |           yyact = yy_find_reduce_action(yypParser->yytos->stateno, | 
| 5942 |                                         YYERRORSYMBOL); | 
| 5943 |           if( yyact<=YY_MAX_SHIFTREDUCE ) break; | 
| 5944 |           yy_pop_parser_stack(yypParser); | 
| 5945 |         } | 
| 5946 |         if( yypParser->yytos <= yypParser->yystack || yymajor==0 ){ | 
| 5947 |           yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); | 
| 5948 |           yy_parse_failed(yypParser); | 
| 5949 | #ifndef YYNOERRORRECOVERY | 
| 5950 |           yypParser->yyerrcnt = -1; | 
| 5951 | #endif | 
| 5952 |           yymajor = YYNOCODE; | 
| 5953 |         }else if( yymx!=YYERRORSYMBOL ){ | 
| 5954 |           yy_shift(yypParser,yyact,YYERRORSYMBOL,yyminor); | 
| 5955 |         } | 
| 5956 |       } | 
| 5957 |       yypParser->yyerrcnt = 3; | 
| 5958 |       yyerrorhit = 1; | 
| 5959 |       if( yymajor==YYNOCODE ) break; | 
| 5960 |       yyact = yypParser->yytos->stateno; | 
| 5961 | #elif defined(YYNOERRORRECOVERY) | 
| 5962 |       /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to | 
| 5963 |       ** do any kind of error recovery.  Instead, simply invoke the syntax | 
| 5964 |       ** error routine and continue going as if nothing had happened. | 
| 5965 |       ** | 
| 5966 |       ** Applications can set this macro (for example inside %include) if | 
| 5967 |       ** they intend to abandon the parse upon the first syntax error seen. | 
| 5968 |       */ | 
| 5969 |       yy_syntax_error(yypParser,yymajor, yyminor); | 
| 5970 |       yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); | 
| 5971 |       break; | 
| 5972 | #else  /* YYERRORSYMBOL is not defined */ | 
| 5973 |       /* This is what we do if the grammar does not define ERROR: | 
| 5974 |       ** | 
| 5975 |       **  * Report an error message, and throw away the input token. | 
| 5976 |       ** | 
| 5977 |       **  * If the input token is $, then fail the parse. | 
| 5978 |       ** | 
| 5979 |       ** As before, subsequent error messages are suppressed until | 
| 5980 |       ** three input tokens have been successfully shifted. | 
| 5981 |       */ | 
| 5982 |       if( yypParser->yyerrcnt<=0 ){ | 
| 5983 |         yy_syntax_error(yypParser,yymajor, yyminor); | 
| 5984 |       } | 
| 5985 |       yypParser->yyerrcnt = 3; | 
| 5986 |       yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); | 
| 5987 |       if( yyendofinput ){ | 
| 5988 |         yy_parse_failed(yypParser); | 
| 5989 | #ifndef YYNOERRORRECOVERY | 
| 5990 |         yypParser->yyerrcnt = -1; | 
| 5991 | #endif | 
| 5992 |       } | 
| 5993 |       break; | 
| 5994 | #endif | 
| 5995 |     } | 
| 5996 |   } | 
| 5997 | #ifndef NDEBUG | 
| 5998 |   if( yyTraceFILE ){ | 
| 5999 |     yyStackEntry *i; | 
| 6000 |     char cDiv = '['; | 
| 6001 |     fprintf(yyTraceFILE,"%sReturn. Stack=" ,yyTracePrompt); | 
| 6002 |     for(i=&yypParser->yystack[1]; i<=yypParser->yytos; i++){ | 
| 6003 |       fprintf(yyTraceFILE,"%c%s" , cDiv, yyTokenName[i->major]); | 
| 6004 |       cDiv = ' '; | 
| 6005 |     } | 
| 6006 |     fprintf(yyTraceFILE,"]\n" ); | 
| 6007 |   } | 
| 6008 | #endif | 
| 6009 |   return; | 
| 6010 | } | 
| 6011 |  | 
| 6012 | /* | 
| 6013 | ** Return the fallback token corresponding to canonical token iToken, or | 
| 6014 | ** 0 if iToken has no fallback. | 
| 6015 | */ | 
| 6016 | int sqlite3ParserFallback(int iToken){ | 
| 6017 | #ifdef YYFALLBACK | 
| 6018 |   assert( iToken<(int)(sizeof(yyFallback)/sizeof(yyFallback[0])) ); | 
| 6019 |   return yyFallback[iToken]; | 
| 6020 | #else | 
| 6021 |   (void)iToken; | 
| 6022 |   return 0; | 
| 6023 | #endif | 
| 6024 | } | 
| 6025 |  |