diff options
| author | Mark A. Hershberger <mah@debian.(none)> | 2009-03-25 00:35:13 -0400 |
|---|---|---|
| committer | Mark A. Hershberger <mah@debian.(none)> | 2009-03-25 00:35:13 -0400 |
| commit | 0a36161e13484a99ccf69bb38f206462d27cc6d6 (patch) | |
| tree | d5107db4b7369603ac7c753829e8972ee74949f7 /ext/sqlite | |
| parent | ce7edc9b3c7370f32fec0bc7a8ec3e29ed9a5f61 (diff) | |
| download | php-upstream/5.1.2.tar.gz | |
Imported Upstream version 5.1.2upstream/5.1.2
Diffstat (limited to 'ext/sqlite')
| -rw-r--r-- | ext/sqlite/config.m4 | 9 | ||||
| -rw-r--r-- | ext/sqlite/libsqlite/VERSION | 2 | ||||
| -rw-r--r-- | ext/sqlite/libsqlite/src/os.c | 1 | ||||
| -rw-r--r-- | ext/sqlite/libsqlite/src/pager.c | 4 | ||||
| -rw-r--r-- | ext/sqlite/libsqlite/src/parse.c | 1749 | ||||
| -rw-r--r-- | ext/sqlite/libsqlite/src/sqlite.w32.h | 4 | ||||
| -rw-r--r-- | ext/sqlite/libsqlite/src/sqliteInt.h | 4 | ||||
| -rw-r--r-- | ext/sqlite/libsqlite/src/util.c | 13 | ||||
| -rw-r--r-- | ext/sqlite/pdo_sqlite2.c | 18 | ||||
| -rw-r--r-- | ext/sqlite/php_sqlite.h | 10 | ||||
| -rw-r--r-- | ext/sqlite/sess_sqlite.c | 8 | ||||
| -rw-r--r-- | ext/sqlite/sqlite.c | 164 | ||||
| -rw-r--r-- | ext/sqlite/tests/blankdb.inc | 16 | ||||
| -rwxr-xr-x | ext/sqlite/tests/blankdb_oo.inc | 10 | ||||
| -rwxr-xr-x | ext/sqlite/tests/bug28112.phpt | 2 |
15 files changed, 642 insertions, 1372 deletions
diff --git a/ext/sqlite/config.m4 b/ext/sqlite/config.m4 index f1cddc345..e296c954c 100644 --- a/ext/sqlite/config.m4 +++ b/ext/sqlite/config.m4 @@ -1,4 +1,4 @@ -dnl $Id: config.m4,v 1.41 2005/06/14 01:44:16 sniper Exp $ +dnl $Id: config.m4,v 1.41.2.1 2005/11/30 04:50:03 wez Exp $ dnl config.m4 for extension sqlite dnl vim:et:ts=2:sw=2 @@ -105,16 +105,15 @@ if test "$PHP_SQLITE" != "no"; then libsqlite/src/vacuum.c libsqlite/src/copy.c \ libsqlite/src/vdbeaux.c libsqlite/src/date.c \ libsqlite/src/where.c libsqlite/src/trigger.c" - - PHP_ADD_EXTENSION_DEP(sqlite, spl) - PHP_ADD_EXTENSION_DEP(sqlite, pdo) fi - dnl dnl Common for both bundled/external dnl sqlite_sources="sqlite.c sess_sqlite.c pdo_sqlite2.c $sqlite_extra_sources" PHP_NEW_EXTENSION(sqlite, $sqlite_sources, $ext_shared,,$PHP_SQLITE_CFLAGS) + PHP_ADD_EXTENSION_DEP(sqlite, spl, true) + PHP_ADD_EXTENSION_DEP(sqlite, pdo, true) + PHP_ADD_MAKEFILE_FRAGMENT PHP_SUBST(SQLITE_SHARED_LIBADD) PHP_INSTALL_HEADERS([$ext_builddir/libsqlite/src/sqlite.h]) diff --git a/ext/sqlite/libsqlite/VERSION b/ext/sqlite/libsqlite/VERSION index 85c0a6a96..6ece8e7d5 100644 --- a/ext/sqlite/libsqlite/VERSION +++ b/ext/sqlite/libsqlite/VERSION @@ -1 +1 @@ -2.8.16 +2.8.17 diff --git a/ext/sqlite/libsqlite/src/os.c b/ext/sqlite/libsqlite/src/os.c index 930d62440..dccd65f1d 100644 --- a/ext/sqlite/libsqlite/src/os.c +++ b/ext/sqlite/libsqlite/src/os.c @@ -1778,6 +1778,7 @@ char *sqliteOsFullPathname(const char *zRelative){ sqliteSetString(&zFull, zRelative, (char*)0); }else{ char zBuf[5000]; + zBuf[0] = 0; sqliteSetString(&zFull, getcwd(zBuf, sizeof(zBuf)), "/", zRelative, (char*)0); } diff --git a/ext/sqlite/libsqlite/src/pager.c b/ext/sqlite/libsqlite/src/pager.c index e8ba27fa6..64c3e4d7b 100644 --- a/ext/sqlite/libsqlite/src/pager.c +++ b/ext/sqlite/libsqlite/src/pager.c @@ -18,7 +18,7 @@ ** file simultaneously, or one process from reading the database while ** another is writing. ** -** @(#) $Id: pager.c,v 1.6.4.1 2005/09/07 15:11:32 iliaa Exp $ +** @(#) $Id: pager.c,v 1.6.4.2 2005/12/20 15:26:26 iliaa Exp $ */ #include "os.h" /* Must be first to enable large file support */ #include "sqliteInt.h" @@ -1929,7 +1929,7 @@ void sqlitepager_dont_write(Pager *pPager, Pgno pgno){ pPg = pager_lookup(pPager, pgno); pPg->alwaysRollback = 1; - if( pPg && pPg->dirty ){ + if( pPg && pPg->dirty && !pPager->ckptInUse ){ if( pPager->dbSize==(int)pPg->pgno && pPager->origDbSize<pPager->dbSize ){ /* If this pages is the last page in the file and the file has grown ** during the current transaction, then do NOT mark the page as clean. diff --git a/ext/sqlite/libsqlite/src/parse.c b/ext/sqlite/libsqlite/src/parse.c index 1c5264ca6..64ec3457d 100644 --- a/ext/sqlite/libsqlite/src/parse.c +++ b/ext/sqlite/libsqlite/src/parse.c @@ -1,10 +1,10 @@ /* Driver template for the LEMON parser generator. -** The author disclaims copyright to this source code. +** The author disclaims copyright to this source code. */ /* First off, code is include which follows the "include" declaration ** in the input file. */ #include <stdio.h> -#line 33 "parse.y" +#line 33 "ext/sqlite/libsqlite/src/parse.y" #include "sqliteInt.h" #include "parse.h" @@ -29,8 +29,7 @@ struct LimitVal { */ struct TrigEvent { int a; IdList * b; }; - -#line 34 "parse.c" +#line 34 "ext/sqlite/libsqlite/src/parse.c" /* Next is all token values, in a form suitable for use by makeheaders. ** This section will be null unless lemon is run with the -m switch. */ @@ -79,7 +78,6 @@ struct TrigEvent { int a; IdList * b; }; ** YYERRORSYMBOL is the code number of the error symbol. If not ** defined, then do no error processing. */ -/* */ #define YYCODETYPE unsigned char #define YYNOCODE 221 #define YYACTIONTYPE unsigned short int @@ -161,7 +159,7 @@ typedef union { ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. */ -static YYACTIONTYPE yy_action[] = { +static const YYACTIONTYPE yy_action[] = { /* 0 */ 264, 5, 262, 119, 123, 117, 121, 129, 131, 133, /* 10 */ 135, 144, 146, 148, 150, 152, 154, 568, 106, 106, /* 20 */ 143, 857, 1, 562, 3, 142, 129, 131, 133, 135, @@ -292,7 +290,7 @@ static YYACTIONTYPE yy_action[] = { /* 1270 */ 556, 550, 850, 547, 549, 851, 555, 558, 551, 855, /* 1280 */ 553, 559, }; -static YYCODETYPE yy_lookahead[] = { +static const YYCODETYPE yy_lookahead[] = { /* 0 */ 21, 9, 23, 70, 71, 72, 73, 74, 75, 76, /* 10 */ 77, 78, 79, 80, 81, 82, 83, 9, 140, 140, /* 20 */ 41, 132, 133, 134, 135, 46, 74, 75, 76, 77, @@ -424,7 +422,7 @@ static YYCODETYPE yy_lookahead[] = { /* 1280 */ 219, 140, }; #define YY_SHIFT_USE_DFLT (-68) -static short yy_shift_ofst[] = { +static const short yy_shift_ofst[] = { /* 0 */ 170, 113, -68, 746, -8, -68, 8, 127, 288, 239, /* 10 */ 348, 167, -68, -68, -68, -68, -68, -68, 547, -68, /* 20 */ -68, -68, -68, 115, 613, 115, 723, 115, 761, 44, @@ -484,7 +482,7 @@ static short yy_shift_ofst[] = { /* 560 */ -68, -68, -68, }; #define YY_REDUCE_USE_DFLT (-123) -static short yy_reduce_ofst[] = { +static const short yy_reduce_ofst[] = { /* 0 */ -111, 55, -123, 643, -123, -123, -123, -100, 82, -123, /* 10 */ -123, 233, -123, -123, -123, -123, -123, -123, 310, -123, /* 20 */ -123, -123, -123, 442, -123, 448, -123, 542, -123, 540, @@ -543,7 +541,7 @@ static short yy_reduce_ofst[] = { /* 550 */ -123, 1129, 1061, -123, 1124, -123, -123, 1059, 1141, -123, /* 560 */ -123, -123, -123, }; -static YYACTIONTYPE yy_default[] = { +static const YYACTIONTYPE yy_default[] = { /* 0 */ 570, 570, 564, 856, 856, 566, 856, 572, 856, 856, /* 10 */ 856, 856, 652, 655, 656, 657, 658, 659, 573, 574, /* 20 */ 591, 592, 593, 856, 856, 856, 856, 856, 856, 856, @@ -816,7 +814,7 @@ void sqliteParserTrace(FILE *TraceFILE, char *zTracePrompt){ #ifndef NDEBUG /* For tracing shifts, the names of all terminals and nonterminals ** are required. The following table supplies these names */ -static const char *yyTokenName[] = { +static const char *const yyTokenName[] = { "$", "END_OF_FILE", "ILLEGAL", "SPACE", "UNCLOSED_STRING", "COMMENT", "FUNCTION", "COLUMN", "AGG_FUNCTION", "SEMI", "EXPLAIN", "BEGIN", @@ -878,7 +876,7 @@ static const char *yyTokenName[] = { #ifndef NDEBUG /* For tracing reduce actions, the names of all rules are required. */ -static const char *yyRuleName[] = { +static const char *const yyRuleName[] = { /* 0 */ "input ::= cmdlist", /* 1 */ "cmdlist ::= cmdlist ecmd", /* 2 */ "cmdlist ::= ecmd", @@ -1230,149 +1228,61 @@ static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){ ** inside the C code. */ case 146: -#line 286 "parse.y" + case 171: + case 189: +#line 286 "ext/sqlite/libsqlite/src/parse.y" {sqliteSelectDelete((yypminor->yy179));} -#line 1235 "parse.c" +#line 1237 "ext/sqlite/libsqlite/src/parse.c" break; case 158: -#line 533 "parse.y" + case 176: + case 178: + case 187: + case 192: + case 204: +#line 533 "ext/sqlite/libsqlite/src/parse.y" {sqliteExprDelete((yypminor->yy242));} -#line 1240 "parse.c" +#line 1247 "ext/sqlite/libsqlite/src/parse.c" break; case 159: -#line 746 "parse.y" -{sqliteIdListDelete((yypminor->yy320));} -#line 1245 "parse.c" - break; case 167: -#line 744 "parse.y" + case 188: + case 197: + case 199: +#line 746 "ext/sqlite/libsqlite/src/parse.y" {sqliteIdListDelete((yypminor->yy320));} -#line 1250 "parse.c" - break; - case 171: -#line 288 "parse.y" -{sqliteSelectDelete((yypminor->yy179));} -#line 1255 "parse.c" +#line 1256 "ext/sqlite/libsqlite/src/parse.c" break; case 174: -#line 322 "parse.y" -{sqliteExprListDelete((yypminor->yy322));} -#line 1260 "parse.c" - break; - case 175: -#line 353 "parse.y" -{sqliteSrcListDelete((yypminor->yy307));} -#line 1265 "parse.c" - break; - case 176: -#line 483 "parse.y" -{sqliteExprDelete((yypminor->yy242));} -#line 1270 "parse.c" - break; case 177: -#line 459 "parse.y" -{sqliteExprListDelete((yypminor->yy322));} -#line 1275 "parse.c" - break; - case 178: -#line 464 "parse.y" -{sqliteExprDelete((yypminor->yy242));} -#line 1280 "parse.c" - break; case 179: -#line 431 "parse.y" -{sqliteExprListDelete((yypminor->yy322));} -#line 1285 "parse.c" - break; case 181: -#line 324 "parse.y" -{sqliteExprListDelete((yypminor->yy322));} -#line 1290 "parse.c" - break; - case 183: -#line 349 "parse.y" -{sqliteSrcListDelete((yypminor->yy307));} -#line 1295 "parse.c" - break; - case 184: -#line 351 "parse.y" -{sqliteSrcListDelete((yypminor->yy307));} -#line 1300 "parse.c" - break; - case 187: -#line 420 "parse.y" -{sqliteExprDelete((yypminor->yy242));} -#line 1305 "parse.c" - break; - case 188: -#line 425 "parse.y" -{sqliteIdListDelete((yypminor->yy320));} -#line 1310 "parse.c" - break; - case 189: -#line 400 "parse.y" -{sqliteSelectDelete((yypminor->yy179));} -#line 1315 "parse.c" - break; case 191: -#line 433 "parse.y" -{sqliteExprListDelete((yypminor->yy322));} -#line 1320 "parse.c" - break; - case 192: -#line 435 "parse.y" -{sqliteExprDelete((yypminor->yy242));} -#line 1325 "parse.c" - break; case 194: -#line 719 "parse.y" -{sqliteExprListDelete((yypminor->yy322));} -#line 1330 "parse.c" - break; case 195: -#line 489 "parse.y" -{sqliteExprListDelete((yypminor->yy322));} -#line 1335 "parse.c" - break; - case 197: -#line 520 "parse.y" -{sqliteIdListDelete((yypminor->yy320));} -#line 1340 "parse.c" - break; case 198: -#line 514 "parse.y" -{sqliteExprListDelete((yypminor->yy322));} -#line 1345 "parse.c" - break; - case 199: -#line 522 "parse.y" -{sqliteIdListDelete((yypminor->yy320));} -#line 1350 "parse.c" - break; case 202: -#line 702 "parse.y" +#line 322 "ext/sqlite/libsqlite/src/parse.y" {sqliteExprListDelete((yypminor->yy322));} -#line 1355 "parse.c" +#line 1269 "ext/sqlite/libsqlite/src/parse.c" break; - case 204: -#line 721 "parse.y" -{sqliteExprDelete((yypminor->yy242));} -#line 1360 "parse.c" + case 175: + case 183: + case 184: +#line 353 "ext/sqlite/libsqlite/src/parse.y" +{sqliteSrcListDelete((yypminor->yy307));} +#line 1276 "ext/sqlite/libsqlite/src/parse.c" break; case 212: -#line 828 "parse.y" + case 217: +#line 828 "ext/sqlite/libsqlite/src/parse.y" {sqliteDeleteTriggerStep((yypminor->yy19));} -#line 1365 "parse.c" +#line 1282 "ext/sqlite/libsqlite/src/parse.c" break; case 214: -#line 812 "parse.y" +#line 812 "ext/sqlite/libsqlite/src/parse.y" {sqliteIdListDelete((yypminor->yy290).b);} -#line 1370 "parse.c" - break; - case 217: -#line 836 "parse.y" -{sqliteDeleteTriggerStep((yypminor->yy19));} -#line 1375 "parse.c" +#line 1287 "ext/sqlite/libsqlite/src/parse.c" break; default: break; /* If no destructor action specified: do nothing */ } @@ -1479,11 +1389,11 @@ static int yy_find_shift_action( ** return YY_NO_ACTION. */ static int yy_find_reduce_action( - yyParser *pParser, /* The parser */ + int stateno, /* Current state number */ int iLookAhead /* The look-ahead token */ ){ int i; - int stateno = pParser->yystack[pParser->yyidx].stateno; + /* int stateno = pParser->yystack[pParser->yyidx].stateno; */ i = yy_reduce_ofst[stateno]; if( i==YY_REDUCE_USE_DFLT ){ @@ -1544,7 +1454,7 @@ static void yy_shift( /* The following table contains information about every rule that ** is used during the reduce. */ -static struct { +static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ unsigned char nrhs; /* Number of right-hand side symbols in the rule */ } yyRuleInfo[] = { @@ -1868,6 +1778,18 @@ static void yy_reduce( } #endif /* NDEBUG */ +#ifndef NDEBUG + /* Silence complaints from purify about yygotominor being uninitialized + ** in some cases when it is copied into the stack after the following + ** switch. yygotominor is uninitialized when a rule reduces that does + ** not set the value of its left-hand side nonterminal. Leaving the + ** value of the nonterminal uninitialized is utterly harmless as long + ** as the value is never used. So really the only thing this code + ** accomplishes is to quieten purify. + */ + memset(&yygotominor, 0, sizeof(yygotominor)); +#endif + switch( yyruleno ){ /* Beginning here are the reduction cases. A typical example ** follows: @@ -1877,596 +1799,330 @@ static void yy_reduce( ** #line <lineno> <thisfile> ** break; */ - case 0: - /* No destructor defined for cmdlist */ - break; - case 1: - /* No destructor defined for cmdlist */ - /* No destructor defined for ecmd */ - break; - case 2: - /* No destructor defined for ecmd */ - break; - case 3: - /* No destructor defined for explain */ - /* No destructor defined for cmdx */ - /* No destructor defined for SEMI */ - break; - case 4: - /* No destructor defined for SEMI */ - break; case 5: -#line 72 "parse.y" +#line 72 "ext/sqlite/libsqlite/src/parse.y" { sqliteExec(pParse); } -#line 1901 "parse.c" - /* No destructor defined for cmd */ +#line 1807 "ext/sqlite/libsqlite/src/parse.c" break; case 6: -#line 73 "parse.y" +#line 73 "ext/sqlite/libsqlite/src/parse.y" { sqliteBeginParse(pParse, 1); } -#line 1907 "parse.c" - /* No destructor defined for EXPLAIN */ +#line 1812 "ext/sqlite/libsqlite/src/parse.c" break; case 7: -#line 74 "parse.y" +#line 74 "ext/sqlite/libsqlite/src/parse.y" { sqliteBeginParse(pParse, 0); } -#line 1913 "parse.c" +#line 1817 "ext/sqlite/libsqlite/src/parse.c" break; case 8: -#line 79 "parse.y" +#line 79 "ext/sqlite/libsqlite/src/parse.y" {sqliteBeginTransaction(pParse,yymsp[0].minor.yy372);} -#line 1918 "parse.c" - /* No destructor defined for BEGIN */ - /* No destructor defined for trans_opt */ - break; - case 9: - break; - case 10: - /* No destructor defined for TRANSACTION */ - break; - case 11: - /* No destructor defined for TRANSACTION */ - /* No destructor defined for nm */ +#line 1822 "ext/sqlite/libsqlite/src/parse.c" break; case 12: -#line 83 "parse.y" -{sqliteCommitTransaction(pParse);} -#line 1934 "parse.c" - /* No destructor defined for COMMIT */ - /* No destructor defined for trans_opt */ - break; case 13: -#line 84 "parse.y" +#line 83 "ext/sqlite/libsqlite/src/parse.y" {sqliteCommitTransaction(pParse);} -#line 1941 "parse.c" - /* No destructor defined for END */ - /* No destructor defined for trans_opt */ +#line 1828 "ext/sqlite/libsqlite/src/parse.c" break; case 14: -#line 85 "parse.y" +#line 85 "ext/sqlite/libsqlite/src/parse.y" {sqliteRollbackTransaction(pParse);} -#line 1948 "parse.c" - /* No destructor defined for ROLLBACK */ - /* No destructor defined for trans_opt */ - break; - case 15: - /* No destructor defined for create_table */ - /* No destructor defined for create_table_args */ +#line 1833 "ext/sqlite/libsqlite/src/parse.c" break; case 16: -#line 90 "parse.y" +#line 90 "ext/sqlite/libsqlite/src/parse.y" { sqliteStartTable(pParse,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy298,yymsp[-2].minor.yy372,0); } -#line 1961 "parse.c" - /* No destructor defined for TABLE */ +#line 1840 "ext/sqlite/libsqlite/src/parse.c" break; case 17: -#line 94 "parse.y" + case 74: + case 108: +#line 94 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy372 = 1;} -#line 1967 "parse.c" - /* No destructor defined for TEMP */ +#line 1847 "ext/sqlite/libsqlite/src/parse.c" break; case 18: -#line 95 "parse.y" + case 73: + case 75: + case 86: + case 109: + case 110: +#line 95 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy372 = 0;} -#line 1973 "parse.c" +#line 1857 "ext/sqlite/libsqlite/src/parse.c" break; case 19: -#line 96 "parse.y" +#line 96 "ext/sqlite/libsqlite/src/parse.y" { sqliteEndTable(pParse,&yymsp[0].minor.yy0,0); } -#line 1980 "parse.c" - /* No destructor defined for LP */ - /* No destructor defined for columnlist */ - /* No destructor defined for conslist_opt */ +#line 1864 "ext/sqlite/libsqlite/src/parse.c" break; case 20: -#line 99 "parse.y" +#line 99 "ext/sqlite/libsqlite/src/parse.y" { sqliteEndTable(pParse,0,yymsp[0].minor.yy179); sqliteSelectDelete(yymsp[0].minor.yy179); } -#line 1991 "parse.c" - /* No destructor defined for AS */ - break; - case 21: - /* No destructor defined for columnlist */ - /* No destructor defined for COMMA */ - /* No destructor defined for column */ - break; - case 22: - /* No destructor defined for column */ - break; - case 23: - /* No destructor defined for columnid */ - /* No destructor defined for type */ - /* No destructor defined for carglist */ +#line 1872 "ext/sqlite/libsqlite/src/parse.c" break; case 24: -#line 111 "parse.y" +#line 111 "ext/sqlite/libsqlite/src/parse.y" {sqliteAddColumn(pParse,&yymsp[0].minor.yy298);} -#line 2010 "parse.c" +#line 1877 "ext/sqlite/libsqlite/src/parse.c" break; case 25: -#line 117 "parse.y" -{yygotominor.yy298 = yymsp[0].minor.yy0;} -#line 2015 "parse.c" - break; case 26: -#line 149 "parse.y" -{yygotominor.yy298 = yymsp[0].minor.yy0;} -#line 2020 "parse.c" - break; case 27: -#line 150 "parse.y" -{yygotominor.yy298 = yymsp[0].minor.yy0;} -#line 2025 "parse.c" - break; case 28: -#line 155 "parse.y" -{yygotominor.yy298 = yymsp[0].minor.yy0;} -#line 2030 "parse.c" - break; case 29: -#line 156 "parse.y" -{yygotominor.yy298 = yymsp[0].minor.yy0;} -#line 2035 "parse.c" - break; case 30: -#line 157 "parse.y" + case 256: + case 257: +#line 117 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy298 = yymsp[0].minor.yy0;} -#line 2040 "parse.c" - break; - case 31: +#line 1889 "ext/sqlite/libsqlite/src/parse.c" break; case 32: -#line 160 "parse.y" +#line 160 "ext/sqlite/libsqlite/src/parse.y" {sqliteAddColumnType(pParse,&yymsp[0].minor.yy298,&yymsp[0].minor.yy298);} -#line 2047 "parse.c" +#line 1894 "ext/sqlite/libsqlite/src/parse.c" break; case 33: -#line 161 "parse.y" +#line 161 "ext/sqlite/libsqlite/src/parse.y" {sqliteAddColumnType(pParse,&yymsp[-3].minor.yy298,&yymsp[0].minor.yy0);} -#line 2052 "parse.c" - /* No destructor defined for LP */ - /* No destructor defined for signed */ +#line 1899 "ext/sqlite/libsqlite/src/parse.c" break; case 34: -#line 163 "parse.y" +#line 163 "ext/sqlite/libsqlite/src/parse.y" {sqliteAddColumnType(pParse,&yymsp[-5].minor.yy298,&yymsp[0].minor.yy0);} -#line 2059 "parse.c" - /* No destructor defined for LP */ - /* No destructor defined for signed */ - /* No destructor defined for COMMA */ - /* No destructor defined for signed */ +#line 1904 "ext/sqlite/libsqlite/src/parse.c" break; case 35: -#line 165 "parse.y" + case 128: + case 254: + case 255: +#line 165 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy298 = yymsp[0].minor.yy298;} -#line 2068 "parse.c" +#line 1912 "ext/sqlite/libsqlite/src/parse.c" break; case 36: -#line 166 "parse.y" + case 242: +#line 166 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy298 = yymsp[-1].minor.yy298;} -#line 2073 "parse.c" - /* No destructor defined for ids */ +#line 1918 "ext/sqlite/libsqlite/src/parse.c" break; case 37: -#line 168 "parse.y" -{ yygotominor.yy372 = atoi(yymsp[0].minor.yy0.z); } -#line 2079 "parse.c" - break; case 38: -#line 169 "parse.y" +#line 168 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = atoi(yymsp[0].minor.yy0.z); } -#line 2084 "parse.c" - /* No destructor defined for PLUS */ +#line 1924 "ext/sqlite/libsqlite/src/parse.c" break; case 39: -#line 170 "parse.y" +#line 170 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = -atoi(yymsp[0].minor.yy0.z); } -#line 2090 "parse.c" - /* No destructor defined for MINUS */ - break; - case 40: - /* No destructor defined for carglist */ - /* No destructor defined for carg */ - break; - case 41: - break; - case 42: - /* No destructor defined for CONSTRAINT */ - /* No destructor defined for nm */ - /* No destructor defined for ccons */ - break; - case 43: - /* No destructor defined for ccons */ +#line 1929 "ext/sqlite/libsqlite/src/parse.c" break; case 44: -#line 175 "parse.y" -{sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);} -#line 2110 "parse.c" - /* No destructor defined for DEFAULT */ - break; case 45: -#line 176 "parse.y" -{sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);} -#line 2116 "parse.c" - /* No destructor defined for DEFAULT */ - break; case 46: -#line 177 "parse.y" -{sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);} -#line 2122 "parse.c" - /* No destructor defined for DEFAULT */ - break; case 47: -#line 178 "parse.y" -{sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);} -#line 2128 "parse.c" - /* No destructor defined for DEFAULT */ - /* No destructor defined for PLUS */ - break; - case 48: -#line 179 "parse.y" -{sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,1);} -#line 2135 "parse.c" - /* No destructor defined for DEFAULT */ - /* No destructor defined for MINUS */ - break; case 49: -#line 180 "parse.y" -{sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);} -#line 2142 "parse.c" - /* No destructor defined for DEFAULT */ - break; case 50: -#line 181 "parse.y" +#line 175 "ext/sqlite/libsqlite/src/parse.y" {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);} -#line 2148 "parse.c" - /* No destructor defined for DEFAULT */ - /* No destructor defined for PLUS */ +#line 1939 "ext/sqlite/libsqlite/src/parse.c" break; + case 48: case 51: -#line 182 "parse.y" +#line 179 "ext/sqlite/libsqlite/src/parse.y" {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,1);} -#line 2155 "parse.c" - /* No destructor defined for DEFAULT */ - /* No destructor defined for MINUS */ - break; - case 52: - /* No destructor defined for DEFAULT */ - /* No destructor defined for NULL */ - break; - case 53: - /* No destructor defined for NULL */ - /* No destructor defined for onconf */ +#line 1945 "ext/sqlite/libsqlite/src/parse.c" break; case 54: -#line 189 "parse.y" +#line 189 "ext/sqlite/libsqlite/src/parse.y" {sqliteAddNotNull(pParse, yymsp[0].minor.yy372);} -#line 2170 "parse.c" - /* No destructor defined for NOT */ - /* No destructor defined for NULL */ +#line 1950 "ext/sqlite/libsqlite/src/parse.c" break; case 55: -#line 190 "parse.y" +#line 190 "ext/sqlite/libsqlite/src/parse.y" {sqliteAddPrimaryKey(pParse,0,yymsp[0].minor.yy372);} -#line 2177 "parse.c" - /* No destructor defined for PRIMARY */ - /* No destructor defined for KEY */ - /* No destructor defined for sortorder */ +#line 1955 "ext/sqlite/libsqlite/src/parse.c" break; case 56: -#line 191 "parse.y" +#line 191 "ext/sqlite/libsqlite/src/parse.y" {sqliteCreateIndex(pParse,0,0,0,yymsp[0].minor.yy372,0,0);} -#line 2185 "parse.c" - /* No destructor defined for UNIQUE */ - break; - case 57: - /* No destructor defined for CHECK */ - /* No destructor defined for LP */ - yy_destructor(158,&yymsp[-2].minor); - /* No destructor defined for RP */ - /* No destructor defined for onconf */ +#line 1960 "ext/sqlite/libsqlite/src/parse.c" break; case 58: -#line 194 "parse.y" +#line 194 "ext/sqlite/libsqlite/src/parse.y" {sqliteCreateForeignKey(pParse,0,&yymsp[-2].minor.yy298,yymsp[-1].minor.yy320,yymsp[0].minor.yy372);} -#line 2198 "parse.c" - /* No destructor defined for REFERENCES */ +#line 1965 "ext/sqlite/libsqlite/src/parse.c" break; case 59: -#line 195 "parse.y" +#line 195 "ext/sqlite/libsqlite/src/parse.y" {sqliteDeferForeignKey(pParse,yymsp[0].minor.yy372);} -#line 2204 "parse.c" +#line 1970 "ext/sqlite/libsqlite/src/parse.c" break; case 60: -#line 196 "parse.y" +#line 196 "ext/sqlite/libsqlite/src/parse.y" { sqliteAddCollateType(pParse, sqliteCollateType(yymsp[0].minor.yy298.z, yymsp[0].minor.yy298.n)); } -#line 2211 "parse.c" - /* No destructor defined for COLLATE */ +#line 1977 "ext/sqlite/libsqlite/src/parse.c" break; case 61: -#line 206 "parse.y" +#line 206 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = OE_Restrict * 0x010101; } -#line 2217 "parse.c" +#line 1982 "ext/sqlite/libsqlite/src/parse.c" break; case 62: -#line 207 "parse.y" +#line 207 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = (yymsp[-1].minor.yy372 & yymsp[0].minor.yy407.mask) | yymsp[0].minor.yy407.value; } -#line 2222 "parse.c" +#line 1987 "ext/sqlite/libsqlite/src/parse.c" break; case 63: -#line 209 "parse.y" +#line 209 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy407.value = 0; yygotominor.yy407.mask = 0x000000; } -#line 2227 "parse.c" - /* No destructor defined for MATCH */ - /* No destructor defined for nm */ +#line 1992 "ext/sqlite/libsqlite/src/parse.c" break; case 64: -#line 210 "parse.y" +#line 210 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy407.value = yymsp[0].minor.yy372; yygotominor.yy407.mask = 0x0000ff; } -#line 2234 "parse.c" - /* No destructor defined for ON */ - /* No destructor defined for DELETE */ +#line 1997 "ext/sqlite/libsqlite/src/parse.c" break; case 65: -#line 211 "parse.y" +#line 211 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy407.value = yymsp[0].minor.yy372<<8; yygotominor.yy407.mask = 0x00ff00; } -#line 2241 "parse.c" - /* No destructor defined for ON */ - /* No destructor defined for UPDATE */ +#line 2002 "ext/sqlite/libsqlite/src/parse.c" break; case 66: -#line 212 "parse.y" +#line 212 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy407.value = yymsp[0].minor.yy372<<16; yygotominor.yy407.mask = 0xff0000; } -#line 2248 "parse.c" - /* No destructor defined for ON */ - /* No destructor defined for INSERT */ +#line 2007 "ext/sqlite/libsqlite/src/parse.c" break; case 67: -#line 214 "parse.y" +#line 214 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = OE_SetNull; } -#line 2255 "parse.c" - /* No destructor defined for SET */ - /* No destructor defined for NULL */ +#line 2012 "ext/sqlite/libsqlite/src/parse.c" break; case 68: -#line 215 "parse.y" +#line 215 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = OE_SetDflt; } -#line 2262 "parse.c" - /* No destructor defined for SET */ - /* No destructor defined for DEFAULT */ +#line 2017 "ext/sqlite/libsqlite/src/parse.c" break; case 69: -#line 216 "parse.y" +#line 216 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = OE_Cascade; } -#line 2269 "parse.c" - /* No destructor defined for CASCADE */ +#line 2022 "ext/sqlite/libsqlite/src/parse.c" break; case 70: -#line 217 "parse.y" +#line 217 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = OE_Restrict; } -#line 2275 "parse.c" - /* No destructor defined for RESTRICT */ +#line 2027 "ext/sqlite/libsqlite/src/parse.c" break; case 71: -#line 219 "parse.y" -{yygotominor.yy372 = yymsp[0].minor.yy372;} -#line 2281 "parse.c" - /* No destructor defined for NOT */ - /* No destructor defined for DEFERRABLE */ - break; case 72: -#line 220 "parse.y" + case 87: + case 164: +#line 219 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy372 = yymsp[0].minor.yy372;} -#line 2288 "parse.c" - /* No destructor defined for DEFERRABLE */ - break; - case 73: -#line 222 "parse.y" -{yygotominor.yy372 = 0;} -#line 2294 "parse.c" - break; - case 74: -#line 223 "parse.y" -{yygotominor.yy372 = 1;} -#line 2299 "parse.c" - /* No destructor defined for INITIALLY */ - /* No destructor defined for DEFERRED */ - break; - case 75: -#line 224 "parse.y" -{yygotominor.yy372 = 0;} -#line 2306 "parse.c" - /* No destructor defined for INITIALLY */ - /* No destructor defined for IMMEDIATE */ - break; - case 76: - break; - case 77: - /* No destructor defined for COMMA */ - /* No destructor defined for conslist */ - break; - case 78: - /* No destructor defined for conslist */ - /* No destructor defined for COMMA */ - /* No destructor defined for tcons */ - break; - case 79: - /* No destructor defined for conslist */ - /* No destructor defined for tcons */ - break; - case 80: - /* No destructor defined for tcons */ - break; - case 81: - /* No destructor defined for CONSTRAINT */ - /* No destructor defined for nm */ +#line 2035 "ext/sqlite/libsqlite/src/parse.c" break; case 82: -#line 236 "parse.y" +#line 236 "ext/sqlite/libsqlite/src/parse.y" {sqliteAddPrimaryKey(pParse,yymsp[-2].minor.yy320,yymsp[0].minor.yy372);} -#line 2335 "parse.c" - /* No destructor defined for PRIMARY */ - /* No destructor defined for KEY */ - /* No destructor defined for LP */ - /* No destructor defined for RP */ +#line 2040 "ext/sqlite/libsqlite/src/parse.c" break; case 83: -#line 238 "parse.y" +#line 238 "ext/sqlite/libsqlite/src/parse.y" {sqliteCreateIndex(pParse,0,0,yymsp[-2].minor.yy320,yymsp[0].minor.yy372,0,0);} -#line 2344 "parse.c" - /* No destructor defined for UNIQUE */ - /* No destructor defined for LP */ - /* No destructor defined for RP */ - break; - case 84: - /* No destructor defined for CHECK */ - yy_destructor(158,&yymsp[-1].minor); - /* No destructor defined for onconf */ +#line 2045 "ext/sqlite/libsqlite/src/parse.c" break; case 85: -#line 241 "parse.y" +#line 241 "ext/sqlite/libsqlite/src/parse.y" { sqliteCreateForeignKey(pParse, yymsp[-6].minor.yy320, &yymsp[-3].minor.yy298, yymsp[-2].minor.yy320, yymsp[-1].minor.yy372); sqliteDeferForeignKey(pParse, yymsp[0].minor.yy372); } -#line 2360 "parse.c" - /* No destructor defined for FOREIGN */ - /* No destructor defined for KEY */ - /* No destructor defined for LP */ - /* No destructor defined for RP */ - /* No destructor defined for REFERENCES */ - break; - case 86: -#line 246 "parse.y" -{yygotominor.yy372 = 0;} -#line 2370 "parse.c" - break; - case 87: -#line 247 "parse.y" -{yygotominor.yy372 = yymsp[0].minor.yy372;} -#line 2375 "parse.c" +#line 2053 "ext/sqlite/libsqlite/src/parse.c" break; case 88: -#line 255 "parse.y" -{ yygotominor.yy372 = OE_Default; } -#line 2380 "parse.c" - break; - case 89: -#line 256 "parse.y" -{ yygotominor.yy372 = yymsp[0].minor.yy372; } -#line 2385 "parse.c" - /* No destructor defined for ON */ - /* No destructor defined for CONFLICT */ - break; case 90: -#line 257 "parse.y" +#line 255 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = OE_Default; } -#line 2392 "parse.c" +#line 2059 "ext/sqlite/libsqlite/src/parse.c" break; + case 89: case 91: -#line 258 "parse.y" +#line 256 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = yymsp[0].minor.yy372; } -#line 2397 "parse.c" - /* No destructor defined for OR */ +#line 2065 "ext/sqlite/libsqlite/src/parse.c" break; case 92: -#line 259 "parse.y" +#line 259 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = OE_Rollback; } -#line 2403 "parse.c" - /* No destructor defined for ROLLBACK */ +#line 2070 "ext/sqlite/libsqlite/src/parse.c" break; case 93: -#line 260 "parse.y" + case 236: +#line 260 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = OE_Abort; } -#line 2409 "parse.c" - /* No destructor defined for ABORT */ +#line 2076 "ext/sqlite/libsqlite/src/parse.c" break; case 94: -#line 261 "parse.y" +#line 261 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = OE_Fail; } -#line 2415 "parse.c" - /* No destructor defined for FAIL */ +#line 2081 "ext/sqlite/libsqlite/src/parse.c" break; case 95: -#line 262 "parse.y" +#line 262 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = OE_Ignore; } -#line 2421 "parse.c" - /* No destructor defined for IGNORE */ +#line 2086 "ext/sqlite/libsqlite/src/parse.c" break; case 96: -#line 263 "parse.y" +#line 263 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = OE_Replace; } -#line 2427 "parse.c" - /* No destructor defined for REPLACE */ +#line 2091 "ext/sqlite/libsqlite/src/parse.c" break; case 97: -#line 267 "parse.y" +#line 267 "ext/sqlite/libsqlite/src/parse.y" {sqliteDropTable(pParse,&yymsp[0].minor.yy298,0);} -#line 2433 "parse.c" - /* No destructor defined for DROP */ - /* No destructor defined for TABLE */ +#line 2096 "ext/sqlite/libsqlite/src/parse.c" break; case 98: -#line 271 "parse.y" +#line 271 "ext/sqlite/libsqlite/src/parse.y" { sqliteCreateView(pParse, &yymsp[-5].minor.yy0, &yymsp[-2].minor.yy298, yymsp[0].minor.yy179, yymsp[-4].minor.yy372); } -#line 2442 "parse.c" - /* No destructor defined for VIEW */ - /* No destructor defined for AS */ +#line 2103 "ext/sqlite/libsqlite/src/parse.c" break; case 99: -#line 274 "parse.y" +#line 274 "ext/sqlite/libsqlite/src/parse.y" { sqliteDropTable(pParse, &yymsp[0].minor.yy298, 1); } -#line 2451 "parse.c" - /* No destructor defined for DROP */ - /* No destructor defined for VIEW */ +#line 2110 "ext/sqlite/libsqlite/src/parse.c" break; case 100: -#line 280 "parse.y" +#line 280 "ext/sqlite/libsqlite/src/parse.y" { sqliteSelect(pParse, yymsp[0].minor.yy179, SRT_Callback, 0, 0, 0, 0); sqliteSelectDelete(yymsp[0].minor.yy179); } -#line 2461 "parse.c" +#line 2118 "ext/sqlite/libsqlite/src/parse.c" break; case 101: -#line 290 "parse.y" + case 125: +#line 290 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy179 = yymsp[0].minor.yy179;} -#line 2466 "parse.c" +#line 2124 "ext/sqlite/libsqlite/src/parse.c" break; case 102: -#line 291 "parse.y" +#line 291 "ext/sqlite/libsqlite/src/parse.y" { if( yymsp[0].minor.yy179 ){ yymsp[0].minor.yy179->op = yymsp[-1].minor.yy372; @@ -2474,137 +2130,107 @@ static void yy_reduce( } yygotominor.yy179 = yymsp[0].minor.yy179; } -#line 2477 "parse.c" +#line 2135 "ext/sqlite/libsqlite/src/parse.c" break; case 103: -#line 299 "parse.y" +#line 299 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy372 = TK_UNION;} -#line 2482 "parse.c" - /* No destructor defined for UNION */ +#line 2140 "ext/sqlite/libsqlite/src/parse.c" break; case 104: -#line 300 "parse.y" +#line 300 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy372 = TK_ALL;} -#line 2488 "parse.c" - /* No destructor defined for UNION */ - /* No destructor defined for ALL */ +#line 2145 "ext/sqlite/libsqlite/src/parse.c" break; case 105: -#line 301 "parse.y" +#line 301 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy372 = TK_INTERSECT;} -#line 2495 "parse.c" - /* No destructor defined for INTERSECT */ +#line 2150 "ext/sqlite/libsqlite/src/parse.c" break; case 106: -#line 302 "parse.y" +#line 302 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy372 = TK_EXCEPT;} -#line 2501 "parse.c" - /* No destructor defined for EXCEPT */ +#line 2155 "ext/sqlite/libsqlite/src/parse.c" break; case 107: -#line 304 "parse.y" +#line 304 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy179 = sqliteSelectNew(yymsp[-6].minor.yy322,yymsp[-5].minor.yy307,yymsp[-4].minor.yy242,yymsp[-3].minor.yy322,yymsp[-2].minor.yy242,yymsp[-1].minor.yy322,yymsp[-7].minor.yy372,yymsp[0].minor.yy124.limit,yymsp[0].minor.yy124.offset); } -#line 2509 "parse.c" - /* No destructor defined for SELECT */ - break; - case 108: -#line 312 "parse.y" -{yygotominor.yy372 = 1;} -#line 2515 "parse.c" - /* No destructor defined for DISTINCT */ - break; - case 109: -#line 313 "parse.y" -{yygotominor.yy372 = 0;} -#line 2521 "parse.c" - /* No destructor defined for ALL */ - break; - case 110: -#line 314 "parse.y" -{yygotominor.yy372 = 0;} -#line 2527 "parse.c" +#line 2162 "ext/sqlite/libsqlite/src/parse.c" break; case 111: -#line 325 "parse.y" +#line 325 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy322 = yymsp[-1].minor.yy322;} -#line 2532 "parse.c" - /* No destructor defined for COMMA */ +#line 2167 "ext/sqlite/libsqlite/src/parse.c" break; case 112: -#line 326 "parse.y" + case 138: + case 148: +#line 326 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy322 = 0;} -#line 2538 "parse.c" +#line 2174 "ext/sqlite/libsqlite/src/parse.c" break; case 113: -#line 327 "parse.y" +#line 327 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy322 = sqliteExprListAppend(yymsp[-2].minor.yy322,yymsp[-1].minor.yy242,yymsp[0].minor.yy298.n?&yymsp[0].minor.yy298:0); } -#line 2545 "parse.c" +#line 2181 "ext/sqlite/libsqlite/src/parse.c" break; case 114: -#line 330 "parse.y" +#line 330 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy322 = sqliteExprListAppend(yymsp[-1].minor.yy322, sqliteExpr(TK_ALL, 0, 0, 0), 0); } -#line 2552 "parse.c" - /* No destructor defined for STAR */ +#line 2188 "ext/sqlite/libsqlite/src/parse.c" break; case 115: -#line 333 "parse.y" +#line 333 "ext/sqlite/libsqlite/src/parse.y" { Expr *pRight = sqliteExpr(TK_ALL, 0, 0, 0); Expr *pLeft = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy298); yygotominor.yy322 = sqliteExprListAppend(yymsp[-3].minor.yy322, sqliteExpr(TK_DOT, pLeft, pRight, 0), 0); } -#line 2562 "parse.c" - /* No destructor defined for DOT */ - /* No destructor defined for STAR */ +#line 2197 "ext/sqlite/libsqlite/src/parse.c" break; case 116: -#line 343 "parse.y" -{ yygotominor.yy298 = yymsp[0].minor.yy298; } -#line 2569 "parse.c" - /* No destructor defined for AS */ - break; case 117: -#line 344 "parse.y" + case 288: +#line 343 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy298 = yymsp[0].minor.yy298; } -#line 2575 "parse.c" +#line 2204 "ext/sqlite/libsqlite/src/parse.c" break; case 118: -#line 345 "parse.y" +#line 345 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy298.n = 0; } -#line 2580 "parse.c" +#line 2209 "ext/sqlite/libsqlite/src/parse.c" break; case 119: -#line 357 "parse.y" +#line 357 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy307 = sqliteMalloc(sizeof(*yygotominor.yy307));} -#line 2585 "parse.c" +#line 2214 "ext/sqlite/libsqlite/src/parse.c" break; case 120: -#line 358 "parse.y" +#line 358 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy307 = yymsp[0].minor.yy307;} -#line 2590 "parse.c" - /* No destructor defined for FROM */ +#line 2219 "ext/sqlite/libsqlite/src/parse.c" break; case 121: -#line 363 "parse.y" +#line 363 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy307 = yymsp[-1].minor.yy307; if( yygotominor.yy307 && yygotominor.yy307->nSrc>0 ) yygotominor.yy307->a[yygotominor.yy307->nSrc-1].jointype = yymsp[0].minor.yy372; } -#line 2599 "parse.c" +#line 2227 "ext/sqlite/libsqlite/src/parse.c" break; case 122: -#line 367 "parse.y" +#line 367 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy307 = 0;} -#line 2604 "parse.c" +#line 2232 "ext/sqlite/libsqlite/src/parse.c" break; case 123: -#line 368 "parse.y" +#line 368 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy307 = sqliteSrcListAppend(yymsp[-5].minor.yy307,&yymsp[-4].minor.yy298,&yymsp[-3].minor.yy298); if( yymsp[-2].minor.yy298.n ) sqliteSrcListAddAlias(yygotominor.yy307,&yymsp[-2].minor.yy298); @@ -2617,10 +2243,10 @@ static void yy_reduce( else { sqliteIdListDelete(yymsp[0].minor.yy320); } } } -#line 2620 "parse.c" +#line 2248 "ext/sqlite/libsqlite/src/parse.c" break; case 124: -#line 381 "parse.y" +#line 381 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy307 = sqliteSrcListAppend(yymsp[-6].minor.yy307,0,0); yygotominor.yy307->a[yygotominor.yy307->nSrc-1].pSelect = yymsp[-4].minor.yy179; @@ -2634,330 +2260,227 @@ static void yy_reduce( else { sqliteIdListDelete(yymsp[0].minor.yy320); } } } -#line 2637 "parse.c" - /* No destructor defined for LP */ - /* No destructor defined for RP */ - break; - case 125: -#line 401 "parse.y" -{yygotominor.yy179 = yymsp[0].minor.yy179;} -#line 2644 "parse.c" +#line 2265 "ext/sqlite/libsqlite/src/parse.c" break; case 126: -#line 402 "parse.y" +#line 402 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy179 = sqliteSelectNew(0,yymsp[0].minor.yy307,0,0,0,0,0,-1,0); } -#line 2651 "parse.c" +#line 2272 "ext/sqlite/libsqlite/src/parse.c" break; case 127: -#line 407 "parse.y" +#line 407 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy298.z=0; yygotominor.yy298.n=0;} -#line 2656 "parse.c" - break; - case 128: -#line 408 "parse.y" -{yygotominor.yy298 = yymsp[0].minor.yy298;} -#line 2661 "parse.c" - /* No destructor defined for DOT */ +#line 2277 "ext/sqlite/libsqlite/src/parse.c" break; case 129: -#line 412 "parse.y" -{ yygotominor.yy372 = JT_INNER; } -#line 2667 "parse.c" - /* No destructor defined for COMMA */ - break; case 130: -#line 413 "parse.y" +#line 412 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = JT_INNER; } -#line 2673 "parse.c" - /* No destructor defined for JOIN */ +#line 2283 "ext/sqlite/libsqlite/src/parse.c" break; case 131: -#line 414 "parse.y" +#line 414 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-1].minor.yy0,0,0); } -#line 2679 "parse.c" - /* No destructor defined for JOIN */ +#line 2288 "ext/sqlite/libsqlite/src/parse.c" break; case 132: -#line 415 "parse.y" +#line 415 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy298,0); } -#line 2685 "parse.c" - /* No destructor defined for JOIN */ +#line 2293 "ext/sqlite/libsqlite/src/parse.c" break; case 133: -#line 417 "parse.y" +#line 417 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy298,&yymsp[-1].minor.yy298); } -#line 2691 "parse.c" - /* No destructor defined for JOIN */ +#line 2298 "ext/sqlite/libsqlite/src/parse.c" break; case 134: -#line 421 "parse.y" + case 142: + case 151: + case 158: + case 227: + case 229: + case 233: +#line 421 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = yymsp[0].minor.yy242;} -#line 2697 "parse.c" - /* No destructor defined for ON */ +#line 2309 "ext/sqlite/libsqlite/src/parse.c" break; case 135: -#line 422 "parse.y" + case 150: + case 157: + case 228: + case 230: + case 234: +#line 422 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = 0;} -#line 2703 "parse.c" +#line 2319 "ext/sqlite/libsqlite/src/parse.c" break; case 136: -#line 426 "parse.y" + case 169: + case 239: +#line 426 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy320 = yymsp[-1].minor.yy320;} -#line 2708 "parse.c" - /* No destructor defined for USING */ - /* No destructor defined for LP */ - /* No destructor defined for RP */ +#line 2326 "ext/sqlite/libsqlite/src/parse.c" break; case 137: -#line 427 "parse.y" + case 168: + case 238: +#line 427 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy320 = 0;} -#line 2716 "parse.c" - break; - case 138: -#line 437 "parse.y" -{yygotominor.yy322 = 0;} -#line 2721 "parse.c" +#line 2333 "ext/sqlite/libsqlite/src/parse.c" break; case 139: -#line 438 "parse.y" + case 149: +#line 438 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy322 = yymsp[0].minor.yy322;} -#line 2726 "parse.c" - /* No destructor defined for ORDER */ - /* No destructor defined for BY */ +#line 2339 "ext/sqlite/libsqlite/src/parse.c" break; case 140: -#line 439 "parse.y" +#line 439 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy322 = sqliteExprListAppend(yymsp[-4].minor.yy322,yymsp[-2].minor.yy242,0); if( yygotominor.yy322 ) yygotominor.yy322->a[yygotominor.yy322->nExpr-1].sortOrder = yymsp[-1].minor.yy372+yymsp[0].minor.yy372; } -#line 2736 "parse.c" - /* No destructor defined for COMMA */ +#line 2347 "ext/sqlite/libsqlite/src/parse.c" break; case 141: -#line 443 "parse.y" +#line 443 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy322 = sqliteExprListAppend(0,yymsp[-2].minor.yy242,0); if( yygotominor.yy322 ) yygotominor.yy322->a[0].sortOrder = yymsp[-1].minor.yy372+yymsp[0].minor.yy372; } -#line 2745 "parse.c" - break; - case 142: -#line 447 "parse.y" -{yygotominor.yy242 = yymsp[0].minor.yy242;} -#line 2750 "parse.c" +#line 2355 "ext/sqlite/libsqlite/src/parse.c" break; case 143: -#line 452 "parse.y" + case 145: +#line 452 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy372 = SQLITE_SO_ASC;} -#line 2755 "parse.c" - /* No destructor defined for ASC */ +#line 2361 "ext/sqlite/libsqlite/src/parse.c" break; case 144: -#line 453 "parse.y" +#line 453 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy372 = SQLITE_SO_DESC;} -#line 2761 "parse.c" - /* No destructor defined for DESC */ - break; - case 145: -#line 454 "parse.y" -{yygotominor.yy372 = SQLITE_SO_ASC;} -#line 2767 "parse.c" +#line 2366 "ext/sqlite/libsqlite/src/parse.c" break; case 146: -#line 455 "parse.y" +#line 455 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy372 = SQLITE_SO_UNK;} -#line 2772 "parse.c" +#line 2371 "ext/sqlite/libsqlite/src/parse.c" break; case 147: -#line 456 "parse.y" +#line 456 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy372 = sqliteCollateType(yymsp[0].minor.yy298.z, yymsp[0].minor.yy298.n);} -#line 2777 "parse.c" - /* No destructor defined for COLLATE */ - break; - case 148: -#line 460 "parse.y" -{yygotominor.yy322 = 0;} -#line 2783 "parse.c" - break; - case 149: -#line 461 "parse.y" -{yygotominor.yy322 = yymsp[0].minor.yy322;} -#line 2788 "parse.c" - /* No destructor defined for GROUP */ - /* No destructor defined for BY */ - break; - case 150: -#line 465 "parse.y" -{yygotominor.yy242 = 0;} -#line 2795 "parse.c" - break; - case 151: -#line 466 "parse.y" -{yygotominor.yy242 = yymsp[0].minor.yy242;} -#line 2800 "parse.c" - /* No destructor defined for HAVING */ +#line 2376 "ext/sqlite/libsqlite/src/parse.c" break; case 152: -#line 469 "parse.y" +#line 469 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy124.limit = -1; yygotominor.yy124.offset = 0;} -#line 2806 "parse.c" +#line 2381 "ext/sqlite/libsqlite/src/parse.c" break; case 153: -#line 470 "parse.y" +#line 470 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy124.limit = yymsp[0].minor.yy372; yygotominor.yy124.offset = 0;} -#line 2811 "parse.c" - /* No destructor defined for LIMIT */ +#line 2386 "ext/sqlite/libsqlite/src/parse.c" break; case 154: -#line 472 "parse.y" +#line 472 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy124.limit = yymsp[-2].minor.yy372; yygotominor.yy124.offset = yymsp[0].minor.yy372;} -#line 2817 "parse.c" - /* No destructor defined for LIMIT */ - /* No destructor defined for OFFSET */ +#line 2391 "ext/sqlite/libsqlite/src/parse.c" break; case 155: -#line 474 "parse.y" +#line 474 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy124.limit = yymsp[0].minor.yy372; yygotominor.yy124.offset = yymsp[-2].minor.yy372;} -#line 2824 "parse.c" - /* No destructor defined for LIMIT */ - /* No destructor defined for COMMA */ +#line 2396 "ext/sqlite/libsqlite/src/parse.c" break; case 156: -#line 478 "parse.y" +#line 478 "ext/sqlite/libsqlite/src/parse.y" { sqliteDeleteFrom(pParse, sqliteSrcListAppend(0,&yymsp[-2].minor.yy298,&yymsp[-1].minor.yy298), yymsp[0].minor.yy242); } -#line 2833 "parse.c" - /* No destructor defined for DELETE */ - /* No destructor defined for FROM */ - break; - case 157: -#line 485 "parse.y" -{yygotominor.yy242 = 0;} -#line 2840 "parse.c" - break; - case 158: -#line 486 "parse.y" -{yygotominor.yy242 = yymsp[0].minor.yy242;} -#line 2845 "parse.c" - /* No destructor defined for WHERE */ +#line 2403 "ext/sqlite/libsqlite/src/parse.c" break; case 159: -#line 494 "parse.y" +#line 494 "ext/sqlite/libsqlite/src/parse.y" {sqliteUpdate(pParse,sqliteSrcListAppend(0,&yymsp[-4].minor.yy298,&yymsp[-3].minor.yy298),yymsp[-1].minor.yy322,yymsp[0].minor.yy242,yymsp[-5].minor.yy372);} -#line 2851 "parse.c" - /* No destructor defined for UPDATE */ - /* No destructor defined for SET */ +#line 2408 "ext/sqlite/libsqlite/src/parse.c" break; case 160: -#line 497 "parse.y" +#line 497 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy322 = sqliteExprListAppend(yymsp[-4].minor.yy322,yymsp[0].minor.yy242,&yymsp[-2].minor.yy298);} -#line 2858 "parse.c" - /* No destructor defined for COMMA */ - /* No destructor defined for EQ */ +#line 2413 "ext/sqlite/libsqlite/src/parse.c" break; case 161: -#line 498 "parse.y" +#line 498 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy322 = sqliteExprListAppend(0,yymsp[0].minor.yy242,&yymsp[-2].minor.yy298);} -#line 2865 "parse.c" - /* No destructor defined for EQ */ +#line 2418 "ext/sqlite/libsqlite/src/parse.c" break; case 162: -#line 504 "parse.y" +#line 504 "ext/sqlite/libsqlite/src/parse.y" {sqliteInsert(pParse, sqliteSrcListAppend(0,&yymsp[-6].minor.yy298,&yymsp[-5].minor.yy298), yymsp[-1].minor.yy322, 0, yymsp[-4].minor.yy320, yymsp[-8].minor.yy372);} -#line 2871 "parse.c" - /* No destructor defined for INTO */ - /* No destructor defined for VALUES */ - /* No destructor defined for LP */ - /* No destructor defined for RP */ +#line 2423 "ext/sqlite/libsqlite/src/parse.c" break; case 163: -#line 506 "parse.y" +#line 506 "ext/sqlite/libsqlite/src/parse.y" {sqliteInsert(pParse, sqliteSrcListAppend(0,&yymsp[-3].minor.yy298,&yymsp[-2].minor.yy298), 0, yymsp[0].minor.yy179, yymsp[-1].minor.yy320, yymsp[-5].minor.yy372);} -#line 2880 "parse.c" - /* No destructor defined for INTO */ - break; - case 164: -#line 509 "parse.y" -{yygotominor.yy372 = yymsp[0].minor.yy372;} -#line 2886 "parse.c" - /* No destructor defined for INSERT */ +#line 2428 "ext/sqlite/libsqlite/src/parse.c" break; case 165: -#line 510 "parse.y" +#line 510 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy372 = OE_Replace;} -#line 2892 "parse.c" - /* No destructor defined for REPLACE */ +#line 2433 "ext/sqlite/libsqlite/src/parse.c" break; case 166: -#line 516 "parse.y" + case 231: +#line 516 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy322 = sqliteExprListAppend(yymsp[-2].minor.yy322,yymsp[0].minor.yy242,0);} -#line 2898 "parse.c" - /* No destructor defined for COMMA */ +#line 2439 "ext/sqlite/libsqlite/src/parse.c" break; case 167: -#line 517 "parse.y" + case 232: +#line 517 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy322 = sqliteExprListAppend(0,yymsp[0].minor.yy242,0);} -#line 2904 "parse.c" - break; - case 168: -#line 524 "parse.y" -{yygotominor.yy320 = 0;} -#line 2909 "parse.c" - break; - case 169: -#line 525 "parse.y" -{yygotominor.yy320 = yymsp[-1].minor.yy320;} -#line 2914 "parse.c" - /* No destructor defined for LP */ - /* No destructor defined for RP */ +#line 2445 "ext/sqlite/libsqlite/src/parse.c" break; case 170: -#line 526 "parse.y" + case 240: +#line 526 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy320 = sqliteIdListAppend(yymsp[-2].minor.yy320,&yymsp[0].minor.yy298);} -#line 2921 "parse.c" - /* No destructor defined for COMMA */ +#line 2451 "ext/sqlite/libsqlite/src/parse.c" break; case 171: -#line 527 "parse.y" + case 241: +#line 527 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy320 = sqliteIdListAppend(0,&yymsp[0].minor.yy298);} -#line 2927 "parse.c" +#line 2457 "ext/sqlite/libsqlite/src/parse.c" break; case 172: -#line 535 "parse.y" +#line 535 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = yymsp[-1].minor.yy242; sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); } -#line 2932 "parse.c" +#line 2462 "ext/sqlite/libsqlite/src/parse.c" break; case 173: -#line 536 "parse.y" +#line 536 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_NULL, 0, 0, &yymsp[0].minor.yy0);} -#line 2937 "parse.c" +#line 2467 "ext/sqlite/libsqlite/src/parse.c" break; case 174: -#line 537 "parse.y" -{yygotominor.yy242 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy0);} -#line 2942 "parse.c" - break; case 175: -#line 538 "parse.y" +#line 537 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy0);} -#line 2947 "parse.c" +#line 2473 "ext/sqlite/libsqlite/src/parse.c" break; case 176: -#line 539 "parse.y" +#line 539 "ext/sqlite/libsqlite/src/parse.y" { Expr *temp1 = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy298); Expr *temp2 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy298); yygotominor.yy242 = sqliteExpr(TK_DOT, temp1, temp2, 0); } -#line 2956 "parse.c" - /* No destructor defined for DOT */ +#line 2482 "ext/sqlite/libsqlite/src/parse.c" break; case 177: -#line 544 "parse.y" +#line 544 "ext/sqlite/libsqlite/src/parse.y" { Expr *temp1 = sqliteExpr(TK_ID, 0, 0, &yymsp[-4].minor.yy298); Expr *temp2 = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy298); @@ -2965,126 +2488,109 @@ static void yy_reduce( Expr *temp4 = sqliteExpr(TK_DOT, temp2, temp3, 0); yygotominor.yy242 = sqliteExpr(TK_DOT, temp1, temp4, 0); } -#line 2968 "parse.c" - /* No destructor defined for DOT */ - /* No destructor defined for DOT */ +#line 2493 "ext/sqlite/libsqlite/src/parse.c" break; case 178: -#line 551 "parse.y" +#line 551 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_INTEGER, 0, 0, &yymsp[0].minor.yy0);} -#line 2975 "parse.c" +#line 2498 "ext/sqlite/libsqlite/src/parse.c" break; case 179: -#line 552 "parse.y" +#line 552 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_FLOAT, 0, 0, &yymsp[0].minor.yy0);} -#line 2980 "parse.c" +#line 2503 "ext/sqlite/libsqlite/src/parse.c" break; case 180: -#line 553 "parse.y" +#line 553 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_STRING, 0, 0, &yymsp[0].minor.yy0);} -#line 2985 "parse.c" +#line 2508 "ext/sqlite/libsqlite/src/parse.c" break; case 181: -#line 554 "parse.y" +#line 554 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_VARIABLE, 0, 0, &yymsp[0].minor.yy0); if( yygotominor.yy242 ) yygotominor.yy242->iTable = ++pParse->nVar; } -#line 2993 "parse.c" +#line 2516 "ext/sqlite/libsqlite/src/parse.c" break; case 182: -#line 558 "parse.y" +#line 558 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExprFunction(yymsp[-1].minor.yy322, &yymsp[-3].minor.yy0); sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0); } -#line 3001 "parse.c" - /* No destructor defined for LP */ +#line 2524 "ext/sqlite/libsqlite/src/parse.c" break; case 183: -#line 562 "parse.y" +#line 562 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExprFunction(0, &yymsp[-3].minor.yy0); sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0); } -#line 3010 "parse.c" - /* No destructor defined for LP */ - /* No destructor defined for STAR */ +#line 2532 "ext/sqlite/libsqlite/src/parse.c" break; case 184: -#line 566 "parse.y" +#line 566 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_AND, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3017 "parse.c" - /* No destructor defined for AND */ +#line 2537 "ext/sqlite/libsqlite/src/parse.c" break; case 185: -#line 567 "parse.y" +#line 567 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_OR, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3023 "parse.c" - /* No destructor defined for OR */ +#line 2542 "ext/sqlite/libsqlite/src/parse.c" break; case 186: -#line 568 "parse.y" +#line 568 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_LT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3029 "parse.c" - /* No destructor defined for LT */ +#line 2547 "ext/sqlite/libsqlite/src/parse.c" break; case 187: -#line 569 "parse.y" +#line 569 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_GT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3035 "parse.c" - /* No destructor defined for GT */ +#line 2552 "ext/sqlite/libsqlite/src/parse.c" break; case 188: -#line 570 "parse.y" +#line 570 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_LE, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3041 "parse.c" - /* No destructor defined for LE */ +#line 2557 "ext/sqlite/libsqlite/src/parse.c" break; case 189: -#line 571 "parse.y" +#line 571 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_GE, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3047 "parse.c" - /* No destructor defined for GE */ +#line 2562 "ext/sqlite/libsqlite/src/parse.c" break; case 190: -#line 572 "parse.y" +#line 572 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_NE, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3053 "parse.c" - /* No destructor defined for NE */ +#line 2567 "ext/sqlite/libsqlite/src/parse.c" break; case 191: -#line 573 "parse.y" +#line 573 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_EQ, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3059 "parse.c" - /* No destructor defined for EQ */ +#line 2572 "ext/sqlite/libsqlite/src/parse.c" break; case 192: -#line 574 "parse.y" +#line 574 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_BITAND, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3065 "parse.c" - /* No destructor defined for BITAND */ +#line 2577 "ext/sqlite/libsqlite/src/parse.c" break; case 193: -#line 575 "parse.y" +#line 575 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_BITOR, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3071 "parse.c" - /* No destructor defined for BITOR */ +#line 2582 "ext/sqlite/libsqlite/src/parse.c" break; case 194: -#line 576 "parse.y" +#line 576 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_LSHIFT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3077 "parse.c" - /* No destructor defined for LSHIFT */ +#line 2587 "ext/sqlite/libsqlite/src/parse.c" break; case 195: -#line 577 "parse.y" +#line 577 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_RSHIFT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3083 "parse.c" - /* No destructor defined for RSHIFT */ +#line 2592 "ext/sqlite/libsqlite/src/parse.c" break; case 196: -#line 578 "parse.y" +#line 578 "ext/sqlite/libsqlite/src/parse.y" { ExprList *pList = sqliteExprListAppend(0, yymsp[0].minor.yy242, 0); pList = sqliteExprListAppend(pList, yymsp[-2].minor.yy242, 0); @@ -3092,10 +2598,10 @@ static void yy_reduce( if( yygotominor.yy242 ) yygotominor.yy242->op = yymsp[-1].minor.yy372; sqliteExprSpan(yygotominor.yy242, &yymsp[-2].minor.yy242->span, &yymsp[0].minor.yy242->span); } -#line 3095 "parse.c" +#line 2603 "ext/sqlite/libsqlite/src/parse.c" break; case 197: -#line 585 "parse.y" +#line 585 "ext/sqlite/libsqlite/src/parse.y" { ExprList *pList = sqliteExprListAppend(0, yymsp[0].minor.yy242, 0); pList = sqliteExprListAppend(pList, yymsp[-3].minor.yy242, 0); @@ -3104,144 +2610,131 @@ static void yy_reduce( yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0); sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy242->span,&yymsp[0].minor.yy242->span); } -#line 3107 "parse.c" - /* No destructor defined for NOT */ +#line 2615 "ext/sqlite/libsqlite/src/parse.c" break; case 198: -#line 594 "parse.y" +#line 594 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy372 = TK_LIKE;} -#line 3113 "parse.c" - /* No destructor defined for LIKE */ +#line 2620 "ext/sqlite/libsqlite/src/parse.c" break; case 199: -#line 595 "parse.y" +#line 595 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy372 = TK_GLOB;} -#line 3119 "parse.c" - /* No destructor defined for GLOB */ +#line 2625 "ext/sqlite/libsqlite/src/parse.c" break; case 200: -#line 596 "parse.y" +#line 596 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_PLUS, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3125 "parse.c" - /* No destructor defined for PLUS */ +#line 2630 "ext/sqlite/libsqlite/src/parse.c" break; case 201: -#line 597 "parse.y" +#line 597 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_MINUS, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3131 "parse.c" - /* No destructor defined for MINUS */ +#line 2635 "ext/sqlite/libsqlite/src/parse.c" break; case 202: -#line 598 "parse.y" +#line 598 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_STAR, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3137 "parse.c" - /* No destructor defined for STAR */ +#line 2640 "ext/sqlite/libsqlite/src/parse.c" break; case 203: -#line 599 "parse.y" +#line 599 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_SLASH, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3143 "parse.c" - /* No destructor defined for SLASH */ +#line 2645 "ext/sqlite/libsqlite/src/parse.c" break; case 204: -#line 600 "parse.y" +#line 600 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_REM, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3149 "parse.c" - /* No destructor defined for REM */ +#line 2650 "ext/sqlite/libsqlite/src/parse.c" break; case 205: -#line 601 "parse.y" +#line 601 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy242 = sqliteExpr(TK_CONCAT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);} -#line 3155 "parse.c" - /* No destructor defined for CONCAT */ +#line 2655 "ext/sqlite/libsqlite/src/parse.c" break; case 206: -#line 602 "parse.y" +#line 602 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_ISNULL, yymsp[-1].minor.yy242, 0, 0); sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy242->span,&yymsp[0].minor.yy0); } -#line 3164 "parse.c" +#line 2663 "ext/sqlite/libsqlite/src/parse.c" break; case 207: -#line 606 "parse.y" +#line 606 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_ISNULL, yymsp[-2].minor.yy242, 0, 0); sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy242->span,&yymsp[0].minor.yy0); } -#line 3172 "parse.c" - /* No destructor defined for IS */ +#line 2671 "ext/sqlite/libsqlite/src/parse.c" break; case 208: -#line 610 "parse.y" +#line 610 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_NOTNULL, yymsp[-1].minor.yy242, 0, 0); sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy242->span,&yymsp[0].minor.yy0); } -#line 3181 "parse.c" +#line 2679 "ext/sqlite/libsqlite/src/parse.c" break; case 209: -#line 614 "parse.y" +#line 614 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_NOTNULL, yymsp[-2].minor.yy242, 0, 0); sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy242->span,&yymsp[0].minor.yy0); } -#line 3189 "parse.c" - /* No destructor defined for NOT */ +#line 2687 "ext/sqlite/libsqlite/src/parse.c" break; case 210: -#line 618 "parse.y" +#line 618 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_NOTNULL, yymsp[-3].minor.yy242, 0, 0); sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy242->span,&yymsp[0].minor.yy0); } -#line 3198 "parse.c" - /* No destructor defined for IS */ - /* No destructor defined for NOT */ +#line 2695 "ext/sqlite/libsqlite/src/parse.c" break; case 211: -#line 622 "parse.y" +#line 622 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_NOT, yymsp[0].minor.yy242, 0, 0); sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span); } -#line 3208 "parse.c" +#line 2703 "ext/sqlite/libsqlite/src/parse.c" break; case 212: -#line 626 "parse.y" +#line 626 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_BITNOT, yymsp[0].minor.yy242, 0, 0); sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span); } -#line 3216 "parse.c" +#line 2711 "ext/sqlite/libsqlite/src/parse.c" break; case 213: -#line 630 "parse.y" +#line 630 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_UMINUS, yymsp[0].minor.yy242, 0, 0); sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span); } -#line 3224 "parse.c" +#line 2719 "ext/sqlite/libsqlite/src/parse.c" break; case 214: -#line 634 "parse.y" +#line 634 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_UPLUS, yymsp[0].minor.yy242, 0, 0); sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span); } -#line 3232 "parse.c" +#line 2727 "ext/sqlite/libsqlite/src/parse.c" break; case 215: -#line 638 "parse.y" +#line 638 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_SELECT, 0, 0, 0); if( yygotominor.yy242 ) yygotominor.yy242->pSelect = yymsp[-1].minor.yy179; sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); } -#line 3241 "parse.c" +#line 2736 "ext/sqlite/libsqlite/src/parse.c" break; case 216: -#line 643 "parse.y" +#line 643 "ext/sqlite/libsqlite/src/parse.y" { ExprList *pList = sqliteExprListAppend(0, yymsp[-2].minor.yy242, 0); pList = sqliteExprListAppend(pList, yymsp[0].minor.yy242, 0); @@ -3249,12 +2742,10 @@ static void yy_reduce( if( yygotominor.yy242 ) yygotominor.yy242->pList = pList; sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,&yymsp[0].minor.yy242->span); } -#line 3252 "parse.c" - /* No destructor defined for BETWEEN */ - /* No destructor defined for AND */ +#line 2747 "ext/sqlite/libsqlite/src/parse.c" break; case 217: -#line 650 "parse.y" +#line 650 "ext/sqlite/libsqlite/src/parse.y" { ExprList *pList = sqliteExprListAppend(0, yymsp[-2].minor.yy242, 0); pList = sqliteExprListAppend(pList, yymsp[0].minor.yy242, 0); @@ -3263,72 +2754,58 @@ static void yy_reduce( yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0); sqliteExprSpan(yygotominor.yy242,&yymsp[-5].minor.yy242->span,&yymsp[0].minor.yy242->span); } -#line 3266 "parse.c" - /* No destructor defined for NOT */ - /* No destructor defined for BETWEEN */ - /* No destructor defined for AND */ +#line 2759 "ext/sqlite/libsqlite/src/parse.c" break; case 218: -#line 658 "parse.y" +#line 658 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-4].minor.yy242, 0, 0); if( yygotominor.yy242 ) yygotominor.yy242->pList = yymsp[-1].minor.yy322; sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,&yymsp[0].minor.yy0); } -#line 3278 "parse.c" - /* No destructor defined for IN */ - /* No destructor defined for LP */ +#line 2768 "ext/sqlite/libsqlite/src/parse.c" break; case 219: -#line 663 "parse.y" +#line 663 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-4].minor.yy242, 0, 0); if( yygotominor.yy242 ) yygotominor.yy242->pSelect = yymsp[-1].minor.yy179; sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,&yymsp[0].minor.yy0); } -#line 3289 "parse.c" - /* No destructor defined for IN */ - /* No destructor defined for LP */ +#line 2777 "ext/sqlite/libsqlite/src/parse.c" break; case 220: -#line 668 "parse.y" +#line 668 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-5].minor.yy242, 0, 0); if( yygotominor.yy242 ) yygotominor.yy242->pList = yymsp[-1].minor.yy322; yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0); sqliteExprSpan(yygotominor.yy242,&yymsp[-5].minor.yy242->span,&yymsp[0].minor.yy0); } -#line 3301 "parse.c" - /* No destructor defined for NOT */ - /* No destructor defined for IN */ - /* No destructor defined for LP */ +#line 2787 "ext/sqlite/libsqlite/src/parse.c" break; case 221: -#line 674 "parse.y" +#line 674 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-5].minor.yy242, 0, 0); if( yygotominor.yy242 ) yygotominor.yy242->pSelect = yymsp[-1].minor.yy179; yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0); sqliteExprSpan(yygotominor.yy242,&yymsp[-5].minor.yy242->span,&yymsp[0].minor.yy0); } -#line 3314 "parse.c" - /* No destructor defined for NOT */ - /* No destructor defined for IN */ - /* No destructor defined for LP */ +#line 2797 "ext/sqlite/libsqlite/src/parse.c" break; case 222: -#line 680 "parse.y" +#line 680 "ext/sqlite/libsqlite/src/parse.y" { SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-1].minor.yy298, &yymsp[0].minor.yy298); yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-3].minor.yy242, 0, 0); if( yygotominor.yy242 ) yygotominor.yy242->pSelect = sqliteSelectNew(0,pSrc,0,0,0,0,0,-1,0); sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy242->span,yymsp[0].minor.yy298.z?&yymsp[0].minor.yy298:&yymsp[-1].minor.yy298); } -#line 3327 "parse.c" - /* No destructor defined for IN */ +#line 2807 "ext/sqlite/libsqlite/src/parse.c" break; case 223: -#line 686 "parse.y" +#line 686 "ext/sqlite/libsqlite/src/parse.y" { SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-1].minor.yy298, &yymsp[0].minor.yy298); yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-4].minor.yy242, 0, 0); @@ -3336,489 +2813,298 @@ static void yy_reduce( yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0); sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,yymsp[0].minor.yy298.z?&yymsp[0].minor.yy298:&yymsp[-1].minor.yy298); } -#line 3339 "parse.c" - /* No destructor defined for NOT */ - /* No destructor defined for IN */ +#line 2818 "ext/sqlite/libsqlite/src/parse.c" break; case 224: -#line 696 "parse.y" +#line 696 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_CASE, yymsp[-3].minor.yy242, yymsp[-1].minor.yy242, 0); if( yygotominor.yy242 ) yygotominor.yy242->pList = yymsp[-2].minor.yy322; sqliteExprSpan(yygotominor.yy242, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0); } -#line 3350 "parse.c" +#line 2827 "ext/sqlite/libsqlite/src/parse.c" break; case 225: -#line 703 "parse.y" +#line 703 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy322 = sqliteExprListAppend(yymsp[-4].minor.yy322, yymsp[-2].minor.yy242, 0); yygotominor.yy322 = sqliteExprListAppend(yygotominor.yy322, yymsp[0].minor.yy242, 0); } -#line 3358 "parse.c" - /* No destructor defined for WHEN */ - /* No destructor defined for THEN */ +#line 2835 "ext/sqlite/libsqlite/src/parse.c" break; case 226: -#line 707 "parse.y" +#line 707 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy322 = sqliteExprListAppend(0, yymsp[-2].minor.yy242, 0); yygotominor.yy322 = sqliteExprListAppend(yygotominor.yy322, yymsp[0].minor.yy242, 0); } -#line 3368 "parse.c" - /* No destructor defined for WHEN */ - /* No destructor defined for THEN */ - break; - case 227: -#line 712 "parse.y" -{yygotominor.yy242 = yymsp[0].minor.yy242;} -#line 3375 "parse.c" - /* No destructor defined for ELSE */ - break; - case 228: -#line 713 "parse.y" -{yygotominor.yy242 = 0;} -#line 3381 "parse.c" - break; - case 229: -#line 715 "parse.y" -{yygotominor.yy242 = yymsp[0].minor.yy242;} -#line 3386 "parse.c" - break; - case 230: -#line 716 "parse.y" -{yygotominor.yy242 = 0;} -#line 3391 "parse.c" - break; - case 231: -#line 724 "parse.y" -{yygotominor.yy322 = sqliteExprListAppend(yymsp[-2].minor.yy322,yymsp[0].minor.yy242,0);} -#line 3396 "parse.c" - /* No destructor defined for COMMA */ - break; - case 232: -#line 725 "parse.y" -{yygotominor.yy322 = sqliteExprListAppend(0,yymsp[0].minor.yy242,0);} -#line 3402 "parse.c" - break; - case 233: -#line 726 "parse.y" -{yygotominor.yy242 = yymsp[0].minor.yy242;} -#line 3407 "parse.c" - break; - case 234: -#line 727 "parse.y" -{yygotominor.yy242 = 0;} -#line 3412 "parse.c" +#line 2843 "ext/sqlite/libsqlite/src/parse.c" break; case 235: -#line 732 "parse.y" +#line 732 "ext/sqlite/libsqlite/src/parse.y" { SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-5].minor.yy298, &yymsp[-4].minor.yy298); if( yymsp[-9].minor.yy372!=OE_None ) yymsp[-9].minor.yy372 = yymsp[0].minor.yy372; if( yymsp[-9].minor.yy372==OE_Default) yymsp[-9].minor.yy372 = OE_Abort; sqliteCreateIndex(pParse, &yymsp[-7].minor.yy298, pSrc, yymsp[-2].minor.yy320, yymsp[-9].minor.yy372, &yymsp[-10].minor.yy0, &yymsp[-1].minor.yy0); } -#line 3422 "parse.c" - /* No destructor defined for INDEX */ - /* No destructor defined for ON */ - /* No destructor defined for LP */ - break; - case 236: -#line 740 "parse.y" -{ yygotominor.yy372 = OE_Abort; } -#line 3430 "parse.c" - /* No destructor defined for UNIQUE */ +#line 2853 "ext/sqlite/libsqlite/src/parse.c" break; case 237: -#line 741 "parse.y" +#line 741 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = OE_None; } -#line 3436 "parse.c" - break; - case 238: -#line 749 "parse.y" -{yygotominor.yy320 = 0;} -#line 3441 "parse.c" - break; - case 239: -#line 750 "parse.y" -{yygotominor.yy320 = yymsp[-1].minor.yy320;} -#line 3446 "parse.c" - /* No destructor defined for LP */ - /* No destructor defined for RP */ - break; - case 240: -#line 751 "parse.y" -{yygotominor.yy320 = sqliteIdListAppend(yymsp[-2].minor.yy320,&yymsp[0].minor.yy298);} -#line 3453 "parse.c" - /* No destructor defined for COMMA */ - break; - case 241: -#line 752 "parse.y" -{yygotominor.yy320 = sqliteIdListAppend(0,&yymsp[0].minor.yy298);} -#line 3459 "parse.c" - break; - case 242: -#line 753 "parse.y" -{yygotominor.yy298 = yymsp[-1].minor.yy298;} -#line 3464 "parse.c" - /* No destructor defined for sortorder */ +#line 2858 "ext/sqlite/libsqlite/src/parse.c" break; case 243: -#line 758 "parse.y" +#line 758 "ext/sqlite/libsqlite/src/parse.y" { sqliteDropIndex(pParse, sqliteSrcListAppend(0,&yymsp[-1].minor.yy298,&yymsp[0].minor.yy298)); } -#line 3472 "parse.c" - /* No destructor defined for DROP */ - /* No destructor defined for INDEX */ +#line 2865 "ext/sqlite/libsqlite/src/parse.c" break; case 244: -#line 766 "parse.y" +#line 766 "ext/sqlite/libsqlite/src/parse.y" {sqliteCopy(pParse,sqliteSrcListAppend(0,&yymsp[-6].minor.yy298,&yymsp[-5].minor.yy298),&yymsp[-3].minor.yy298,&yymsp[0].minor.yy0,yymsp[-7].minor.yy372);} -#line 3479 "parse.c" - /* No destructor defined for COPY */ - /* No destructor defined for FROM */ - /* No destructor defined for USING */ - /* No destructor defined for DELIMITERS */ +#line 2870 "ext/sqlite/libsqlite/src/parse.c" break; case 245: -#line 768 "parse.y" +#line 768 "ext/sqlite/libsqlite/src/parse.y" {sqliteCopy(pParse,sqliteSrcListAppend(0,&yymsp[-3].minor.yy298,&yymsp[-2].minor.yy298),&yymsp[0].minor.yy298,0,yymsp[-4].minor.yy372);} -#line 3488 "parse.c" - /* No destructor defined for COPY */ - /* No destructor defined for FROM */ +#line 2875 "ext/sqlite/libsqlite/src/parse.c" break; case 246: -#line 772 "parse.y" +#line 772 "ext/sqlite/libsqlite/src/parse.y" {sqliteVacuum(pParse,0);} -#line 3495 "parse.c" - /* No destructor defined for VACUUM */ +#line 2880 "ext/sqlite/libsqlite/src/parse.c" break; case 247: -#line 773 "parse.y" +#line 773 "ext/sqlite/libsqlite/src/parse.y" {sqliteVacuum(pParse,&yymsp[0].minor.yy298);} -#line 3501 "parse.c" - /* No destructor defined for VACUUM */ +#line 2885 "ext/sqlite/libsqlite/src/parse.c" break; case 248: -#line 777 "parse.y" + case 250: +#line 777 "ext/sqlite/libsqlite/src/parse.y" {sqlitePragma(pParse,&yymsp[-2].minor.yy298,&yymsp[0].minor.yy298,0);} -#line 3507 "parse.c" - /* No destructor defined for PRAGMA */ - /* No destructor defined for EQ */ +#line 2891 "ext/sqlite/libsqlite/src/parse.c" break; case 249: -#line 778 "parse.y" +#line 778 "ext/sqlite/libsqlite/src/parse.y" {sqlitePragma(pParse,&yymsp[-2].minor.yy298,&yymsp[0].minor.yy0,0);} -#line 3514 "parse.c" - /* No destructor defined for PRAGMA */ - /* No destructor defined for EQ */ - break; - case 250: -#line 779 "parse.y" -{sqlitePragma(pParse,&yymsp[-2].minor.yy298,&yymsp[0].minor.yy298,0);} -#line 3521 "parse.c" - /* No destructor defined for PRAGMA */ - /* No destructor defined for EQ */ +#line 2896 "ext/sqlite/libsqlite/src/parse.c" break; case 251: -#line 780 "parse.y" +#line 780 "ext/sqlite/libsqlite/src/parse.y" {sqlitePragma(pParse,&yymsp[-2].minor.yy298,&yymsp[0].minor.yy298,1);} -#line 3528 "parse.c" - /* No destructor defined for PRAGMA */ - /* No destructor defined for EQ */ +#line 2901 "ext/sqlite/libsqlite/src/parse.c" break; case 252: -#line 781 "parse.y" +#line 781 "ext/sqlite/libsqlite/src/parse.y" {sqlitePragma(pParse,&yymsp[-3].minor.yy298,&yymsp[-1].minor.yy298,0);} -#line 3535 "parse.c" - /* No destructor defined for PRAGMA */ - /* No destructor defined for LP */ - /* No destructor defined for RP */ +#line 2906 "ext/sqlite/libsqlite/src/parse.c" break; case 253: -#line 782 "parse.y" +#line 782 "ext/sqlite/libsqlite/src/parse.y" {sqlitePragma(pParse,&yymsp[0].minor.yy298,&yymsp[0].minor.yy298,0);} -#line 3543 "parse.c" - /* No destructor defined for PRAGMA */ - break; - case 254: -#line 783 "parse.y" -{yygotominor.yy298 = yymsp[0].minor.yy298;} -#line 3549 "parse.c" - /* No destructor defined for plus_opt */ - break; - case 255: -#line 784 "parse.y" -{yygotominor.yy298 = yymsp[0].minor.yy298;} -#line 3555 "parse.c" - /* No destructor defined for MINUS */ - break; - case 256: -#line 785 "parse.y" -{yygotominor.yy298 = yymsp[0].minor.yy0;} -#line 3561 "parse.c" - break; - case 257: -#line 786 "parse.y" -{yygotominor.yy298 = yymsp[0].minor.yy0;} -#line 3566 "parse.c" - break; - case 258: - /* No destructor defined for PLUS */ - break; - case 259: +#line 2911 "ext/sqlite/libsqlite/src/parse.c" break; case 260: -#line 792 "parse.y" +#line 792 "ext/sqlite/libsqlite/src/parse.y" { Token all; all.z = yymsp[-4].minor.yy0.z; all.n = (yymsp[0].minor.yy0.z - yymsp[-4].minor.yy0.z) + yymsp[0].minor.yy0.n; sqliteFinishTrigger(pParse, yymsp[-1].minor.yy19, &all); } -#line 3581 "parse.c" - /* No destructor defined for trigger_decl */ - /* No destructor defined for BEGIN */ +#line 2921 "ext/sqlite/libsqlite/src/parse.c" break; case 261: -#line 800 "parse.y" +#line 800 "ext/sqlite/libsqlite/src/parse.y" { SrcList *pTab = sqliteSrcListAppend(0, &yymsp[-3].minor.yy298, &yymsp[-2].minor.yy298); sqliteBeginTrigger(pParse, &yymsp[-7].minor.yy298, yymsp[-6].minor.yy372, yymsp[-5].minor.yy290.a, yymsp[-5].minor.yy290.b, pTab, yymsp[-1].minor.yy372, yymsp[0].minor.yy182, yymsp[-9].minor.yy372); } -#line 3591 "parse.c" - /* No destructor defined for TRIGGER */ - /* No destructor defined for ON */ +#line 2929 "ext/sqlite/libsqlite/src/parse.c" break; case 262: -#line 806 "parse.y" + case 265: +#line 806 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = TK_BEFORE; } -#line 3598 "parse.c" - /* No destructor defined for BEFORE */ +#line 2935 "ext/sqlite/libsqlite/src/parse.c" break; case 263: -#line 807 "parse.y" +#line 807 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = TK_AFTER; } -#line 3604 "parse.c" - /* No destructor defined for AFTER */ +#line 2940 "ext/sqlite/libsqlite/src/parse.c" break; case 264: -#line 808 "parse.y" +#line 808 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = TK_INSTEAD;} -#line 3610 "parse.c" - /* No destructor defined for INSTEAD */ - /* No destructor defined for OF */ - break; - case 265: -#line 809 "parse.y" -{ yygotominor.yy372 = TK_BEFORE; } -#line 3617 "parse.c" +#line 2945 "ext/sqlite/libsqlite/src/parse.c" break; case 266: -#line 813 "parse.y" +#line 813 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy290.a = TK_DELETE; yygotominor.yy290.b = 0; } -#line 3622 "parse.c" - /* No destructor defined for DELETE */ +#line 2950 "ext/sqlite/libsqlite/src/parse.c" break; case 267: -#line 814 "parse.y" +#line 814 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy290.a = TK_INSERT; yygotominor.yy290.b = 0; } -#line 3628 "parse.c" - /* No destructor defined for INSERT */ +#line 2955 "ext/sqlite/libsqlite/src/parse.c" break; case 268: -#line 815 "parse.y" +#line 815 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy290.a = TK_UPDATE; yygotominor.yy290.b = 0;} -#line 3634 "parse.c" - /* No destructor defined for UPDATE */ +#line 2960 "ext/sqlite/libsqlite/src/parse.c" break; case 269: -#line 816 "parse.y" +#line 816 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy290.a = TK_UPDATE; yygotominor.yy290.b = yymsp[0].minor.yy320; } -#line 3640 "parse.c" - /* No destructor defined for UPDATE */ - /* No destructor defined for OF */ +#line 2965 "ext/sqlite/libsqlite/src/parse.c" break; case 270: -#line 819 "parse.y" -{ yygotominor.yy372 = TK_ROW; } -#line 3647 "parse.c" - break; case 271: -#line 820 "parse.y" +#line 819 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = TK_ROW; } -#line 3652 "parse.c" - /* No destructor defined for FOR */ - /* No destructor defined for EACH */ - /* No destructor defined for ROW */ +#line 2971 "ext/sqlite/libsqlite/src/parse.c" break; case 272: -#line 821 "parse.y" +#line 821 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy372 = TK_STATEMENT; } -#line 3660 "parse.c" - /* No destructor defined for FOR */ - /* No destructor defined for EACH */ - /* No destructor defined for STATEMENT */ +#line 2976 "ext/sqlite/libsqlite/src/parse.c" break; case 273: -#line 824 "parse.y" +#line 824 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy182 = 0; } -#line 3668 "parse.c" +#line 2981 "ext/sqlite/libsqlite/src/parse.c" break; case 274: -#line 825 "parse.y" +#line 825 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy182 = yymsp[0].minor.yy242; } -#line 3673 "parse.c" - /* No destructor defined for WHEN */ +#line 2986 "ext/sqlite/libsqlite/src/parse.c" break; case 275: -#line 829 "parse.y" +#line 829 "ext/sqlite/libsqlite/src/parse.y" { yymsp[-2].minor.yy19->pNext = yymsp[0].minor.yy19; yygotominor.yy19 = yymsp[-2].minor.yy19; } -#line 3682 "parse.c" - /* No destructor defined for SEMI */ +#line 2994 "ext/sqlite/libsqlite/src/parse.c" break; case 276: -#line 833 "parse.y" +#line 833 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy19 = 0; } -#line 3688 "parse.c" +#line 2999 "ext/sqlite/libsqlite/src/parse.c" break; case 277: -#line 839 "parse.y" +#line 839 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy19 = sqliteTriggerUpdateStep(&yymsp[-3].minor.yy298, yymsp[-1].minor.yy322, yymsp[0].minor.yy242, yymsp[-4].minor.yy372); } -#line 3693 "parse.c" - /* No destructor defined for UPDATE */ - /* No destructor defined for SET */ +#line 3004 "ext/sqlite/libsqlite/src/parse.c" break; case 278: -#line 844 "parse.y" +#line 844 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy19 = sqliteTriggerInsertStep(&yymsp[-5].minor.yy298, yymsp[-4].minor.yy320, yymsp[-1].minor.yy322, 0, yymsp[-7].minor.yy372);} -#line 3700 "parse.c" - /* No destructor defined for INTO */ - /* No destructor defined for VALUES */ - /* No destructor defined for LP */ - /* No destructor defined for RP */ +#line 3009 "ext/sqlite/libsqlite/src/parse.c" break; case 279: -#line 847 "parse.y" +#line 847 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy19 = sqliteTriggerInsertStep(&yymsp[-2].minor.yy298, yymsp[-1].minor.yy320, 0, yymsp[0].minor.yy179, yymsp[-4].minor.yy372);} -#line 3709 "parse.c" - /* No destructor defined for INTO */ +#line 3014 "ext/sqlite/libsqlite/src/parse.c" break; case 280: -#line 851 "parse.y" +#line 851 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy19 = sqliteTriggerDeleteStep(&yymsp[-1].minor.yy298, yymsp[0].minor.yy242);} -#line 3715 "parse.c" - /* No destructor defined for DELETE */ - /* No destructor defined for FROM */ +#line 3019 "ext/sqlite/libsqlite/src/parse.c" break; case 281: -#line 854 "parse.y" +#line 854 "ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy19 = sqliteTriggerSelectStep(yymsp[0].minor.yy179); } -#line 3722 "parse.c" +#line 3024 "ext/sqlite/libsqlite/src/parse.c" break; case 282: -#line 857 "parse.y" +#line 857 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, 0); yygotominor.yy242->iColumn = OE_Ignore; sqliteExprSpan(yygotominor.yy242, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0); } -#line 3731 "parse.c" - /* No destructor defined for LP */ - /* No destructor defined for IGNORE */ +#line 3033 "ext/sqlite/libsqlite/src/parse.c" break; case 283: -#line 862 "parse.y" +#line 862 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy298); yygotominor.yy242->iColumn = OE_Rollback; sqliteExprSpan(yygotominor.yy242, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0); } -#line 3742 "parse.c" - /* No destructor defined for LP */ - /* No destructor defined for ROLLBACK */ - /* No destructor defined for COMMA */ +#line 3042 "ext/sqlite/libsqlite/src/parse.c" break; case 284: -#line 867 "parse.y" +#line 867 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy298); yygotominor.yy242->iColumn = OE_Abort; sqliteExprSpan(yygotominor.yy242, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0); } -#line 3754 "parse.c" - /* No destructor defined for LP */ - /* No destructor defined for ABORT */ - /* No destructor defined for COMMA */ +#line 3051 "ext/sqlite/libsqlite/src/parse.c" break; case 285: -#line 872 "parse.y" +#line 872 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy298); yygotominor.yy242->iColumn = OE_Fail; sqliteExprSpan(yygotominor.yy242, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0); } -#line 3766 "parse.c" - /* No destructor defined for LP */ - /* No destructor defined for FAIL */ - /* No destructor defined for COMMA */ +#line 3060 "ext/sqlite/libsqlite/src/parse.c" break; case 286: -#line 879 "parse.y" +#line 879 "ext/sqlite/libsqlite/src/parse.y" { sqliteDropTrigger(pParse,sqliteSrcListAppend(0,&yymsp[-1].minor.yy298,&yymsp[0].minor.yy298)); } -#line 3776 "parse.c" - /* No destructor defined for DROP */ - /* No destructor defined for TRIGGER */ +#line 3067 "ext/sqlite/libsqlite/src/parse.c" break; case 287: -#line 884 "parse.y" +#line 884 "ext/sqlite/libsqlite/src/parse.y" { sqliteAttach(pParse, &yymsp[-3].minor.yy298, &yymsp[-1].minor.yy298, &yymsp[0].minor.yy298); } -#line 3785 "parse.c" - /* No destructor defined for ATTACH */ - /* No destructor defined for database_kw_opt */ - /* No destructor defined for AS */ - break; - case 288: -#line 888 "parse.y" -{ yygotominor.yy298 = yymsp[0].minor.yy298; } -#line 3793 "parse.c" - /* No destructor defined for USING */ +#line 3074 "ext/sqlite/libsqlite/src/parse.c" break; case 289: -#line 889 "parse.y" +#line 889 "ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy298.z = 0; yygotominor.yy298.n = 0; } -#line 3799 "parse.c" - break; - case 290: - /* No destructor defined for DATABASE */ - break; - case 291: +#line 3079 "ext/sqlite/libsqlite/src/parse.c" break; case 292: -#line 895 "parse.y" +#line 895 "ext/sqlite/libsqlite/src/parse.y" { sqliteDetach(pParse, &yymsp[0].minor.yy298); } -#line 3811 "parse.c" - /* No destructor defined for DETACH */ - /* No destructor defined for database_kw_opt */ +#line 3086 "ext/sqlite/libsqlite/src/parse.c" break; }; yygoto = yyRuleInfo[yyruleno].lhs; yysize = yyRuleInfo[yyruleno].nrhs; yypParser->yyidx -= yysize; - yyact = yy_find_reduce_action(yypParser,yygoto); + yyact = yy_find_reduce_action(yymsp[-yysize].stateno,yygoto); if( yyact < YYNSTATE ){ - yy_shift(yypParser,yyact,yygoto,&yygotominor); +#ifdef NDEBUG + /* If we are not debugging and the reduce action popped at least + ** one element off the stack, then we can push the new element back + ** onto the stack here, and skip the stack overflow test in yy_shift(). + ** That gives a significant speed improvement. */ + if( yysize ){ + yypParser->yyidx++; + yymsp -= yysize-1; + yymsp->stateno = yyact; + yymsp->major = yygoto; + yymsp->minor = yygotominor; + }else +#endif + { + yy_shift(yypParser,yyact,yygoto,&yygotominor); + } }else if( yyact == YYNSTATE + YYNRULE + 1 ){ yy_accept(yypParser); } @@ -3852,7 +3138,7 @@ static void yy_syntax_error( ){ sqliteParserARG_FETCH; #define TOKEN (yyminor.yy0) -#line 23 "parse.y" +#line 23 "ext/sqlite/libsqlite/src/parse.y" if( pParse->zErrMsg==0 ){ if( TOKEN.z[0] ){ @@ -3861,8 +3147,7 @@ static void yy_syntax_error( sqliteErrorMsg(pParse, "incomplete SQL statement"); } } - -#line 3865 "parse.c" +#line 3153 "ext/sqlite/libsqlite/src/parse.c" sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument variable */ } @@ -3918,7 +3203,7 @@ void sqliteParser( /* (re)initialize the parser, if necessary */ yypParser = (yyParser*)yyp; if( yypParser->yyidx<0 ){ - if( yymajor==0 ) return; + /* if( yymajor==0 ) return; // not sure why this was here... */ yypParser->yyidx = 0; yypParser->yyerrcnt = -1; yypParser->yystack[0].stateno = 0; diff --git a/ext/sqlite/libsqlite/src/sqlite.w32.h b/ext/sqlite/libsqlite/src/sqlite.w32.h index b234551f6..b85216f16 100644 --- a/ext/sqlite/libsqlite/src/sqlite.w32.h +++ b/ext/sqlite/libsqlite/src/sqlite.w32.h @@ -12,7 +12,7 @@ ** This header file defines the interface that the SQLite library ** presents to client programs. ** -** @(#) $Id: sqlite.w32.h,v 1.6.2.1 2005/09/07 15:11:33 iliaa Exp $ +** @(#) $Id: sqlite.w32.h,v 1.6.2.2 2005/12/20 15:26:26 iliaa Exp $ */ #ifndef _SQLITE_H_ #define _SQLITE_H_ @@ -28,7 +28,7 @@ extern "C" { /* ** The version of the SQLite library. */ -#define SQLITE_VERSION "2.8.16" +#define SQLITE_VERSION "2.8.17" /* ** The version string is also compiled into the library so that a program diff --git a/ext/sqlite/libsqlite/src/sqliteInt.h b/ext/sqlite/libsqlite/src/sqliteInt.h index f745971d3..7ab879cd3 100644 --- a/ext/sqlite/libsqlite/src/sqliteInt.h +++ b/ext/sqlite/libsqlite/src/sqliteInt.h @@ -11,7 +11,7 @@ ************************************************************************* ** Internal interface definitions for SQLite. ** -** @(#) $Id: sqliteInt.h,v 1.6.4.1 2005/09/07 15:11:33 iliaa Exp $ +** @(#) $Id: sqliteInt.h,v 1.6.4.2 2005/12/20 15:26:26 iliaa Exp $ */ #include "config.h" #include "sqlite.h" @@ -1120,7 +1120,7 @@ void sqliteRealToSortable(double r, char *); #endif char *sqliteMPrintf(const char*, ...); char *sqliteVMPrintf(const char*, va_list); -void sqliteSetString(char **, const char *, ...); +void sqliteSetString(char **, ...); void sqliteSetNString(char **, ...); void sqliteErrorMsg(Parse*, const char*, ...); void sqliteDequote(char*); diff --git a/ext/sqlite/libsqlite/src/util.c b/ext/sqlite/libsqlite/src/util.c index be4e10828..dc63d4dc8 100644 --- a/ext/sqlite/libsqlite/src/util.c +++ b/ext/sqlite/libsqlite/src/util.c @@ -14,7 +14,7 @@ ** This file contains functions for allocating memory, comparing ** strings, and stuff like that. ** -** $Id: util.c,v 1.6.4.1 2005/09/07 15:11:33 iliaa Exp $ +** $Id: util.c,v 1.6.4.2 2005/12/20 15:26:26 iliaa Exp $ */ #include "sqliteInt.h" #include <stdarg.h> @@ -330,15 +330,15 @@ char *sqliteStrNDup(const char *z, int n){ ** point to that string. The 1st argument must either be NULL or ** point to memory obtained from sqliteMalloc(). */ -void sqliteSetString(char **pz, const char *zFirst, ...){ +void sqliteSetString(char **pz, ...){ va_list ap; int nByte; const char *z; char *zResult; if( pz==0 ) return; - nByte = strlen(zFirst) + 1; - va_start(ap, zFirst); + nByte = 1; + va_start(ap, pz); while( (z = va_arg(ap, const char*))!=0 ){ nByte += strlen(z); } @@ -348,9 +348,8 @@ void sqliteSetString(char **pz, const char *zFirst, ...){ if( zResult==0 ){ return; } - strcpy(zResult, zFirst); - zResult += strlen(zResult); - va_start(ap, zFirst); + *zResult = 0; + va_start(ap, pz); while( (z = va_arg(ap, const char*))!=0 ){ strcpy(zResult, z); zResult += strlen(zResult); diff --git a/ext/sqlite/pdo_sqlite2.c b/ext/sqlite/pdo_sqlite2.c index 027fb4407..07a8e1d3f 100644 --- a/ext/sqlite/pdo_sqlite2.c +++ b/ext/sqlite/pdo_sqlite2.c @@ -2,12 +2,12 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2005 The PHP Group | + | Copyright (c) 1997-2006 The PHP Group | +----------------------------------------------------------------------+ - | This source file is subject to version 3.0 of the PHP license, | + | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | - | http://www.php.net/license/3_0.txt. | + | http://www.php.net/license/3_01.txt | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_sqlite2.c,v 1.6 2005/06/17 13:12:31 sniper Exp $ */ +/* $Id: pdo_sqlite2.c,v 1.6.2.3 2006/01/01 12:50:14 sniper Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -326,6 +326,10 @@ static int sqlite2_handle_closer(pdo_dbh_t *dbh TSRMLS_DC) /* {{{ */ sqlite_close(H->db); H->db = NULL; } + if (H->einfo.errmsg) { + pefree(H->einfo.errmsg, dbh->is_persistent); + H->einfo.errmsg = NULL; + } pefree(H, dbh->is_persistent); dbh->driver_data = NULL; } @@ -357,7 +361,7 @@ static long sqlite2_handle_doer(pdo_dbh_t *dbh, const char *sql, long sql_len TS pdo_sqlite2_db_handle *H = (pdo_sqlite2_db_handle *)dbh->driver_data; char *errmsg = NULL; - if (sqlite_exec(H->db, sql, NULL, NULL, &errmsg) != SQLITE_OK) { + if ((H->einfo.errcode = sqlite_exec(H->db, sql, NULL, NULL, &errmsg)) != SQLITE_OK) { pdo_sqlite2_error(errmsg, dbh); return -1; } else { @@ -477,12 +481,12 @@ static PHP_FUNCTION(sqlite2_create_function) /* TODO: implement this stuff */ } -static function_entry dbh_methods[] = { +static zend_function_entry dbh_methods[] = { PHP_FE(sqlite2_create_function, NULL) {NULL, NULL, NULL} }; -static function_entry *get_driver_methods(pdo_dbh_t *dbh, int kind TSRMLS_DC) +static zend_function_entry *get_driver_methods(pdo_dbh_t *dbh, int kind TSRMLS_DC) { switch (kind) { case PDO_DBH_DRIVER_METHOD_KIND_DBH: diff --git a/ext/sqlite/php_sqlite.h b/ext/sqlite/php_sqlite.h index 4160a6cf5..0d27dc38e 100644 --- a/ext/sqlite/php_sqlite.h +++ b/ext/sqlite/php_sqlite.h @@ -2,12 +2,12 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2005 The PHP Group | + | Copyright (c) 1997-2006 The PHP Group | +----------------------------------------------------------------------+ - | This source file is subject to version 3.0 of the PHP license, | + | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | - | http://www.php.net/license/3_0.txt. | + | http://www.php.net/license/3_01.txt | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | @@ -17,7 +17,7 @@ | Marcus Boerger <helly@php.net> | +----------------------------------------------------------------------+ - $Id: php_sqlite.h,v 1.32 2005/08/03 14:07:53 sniper Exp $ + $Id: php_sqlite.h,v 1.32.2.2 2006/01/01 12:50:14 sniper Exp $ */ #ifndef PHP_SQLITE_H @@ -93,7 +93,7 @@ PHP_FUNCTION(sqlite_factory); PHP_FUNCTION(sqlite_fetch_column_types); ZEND_BEGIN_MODULE_GLOBALS(sqlite) - int assoc_case; + long assoc_case; ZEND_END_MODULE_GLOBALS(sqlite) #ifdef ZTS diff --git a/ext/sqlite/sess_sqlite.c b/ext/sqlite/sess_sqlite.c index 79c8c33f1..95c462d48 100644 --- a/ext/sqlite/sess_sqlite.c +++ b/ext/sqlite/sess_sqlite.c @@ -2,12 +2,12 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2005 The PHP Group | + | Copyright (c) 1997-2006 The PHP Group | +----------------------------------------------------------------------+ - | This source file is subject to version 3.0 of the PHP license, | + | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | - | http://www.php.net/license/3_0.txt. | + | http://www.php.net/license/3_01.txt | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: sess_sqlite.c,v 1.18 2005/08/03 14:07:53 sniper Exp $ */ +/* $Id: sess_sqlite.c,v 1.18.2.1 2006/01/01 12:50:14 sniper Exp $ */ #include "php.h" diff --git a/ext/sqlite/sqlite.c b/ext/sqlite/sqlite.c index f6e4ec5b7..3c0f3bdc4 100644 --- a/ext/sqlite/sqlite.c +++ b/ext/sqlite/sqlite.c @@ -2,12 +2,12 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2005 The PHP Group | + | Copyright (c) 1997-2006 The PHP Group | +----------------------------------------------------------------------+ - | This source file is subject to version 3.0 of the PHP license, | + | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | - | http://www.php.net/license/3_0.txt. | + | http://www.php.net/license/3_01.txt | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | @@ -17,7 +17,7 @@ | Marcus Boerger <helly@php.net> | +----------------------------------------------------------------------+ - $Id: sqlite.c,v 1.166.2.7 2005/11/25 16:01:41 sniper Exp $ + $Id: sqlite.c,v 1.166.2.11 2006/01/01 12:50:14 sniper Exp $ */ #ifdef HAVE_CONFIG_H @@ -29,7 +29,9 @@ #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" +#if HAVE_PHP_SESSION && !defined(COMPILE_DL_SESSION) #include "ext/session/php_session.h" +#endif #include "php_sqlite.h" #if HAVE_TIME_H @@ -161,7 +163,7 @@ static int php_sqlite_fetch(struct php_sqlite_result *rres TSRMLS_DC); enum { PHPSQLITE_ASSOC = 1, PHPSQLITE_NUM = 2, PHPSQLITE_BOTH = PHPSQLITE_ASSOC|PHPSQLITE_NUM }; -function_entry sqlite_functions[] = { +zend_function_entry sqlite_functions[] = { PHP_FE(sqlite_open, third_arg_force_ref) PHP_FE(sqlite_popen, third_arg_force_ref) PHP_FE(sqlite_close, NULL) @@ -204,7 +206,7 @@ function_entry sqlite_functions[] = { {NULL, NULL, NULL} }; -function_entry sqlite_funcs_db[] = { +zend_function_entry sqlite_funcs_db[] = { PHP_ME_MAPPING(__construct, sqlite_open, third_arg_force_ref) /* PHP_ME_MAPPING(close, sqlite_close, NULL)*/ PHP_ME_MAPPING(query, sqlite_query, third_arg_force_ref) @@ -224,7 +226,7 @@ function_entry sqlite_funcs_db[] = { {NULL, NULL, NULL} }; -function_entry sqlite_funcs_query[] = { +zend_function_entry sqlite_funcs_query[] = { PHP_ME_MAPPING(fetch, sqlite_fetch_array, NULL) PHP_ME_MAPPING(fetchObject, sqlite_fetch_object, NULL) PHP_ME_MAPPING(fetchSingle, sqlite_fetch_single, NULL) @@ -248,7 +250,7 @@ function_entry sqlite_funcs_query[] = { {NULL, NULL, NULL} }; -function_entry sqlite_funcs_ub_query[] = { +zend_function_entry sqlite_funcs_ub_query[] = { PHP_ME_MAPPING(fetch, sqlite_fetch_array, NULL) PHP_ME_MAPPING(fetchObject, sqlite_fetch_object, NULL) PHP_ME_MAPPING(fetchSingle, sqlite_fetch_single, NULL) @@ -263,7 +265,7 @@ function_entry sqlite_funcs_ub_query[] = { {NULL, NULL, NULL} }; -function_entry sqlite_funcs_exception[] = { +zend_function_entry sqlite_funcs_exception[] = { {NULL, NULL, NULL} }; @@ -346,11 +348,11 @@ static ZEND_RSRC_DTOR_FUNC(php_sqlite_db_dtor) { if (rsrc->ptr) { struct php_sqlite_db *db = (struct php_sqlite_db*)rsrc->ptr; - + sqlite_close(db->db); zend_hash_destroy(&db->callbacks); - + pefree(db, db->is_persistent); rsrc->ptr = NULL; @@ -413,7 +415,7 @@ static int php_sqlite_forget_persistent_id_numbers(zend_rsrc_list_entry *rsrc TS /* don't leave pending commits hanging around */ sqlite_exec(db->db, "ROLLBACK", NULL, NULL, NULL); - + return 0; } @@ -438,7 +440,7 @@ static void php_sqlite_generic_function_callback(sqlite_func *func, int argc, co sqlite_set_result_error(func, "not enough parameters", -1); return; } - + ZVAL_STRING(&funcname, (char*)argv[0], 1); if (!zend_make_callable(&funcname, &callable TSRMLS_CC)) { @@ -449,10 +451,10 @@ static void php_sqlite_generic_function_callback(sqlite_func *func, int argc, co zval_dtor(&funcname); return; } - + if (argc > 1) { zargs = (zval ***)safe_emalloc((argc - 1), sizeof(zval **), 0); - + for (i = 0; i < argc-1; i++) { zargs[i] = emalloc(sizeof(zval *)); MAKE_STD_ZVAL(*zargs[i]); @@ -529,7 +531,7 @@ static void php_sqlite_function_callback(sqlite_func *func, int argc, const char if (argc > 0) { zargs = (zval ***)safe_emalloc(argc, sizeof(zval **), 0); - + for (i = 0; i < argc; i++) { zargs[i] = emalloc(sizeof(zval *)); MAKE_STD_ZVAL(*zargs[i]); @@ -608,10 +610,10 @@ static void php_sqlite_agg_step_function_callback(sqlite_func *func, int argc, c if (argc < 1) { return; } - + zargc = argc + 1; zargs = (zval ***)safe_emalloc(zargc, sizeof(zval **), 0); - + /* first arg is always the context zval */ context_p = (zval **)sqlite_aggregate_context(func, sizeof(*context_p)); @@ -673,9 +675,9 @@ static void php_sqlite_agg_fini_function_callback(sqlite_func *func) sqlite_set_result_error(func, "this function has not been correctly defined for this request", -1); return; } - + context_p = (zval **)sqlite_aggregate_context(func, sizeof(*context_p)); - + res = call_user_function_ex(EG(function_table), NULL, funcs->fini, @@ -791,7 +793,7 @@ typedef struct _sqlite_object { } u; } sqlite_object; -static int sqlite_free_persistent(list_entry *le, void *ptr TSRMLS_DC) +static int sqlite_free_persistent(zend_rsrc_list_entry *le, void *ptr TSRMLS_DC) { return le->ptr == ptr ? ZEND_HASH_APPLY_REMOVE : ZEND_HASH_APPLY_KEEP; } @@ -837,7 +839,7 @@ static void sqlite_object_new(zend_class_entry *class_type, zend_object_handlers static zend_object_value sqlite_object_new_db(zend_class_entry *class_type TSRMLS_DC) { zend_object_value retval; - + sqlite_object_new(class_type, &sqlite_object_handlers_db, &retval TSRMLS_CC); return retval; } @@ -845,7 +847,7 @@ static zend_object_value sqlite_object_new_db(zend_class_entry *class_type TSRML static zend_object_value sqlite_object_new_query(zend_class_entry *class_type TSRMLS_DC) { zend_object_value retval; - + sqlite_object_new(class_type, &sqlite_object_handlers_query, &retval TSRMLS_CC); return retval; } @@ -853,7 +855,7 @@ static zend_object_value sqlite_object_new_query(zend_class_entry *class_type TS static zend_object_value sqlite_object_new_ub_query(zend_class_entry *class_type TSRMLS_DC) { zend_object_value retval; - + sqlite_object_new(class_type, &sqlite_object_handlers_ub_query, &retval TSRMLS_CC); return retval; } @@ -861,7 +863,7 @@ static zend_object_value sqlite_object_new_ub_query(zend_class_entry *class_type static zend_object_value sqlite_object_new_exception(zend_class_entry *class_type TSRMLS_DC) { zend_object_value retval; - + sqlite_object_new(class_type, &sqlite_object_handlers_exception, &retval TSRMLS_CC); return retval; } @@ -947,7 +949,7 @@ void sqlite_iterator_get_current_data(zend_object_iterator *iter, zval ***data T MAKE_STD_ZVAL(**data); php_sqlite_fetch_array(res, res->mode, 1, 0, **data TSRMLS_CC); } - + } int sqlite_iterator_get_current_key(zend_object_iterator *iter, char **str_key, uint *str_key_len, ulong *int_key TSRMLS_DC) @@ -976,7 +978,7 @@ void sqlite_iterator_move_forward(zend_object_iterator *iter TSRMLS_DC) /* php_error_docref(NULL TSRMLS_CC, E_WARNING, "no more rows available"); */ return; } - + res->curr_row++; } } @@ -1029,7 +1031,7 @@ PHP_MINIT_FUNCTION(sqlite) REGISTER_SQLITE_CLASS(Exception, exception, spl_ce_RuntimeException); #else REGISTER_SQLITE_CLASS(Exception, exception, zend_exception_get_default()); -#endif +#endif sqlite_ce_db->ce_flags &= ~ZEND_ACC_FINAL_CLASS; sqlite_ce_db->constructor->common.fn_flags |= ZEND_ACC_FINAL; @@ -1044,7 +1046,7 @@ PHP_MINIT_FUNCTION(sqlite) #if defined(HAVE_SPL) && ((PHP_MAJOR_VERSION > 5) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 1)) zend_class_implements(sqlite_ce_query TSRMLS_CC, 2, zend_ce_iterator, spl_ce_Countable); #else - zend_class_implements(sqlite_ce_query TSRMLS_CC, 1, zend_ce_iterator); + zend_class_implements(sqlite_ce_query TSRMLS_CC, 1, zend_ce_iterator); #endif sqlite_ce_query->get_iterator = sqlite_get_iterator; sqlite_ce_query->iterator_funcs.funcs = &sqlite_query_iterator_funcs; @@ -1056,7 +1058,7 @@ PHP_MINIT_FUNCTION(sqlite) #if HAVE_PHP_SESSION && !defined(COMPILE_DL_SESSION) php_session_register_module(ps_sqlite_ptr); #endif - + le_sqlite_db = zend_register_list_destructors_ex(php_sqlite_db_dtor, NULL, "sqlite database", module_number); le_sqlite_pdb = zend_register_list_destructors_ex(NULL, php_sqlite_db_dtor, "sqlite database (persistent)", module_number); le_sqlite_result = zend_register_list_destructors_ex(php_sqlite_result_dtor, NULL, "sqlite result", module_number); @@ -1064,7 +1066,7 @@ PHP_MINIT_FUNCTION(sqlite) REGISTER_LONG_CONSTANT("SQLITE_BOTH", PHPSQLITE_BOTH, CONST_CS|CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SQLITE_NUM", PHPSQLITE_NUM, CONST_CS|CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SQLITE_ASSOC", PHPSQLITE_ASSOC, CONST_CS|CONST_PERSISTENT); - + REGISTER_LONG_CONSTANT("SQLITE_OK", SQLITE_OK, CONST_CS|CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SQLITE_ERROR", SQLITE_ERROR, CONST_CS|CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SQLITE_INTERNAL", SQLITE_INTERNAL, CONST_CS|CONST_PERSISTENT); @@ -1098,7 +1100,7 @@ PHP_MINIT_FUNCTION(sqlite) #ifdef PHP_SQLITE2_HAVE_PDO if (FAILURE == php_pdo_register_driver(&pdo_sqlite2_driver)) { - return FAILURE; + return FAILURE; } #endif @@ -1125,7 +1127,7 @@ PHP_MINFO_FUNCTION(sqlite) { php_info_print_table_start(); php_info_print_table_header(2, "SQLite support", "enabled"); - php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " $Id: sqlite.c,v 1.166.2.7 2005/11/25 16:01:41 sniper Exp $"); + php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " $Id: sqlite.c,v 1.166.2.11 2006/01/01 12:50:14 sniper Exp $"); php_info_print_table_row(2, "SQLite Library", sqlite_libversion()); php_info_print_table_row(2, "SQLite Encoding", sqlite_libencoding()); php_info_print_table_end(); @@ -1166,7 +1168,7 @@ static struct php_sqlite_db *php_sqlite_open(char *filename, int mode, char *per db->db = sdb; zend_hash_init(&db->callbacks, 0, NULL, php_sqlite_callback_dtor, db->is_persistent); - + /* register the PHP functions */ sqlite_create_function(sdb, "php", -1, php_sqlite_generic_function_callback, 0); @@ -1180,7 +1182,7 @@ static struct php_sqlite_db *php_sqlite_open(char *filename, int mode, char *per if (PG(safe_mode) || (PG(open_basedir) && *PG(open_basedir))) { sqlite_set_authorizer(sdb, php_sqlite_authorizer, NULL); } - + db->rsrc_id = ZEND_REGISTER_RESOURCE(object ? NULL : return_value, db, persistent_id ? le_sqlite_pdb : le_sqlite_db); if (object) { /* if object is not an object then we're called from the factory() function */ @@ -1192,7 +1194,7 @@ static struct php_sqlite_db *php_sqlite_open(char *filename, int mode, char *per } if (persistent_id) { - list_entry le; + zend_rsrc_list_entry le; Z_TYPE(le) = le_sqlite_pdb; le.ptr = db; @@ -1203,7 +1205,7 @@ static struct php_sqlite_db *php_sqlite_open(char *filename, int mode, char *per php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to register persistent resource"); } } - + return db; } @@ -1216,8 +1218,8 @@ PHP_FUNCTION(sqlite_popen) int filename_len, hashkeylen; zval *errmsg = NULL; struct php_sqlite_db *db = NULL; - list_entry *le; - + zend_rsrc_list_entry *le; + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|lz/", &filename, &filename_len, &mode, &errmsg)) { return; @@ -1230,7 +1232,7 @@ PHP_FUNCTION(sqlite_popen) if (strncmp(filename, ":memory:", sizeof(":memory:") - 1)) { /* resolve the fully-qualified path name to use as the hash key */ fullpath = expand_filepath(filename, NULL TSRMLS_CC); - + if (PG(safe_mode) && (!php_checkuid(fullpath, NULL, CHECKUID_CHECK_FILE_AND_DIR))) { RETURN_FALSE; } @@ -1243,12 +1245,12 @@ PHP_FUNCTION(sqlite_popen) } hashkeylen = spprintf(&hashkey, 0, "sqlite_pdb_%s:%ld", fullpath, mode); - + /* do we have an existing persistent connection ? */ if (SUCCESS == zend_hash_find(&EG(persistent_list), hashkey, hashkeylen+1, (void*)&le)) { if (Z_TYPE_P(le) == le_sqlite_pdb) { db = (struct php_sqlite_db*)le->ptr; - + if (db->rsrc_id == FAILURE) { /* give it a valid resource id for this request */ db->rsrc_id = ZEND_REGISTER_RESOURCE(return_value, db, le_sqlite_pdb); @@ -1306,7 +1308,7 @@ PHP_FUNCTION(sqlite_open) if (strncmp(filename, ":memory:", sizeof(":memory:") - 1)) { /* resolve the fully-qualified path name to use as the hash key */ fullpath = expand_filepath(filename, NULL TSRMLS_CC); - + if (PG(safe_mode) && (!php_checkuid(fullpath, NULL, CHECKUID_CHECK_FILE_AND_DIR))) { php_std_error_handling(); efree(fullpath); @@ -1361,13 +1363,13 @@ PHP_FUNCTION(sqlite_factory) if (strncmp(filename, ":memory:", sizeof(":memory:") - 1)) { /* resolve the fully-qualified path name to use as the hash key */ fullpath = expand_filepath(filename, NULL TSRMLS_CC); - + if (PG(safe_mode) && (!php_checkuid(fullpath, NULL, CHECKUID_CHECK_FILE_AND_DIR))) { efree(fullpath); php_std_error_handling(); RETURN_NULL(); } - + if (php_check_open_basedir(fullpath TSRMLS_CC)) { efree(fullpath); php_std_error_handling(); @@ -1556,7 +1558,7 @@ terminate: memcpy(*prres, &res, sizeof(**prres)); (*prres)->db = db; zend_list_addref(db->rsrc_id); - + /* now the result set is ready for stepping: get first row */ if (php_sqlite_fetch((*prres) TSRMLS_CC) != SQLITE_OK) { @@ -1565,10 +1567,10 @@ terminate: if (return_value) { RETURN_FALSE; } else { - return; + return; } } - + (*prres)->curr_row = 0; if (object) { @@ -1607,7 +1609,7 @@ PHP_FUNCTION(sqlite_unbuffered_query) DB_FROM_OBJECT(db, object); } else { if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, - ZEND_NUM_ARGS() TSRMLS_CC, "sr|lz/", &sql, &sql_len, &zdb, &mode, &errmsg) && + ZEND_NUM_ARGS() TSRMLS_CC, "sr|lz/", &sql, &sql_len, &zdb, &mode, &errmsg) && FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|lz/", &zdb, &sql, &sql_len, &mode, &errmsg)) { return; } @@ -1661,7 +1663,7 @@ PHP_FUNCTION(sqlite_fetch_column_types) DB_FROM_OBJECT(db, object); } else { if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, - ZEND_NUM_ARGS() TSRMLS_CC, "sr|l", &tbl, &tbl_len, &zdb, &result_type) && + ZEND_NUM_ARGS() TSRMLS_CC, "sr|l", &tbl, &tbl_len, &zdb, &result_type) && FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|l", &zdb, &tbl, &tbl_len, &result_type)) { return; } @@ -1732,7 +1734,7 @@ PHP_FUNCTION(sqlite_query) DB_FROM_OBJECT(db, object); } else { if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, - ZEND_NUM_ARGS() TSRMLS_CC, "sr|lz/", &sql, &sql_len, &zdb, &mode, &errmsg) && + ZEND_NUM_ARGS() TSRMLS_CC, "sr|lz/", &sql, &sql_len, &zdb, &mode, &errmsg) && FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|lz/", &zdb, &sql, &sql_len, &mode, &errmsg)) { return; } @@ -1783,7 +1785,7 @@ PHP_FUNCTION(sqlite_exec) DB_FROM_OBJECT(db, object); } else { if(FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, - ZEND_NUM_ARGS() TSRMLS_CC, "sr", &sql, &sql_len, &zdb) && + ZEND_NUM_ARGS() TSRMLS_CC, "sr", &sql, &sql_len, &zdb) && FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|z/", &zdb, &sql, &sql_len, &errmsg)) { return; } @@ -1924,12 +1926,12 @@ static void php_sqlite_fetch_column(struct php_sqlite_result *res, zval *which, if (!res->buffered) { efree((char*)rowdata[j]); rowdata[j] = NULL; - } + } } else { RETVAL_STRING((char*)rowdata[j], res->buffered); if (!res->buffered) { rowdata[j] = NULL; - } + } } } /* }}} */ @@ -2027,7 +2029,7 @@ PHP_FUNCTION(sqlite_fetch_object) zval dataset; zend_fcall_info fci; zend_fcall_info_cache fcc; - zval *retval_ptr; + zval *retval_ptr; zval *ctor_params = NULL; php_set_error_handling(object ? EH_THROW : EH_NORMAL, sqlite_ce_exception TSRMLS_CC); @@ -2095,7 +2097,7 @@ PHP_FUNCTION(sqlite_fetch_object) } else { /* Two problems why we throw exceptions here: PHP is typeless * and hence passing one argument that's not an array could be - * by mistake and the other way round is possible, too. The + * by mistake and the other way round is possible, too. The * single value is an array. Also we'd have to make that one * argument passed by reference. */ @@ -2150,7 +2152,7 @@ PHP_FUNCTION(sqlite_array_query) DB_FROM_OBJECT(db, object); } else { if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, - ZEND_NUM_ARGS() TSRMLS_CC, "sr|lb", &sql, &sql_len, &zdb, &mode, &decode_binary) && + ZEND_NUM_ARGS() TSRMLS_CC, "sr|lb", &sql, &sql_len, &zdb, &mode, &decode_binary) && FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|lb", &zdb, &sql, &sql_len, &mode, &decode_binary)) { return; } @@ -2169,15 +2171,15 @@ PHP_FUNCTION(sqlite_array_query) } return; } - + rres = (struct php_sqlite_result *)emalloc(sizeof(*rres)); sqlite_query(NULL, db, sql, sql_len, (int)mode, 0, NULL, &rres, NULL TSRMLS_CC); - if (db->last_err_code != SQLITE_OK) { - if (rres) { - efree(rres); - } - RETURN_FALSE; - } + if (db->last_err_code != SQLITE_OK) { + if (rres) { + efree(rres); + } + RETURN_FALSE; + } array_init(return_value); @@ -2196,13 +2198,13 @@ static void php_sqlite_fetch_single(struct php_sqlite_result *res, zend_bool dec const char **rowdata; char *decoded; int decoded_len; - + /* check range of the row */ if (res->curr_row >= res->nrows) { /* no more */ RETURN_FALSE; } - + if (res->buffered) { rowdata = (const char**)&res->table[res->curr_row * res->ncolumns]; } else { @@ -2266,7 +2268,7 @@ PHP_FUNCTION(sqlite_single_query) RES_FROM_OBJECT(db, object); } else { if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, - ZEND_NUM_ARGS() TSRMLS_CC, "sr|bb", &sql, &sql_len, &zdb, &srow, &decode_binary) && + ZEND_NUM_ARGS() TSRMLS_CC, "sr|bb", &sql, &sql_len, &zdb, &srow, &decode_binary) && FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|bb", &zdb, &sql, &sql_len, &srow, &decode_binary)) { return; } @@ -2568,7 +2570,7 @@ PHP_FUNCTION(sqlite_has_prev) RETURN_FALSE; } - RETURN_BOOL(res->curr_row); + RETURN_BOOL(res->curr_row); } /* }}} */ @@ -2651,7 +2653,7 @@ PHP_FUNCTION(sqlite_seek) php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot seek an unbuffered result set"); RETURN_FALSE; } - + if (row < 0 || row >= res->nrows) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "row %ld out of range", row); RETURN_FALSE; @@ -2686,7 +2688,7 @@ PHP_FUNCTION(sqlite_rewind) php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot rewind an unbuffered result set"); RETURN_FALSE; } - + if (!res->nrows) { php_error_docref(NULL TSRMLS_CC, E_NOTICE, "no rows received"); RETURN_FALSE; @@ -2807,12 +2809,12 @@ PHP_FUNCTION(sqlite_escape_string) if (stringlen && (string[0] == '\x01' || memchr(string, '\0', stringlen) != NULL)) { /* binary string */ int enclen; - + ret = safe_emalloc(1 + stringlen / 254, 257, 3); ret[0] = '\x01'; enclen = php_sqlite_encode_binary(string, stringlen, ret+1); RETVAL_STRINGL(ret, enclen+1, 0); - + } else if (stringlen) { ret = sqlite_mprintf("%q", string); if (ret) { @@ -2859,7 +2861,7 @@ PHP_FUNCTION(sqlite_error_string) if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &code)) { return; } - + msg = sqlite_error_string(code); if (msg) { @@ -2927,7 +2929,7 @@ static enum callback_prep_t prep_callback_struct(struct php_sqlite_db *db, int i } alloc_funcs->is_valid = 1; *funcs = alloc_funcs; - + return ret; } @@ -2963,7 +2965,7 @@ PHP_FUNCTION(sqlite_create_aggregate) return; } efree(callable); - + if (!zend_is_callable(zfinal, 0, &callable)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "finalize function `%s' is not callable", callable); efree(callable); @@ -2971,13 +2973,13 @@ PHP_FUNCTION(sqlite_create_aggregate) } efree(callable); - + if (prep_callback_struct(db, 1, funcname, zstep, zfinal, &funcs) == DO_REG) { sqlite_create_aggregate(db->db, funcname, num_args, php_sqlite_agg_step_function_callback, php_sqlite_agg_fini_function_callback, funcs); } - + } /* }}} */ @@ -2993,7 +2995,7 @@ PHP_FUNCTION(sqlite_create_function) struct php_sqlite_agg_functions *funcs; char *callable = NULL; long num_args = -1; - + zval *object = getThis(); if (object) { @@ -3014,7 +3016,7 @@ PHP_FUNCTION(sqlite_create_function) return; } efree(callable); - + if (prep_callback_struct(db, 0, funcname, zcall, NULL, &funcs) == DO_REG) { sqlite_create_function(db->db, funcname, num_args, php_sqlite_function_callback, funcs); } @@ -3039,7 +3041,7 @@ PHP_FUNCTION(sqlite_udf_encode_binary) /* binary string */ int enclen; char *ret; - + ret = safe_emalloc(1 + datalen / 254, 257, 3); ret[0] = '\x01'; enclen = php_sqlite_encode_binary(data, datalen, ret+1); @@ -3068,7 +3070,7 @@ PHP_FUNCTION(sqlite_udf_decode_binary) /* encoded string */ int enclen; char *ret; - + ret = emalloc(datalen); enclen = php_sqlite_decode_binary(data+1, ret); ret[enclen] = '\0'; diff --git a/ext/sqlite/tests/blankdb.inc b/ext/sqlite/tests/blankdb.inc index 43c6ff358..5ca484117 100644 --- a/ext/sqlite/tests/blankdb.inc +++ b/ext/sqlite/tests/blankdb.inc @@ -1,17 +1,3 @@ <?php #vim:ft=php -$dbname = tempnam(dirname(__FILE__), "phpsql"); -function cleanup() { - $retry = 10; - - if (is_resource($GLOBALS['db'])) { - @sqlite_close($GLOBALS['db']); - } - do { - usleep(500000); - if (@unlink($GLOBALS['dbname'])) - break; - } while (file_exists($GLOBALS['dbname']) && --$retry); -} -register_shutdown_function("cleanup"); -$db = sqlite_open($dbname); +$db = sqlite_open(":memory:"); ?> diff --git a/ext/sqlite/tests/blankdb_oo.inc b/ext/sqlite/tests/blankdb_oo.inc index 3bbf4fd0b..1139d17c8 100755 --- a/ext/sqlite/tests/blankdb_oo.inc +++ b/ext/sqlite/tests/blankdb_oo.inc @@ -1,11 +1,3 @@ <?php #vim:ft=php -$dbname = tempnam(dirname(__FILE__), "phpsql"); -function cleanup() { - global $db, $dbname; - $db = NULL; - usleep(500000); - @unlink($dbname); -} -register_shutdown_function("cleanup"); -$db = new SQLiteDatabase($dbname); +$db = new SQLiteDatabase(":memory:"); ?> diff --git a/ext/sqlite/tests/bug28112.phpt b/ext/sqlite/tests/bug28112.phpt index 62f4799d6..398180e79 100755 --- a/ext/sqlite/tests/bug28112.phpt +++ b/ext/sqlite/tests/bug28112.phpt @@ -1,5 +1,7 @@ --TEST--
Bug #28112 (sqlite_query() crashing apache on malformed query)
+--SKIPIF--
+<?php if (!extension_loaded("sqlite")) print "skip"; ?>
--FILE--
<?php
|
