parse.c
上传用户:sunhongbo
上传日期:2022-01-25
资源大小:3010k
文件大小:130k
源码类别:

数据库系统

开发平台:

C/C++

  1.   { 170, 2 },
  2.   { 170, 2 },
  3.   { 170, 2 },
  4.   { 170, 2 },
  5.   { 219, 1 },
  6.   { 219, 2 },
  7.   { 170, 5 },
  8.   { 220, 1 },
  9.   { 220, 2 },
  10.   { 170, 5 },
  11.   { 170, 3 },
  12.   { 170, 5 },
  13.   { 170, 4 },
  14.   { 170, 4 },
  15.   { 170, 5 },
  16.   { 222, 5 },
  17.   { 222, 4 },
  18.   { 223, 2 },
  19.   { 223, 0 },
  20.   { 221, 1 },
  21.   { 221, 0 },
  22.   { 216, 1 },
  23.   { 216, 0 },
  24.   { 211, 3 },
  25.   { 211, 1 },
  26.   { 143, 11 },
  27.   { 224, 1 },
  28.   { 224, 0 },
  29.   { 174, 0 },
  30.   { 174, 3 },
  31.   { 182, 5 },
  32.   { 182, 3 },
  33.   { 225, 1 },
  34.   { 226, 0 },
  35.   { 226, 2 },
  36.   { 143, 4 },
  37.   { 143, 1 },
  38.   { 143, 2 },
  39.   { 143, 5 },
  40.   { 143, 5 },
  41.   { 143, 5 },
  42.   { 143, 6 },
  43.   { 143, 3 },
  44.   { 227, 1 },
  45.   { 227, 1 },
  46.   { 165, 2 },
  47.   { 166, 2 },
  48.   { 229, 1 },
  49.   { 228, 1 },
  50.   { 228, 0 },
  51.   { 143, 5 },
  52.   { 230, 11 },
  53.   { 232, 1 },
  54.   { 232, 1 },
  55.   { 232, 2 },
  56.   { 232, 0 },
  57.   { 233, 1 },
  58.   { 233, 1 },
  59.   { 233, 3 },
  60.   { 234, 0 },
  61.   { 234, 3 },
  62.   { 235, 0 },
  63.   { 235, 2 },
  64.   { 231, 3 },
  65.   { 231, 0 },
  66.   { 236, 6 },
  67.   { 236, 8 },
  68.   { 236, 5 },
  69.   { 236, 4 },
  70.   { 236, 1 },
  71.   { 170, 4 },
  72.   { 170, 6 },
  73.   { 186, 1 },
  74.   { 186, 1 },
  75.   { 186, 1 },
  76.   { 143, 4 },
  77.   { 143, 6 },
  78.   { 143, 3 },
  79.   { 238, 0 },
  80.   { 238, 2 },
  81.   { 237, 1 },
  82.   { 237, 0 },
  83.   { 143, 1 },
  84.   { 143, 3 },
  85.   { 143, 1 },
  86.   { 143, 3 },
  87.   { 143, 6 },
  88.   { 143, 6 },
  89.   { 239, 1 },
  90.   { 240, 0 },
  91.   { 240, 1 },
  92.   { 143, 1 },
  93.   { 143, 4 },
  94.   { 241, 7 },
  95.   { 242, 1 },
  96.   { 242, 3 },
  97.   { 243, 0 },
  98.   { 243, 2 },
  99.   { 244, 1 },
  100.   { 244, 3 },
  101.   { 245, 1 },
  102.   { 246, 0 },
  103.   { 246, 2 },
  104. };
  105. static void yy_accept(yyParser*);  /* Forward Declaration */
  106. /*
  107. ** Perform a reduce action and the shift that must immediately
  108. ** follow the reduce.
  109. */
  110. static void yy_reduce(
  111.   yyParser *yypParser,         /* The parser */
  112.   int yyruleno                 /* Number of the rule by which to reduce */
  113. ){
  114.   int yygoto;                     /* The next state */
  115.   int yyact;                      /* The next action */
  116.   YYMINORTYPE yygotominor;        /* The LHS of the rule reduced */
  117.   yyStackEntry *yymsp;            /* The top of the parser's stack */
  118.   int yysize;                     /* Amount to pop the stack */
  119.   sqlite3ParserARG_FETCH;
  120.   yymsp = &yypParser->yystack[yypParser->yyidx];
  121. #ifndef NDEBUG
  122.   if( yyTraceFILE && yyruleno>=0 
  123.         && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){
  124.     fprintf(yyTraceFILE, "%sReduce [%s].n", yyTracePrompt,
  125.       yyRuleName[yyruleno]);
  126.   }
  127. #endif /* NDEBUG */
  128.   /* Silence complaints from purify about yygotominor being uninitialized
  129.   ** in some cases when it is copied into the stack after the following
  130.   ** switch.  yygotominor is uninitialized when a rule reduces that does
  131.   ** not set the value of its left-hand side nonterminal.  Leaving the
  132.   ** value of the nonterminal uninitialized is utterly harmless as long
  133.   ** as the value is never used.  So really the only thing this code
  134.   ** accomplishes is to quieten purify.  
  135.   **
  136.   ** 2007-01-16:  The wireshark project (www.wireshark.org) reports that
  137.   ** without this code, their parser segfaults.  I'm not sure what there
  138.   ** parser is doing to make this happen.  This is the second bug report
  139.   ** from wireshark this week.  Clearly they are stressing Lemon in ways
  140.   ** that it has not been previously stressed...  (SQLite ticket #2172)
  141.   */
  142.   /*memset(&yygotominor, 0, sizeof(yygotominor));*/
  143.   yygotominor = yyzerominor;
  144.   switch( yyruleno ){
  145.   /* Beginning here are the reduction cases.  A typical example
  146.   ** follows:
  147.   **   case 0:
  148.   **  #line <lineno> <grammarfile>
  149.   **     { ... }           // User supplied code
  150.   **  #line <lineno> <thisfile>
  151.   **     break;
  152.   */
  153.       case 0: /* input ::= cmdlist */
  154.       case 1: /* cmdlist ::= cmdlist ecmd */
  155.       case 2: /* cmdlist ::= ecmd */
  156.       case 4: /* ecmd ::= SEMI */
  157.       case 5: /* ecmd ::= explain cmdx SEMI */
  158.       case 10: /* trans_opt ::= */
  159.       case 11: /* trans_opt ::= TRANSACTION */
  160.       case 12: /* trans_opt ::= TRANSACTION nm */
  161.       case 20: /* cmd ::= create_table create_table_args */
  162.       case 28: /* columnlist ::= columnlist COMMA column */
  163.       case 29: /* columnlist ::= column */
  164.       case 37: /* type ::= */
  165.       case 44: /* signed ::= plus_num */
  166.       case 45: /* signed ::= minus_num */
  167.       case 46: /* carglist ::= carglist carg */
  168.       case 47: /* carglist ::= */
  169.       case 48: /* carg ::= CONSTRAINT nm ccons */
  170.       case 49: /* carg ::= ccons */
  171.       case 55: /* ccons ::= NULL onconf */
  172.       case 82: /* conslist ::= conslist COMMA tcons */
  173.       case 83: /* conslist ::= conslist tcons */
  174.       case 84: /* conslist ::= tcons */
  175.       case 85: /* tcons ::= CONSTRAINT nm */
  176.       case 257: /* plus_opt ::= PLUS */
  177.       case 258: /* plus_opt ::= */
  178.       case 268: /* foreach_clause ::= */
  179.       case 269: /* foreach_clause ::= FOR EACH ROW */
  180.       case 289: /* database_kw_opt ::= DATABASE */
  181.       case 290: /* database_kw_opt ::= */
  182.       case 298: /* kwcolumn_opt ::= */
  183.       case 299: /* kwcolumn_opt ::= COLUMNKW */
  184.       case 303: /* vtabarglist ::= vtabarg */
  185.       case 304: /* vtabarglist ::= vtabarglist COMMA vtabarg */
  186.       case 306: /* vtabarg ::= vtabarg vtabargtoken */
  187.       case 310: /* anylist ::= */
  188. #line 91 "parse.y"
  189. {
  190. }
  191. #line 1943 "parse.c"
  192.         break;
  193.       case 3: /* cmdx ::= cmd */
  194. #line 94 "parse.y"
  195. { sqlite3FinishCoding(pParse); }
  196. #line 1948 "parse.c"
  197.         break;
  198.       case 6: /* explain ::= */
  199. #line 97 "parse.y"
  200. { sqlite3BeginParse(pParse, 0); }
  201. #line 1953 "parse.c"
  202.         break;
  203.       case 7: /* explain ::= EXPLAIN */
  204. #line 99 "parse.y"
  205. { sqlite3BeginParse(pParse, 1); }
  206. #line 1958 "parse.c"
  207.         break;
  208.       case 8: /* explain ::= EXPLAIN QUERY PLAN */
  209. #line 100 "parse.y"
  210. { sqlite3BeginParse(pParse, 2); }
  211. #line 1963 "parse.c"
  212.         break;
  213.       case 9: /* cmd ::= BEGIN transtype trans_opt */
  214. #line 106 "parse.y"
  215. {sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy46);}
  216. #line 1968 "parse.c"
  217.         break;
  218.       case 13: /* transtype ::= */
  219. #line 111 "parse.y"
  220. {yygotominor.yy46 = TK_DEFERRED;}
  221. #line 1973 "parse.c"
  222.         break;
  223.       case 14: /* transtype ::= DEFERRED */
  224.       case 15: /* transtype ::= IMMEDIATE */
  225.       case 16: /* transtype ::= EXCLUSIVE */
  226.       case 107: /* multiselect_op ::= UNION */
  227.       case 109: /* multiselect_op ::= EXCEPT|INTERSECT */
  228. #line 112 "parse.y"
  229. {yygotominor.yy46 = yymsp[0].major;}
  230. #line 1982 "parse.c"
  231.         break;
  232.       case 17: /* cmd ::= COMMIT trans_opt */
  233.       case 18: /* cmd ::= END trans_opt */
  234. #line 115 "parse.y"
  235. {sqlite3CommitTransaction(pParse);}
  236. #line 1988 "parse.c"
  237.         break;
  238.       case 19: /* cmd ::= ROLLBACK trans_opt */
  239. #line 117 "parse.y"
  240. {sqlite3RollbackTransaction(pParse);}
  241. #line 1993 "parse.c"
  242.         break;
  243.       case 21: /* create_table ::= CREATE temp TABLE ifnotexists nm dbnm */
  244. #line 122 "parse.y"
  245. {
  246.    sqlite3StartTable(pParse,&yymsp[-1].minor.yy410,&yymsp[0].minor.yy410,yymsp[-4].minor.yy46,0,0,yymsp[-2].minor.yy46);
  247. }
  248. #line 2000 "parse.c"
  249.         break;
  250.       case 22: /* ifnotexists ::= */
  251.       case 25: /* temp ::= */
  252.       case 63: /* autoinc ::= */
  253.       case 77: /* init_deferred_pred_opt ::= */
  254.       case 79: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
  255.       case 90: /* defer_subclause_opt ::= */
  256.       case 101: /* ifexists ::= */
  257.       case 112: /* distinct ::= ALL */
  258.       case 113: /* distinct ::= */
  259.       case 213: /* between_op ::= BETWEEN */
  260.       case 216: /* in_op ::= IN */
  261. #line 126 "parse.y"
  262. {yygotominor.yy46 = 0;}
  263. #line 2015 "parse.c"
  264.         break;
  265.       case 23: /* ifnotexists ::= IF NOT EXISTS */
  266.       case 24: /* temp ::= TEMP */
  267.       case 64: /* autoinc ::= AUTOINCR */
  268.       case 78: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
  269.       case 100: /* ifexists ::= IF EXISTS */
  270.       case 111: /* distinct ::= DISTINCT */
  271.       case 214: /* between_op ::= NOT BETWEEN */
  272.       case 217: /* in_op ::= NOT IN */
  273. #line 127 "parse.y"
  274. {yygotominor.yy46 = 1;}
  275. #line 2027 "parse.c"
  276.         break;
  277.       case 26: /* create_table_args ::= LP columnlist conslist_opt RP */
  278. #line 133 "parse.y"
  279. {
  280.   sqlite3EndTable(pParse,&yymsp[-1].minor.yy410,&yymsp[0].minor.yy0,0);
  281. }
  282. #line 2034 "parse.c"
  283.         break;
  284.       case 27: /* create_table_args ::= AS select */
  285. #line 136 "parse.y"
  286. {
  287.   sqlite3EndTable(pParse,0,0,yymsp[0].minor.yy219);
  288.   sqlite3SelectDelete(yymsp[0].minor.yy219);
  289. }
  290. #line 2042 "parse.c"
  291.         break;
  292.       case 30: /* column ::= columnid type carglist */
  293. #line 148 "parse.y"
  294. {
  295.   yygotominor.yy410.z = yymsp[-2].minor.yy410.z;
  296.   yygotominor.yy410.n = (pParse->sLastToken.z-yymsp[-2].minor.yy410.z) + pParse->sLastToken.n;
  297. }
  298. #line 2050 "parse.c"
  299.         break;
  300.       case 31: /* columnid ::= nm */
  301. #line 152 "parse.y"
  302. {
  303.   sqlite3AddColumn(pParse,&yymsp[0].minor.yy410);
  304.   yygotominor.yy410 = yymsp[0].minor.yy410;
  305. }
  306. #line 2058 "parse.c"
  307.         break;
  308.       case 32: /* id ::= ID */
  309.       case 33: /* ids ::= ID|STRING */
  310.       case 34: /* nm ::= ID */
  311.       case 35: /* nm ::= STRING */
  312.       case 36: /* nm ::= JOIN_KW */
  313.       case 256: /* number ::= INTEGER|FLOAT */
  314. #line 162 "parse.y"
  315. {yygotominor.yy410 = yymsp[0].minor.yy0;}
  316. #line 2068 "parse.c"
  317.         break;
  318.       case 38: /* type ::= typetoken */
  319. #line 223 "parse.y"
  320. {sqlite3AddColumnType(pParse,&yymsp[0].minor.yy410);}
  321. #line 2073 "parse.c"
  322.         break;
  323.       case 39: /* typetoken ::= typename */
  324.       case 42: /* typename ::= ids */
  325.       case 119: /* as ::= AS nm */
  326.       case 120: /* as ::= ids */
  327.       case 131: /* dbnm ::= DOT nm */
  328.       case 241: /* idxitem ::= nm */
  329.       case 243: /* collate ::= COLLATE ids */
  330.       case 252: /* nmnum ::= plus_num */
  331.       case 253: /* nmnum ::= nm */
  332.       case 254: /* plus_num ::= plus_opt number */
  333.       case 255: /* minus_num ::= MINUS number */
  334. #line 224 "parse.y"
  335. {yygotominor.yy410 = yymsp[0].minor.yy410;}
  336. #line 2088 "parse.c"
  337.         break;
  338.       case 40: /* typetoken ::= typename LP signed RP */
  339. #line 225 "parse.y"
  340. {
  341.   yygotominor.yy410.z = yymsp[-3].minor.yy410.z;
  342.   yygotominor.yy410.n = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy410.z;
  343. }
  344. #line 2096 "parse.c"
  345.         break;
  346.       case 41: /* typetoken ::= typename LP signed COMMA signed RP */
  347. #line 229 "parse.y"
  348. {
  349.   yygotominor.yy410.z = yymsp[-5].minor.yy410.z;
  350.   yygotominor.yy410.n = &yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-5].minor.yy410.z;
  351. }
  352. #line 2104 "parse.c"
  353.         break;
  354.       case 43: /* typename ::= typename ids */
  355. #line 235 "parse.y"
  356. {yygotominor.yy410.z=yymsp[-1].minor.yy410.z; yygotominor.yy410.n=yymsp[0].minor.yy410.n+(yymsp[0].minor.yy410.z-yymsp[-1].minor.yy410.z);}
  357. #line 2109 "parse.c"
  358.         break;
  359.       case 50: /* ccons ::= DEFAULT term */
  360.       case 52: /* ccons ::= DEFAULT PLUS term */
  361. #line 246 "parse.y"
  362. {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy172);}
  363. #line 2115 "parse.c"
  364.         break;
  365.       case 51: /* ccons ::= DEFAULT LP expr RP */
  366. #line 247 "parse.y"
  367. {sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy172);}
  368. #line 2120 "parse.c"
  369.         break;
  370.       case 53: /* ccons ::= DEFAULT MINUS term */
  371. #line 249 "parse.y"
  372. {
  373.   Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy172, 0, 0);
  374.   sqlite3AddDefaultValue(pParse,p);
  375. }
  376. #line 2128 "parse.c"
  377.         break;
  378.       case 54: /* ccons ::= DEFAULT id */
  379. #line 253 "parse.y"
  380. {
  381.   Expr *p = sqlite3PExpr(pParse, TK_STRING, 0, 0, &yymsp[0].minor.yy410);
  382.   sqlite3AddDefaultValue(pParse,p);
  383. }
  384. #line 2136 "parse.c"
  385.         break;
  386.       case 56: /* ccons ::= NOT NULL onconf */
  387. #line 262 "parse.y"
  388. {sqlite3AddNotNull(pParse, yymsp[0].minor.yy46);}
  389. #line 2141 "parse.c"
  390.         break;
  391.       case 57: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
  392. #line 264 "parse.y"
  393. {sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy46,yymsp[0].minor.yy46,yymsp[-2].minor.yy46);}
  394. #line 2146 "parse.c"
  395.         break;
  396.       case 58: /* ccons ::= UNIQUE onconf */
  397. #line 265 "parse.y"
  398. {sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy46,0,0,0,0);}
  399. #line 2151 "parse.c"
  400.         break;
  401.       case 59: /* ccons ::= CHECK LP expr RP */
  402. #line 266 "parse.y"
  403. {sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy172);}
  404. #line 2156 "parse.c"
  405.         break;
  406.       case 60: /* ccons ::= REFERENCES nm idxlist_opt refargs */
  407. #line 268 "parse.y"
  408. {sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy410,yymsp[-1].minor.yy174,yymsp[0].minor.yy46);}
  409. #line 2161 "parse.c"
  410.         break;
  411.       case 61: /* ccons ::= defer_subclause */
  412. #line 269 "parse.y"
  413. {sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy46);}
  414. #line 2166 "parse.c"
  415.         break;
  416.       case 62: /* ccons ::= COLLATE ids */
  417. #line 270 "parse.y"
  418. {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy410);}
  419. #line 2171 "parse.c"
  420.         break;
  421.       case 65: /* refargs ::= */
  422. #line 283 "parse.y"
  423. { yygotominor.yy46 = OE_Restrict * 0x010101; }
  424. #line 2176 "parse.c"
  425.         break;
  426.       case 66: /* refargs ::= refargs refarg */
  427. #line 284 "parse.y"
  428. { yygotominor.yy46 = (yymsp[-1].minor.yy46 & yymsp[0].minor.yy405.mask) | yymsp[0].minor.yy405.value; }
  429. #line 2181 "parse.c"
  430.         break;
  431.       case 67: /* refarg ::= MATCH nm */
  432. #line 286 "parse.y"
  433. { yygotominor.yy405.value = 0;     yygotominor.yy405.mask = 0x000000; }
  434. #line 2186 "parse.c"
  435.         break;
  436.       case 68: /* refarg ::= ON DELETE refact */
  437. #line 287 "parse.y"
  438. { yygotominor.yy405.value = yymsp[0].minor.yy46;     yygotominor.yy405.mask = 0x0000ff; }
  439. #line 2191 "parse.c"
  440.         break;
  441.       case 69: /* refarg ::= ON UPDATE refact */
  442. #line 288 "parse.y"
  443. { yygotominor.yy405.value = yymsp[0].minor.yy46<<8;  yygotominor.yy405.mask = 0x00ff00; }
  444. #line 2196 "parse.c"
  445.         break;
  446.       case 70: /* refarg ::= ON INSERT refact */
  447. #line 289 "parse.y"
  448. { yygotominor.yy405.value = yymsp[0].minor.yy46<<16; yygotominor.yy405.mask = 0xff0000; }
  449. #line 2201 "parse.c"
  450.         break;
  451.       case 71: /* refact ::= SET NULL */
  452. #line 291 "parse.y"
  453. { yygotominor.yy46 = OE_SetNull; }
  454. #line 2206 "parse.c"
  455.         break;
  456.       case 72: /* refact ::= SET DEFAULT */
  457. #line 292 "parse.y"
  458. { yygotominor.yy46 = OE_SetDflt; }
  459. #line 2211 "parse.c"
  460.         break;
  461.       case 73: /* refact ::= CASCADE */
  462. #line 293 "parse.y"
  463. { yygotominor.yy46 = OE_Cascade; }
  464. #line 2216 "parse.c"
  465.         break;
  466.       case 74: /* refact ::= RESTRICT */
  467. #line 294 "parse.y"
  468. { yygotominor.yy46 = OE_Restrict; }
  469. #line 2221 "parse.c"
  470.         break;
  471.       case 75: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
  472.       case 76: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
  473.       case 91: /* defer_subclause_opt ::= defer_subclause */
  474.       case 93: /* onconf ::= ON CONFLICT resolvetype */
  475.       case 95: /* orconf ::= OR resolvetype */
  476.       case 96: /* resolvetype ::= raisetype */
  477.       case 166: /* insert_cmd ::= INSERT orconf */
  478. #line 296 "parse.y"
  479. {yygotominor.yy46 = yymsp[0].minor.yy46;}
  480. #line 2232 "parse.c"
  481.         break;
  482.       case 80: /* conslist_opt ::= */
  483. #line 306 "parse.y"
  484. {yygotominor.yy410.n = 0; yygotominor.yy410.z = 0;}
  485. #line 2237 "parse.c"
  486.         break;
  487.       case 81: /* conslist_opt ::= COMMA conslist */
  488. #line 307 "parse.y"
  489. {yygotominor.yy410 = yymsp[-1].minor.yy0;}
  490. #line 2242 "parse.c"
  491.         break;
  492.       case 86: /* tcons ::= PRIMARY KEY LP idxlist autoinc RP onconf */
  493. #line 313 "parse.y"
  494. {sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy174,yymsp[0].minor.yy46,yymsp[-2].minor.yy46,0);}
  495. #line 2247 "parse.c"
  496.         break;
  497.       case 87: /* tcons ::= UNIQUE LP idxlist RP onconf */
  498. #line 315 "parse.y"
  499. {sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy174,yymsp[0].minor.yy46,0,0,0,0);}
  500. #line 2252 "parse.c"
  501.         break;
  502.       case 88: /* tcons ::= CHECK LP expr RP onconf */
  503. #line 316 "parse.y"
  504. {sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy172);}
  505. #line 2257 "parse.c"
  506.         break;
  507.       case 89: /* tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt */
  508. #line 318 "parse.y"
  509. {
  510.     sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy174, &yymsp[-3].minor.yy410, yymsp[-2].minor.yy174, yymsp[-1].minor.yy46);
  511.     sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy46);
  512. }
  513. #line 2265 "parse.c"
  514.         break;
  515.       case 92: /* onconf ::= */
  516.       case 94: /* orconf ::= */
  517. #line 332 "parse.y"
  518. {yygotominor.yy46 = OE_Default;}
  519. #line 2271 "parse.c"
  520.         break;
  521.       case 97: /* resolvetype ::= IGNORE */
  522. #line 337 "parse.y"
  523. {yygotominor.yy46 = OE_Ignore;}
  524. #line 2276 "parse.c"
  525.         break;
  526.       case 98: /* resolvetype ::= REPLACE */
  527.       case 167: /* insert_cmd ::= REPLACE */
  528. #line 338 "parse.y"
  529. {yygotominor.yy46 = OE_Replace;}
  530. #line 2282 "parse.c"
  531.         break;
  532.       case 99: /* cmd ::= DROP TABLE ifexists fullname */
  533. #line 342 "parse.y"
  534. {
  535.   sqlite3DropTable(pParse, yymsp[0].minor.yy373, 0, yymsp[-1].minor.yy46);
  536. }
  537. #line 2289 "parse.c"
  538.         break;
  539.       case 102: /* cmd ::= CREATE temp VIEW ifnotexists nm dbnm AS select */
  540. #line 352 "parse.y"
  541. {
  542.   sqlite3CreateView(pParse, &yymsp[-7].minor.yy0, &yymsp[-3].minor.yy410, &yymsp[-2].minor.yy410, yymsp[0].minor.yy219, yymsp[-6].minor.yy46, yymsp[-4].minor.yy46);
  543. }
  544. #line 2296 "parse.c"
  545.         break;
  546.       case 103: /* cmd ::= DROP VIEW ifexists fullname */
  547. #line 355 "parse.y"
  548. {
  549.   sqlite3DropTable(pParse, yymsp[0].minor.yy373, 1, yymsp[-1].minor.yy46);
  550. }
  551. #line 2303 "parse.c"
  552.         break;
  553.       case 104: /* cmd ::= select */
  554. #line 362 "parse.y"
  555. {
  556.   SelectDest dest = {SRT_Callback, 0, 0, 0, 0};
  557.   sqlite3Select(pParse, yymsp[0].minor.yy219, &dest, 0, 0, 0, 0);
  558.   sqlite3SelectDelete(yymsp[0].minor.yy219);
  559. }
  560. #line 2312 "parse.c"
  561.         break;
  562.       case 105: /* select ::= oneselect */
  563.       case 128: /* seltablist_paren ::= select */
  564. #line 373 "parse.y"
  565. {yygotominor.yy219 = yymsp[0].minor.yy219;}
  566. #line 2318 "parse.c"
  567.         break;
  568.       case 106: /* select ::= select multiselect_op oneselect */
  569. #line 375 "parse.y"
  570. {
  571.   if( yymsp[0].minor.yy219 ){
  572.     yymsp[0].minor.yy219->op = yymsp[-1].minor.yy46;
  573.     yymsp[0].minor.yy219->pPrior = yymsp[-2].minor.yy219;
  574.   }else{
  575.     sqlite3SelectDelete(yymsp[-2].minor.yy219);
  576.   }
  577.   yygotominor.yy219 = yymsp[0].minor.yy219;
  578. }
  579. #line 2331 "parse.c"
  580.         break;
  581.       case 108: /* multiselect_op ::= UNION ALL */
  582. #line 386 "parse.y"
  583. {yygotominor.yy46 = TK_ALL;}
  584. #line 2336 "parse.c"
  585.         break;
  586.       case 110: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
  587. #line 390 "parse.y"
  588. {
  589.   yygotominor.yy219 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy174,yymsp[-5].minor.yy373,yymsp[-4].minor.yy172,yymsp[-3].minor.yy174,yymsp[-2].minor.yy172,yymsp[-1].minor.yy174,yymsp[-7].minor.yy46,yymsp[0].minor.yy234.pLimit,yymsp[0].minor.yy234.pOffset);
  590. }
  591. #line 2343 "parse.c"
  592.         break;
  593.       case 114: /* sclp ::= selcollist COMMA */
  594.       case 238: /* idxlist_opt ::= LP idxlist RP */
  595. #line 411 "parse.y"
  596. {yygotominor.yy174 = yymsp[-1].minor.yy174;}
  597. #line 2349 "parse.c"
  598.         break;
  599.       case 115: /* sclp ::= */
  600.       case 141: /* orderby_opt ::= */
  601.       case 149: /* groupby_opt ::= */
  602.       case 231: /* exprlist ::= */
  603.       case 237: /* idxlist_opt ::= */
  604. #line 412 "parse.y"
  605. {yygotominor.yy174 = 0;}
  606. #line 2358 "parse.c"
  607.         break;
  608.       case 116: /* selcollist ::= sclp expr as */
  609. #line 413 "parse.y"
  610. {
  611.    yygotominor.yy174 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy174,yymsp[-1].minor.yy172,yymsp[0].minor.yy410.n?&yymsp[0].minor.yy410:0);
  612. }
  613. #line 2365 "parse.c"
  614.         break;
  615.       case 117: /* selcollist ::= sclp STAR */
  616. #line 416 "parse.y"
  617. {
  618.   Expr *p = sqlite3PExpr(pParse, TK_ALL, 0, 0, 0);
  619.   yygotominor.yy174 = sqlite3ExprListAppend(pParse, yymsp[-1].minor.yy174, p, 0);
  620. }
  621. #line 2373 "parse.c"
  622.         break;
  623.       case 118: /* selcollist ::= sclp nm DOT STAR */
  624. #line 420 "parse.y"
  625. {
  626.   Expr *pRight = sqlite3PExpr(pParse, TK_ALL, 0, 0, 0);
  627.   Expr *pLeft = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-2].minor.yy410);
  628.   Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight, 0);
  629.   yygotominor.yy174 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy174, pDot, 0);
  630. }
  631. #line 2383 "parse.c"
  632.         break;
  633.       case 121: /* as ::= */
  634. #line 433 "parse.y"
  635. {yygotominor.yy410.n = 0;}
  636. #line 2388 "parse.c"
  637.         break;
  638.       case 122: /* from ::= */
  639. #line 445 "parse.y"
  640. {yygotominor.yy373 = sqlite3DbMallocZero(pParse->db, sizeof(*yygotominor.yy373));}
  641. #line 2393 "parse.c"
  642.         break;
  643.       case 123: /* from ::= FROM seltablist */
  644. #line 446 "parse.y"
  645. {
  646.   yygotominor.yy373 = yymsp[0].minor.yy373;
  647.   sqlite3SrcListShiftJoinType(yygotominor.yy373);
  648. }
  649. #line 2401 "parse.c"
  650.         break;
  651.       case 124: /* stl_prefix ::= seltablist joinop */
  652. #line 454 "parse.y"
  653. {
  654.    yygotominor.yy373 = yymsp[-1].minor.yy373;
  655.    if( yygotominor.yy373 && yygotominor.yy373->nSrc>0 ) yygotominor.yy373->a[yygotominor.yy373->nSrc-1].jointype = yymsp[0].minor.yy46;
  656. }
  657. #line 2409 "parse.c"
  658.         break;
  659.       case 125: /* stl_prefix ::= */
  660. #line 458 "parse.y"
  661. {yygotominor.yy373 = 0;}
  662. #line 2414 "parse.c"
  663.         break;
  664.       case 126: /* seltablist ::= stl_prefix nm dbnm as on_opt using_opt */
  665. #line 459 "parse.y"
  666. {
  667.   yygotominor.yy373 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy373,&yymsp[-4].minor.yy410,&yymsp[-3].minor.yy410,&yymsp[-2].minor.yy410,0,yymsp[-1].minor.yy172,yymsp[0].minor.yy432);
  668. }
  669. #line 2421 "parse.c"
  670.         break;
  671.       case 127: /* seltablist ::= stl_prefix LP seltablist_paren RP as on_opt using_opt */
  672. #line 464 "parse.y"
  673. {
  674.     yygotominor.yy373 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy373,0,0,&yymsp[-2].minor.yy410,yymsp[-4].minor.yy219,yymsp[-1].minor.yy172,yymsp[0].minor.yy432);
  675.   }
  676. #line 2428 "parse.c"
  677.         break;
  678.       case 129: /* seltablist_paren ::= seltablist */
  679. #line 475 "parse.y"
  680. {
  681.      sqlite3SrcListShiftJoinType(yymsp[0].minor.yy373);
  682.      yygotominor.yy219 = sqlite3SelectNew(pParse,0,yymsp[0].minor.yy373,0,0,0,0,0,0,0);
  683.   }
  684. #line 2436 "parse.c"
  685.         break;
  686.       case 130: /* dbnm ::= */
  687. #line 482 "parse.y"
  688. {yygotominor.yy410.z=0; yygotominor.yy410.n=0;}
  689. #line 2441 "parse.c"
  690.         break;
  691.       case 132: /* fullname ::= nm dbnm */
  692. #line 487 "parse.y"
  693. {yygotominor.yy373 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-1].minor.yy410,&yymsp[0].minor.yy410);}
  694. #line 2446 "parse.c"
  695.         break;
  696.       case 133: /* joinop ::= COMMA|JOIN */
  697. #line 491 "parse.y"
  698. { yygotominor.yy46 = JT_INNER; }
  699. #line 2451 "parse.c"
  700.         break;
  701.       case 134: /* joinop ::= JOIN_KW JOIN */
  702. #line 492 "parse.y"
  703. { yygotominor.yy46 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); }
  704. #line 2456 "parse.c"
  705.         break;
  706.       case 135: /* joinop ::= JOIN_KW nm JOIN */
  707. #line 493 "parse.y"
  708. { yygotominor.yy46 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy410,0); }
  709. #line 2461 "parse.c"
  710.         break;
  711.       case 136: /* joinop ::= JOIN_KW nm nm JOIN */
  712. #line 495 "parse.y"
  713. { yygotominor.yy46 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy410,&yymsp[-1].minor.yy410); }
  714. #line 2466 "parse.c"
  715.         break;
  716.       case 137: /* on_opt ::= ON expr */
  717.       case 145: /* sortitem ::= expr */
  718.       case 152: /* having_opt ::= HAVING expr */
  719.       case 159: /* where_opt ::= WHERE expr */
  720.       case 174: /* expr ::= term */
  721.       case 202: /* escape ::= ESCAPE expr */
  722.       case 226: /* case_else ::= ELSE expr */
  723.       case 228: /* case_operand ::= expr */
  724. #line 499 "parse.y"
  725. {yygotominor.yy172 = yymsp[0].minor.yy172;}
  726. #line 2478 "parse.c"
  727.         break;
  728.       case 138: /* on_opt ::= */
  729.       case 151: /* having_opt ::= */
  730.       case 158: /* where_opt ::= */
  731.       case 203: /* escape ::= */
  732.       case 227: /* case_else ::= */
  733.       case 229: /* case_operand ::= */
  734. #line 500 "parse.y"
  735. {yygotominor.yy172 = 0;}
  736. #line 2488 "parse.c"
  737.         break;
  738.       case 139: /* using_opt ::= USING LP inscollist RP */
  739.       case 171: /* inscollist_opt ::= LP inscollist RP */
  740. #line 504 "parse.y"
  741. {yygotominor.yy432 = yymsp[-1].minor.yy432;}
  742. #line 2494 "parse.c"
  743.         break;
  744.       case 140: /* using_opt ::= */
  745.       case 170: /* inscollist_opt ::= */
  746. #line 505 "parse.y"
  747. {yygotominor.yy432 = 0;}
  748. #line 2500 "parse.c"
  749.         break;
  750.       case 142: /* orderby_opt ::= ORDER BY sortlist */
  751.       case 150: /* groupby_opt ::= GROUP BY nexprlist */
  752.       case 230: /* exprlist ::= nexprlist */
  753. #line 516 "parse.y"
  754. {yygotominor.yy174 = yymsp[0].minor.yy174;}
  755. #line 2507 "parse.c"
  756.         break;
  757.       case 143: /* sortlist ::= sortlist COMMA sortitem sortorder */
  758. #line 517 "parse.y"
  759. {
  760.   yygotominor.yy174 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy174,yymsp[-1].minor.yy172,0);
  761.   if( yygotominor.yy174 ) yygotominor.yy174->a[yygotominor.yy174->nExpr-1].sortOrder = yymsp[0].minor.yy46;
  762. }
  763. #line 2515 "parse.c"
  764.         break;
  765.       case 144: /* sortlist ::= sortitem sortorder */
  766. #line 521 "parse.y"
  767. {
  768.   yygotominor.yy174 = sqlite3ExprListAppend(pParse,0,yymsp[-1].minor.yy172,0);
  769.   if( yygotominor.yy174 && yygotominor.yy174->a ) yygotominor.yy174->a[0].sortOrder = yymsp[0].minor.yy46;
  770. }
  771. #line 2523 "parse.c"
  772.         break;
  773.       case 146: /* sortorder ::= ASC */
  774.       case 148: /* sortorder ::= */
  775. #line 529 "parse.y"
  776. {yygotominor.yy46 = SQLITE_SO_ASC;}
  777. #line 2529 "parse.c"
  778.         break;
  779.       case 147: /* sortorder ::= DESC */
  780. #line 530 "parse.y"
  781. {yygotominor.yy46 = SQLITE_SO_DESC;}
  782. #line 2534 "parse.c"
  783.         break;
  784.       case 153: /* limit_opt ::= */
  785. #line 556 "parse.y"
  786. {yygotominor.yy234.pLimit = 0; yygotominor.yy234.pOffset = 0;}
  787. #line 2539 "parse.c"
  788.         break;
  789.       case 154: /* limit_opt ::= LIMIT expr */
  790. #line 557 "parse.y"
  791. {yygotominor.yy234.pLimit = yymsp[0].minor.yy172; yygotominor.yy234.pOffset = 0;}
  792. #line 2544 "parse.c"
  793.         break;
  794.       case 155: /* limit_opt ::= LIMIT expr OFFSET expr */
  795. #line 559 "parse.y"
  796. {yygotominor.yy234.pLimit = yymsp[-2].minor.yy172; yygotominor.yy234.pOffset = yymsp[0].minor.yy172;}
  797. #line 2549 "parse.c"
  798.         break;
  799.       case 156: /* limit_opt ::= LIMIT expr COMMA expr */
  800. #line 561 "parse.y"
  801. {yygotominor.yy234.pOffset = yymsp[-2].minor.yy172; yygotominor.yy234.pLimit = yymsp[0].minor.yy172;}
  802. #line 2554 "parse.c"
  803.         break;
  804.       case 157: /* cmd ::= DELETE FROM fullname where_opt */
  805. #line 565 "parse.y"
  806. {sqlite3DeleteFrom(pParse,yymsp[-1].minor.yy373,yymsp[0].minor.yy172);}
  807. #line 2559 "parse.c"
  808.         break;
  809.       case 160: /* cmd ::= UPDATE orconf fullname SET setlist where_opt */
  810. #line 575 "parse.y"
  811. {
  812.   sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy174,"set list"); 
  813.   sqlite3Update(pParse,yymsp[-3].minor.yy373,yymsp[-1].minor.yy174,yymsp[0].minor.yy172,yymsp[-4].minor.yy46);
  814. }
  815. #line 2567 "parse.c"
  816.         break;
  817.       case 161: /* setlist ::= setlist COMMA nm EQ expr */
  818. #line 584 "parse.y"
  819. {yygotominor.yy174 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy174,yymsp[0].minor.yy172,&yymsp[-2].minor.yy410);}
  820. #line 2572 "parse.c"
  821.         break;
  822.       case 162: /* setlist ::= nm EQ expr */
  823. #line 586 "parse.y"
  824. {yygotominor.yy174 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy172,&yymsp[-2].minor.yy410);}
  825. #line 2577 "parse.c"
  826.         break;
  827.       case 163: /* cmd ::= insert_cmd INTO fullname inscollist_opt VALUES LP itemlist RP */
  828. #line 592 "parse.y"
  829. {sqlite3Insert(pParse, yymsp[-5].minor.yy373, yymsp[-1].minor.yy174, 0, yymsp[-4].minor.yy432, yymsp[-7].minor.yy46);}
  830. #line 2582 "parse.c"
  831.         break;
  832.       case 164: /* cmd ::= insert_cmd INTO fullname inscollist_opt select */
  833. #line 594 "parse.y"
  834. {sqlite3Insert(pParse, yymsp[-2].minor.yy373, 0, yymsp[0].minor.yy219, yymsp[-1].minor.yy432, yymsp[-4].minor.yy46);}
  835. #line 2587 "parse.c"
  836.         break;
  837.       case 165: /* cmd ::= insert_cmd INTO fullname inscollist_opt DEFAULT VALUES */
  838. #line 596 "parse.y"
  839. {sqlite3Insert(pParse, yymsp[-3].minor.yy373, 0, 0, yymsp[-2].minor.yy432, yymsp[-5].minor.yy46);}
  840. #line 2592 "parse.c"
  841.         break;
  842.       case 168: /* itemlist ::= itemlist COMMA expr */
  843.       case 232: /* nexprlist ::= nexprlist COMMA expr */
  844. #line 607 "parse.y"
  845. {yygotominor.yy174 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy174,yymsp[0].minor.yy172,0);}
  846. #line 2598 "parse.c"
  847.         break;
  848.       case 169: /* itemlist ::= expr */
  849.       case 233: /* nexprlist ::= expr */
  850. #line 609 "parse.y"
  851. {yygotominor.yy174 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy172,0);}
  852. #line 2604 "parse.c"
  853.         break;
  854.       case 172: /* inscollist ::= inscollist COMMA nm */
  855. #line 619 "parse.y"
  856. {yygotominor.yy432 = sqlite3IdListAppend(pParse->db,yymsp[-2].minor.yy432,&yymsp[0].minor.yy410);}
  857. #line 2609 "parse.c"
  858.         break;
  859.       case 173: /* inscollist ::= nm */
  860. #line 621 "parse.y"
  861. {yygotominor.yy432 = sqlite3IdListAppend(pParse->db,0,&yymsp[0].minor.yy410);}
  862. #line 2614 "parse.c"
  863.         break;
  864.       case 175: /* expr ::= LP expr RP */
  865. #line 632 "parse.y"
  866. {yygotominor.yy172 = yymsp[-1].minor.yy172; sqlite3ExprSpan(yygotominor.yy172,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); }
  867. #line 2619 "parse.c"
  868.         break;
  869.       case 176: /* term ::= NULL */
  870.       case 181: /* term ::= INTEGER|FLOAT|BLOB */
  871.       case 182: /* term ::= STRING */
  872. #line 633 "parse.y"
  873. {yygotominor.yy172 = sqlite3PExpr(pParse, yymsp[0].major, 0, 0, &yymsp[0].minor.yy0);}
  874. #line 2626 "parse.c"
  875.         break;
  876.       case 177: /* expr ::= ID */
  877.       case 178: /* expr ::= JOIN_KW */
  878. #line 634 "parse.y"
  879. {yygotominor.yy172 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[0].minor.yy0);}
  880. #line 2632 "parse.c"
  881.         break;
  882.       case 179: /* expr ::= nm DOT nm */
  883. #line 636 "parse.y"
  884. {
  885.   Expr *temp1 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-2].minor.yy410);
  886.   Expr *temp2 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[0].minor.yy410);
  887.   yygotominor.yy172 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2, 0);
  888. }
  889. #line 2641 "parse.c"
  890.         break;
  891.       case 180: /* expr ::= nm DOT nm DOT nm */
  892. #line 641 "parse.y"
  893. {
  894.   Expr *temp1 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-4].minor.yy410);
  895.   Expr *temp2 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[-2].minor.yy410);
  896.   Expr *temp3 = sqlite3PExpr(pParse, TK_ID, 0, 0, &yymsp[0].minor.yy410);
  897.   Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3, 0);
  898.   yygotominor.yy172 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4, 0);
  899. }
  900. #line 2652 "parse.c"
  901.         break;
  902.       case 183: /* expr ::= REGISTER */
  903. #line 650 "parse.y"
  904. {yygotominor.yy172 = sqlite3RegisterExpr(pParse, &yymsp[0].minor.yy0);}
  905. #line 2657 "parse.c"
  906.         break;
  907.       case 184: /* expr ::= VARIABLE */
  908. #line 651 "parse.y"
  909. {
  910.   Token *pToken = &yymsp[0].minor.yy0;
  911.   Expr *pExpr = yygotominor.yy172 = sqlite3PExpr(pParse, TK_VARIABLE, 0, 0, pToken);
  912.   sqlite3ExprAssignVarNumber(pParse, pExpr);
  913. }
  914. #line 2666 "parse.c"
  915.         break;
  916.       case 185: /* expr ::= expr COLLATE ids */
  917. #line 656 "parse.y"
  918. {
  919.   yygotominor.yy172 = sqlite3ExprSetColl(pParse, yymsp[-2].minor.yy172, &yymsp[0].minor.yy410);
  920. }
  921. #line 2673 "parse.c"
  922.         break;
  923.       case 186: /* expr ::= CAST LP expr AS typetoken RP */
  924. #line 660 "parse.y"
  925. {
  926.   yygotominor.yy172 = sqlite3PExpr(pParse, TK_CAST, yymsp[-3].minor.yy172, 0, &yymsp[-1].minor.yy410);
  927.   sqlite3ExprSpan(yygotominor.yy172,&yymsp[-5].minor.yy0,&yymsp[0].minor.yy0);
  928. }
  929. #line 2681 "parse.c"
  930.         break;
  931.       case 187: /* expr ::= ID LP distinct exprlist RP */
  932. #line 665 "parse.y"
  933. {
  934.   if( yymsp[-1].minor.yy174 && yymsp[-1].minor.yy174->nExpr>SQLITE_MAX_FUNCTION_ARG ){
  935.     sqlite3ErrorMsg(pParse, "too many arguments on function %T", &yymsp[-4].minor.yy0);
  936.   }
  937.   yygotominor.yy172 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy174, &yymsp[-4].minor.yy0);
  938.   sqlite3ExprSpan(yygotominor.yy172,&yymsp[-4].minor.yy0,&yymsp[0].minor.yy0);
  939.   if( yymsp[-2].minor.yy46 && yygotominor.yy172 ){
  940.     yygotominor.yy172->flags |= EP_Distinct;
  941.   }
  942. }
  943. #line 2695 "parse.c"
  944.         break;
  945.       case 188: /* expr ::= ID LP STAR RP */
  946. #line 675 "parse.y"
  947. {
  948.   yygotominor.yy172 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0);
  949.   sqlite3ExprSpan(yygotominor.yy172,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
  950. }
  951. #line 2703 "parse.c"
  952.         break;
  953.       case 189: /* term ::= CTIME_KW */
  954. #line 679 "parse.y"
  955. {
  956.   /* The CURRENT_TIME, CURRENT_DATE, and CURRENT_TIMESTAMP values are
  957.   ** treated as functions that return constants */
  958.   yygotominor.yy172 = sqlite3ExprFunction(pParse, 0,&yymsp[0].minor.yy0);
  959.   if( yygotominor.yy172 ){
  960.     yygotominor.yy172->op = TK_CONST_FUNC;  
  961.     yygotominor.yy172->span = yymsp[0].minor.yy0;
  962.   }
  963. }
  964. #line 2716 "parse.c"
  965.         break;
  966.       case 190: /* expr ::= expr AND expr */
  967.       case 191: /* expr ::= expr OR expr */
  968.       case 192: /* expr ::= expr LT|GT|GE|LE expr */
  969.       case 193: /* expr ::= expr EQ|NE expr */
  970.       case 194: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
  971.       case 195: /* expr ::= expr PLUS|MINUS expr */
  972.       case 196: /* expr ::= expr STAR|SLASH|REM expr */
  973.       case 197: /* expr ::= expr CONCAT expr */
  974. #line 688 "parse.y"
  975. {yygotominor.yy172 = sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy172,yymsp[0].minor.yy172,0);}
  976. #line 2728 "parse.c"
  977.         break;
  978.       case 198: /* likeop ::= LIKE_KW */
  979.       case 200: /* likeop ::= MATCH */
  980. #line 700 "parse.y"
  981. {yygotominor.yy72.eOperator = yymsp[0].minor.yy0; yygotominor.yy72.not = 0;}
  982. #line 2734 "parse.c"
  983.         break;
  984.       case 199: /* likeop ::= NOT LIKE_KW */
  985.       case 201: /* likeop ::= NOT MATCH */
  986. #line 701 "parse.y"
  987. {yygotominor.yy72.eOperator = yymsp[0].minor.yy0; yygotominor.yy72.not = 1;}
  988. #line 2740 "parse.c"
  989.         break;
  990.       case 204: /* expr ::= expr likeop expr escape */
  991. #line 708 "parse.y"
  992. {
  993.   ExprList *pList;
  994.   pList = sqlite3ExprListAppend(pParse,0, yymsp[-1].minor.yy172, 0);
  995.   pList = sqlite3ExprListAppend(pParse,pList, yymsp[-3].minor.yy172, 0);
  996.   if( yymsp[0].minor.yy172 ){
  997.     pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy172, 0);
  998.   }
  999.   yygotominor.yy172 = sqlite3ExprFunction(pParse, pList, &yymsp[-2].minor.yy72.eOperator);
  1000.   if( yymsp[-2].minor.yy72.not ) yygotominor.yy172 = sqlite3PExpr(pParse, TK_NOT, yygotominor.yy172, 0, 0);
  1001.   sqlite3ExprSpan(yygotominor.yy172, &yymsp[-3].minor.yy172->span, &yymsp[-1].minor.yy172->span);
  1002.   if( yygotominor.yy172 ) yygotominor.yy172->flags |= EP_InfixFunc;
  1003. }
  1004. #line 2756 "parse.c"
  1005.         break;
  1006.       case 205: /* expr ::= expr ISNULL|NOTNULL */
  1007. #line 721 "parse.y"
  1008. {
  1009.   yygotominor.yy172 = sqlite3PExpr(pParse, yymsp[0].major, yymsp[-1].minor.yy172, 0, 0);
  1010.   sqlite3ExprSpan(yygotominor.yy172,&yymsp[-1].minor.yy172->span,&yymsp[0].minor.yy0);
  1011. }
  1012. #line 2764 "parse.c"
  1013.         break;
  1014.       case 206: /* expr ::= expr IS NULL */
  1015. #line 725 "parse.y"
  1016. {
  1017.   yygotominor.yy172 = sqlite3PExpr(pParse, TK_ISNULL, yymsp[-2].minor.yy172, 0, 0);
  1018.   sqlite3ExprSpan(yygotominor.yy172,&yymsp[-2].minor.yy172->span,&yymsp[0].minor.yy0);
  1019. }
  1020. #line 2772 "parse.c"
  1021.         break;
  1022.       case 207: /* expr ::= expr NOT NULL */
  1023. #line 729 "parse.y"
  1024. {
  1025.   yygotominor.yy172 = sqlite3PExpr(pParse, TK_NOTNULL, yymsp[-2].minor.yy172, 0, 0);
  1026.   sqlite3ExprSpan(yygotominor.yy172,&yymsp[-2].minor.yy172->span,&yymsp[0].minor.yy0);
  1027. }
  1028. #line 2780 "parse.c"
  1029.         break;
  1030.       case 208: /* expr ::= expr IS NOT NULL */
  1031. #line 733 "parse.y"
  1032. {
  1033.   yygotominor.yy172 = sqlite3PExpr(pParse, TK_NOTNULL, yymsp[-3].minor.yy172, 0, 0);
  1034.   sqlite3ExprSpan(yygotominor.yy172,&yymsp[-3].minor.yy172->span,&yymsp[0].minor.yy0);
  1035. }
  1036. #line 2788 "parse.c"
  1037.         break;
  1038.       case 209: /* expr ::= NOT expr */
  1039.       case 210: /* expr ::= BITNOT expr */
  1040. #line 737 "parse.y"
  1041. {
  1042.   yygotominor.yy172 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy172, 0, 0);
  1043.   sqlite3ExprSpan(yygotominor.yy172,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy172->span);
  1044. }
  1045. #line 2797 "parse.c"
  1046.         break;
  1047.       case 211: /* expr ::= MINUS expr */
  1048. #line 745 "parse.y"
  1049. {
  1050.   yygotominor.yy172 = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy172, 0, 0);
  1051.   sqlite3ExprSpan(yygotominor.yy172,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy172->span);
  1052. }
  1053. #line 2805 "parse.c"
  1054.         break;
  1055.       case 212: /* expr ::= PLUS expr */
  1056. #line 749 "parse.y"
  1057. {
  1058.   yygotominor.yy172 = sqlite3PExpr(pParse, TK_UPLUS, yymsp[0].minor.yy172, 0, 0);
  1059.   sqlite3ExprSpan(yygotominor.yy172,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy172->span);
  1060. }
  1061. #line 2813 "parse.c"
  1062.         break;
  1063.       case 215: /* expr ::= expr between_op expr AND expr */
  1064. #line 756 "parse.y"
  1065. {
  1066.   ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy172, 0);
  1067.   pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy172, 0);
  1068.   yygotominor.yy172 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy172, 0, 0);
  1069.   if( yygotominor.yy172 ){
  1070.     yygotominor.yy172->pList = pList;
  1071.   }else{
  1072.     sqlite3ExprListDelete(pList);
  1073.   } 
  1074.   if( yymsp[-3].minor.yy46 ) yygotominor.yy172 = sqlite3PExpr(pParse, TK_NOT, yygotominor.yy172, 0, 0);
  1075.   sqlite3ExprSpan(yygotominor.yy172,&yymsp[-4].minor.yy172->span,&yymsp[0].minor.yy172->span);
  1076. }
  1077. #line 2829 "parse.c"
  1078.         break;
  1079.       case 218: /* expr ::= expr in_op LP exprlist RP */
  1080. #line 772 "parse.y"
  1081. {
  1082.     yygotominor.yy172 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy172, 0, 0);
  1083.     if( yygotominor.yy172 ){
  1084.       yygotominor.yy172->pList = yymsp[-1].minor.yy174;
  1085.       sqlite3ExprSetHeight(yygotominor.yy172);
  1086.     }else{
  1087.       sqlite3ExprListDelete(yymsp[-1].minor.yy174);
  1088.     }
  1089.     if( yymsp[-3].minor.yy46 ) yygotominor.yy172 = sqlite3PExpr(pParse, TK_NOT, yygotominor.yy172, 0, 0);
  1090.     sqlite3ExprSpan(yygotominor.yy172,&yymsp[-4].minor.yy172->span,&yymsp[0].minor.yy0);
  1091.   }
  1092. #line 2844 "parse.c"
  1093.         break;
  1094.       case 219: /* expr ::= LP select RP */
  1095. #line 783 "parse.y"
  1096. {
  1097.     yygotominor.yy172 = sqlite3PExpr(pParse, TK_SELECT, 0, 0, 0);
  1098.     if( yygotominor.yy172 ){
  1099.       yygotominor.yy172->pSelect = yymsp[-1].minor.yy219;
  1100.       sqlite3ExprSetHeight(yygotominor.yy172);
  1101.     }else{
  1102.       sqlite3SelectDelete(yymsp[-1].minor.yy219);
  1103.     }
  1104.     sqlite3ExprSpan(yygotominor.yy172,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
  1105.   }
  1106. #line 2858 "parse.c"
  1107.         break;
  1108.       case 220: /* expr ::= expr in_op LP select RP */
  1109. #line 793 "parse.y"
  1110. {
  1111.     yygotominor.yy172 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy172, 0, 0);
  1112.     if( yygotominor.yy172 ){
  1113.       yygotominor.yy172->pSelect = yymsp[-1].minor.yy219;
  1114.       sqlite3ExprSetHeight(yygotominor.yy172);
  1115.     }else{
  1116.       sqlite3SelectDelete(yymsp[-1].minor.yy219);
  1117.     }
  1118.     if( yymsp[-3].minor.yy46 ) yygotominor.yy172 = sqlite3PExpr(pParse, TK_NOT, yygotominor.yy172, 0, 0);
  1119.     sqlite3ExprSpan(yygotominor.yy172,&yymsp[-4].minor.yy172->span,&yymsp[0].minor.yy0);
  1120.   }
  1121. #line 2873 "parse.c"
  1122.         break;
  1123.       case 221: /* expr ::= expr in_op nm dbnm */
  1124. #line 804 "parse.y"
  1125. {
  1126.     SrcList *pSrc = sqlite3SrcListAppend(pParse->db, 0,&yymsp[-1].minor.yy410,&yymsp[0].minor.yy410);
  1127.     yygotominor.yy172 = sqlite3PExpr(pParse, TK_IN, yymsp[-3].minor.yy172, 0, 0);
  1128.     if( yygotominor.yy172 ){
  1129.       yygotominor.yy172->pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0,0);
  1130.       sqlite3ExprSetHeight(yygotominor.yy172);
  1131.     }else{
  1132.       sqlite3SrcListDelete(pSrc);
  1133.     }
  1134.     if( yymsp[-2].minor.yy46 ) yygotominor.yy172 = sqlite3PExpr(pParse, TK_NOT, yygotominor.yy172, 0, 0);
  1135.     sqlite3ExprSpan(yygotominor.yy172,&yymsp[-3].minor.yy172->span,yymsp[0].minor.yy410.z?&yymsp[0].minor.yy410:&yymsp[-1].minor.yy410);
  1136.   }
  1137. #line 2889 "parse.c"
  1138.         break;
  1139.       case 222: /* expr ::= EXISTS LP select RP */
  1140. #line 816 "parse.y"
  1141. {
  1142.     Expr *p = yygotominor.yy172 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0, 0);
  1143.     if( p ){
  1144.       p->pSelect = yymsp[-1].minor.yy219;
  1145.       sqlite3ExprSpan(p,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
  1146.       sqlite3ExprSetHeight(yygotominor.yy172);
  1147.     }else{
  1148.       sqlite3SelectDelete(yymsp[-1].minor.yy219);
  1149.     }
  1150.   }
  1151. #line 2903 "parse.c"
  1152.         break;
  1153.       case 223: /* expr ::= CASE case_operand case_exprlist case_else END */
  1154. #line 829 "parse.y"
  1155. {
  1156.   yygotominor.yy172 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy172, yymsp[-1].minor.yy172, 0);
  1157.   if( yygotominor.yy172 ){
  1158.     yygotominor.yy172->pList = yymsp[-2].minor.yy174;
  1159.     sqlite3ExprSetHeight(yygotominor.yy172);
  1160.   }else{
  1161.     sqlite3ExprListDelete(yymsp[-2].minor.yy174);
  1162.   }
  1163.   sqlite3ExprSpan(yygotominor.yy172, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0);
  1164. }
  1165. #line 2917 "parse.c"
  1166.         break;
  1167.       case 224: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
  1168. #line 841 "parse.y"
  1169. {
  1170.   yygotominor.yy174 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy174, yymsp[-2].minor.yy172, 0);
  1171.   yygotominor.yy174 = sqlite3ExprListAppend(pParse,yygotominor.yy174, yymsp[0].minor.yy172, 0);
  1172. }
  1173. #line 2925 "parse.c"
  1174.         break;
  1175.       case 225: /* case_exprlist ::= WHEN expr THEN expr */
  1176. #line 845 "parse.y"
  1177. {
  1178.   yygotominor.yy174 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy172, 0);
  1179.   yygotominor.yy174 = sqlite3ExprListAppend(pParse,yygotominor.yy174, yymsp[0].minor.yy172, 0);
  1180. }
  1181. #line 2933 "parse.c"
  1182.         break;
  1183.       case 234: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP */
  1184. #line 874 "parse.y"
  1185. {
  1186.   sqlite3CreateIndex(pParse, &yymsp[-6].minor.yy410, &yymsp[-5].minor.yy410, 
  1187.                      sqlite3SrcListAppend(pParse->db,0,&yymsp[-3].minor.yy410,0), yymsp[-1].minor.yy174, yymsp[-9].minor.yy46,
  1188.                       &yymsp[-10].minor.yy0, &yymsp[0].minor.yy0, SQLITE_SO_ASC, yymsp[-7].minor.yy46);
  1189. }
  1190. #line 2942 "parse.c"
  1191.         break;
  1192.       case 235: /* uniqueflag ::= UNIQUE */
  1193.       case 282: /* raisetype ::= ABORT */
  1194. #line 881 "parse.y"
  1195. {yygotominor.yy46 = OE_Abort;}
  1196. #line 2948 "parse.c"
  1197.         break;
  1198.       case 236: /* uniqueflag ::= */
  1199. #line 882 "parse.y"
  1200. {yygotominor.yy46 = OE_None;}
  1201. #line 2953 "parse.c"
  1202.         break;
  1203.       case 239: /* idxlist ::= idxlist COMMA idxitem collate sortorder */
  1204. #line 892 "parse.y"
  1205. {
  1206.   Expr *p = 0;
  1207.   if( yymsp[-1].minor.yy410.n>0 ){
  1208.     p = sqlite3PExpr(pParse, TK_COLUMN, 0, 0, 0);
  1209.     sqlite3ExprSetColl(pParse, p, &yymsp[-1].minor.yy410);
  1210.   }
  1211.   yygotominor.yy174 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy174, p, &yymsp[-2].minor.yy410);
  1212.   sqlite3ExprListCheckLength(pParse, yygotominor.yy174, "index");
  1213.   if( yygotominor.yy174 ) yygotominor.yy174->a[yygotominor.yy174->nExpr-1].sortOrder = yymsp[0].minor.yy46;
  1214. }
  1215. #line 2967 "parse.c"
  1216.         break;
  1217.       case 240: /* idxlist ::= idxitem collate sortorder */
  1218. #line 902 "parse.y"
  1219. {
  1220.   Expr *p = 0;
  1221.   if( yymsp[-1].minor.yy410.n>0 ){
  1222.     p = sqlite3PExpr(pParse, TK_COLUMN, 0, 0, 0);
  1223.     sqlite3ExprSetColl(pParse, p, &yymsp[-1].minor.yy410);
  1224.   }
  1225.   yygotominor.yy174 = sqlite3ExprListAppend(pParse,0, p, &yymsp[-2].minor.yy410);
  1226.   sqlite3ExprListCheckLength(pParse, yygotominor.yy174, "index");
  1227.   if( yygotominor.yy174 ) yygotominor.yy174->a[yygotominor.yy174->nExpr-1].sortOrder = yymsp[0].minor.yy46;
  1228. }
  1229. #line 2981 "parse.c"
  1230.         break;
  1231.       case 242: /* collate ::= */
  1232. #line 915 "parse.y"
  1233. {yygotominor.yy410.z = 0; yygotominor.yy410.n = 0;}
  1234. #line 2986 "parse.c"
  1235.         break;
  1236.       case 244: /* cmd ::= DROP INDEX ifexists fullname */
  1237. #line 921 "parse.y"
  1238. {sqlite3DropIndex(pParse, yymsp[0].minor.yy373, yymsp[-1].minor.yy46);}
  1239. #line 2991 "parse.c"
  1240.         break;
  1241.       case 245: /* cmd ::= VACUUM */
  1242.       case 246: /* cmd ::= VACUUM nm */
  1243. #line 927 "parse.y"
  1244. {sqlite3Vacuum(pParse);}
  1245. #line 2997 "parse.c"
  1246.         break;
  1247.       case 247: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
  1248. #line 935 "parse.y"
  1249. {sqlite3Pragma(pParse,&yymsp[-3].minor.yy410,&yymsp[-2].minor.yy410,&yymsp[0].minor.yy410,0);}
  1250. #line 3002 "parse.c"
  1251.         break;
  1252.       case 248: /* cmd ::= PRAGMA nm dbnm EQ ON */
  1253. #line 936 "parse.y"
  1254. {sqlite3Pragma(pParse,&yymsp[-3].minor.yy410,&yymsp[-2].minor.yy410,&yymsp[0].minor.yy0,0);}
  1255. #line 3007 "parse.c"
  1256.         break;
  1257.       case 249: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
  1258. #line 937 "parse.y"
  1259. {
  1260.   sqlite3Pragma(pParse,&yymsp[-3].minor.yy410,&yymsp[-2].minor.yy410,&yymsp[0].minor.yy410,1);
  1261. }
  1262. #line 3014 "parse.c"
  1263.         break;
  1264.       case 250: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
  1265. #line 940 "parse.y"
  1266. {sqlite3Pragma(pParse,&yymsp[-4].minor.yy410,&yymsp[-3].minor.yy410,&yymsp[-1].minor.yy410,0);}
  1267. #line 3019 "parse.c"
  1268.         break;
  1269.       case 251: /* cmd ::= PRAGMA nm dbnm */
  1270. #line 941 "parse.y"
  1271. {sqlite3Pragma(pParse,&yymsp[-1].minor.yy410,&yymsp[0].minor.yy410,0,0);}
  1272. #line 3024 "parse.c"
  1273.         break;
  1274.       case 259: /* cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END */
  1275. #line 955 "parse.y"
  1276. {
  1277.   Token all;
  1278.   all.z = yymsp[-3].minor.yy410.z;
  1279.   all.n = (yymsp[0].minor.yy0.z - yymsp[-3].minor.yy410.z) + yymsp[0].minor.yy0.n;
  1280.   sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy243, &all);
  1281. }
  1282. #line 3034 "parse.c"
  1283.         break;
  1284.       case 260: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
  1285. #line 964 "parse.y"
  1286. {
  1287.   sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy410, &yymsp[-6].minor.yy410, yymsp[-5].minor.yy46, yymsp[-4].minor.yy370.a, yymsp[-4].minor.yy370.b, yymsp[-2].minor.yy373, yymsp[0].minor.yy172, yymsp[-10].minor.yy46, yymsp[-8].minor.yy46);
  1288.   yygotominor.yy410 = (yymsp[-6].minor.yy410.n==0?yymsp[-7].minor.yy410:yymsp[-6].minor.yy410);
  1289. }
  1290. #line 3042 "parse.c"
  1291.         break;
  1292.       case 261: /* trigger_time ::= BEFORE */
  1293.       case 264: /* trigger_time ::= */
  1294. #line 970 "parse.y"
  1295. { yygotominor.yy46 = TK_BEFORE; }
  1296. #line 3048 "parse.c"
  1297.         break;
  1298.       case 262: /* trigger_time ::= AFTER */
  1299. #line 971 "parse.y"
  1300. { yygotominor.yy46 = TK_AFTER;  }
  1301. #line 3053 "parse.c"
  1302.         break;
  1303.       case 263: /* trigger_time ::= INSTEAD OF */
  1304. #line 972 "parse.y"
  1305. { yygotominor.yy46 = TK_INSTEAD;}
  1306. #line 3058 "parse.c"
  1307.         break;
  1308.       case 265: /* trigger_event ::= DELETE|INSERT */
  1309.       case 266: /* trigger_event ::= UPDATE */
  1310. #line 977 "parse.y"
  1311. {yygotominor.yy370.a = yymsp[0].major; yygotominor.yy370.b = 0;}
  1312. #line 3064 "parse.c"
  1313.         break;
  1314.       case 267: /* trigger_event ::= UPDATE OF inscollist */
  1315. #line 979 "parse.y"
  1316. {yygotominor.yy370.a = TK_UPDATE; yygotominor.yy370.b = yymsp[0].minor.yy432;}
  1317. #line 3069 "parse.c"
  1318.         break;
  1319.       case 270: /* when_clause ::= */
  1320.       case 287: /* key_opt ::= */
  1321. #line 986 "parse.y"
  1322. { yygotominor.yy172 = 0; }
  1323. #line 3075 "parse.c"
  1324.         break;
  1325.       case 271: /* when_clause ::= WHEN expr */
  1326.       case 288: /* key_opt ::= KEY expr */
  1327. #line 987 "parse.y"
  1328. { yygotominor.yy172 = yymsp[0].minor.yy172; }
  1329. #line 3081 "parse.c"
  1330.         break;
  1331.       case 272: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
  1332. #line 991 "parse.y"
  1333. {
  1334.   if( yymsp[-2].minor.yy243 ){
  1335.     yymsp[-2].minor.yy243->pLast->pNext = yymsp[-1].minor.yy243;
  1336.   }else{
  1337.     yymsp[-2].minor.yy243 = yymsp[-1].minor.yy243;
  1338.   }
  1339.   yymsp[-2].minor.yy243->pLast = yymsp[-1].minor.yy243;
  1340.   yygotominor.yy243 = yymsp[-2].minor.yy243;
  1341. }
  1342. #line 3094 "parse.c"
  1343.         break;
  1344.       case 273: /* trigger_cmd_list ::= */
  1345. #line 1000 "parse.y"
  1346. { yygotominor.yy243 = 0; }
  1347. #line 3099 "parse.c"
  1348.         break;
  1349.       case 274: /* trigger_cmd ::= UPDATE orconf nm SET setlist where_opt */
  1350. #line 1006 "parse.y"
  1351. { yygotominor.yy243 = sqlite3TriggerUpdateStep(pParse->db, &yymsp[-3].minor.yy410, yymsp[-1].minor.yy174, yymsp[0].minor.yy172, yymsp[-4].minor.yy46); }
  1352. #line 3104 "parse.c"
  1353.         break;
  1354.       case 275: /* trigger_cmd ::= insert_cmd INTO nm inscollist_opt VALUES LP itemlist RP */
  1355. #line 1011 "parse.y"
  1356. {yygotominor.yy243 = sqlite3TriggerInsertStep(pParse->db, &yymsp[-5].minor.yy410, yymsp[-4].minor.yy432, yymsp[-1].minor.yy174, 0, yymsp[-7].minor.yy46);}
  1357. #line 3109 "parse.c"
  1358.         break;
  1359.       case 276: /* trigger_cmd ::= insert_cmd INTO nm inscollist_opt select */
  1360. #line 1014 "parse.y"
  1361. {yygotominor.yy243 = sqlite3TriggerInsertStep(pParse->db, &yymsp[-2].minor.yy410, yymsp[-1].minor.yy432, 0, yymsp[0].minor.yy219, yymsp[-4].minor.yy46);}
  1362. #line 3114 "parse.c"
  1363.         break;
  1364.       case 277: /* trigger_cmd ::= DELETE FROM nm where_opt */
  1365. #line 1018 "parse.y"
  1366. {yygotominor.yy243 = sqlite3TriggerDeleteStep(pParse->db, &yymsp[-1].minor.yy410, yymsp[0].minor.yy172);}
  1367. #line 3119 "parse.c"
  1368.         break;
  1369.       case 278: /* trigger_cmd ::= select */
  1370. #line 1021 "parse.y"
  1371. {yygotominor.yy243 = sqlite3TriggerSelectStep(pParse->db, yymsp[0].minor.yy219); }
  1372. #line 3124 "parse.c"
  1373.         break;
  1374.       case 279: /* expr ::= RAISE LP IGNORE RP */
  1375. #line 1024 "parse.y"
  1376. {
  1377.   yygotominor.yy172 = sqlite3PExpr(pParse, TK_RAISE, 0, 0, 0); 
  1378.   if( yygotominor.yy172 ){
  1379.     yygotominor.yy172->iColumn = OE_Ignore;
  1380.     sqlite3ExprSpan(yygotominor.yy172, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0);
  1381.   }
  1382. }
  1383. #line 3135 "parse.c"
  1384.         break;
  1385.       case 280: /* expr ::= RAISE LP raisetype COMMA nm RP */
  1386. #line 1031 "parse.y"
  1387. {
  1388.   yygotominor.yy172 = sqlite3PExpr(pParse, TK_RAISE, 0, 0, &yymsp[-1].minor.yy410); 
  1389.   if( yygotominor.yy172 ) {
  1390.     yygotominor.yy172->iColumn = yymsp[-3].minor.yy46;
  1391.     sqlite3ExprSpan(yygotominor.yy172, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
  1392.   }
  1393. }
  1394. #line 3146 "parse.c"
  1395.         break;
  1396.       case 281: /* raisetype ::= ROLLBACK */
  1397. #line 1041 "parse.y"
  1398. {yygotominor.yy46 = OE_Rollback;}
  1399. #line 3151 "parse.c"
  1400.         break;
  1401.       case 283: /* raisetype ::= FAIL */
  1402. #line 1043 "parse.y"
  1403. {yygotominor.yy46 = OE_Fail;}
  1404. #line 3156 "parse.c"
  1405.         break;
  1406.       case 284: /* cmd ::= DROP TRIGGER ifexists fullname */
  1407. #line 1048 "parse.y"
  1408. {
  1409.   sqlite3DropTrigger(pParse,yymsp[0].minor.yy373,yymsp[-1].minor.yy46);
  1410. }
  1411. #line 3163 "parse.c"
  1412.         break;
  1413.       case 285: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
  1414. #line 1055 "parse.y"
  1415. {
  1416.   sqlite3Attach(pParse, yymsp[-3].minor.yy172, yymsp[-1].minor.yy172, yymsp[0].minor.yy172);
  1417. }
  1418. #line 3170 "parse.c"
  1419.         break;
  1420.       case 286: /* cmd ::= DETACH database_kw_opt expr */
  1421. #line 1058 "parse.y"
  1422. {
  1423.   sqlite3Detach(pParse, yymsp[0].minor.yy172);
  1424. }
  1425. #line 3177 "parse.c"
  1426.         break;
  1427.       case 291: /* cmd ::= REINDEX */
  1428. #line 1073 "parse.y"
  1429. {sqlite3Reindex(pParse, 0, 0);}
  1430. #line 3182 "parse.c"
  1431.         break;
  1432.       case 292: /* cmd ::= REINDEX nm dbnm */
  1433. #line 1074 "parse.y"
  1434. {sqlite3Reindex(pParse, &yymsp[-1].minor.yy410, &yymsp[0].minor.yy410);}
  1435. #line 3187 "parse.c"
  1436.         break;
  1437.       case 293: /* cmd ::= ANALYZE */
  1438. #line 1079 "parse.y"
  1439. {sqlite3Analyze(pParse, 0, 0);}
  1440. #line 3192 "parse.c"
  1441.         break;
  1442.       case 294: /* cmd ::= ANALYZE nm dbnm */
  1443. #line 1080 "parse.y"
  1444. {sqlite3Analyze(pParse, &yymsp[-1].minor.yy410, &yymsp[0].minor.yy410);}
  1445. #line 3197 "parse.c"
  1446.         break;
  1447.       case 295: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
  1448. #line 1085 "parse.y"
  1449. {
  1450.   sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy373,&yymsp[0].minor.yy410);
  1451. }
  1452. #line 3204 "parse.c"
  1453.         break;
  1454.       case 296: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt column */
  1455. #line 1088 "parse.y"
  1456. {
  1457.   sqlite3AlterFinishAddColumn(pParse, &yymsp[0].minor.yy410);
  1458. }
  1459. #line 3211 "parse.c"
  1460.         break;
  1461.       case 297: /* add_column_fullname ::= fullname */
  1462. #line 1091 "parse.y"
  1463. {
  1464.   sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy373);
  1465. }
  1466. #line 3218 "parse.c"
  1467.         break;
  1468.       case 300: /* cmd ::= create_vtab */
  1469. #line 1100 "parse.y"
  1470. {sqlite3VtabFinishParse(pParse,0);}
  1471. #line 3223 "parse.c"
  1472.         break;
  1473.       case 301: /* cmd ::= create_vtab LP vtabarglist RP */
  1474. #line 1101 "parse.y"
  1475. {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
  1476. #line 3228 "parse.c"
  1477.         break;
  1478.       case 302: /* create_vtab ::= CREATE VIRTUAL TABLE nm dbnm USING nm */
  1479. #line 1102 "parse.y"
  1480. {
  1481.     sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy410, &yymsp[-2].minor.yy410, &yymsp[0].minor.yy410);
  1482. }
  1483. #line 3235 "parse.c"
  1484.         break;
  1485.       case 305: /* vtabarg ::= */
  1486. #line 1107 "parse.y"
  1487. {sqlite3VtabArgInit(pParse);}
  1488. #line 3240 "parse.c"
  1489.         break;
  1490.       case 307: /* vtabargtoken ::= ANY */
  1491.       case 308: /* vtabargtoken ::= lp anylist RP */
  1492.       case 309: /* lp ::= LP */
  1493.       case 311: /* anylist ::= anylist ANY */
  1494. #line 1109 "parse.y"
  1495. {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
  1496. #line 3248 "parse.c"
  1497.         break;
  1498.   };
  1499.   yygoto = yyRuleInfo[yyruleno].lhs;
  1500.   yysize = yyRuleInfo[yyruleno].nrhs;
  1501.   yypParser->yyidx -= yysize;
  1502.   yyact = yy_find_reduce_action(yymsp[-yysize].stateno,yygoto);
  1503.   if( yyact < YYNSTATE ){
  1504. #ifdef NDEBUG
  1505.     /* If we are not debugging and the reduce action popped at least
  1506.     ** one element off the stack, then we can push the new element back
  1507.     ** onto the stack here, and skip the stack overflow test in yy_shift().
  1508.     ** That gives a significant speed improvement. */
  1509.     if( yysize ){
  1510.       yypParser->yyidx++;
  1511.       yymsp -= yysize-1;
  1512.       yymsp->stateno = yyact;
  1513.       yymsp->major = yygoto;
  1514.       yymsp->minor = yygotominor;
  1515.     }else
  1516. #endif
  1517.     {
  1518.       yy_shift(yypParser,yyact,yygoto,&yygotominor);
  1519.     }
  1520.   }else{
  1521.     assert( yyact == YYNSTATE + YYNRULE + 1 );
  1522.     yy_accept(yypParser);
  1523.   }
  1524. }
  1525. /*
  1526. ** The following code executes when the parse fails
  1527. */
  1528. static void yy_parse_failed(
  1529.   yyParser *yypParser           /* The parser */
  1530. ){
  1531.   sqlite3ParserARG_FETCH;
  1532. #ifndef NDEBUG
  1533.   if( yyTraceFILE ){
  1534.     fprintf(yyTraceFILE,"%sFail!n",yyTracePrompt);
  1535.   }
  1536. #endif
  1537.   while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
  1538.   /* Here code is inserted which will be executed whenever the
  1539.   ** parser fails */
  1540.   sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
  1541. }
  1542. /*
  1543. ** The following code executes when a syntax error first occurs.
  1544. */
  1545. static void yy_syntax_error(
  1546.   yyParser *yypParser,           /* The parser */
  1547.   int yymajor,                   /* The major type of the error token */
  1548.   YYMINORTYPE yyminor            /* The minor type of the error token */
  1549. ){
  1550.   sqlite3ParserARG_FETCH;
  1551. #define TOKEN (yyminor.yy0)
  1552. #line 34 "parse.y"
  1553.   assert( TOKEN.z[0] );  /* The tokenizer always gives us a token */
  1554.   sqlite3ErrorMsg(pParse, "near "%T": syntax error", &TOKEN);
  1555.   pParse->parseError = 1;
  1556. #line 3312 "parse.c"
  1557.   sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
  1558. }
  1559. /*
  1560. ** The following is executed when the parser accepts
  1561. */
  1562. static void yy_accept(
  1563.   yyParser *yypParser           /* The parser */
  1564. ){
  1565.   sqlite3ParserARG_FETCH;
  1566. #ifndef NDEBUG
  1567.   if( yyTraceFILE ){
  1568.     fprintf(yyTraceFILE,"%sAccept!n",yyTracePrompt);
  1569.   }
  1570. #endif
  1571.   while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
  1572.   /* Here code is inserted which will be executed whenever the
  1573.   ** parser accepts */
  1574.   sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
  1575. }
  1576. /* The main parser program.
  1577. ** The first argument is a pointer to a structure obtained from
  1578. ** "sqlite3ParserAlloc" which describes the current state of the parser.
  1579. ** The second argument is the major token number.  The third is
  1580. ** the minor token.  The fourth optional argument is whatever the
  1581. ** user wants (and specified in the grammar) and is available for
  1582. ** use by the action routines.
  1583. **
  1584. ** Inputs:
  1585. ** <ul>
  1586. ** <li> A pointer to the parser (an opaque structure.)
  1587. ** <li> The major token number.
  1588. ** <li> The minor token number.
  1589. ** <li> An option argument of a grammar-specified type.
  1590. ** </ul>
  1591. **
  1592. ** Outputs:
  1593. ** None.
  1594. */
  1595. void sqlite3Parser(
  1596.   void *yyp,                   /* The parser */
  1597.   int yymajor,                 /* The major token code number */
  1598.   sqlite3ParserTOKENTYPE yyminor       /* The value for the token */
  1599.   sqlite3ParserARG_PDECL               /* Optional %extra_argument parameter */
  1600. ){
  1601.   YYMINORTYPE yyminorunion;
  1602.   int yyact;            /* The parser action. */
  1603.   int yyendofinput;     /* True if we are at the end of input */
  1604. #ifdef YYERRORSYMBOL
  1605.   int yyerrorhit = 0;   /* True if yymajor has invoked an error */
  1606. #endif
  1607.   yyParser *yypParser;  /* The parser */
  1608.   /* (re)initialize the parser, if necessary */
  1609.   yypParser = (yyParser*)yyp;
  1610.   if( yypParser->yyidx<0 ){
  1611. #if YYSTACKDEPTH<=0
  1612.     if( yypParser->yystksz <=0 ){
  1613.       /*memset(&yyminorunion, 0, sizeof(yyminorunion));*/
  1614.       yyminorunion = yyzerominor;
  1615.       yyStackOverflow(yypParser, &yyminorunion);
  1616.       return;
  1617.     }
  1618. #endif
  1619.     yypParser->yyidx = 0;
  1620.     yypParser->yyerrcnt = -1;
  1621.     yypParser->yystack[0].stateno = 0;
  1622.     yypParser->yystack[0].major = 0;
  1623.   }
  1624.   yyminorunion.yy0 = yyminor;
  1625.   yyendofinput = (yymajor==0);
  1626.   sqlite3ParserARG_STORE;
  1627. #ifndef NDEBUG
  1628.   if( yyTraceFILE ){
  1629.     fprintf(yyTraceFILE,"%sInput %sn",yyTracePrompt,yyTokenName[yymajor]);
  1630.   }
  1631. #endif
  1632.   do{
  1633.     yyact = yy_find_shift_action(yypParser,yymajor);
  1634.     if( yyact<YYNSTATE ){
  1635.       assert( !yyendofinput );  /* Impossible to shift the $ token */
  1636.       yy_shift(yypParser,yyact,yymajor,&yyminorunion);
  1637.       yypParser->yyerrcnt--;
  1638.       yymajor = YYNOCODE;
  1639.     }else if( yyact < YYNSTATE + YYNRULE ){
  1640.       yy_reduce(yypParser,yyact-YYNSTATE);
  1641.     }else{
  1642.       assert( yyact == YY_ERROR_ACTION );
  1643. #ifdef YYERRORSYMBOL
  1644.       int yymx;
  1645. #endif
  1646. #ifndef NDEBUG
  1647.       if( yyTraceFILE ){
  1648.         fprintf(yyTraceFILE,"%sSyntax Error!n",yyTracePrompt);
  1649.       }
  1650. #endif
  1651. #ifdef YYERRORSYMBOL
  1652.       /* A syntax error has occurred.
  1653.       ** The response to an error depends upon whether or not the
  1654.       ** grammar defines an error token "ERROR".  
  1655.       **
  1656.       ** This is what we do if the grammar does define ERROR:
  1657.       **
  1658.       **  * Call the %syntax_error function.
  1659.       **
  1660.       **  * Begin popping the stack until we enter a state where
  1661.       **    it is legal to shift the error symbol, then shift
  1662.       **    the error symbol.
  1663.       **
  1664.       **  * Set the error count to three.
  1665.       **
  1666.       **  * Begin accepting and shifting new tokens.  No new error
  1667.       **    processing will occur until three tokens have been
  1668.       **    shifted successfully.
  1669.       **
  1670.       */
  1671.       if( yypParser->yyerrcnt<0 ){
  1672.         yy_syntax_error(yypParser,yymajor,yyminorunion);
  1673.       }
  1674.       yymx = yypParser->yystack[yypParser->yyidx].major;
  1675.       if( yymx==YYERRORSYMBOL || yyerrorhit ){
  1676. #ifndef NDEBUG
  1677.         if( yyTraceFILE ){
  1678.           fprintf(yyTraceFILE,"%sDiscard input token %sn",
  1679.              yyTracePrompt,yyTokenName[yymajor]);
  1680.         }
  1681. #endif
  1682.         yy_destructor(yymajor,&yyminorunion);
  1683.         yymajor = YYNOCODE;
  1684.       }else{
  1685.          while(
  1686.           yypParser->yyidx >= 0 &&
  1687.           yymx != YYERRORSYMBOL &&
  1688.           (yyact = yy_find_reduce_action(
  1689.                         yypParser->yystack[yypParser->yyidx].stateno,
  1690.                         YYERRORSYMBOL)) >= YYNSTATE
  1691.         ){
  1692.           yy_pop_parser_stack(yypParser);
  1693.         }
  1694.         if( yypParser->yyidx < 0 || yymajor==0 ){
  1695.           yy_destructor(yymajor,&yyminorunion);
  1696.           yy_parse_failed(yypParser);
  1697.           yymajor = YYNOCODE;
  1698.         }else if( yymx!=YYERRORSYMBOL ){
  1699.           YYMINORTYPE u2;
  1700.           u2.YYERRSYMDT = 0;
  1701.           yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2);
  1702.         }
  1703.       }
  1704.       yypParser->yyerrcnt = 3;
  1705.       yyerrorhit = 1;
  1706. #else  /* YYERRORSYMBOL is not defined */
  1707.       /* This is what we do if the grammar does not define ERROR:
  1708.       **
  1709.       **  * Report an error message, and throw away the input token.
  1710.       **
  1711.       **  * If the input token is $, then fail the parse.
  1712.       **
  1713.       ** As before, subsequent error messages are suppressed until
  1714.       ** three input tokens have been successfully shifted.
  1715.       */
  1716.       if( yypParser->yyerrcnt<=0 ){
  1717.         yy_syntax_error(yypParser,yymajor,yyminorunion);
  1718.       }
  1719.       yypParser->yyerrcnt = 3;
  1720.       yy_destructor(yymajor,&yyminorunion);
  1721.       if( yyendofinput ){
  1722.         yy_parse_failed(yypParser);
  1723.       }
  1724.       yymajor = YYNOCODE;
  1725. #endif
  1726.     }
  1727.   }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
  1728.   return;
  1729. }