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