diff options
author | Wez Furlong <wez@php.net> | 2003-06-06 22:44:57 +0000 |
---|---|---|
committer | Wez Furlong <wez@php.net> | 2003-06-06 22:44:57 +0000 |
commit | 30fc9e152f6279df812bfc32da309c2c8397671d (patch) | |
tree | dec0b645f8a7faafc92ebffd4df9a7ce2e8b9446 /ext | |
parent | 6610183236b88cf1017fbd71b0561fac9cee9c8f (diff) | |
download | php-git-30fc9e152f6279df812bfc32da309c2c8397671d.tar.gz |
Update bundled library to 2.8.3 + patches from sqlite author to enable
authorization checks for the ATTACH database command.
Diffstat (limited to 'ext')
26 files changed, 1056 insertions, 907 deletions
diff --git a/ext/sqlite/Makefile.frag b/ext/sqlite/Makefile.frag index b800d25041..baefc7a70b 100644 --- a/ext/sqlite/Makefile.frag +++ b/ext/sqlite/Makefile.frag @@ -5,7 +5,7 @@ # We avoid building these last three by bundling the generated versions # in our release packages -$(srcdir)/libsqlite/src/opcodes.c: $(srcdir)/libsqlite/src/vdbe.c +$(srcdir)/libsqlite/src/opcodes.c: $(srcdir)/libsqlite/src/opcodes.h $(srcdir)/libsqlite/src/sqlite.h echo '/* Automatically generated file. Do not edit */' >$@ echo 'char *sqliteOpcodeNames[] = { "???", ' >>$@ grep '^case OP_' $(srcdir)/libsqlite/src/vdbe.c | \ @@ -18,6 +18,9 @@ $(srcdir)/libsqlite/src/opcodes.h: $(srcdir)/libsqlite/src/vdbe.c sed -e 's/://' | \ awk '{printf "#define %-30s %3d\n", $$2, ++cnt}' >>$@ +$(srcdir)/libsqlite/src/sqlite.h: $(srcdir)/libsqlite/src/sqlite.h.in + sed -e s/--VERS--/$(SQLITE_VERSION)/ -e s/--ENCODING--/$(SQLITE_ENCODING)/ $(srcdir)/libsqlite/src/sqlite.h.in >$(srcdir)/libsqlite/src/sqlite.h + $(srcdir)/libsqlite/src/sqlite.c: $(srcdir)/libsqlite/src/sqlite.h $(srcdir)/libsqlite/src/parse.c: $(srcdir)/libsqlite/src/parse.y diff --git a/ext/sqlite/config.m4 b/ext/sqlite/config.m4 index 8158130810..bdcf84ad2d 100644 --- a/ext/sqlite/config.m4 +++ b/ext/sqlite/config.m4 @@ -71,7 +71,7 @@ if test "$PHP_SQLITE" != "no"; then AC_DEFINE(OS_WIN, 0, [if this is windows]) dnl use latin 1 for now; the utf-8 handling in funcs.c uses assert(), dnl which is a bit silly and something we want to avoid - SQLITE_ENCODING="iso8859" + SQLITE_ENCODING="ISO8859" dnl SQLITE_ENCODING="UTF-8" dnl AC_DEFINE(SQLITE_UTF8,1,[if SQLite should use utf-8 encoding]) PHP_SUBST(SQLITE_ENCODING) @@ -97,8 +97,6 @@ if test "$PHP_SQLITE" != "no"; then #endif EOF - sed -e s/--VERS--/`cat $ext_srcdir/libsqlite/VERSION`/ -e s/--ENCODING--/$SQLITE_ENCODING/ $ext_srcdir/libsqlite/src/sqlite.h.in >$ext_srcdir/libsqlite/src/sqlite.h - PHP_ADD_MAKEFILE_FRAGMENT fi diff --git a/ext/sqlite/libsqlite/VERSION b/ext/sqlite/libsqlite/VERSION index 1817afea41..9f8d8a9164 100644 --- a/ext/sqlite/libsqlite/VERSION +++ b/ext/sqlite/libsqlite/VERSION @@ -1 +1 @@ -2.8.2 +2.8.3 diff --git a/ext/sqlite/libsqlite/src/attach.c b/ext/sqlite/libsqlite/src/attach.c index dd94c21182..5b57e29e16 100644 --- a/ext/sqlite/libsqlite/src/attach.c +++ b/ext/sqlite/libsqlite/src/attach.c @@ -43,6 +43,32 @@ void sqliteAttach(Parse *pParse, Token *pFilename, Token *pDbname){ pParse->rc = SQLITE_ERROR; return; } + + zFile = 0; + sqliteSetNString(&zFile, pFilename->z, pFilename->n, 0); + if( zFile==0 ) return; + sqliteDequote(zFile); +#ifndef SQLITE_OMIT_AUTHORIZATION + if( sqliteAuthCheck(pParse, SQLITE_ATTACH, zFile, 0, 0)!=SQLITE_OK ){ + sqliteFree(zFile); + return; + } +#endif /* SQLITE_OMIT_AUTHORIZATION */ + + zName = 0; + sqliteSetNString(&zName, pDbname->z, pDbname->n, 0); + if( zName==0 ) return; + sqliteDequote(zName); + for(i=0; i<db->nDb; i++){ + if( db->aDb[i].zName && sqliteStrICmp(db->aDb[i].zName, zName)==0 ){ + sqliteErrorMsg(pParse, "database %z is already in use", zName); + pParse->rc = SQLITE_ERROR; + sqliteFree(zFile); + sqliteFree(zName); + return; + } + } + if( db->aDb==db->aDbStatic ){ aNew = sqliteMalloc( sizeof(db->aDb[0])*3 ); if( aNew==0 ) return; @@ -58,24 +84,7 @@ void sqliteAttach(Parse *pParse, Token *pFilename, Token *pDbname){ sqliteHashInit(&aNew->idxHash, SQLITE_HASH_STRING, 0); sqliteHashInit(&aNew->trigHash, SQLITE_HASH_STRING, 0); sqliteHashInit(&aNew->aFKey, SQLITE_HASH_STRING, 1); - - zName = 0; - sqliteSetNString(&zName, pDbname->z, pDbname->n, 0); - if( zName==0 ) return; - sqliteDequote(zName); - for(i=0; i<db->nDb; i++){ - if( db->aDb[i].zName && sqliteStrICmp(db->aDb[i].zName, zName)==0 ){ - sqliteErrorMsg(pParse, "database %z is already in use", zName); - db->nDb--; - pParse->rc = SQLITE_ERROR; - return; - } - } aNew->zName = zName; - zFile = 0; - sqliteSetNString(&zFile, pFilename->z, pFilename->n, 0); - if( zFile==0 ) return; - sqliteDequote(zFile); rc = sqliteBtreeFactory(db, zFile, 0, MAX_PAGES, &aNew->pBt); if( rc ){ sqliteErrorMsg(pParse, "unable to open database: %s", zFile); @@ -117,6 +126,11 @@ void sqliteDetach(Parse *pParse, Token *pDbname){ sqliteErrorMsg(pParse, "cannot detach database %T", pDbname); return; } +#ifndef SQLITE_OMIT_AUTHORIZATION + if( sqliteAuthCheck(pParse,SQLITE_DETACH,db->aDb[i].zName,0,0)!=SQLITE_OK ){ + return; + } +#endif /* SQLITE_OMIT_AUTHORIZATION */ sqliteBtreeClose(db->aDb[i].pBt); db->aDb[i].pBt = 0; sqliteFree(db->aDb[i].zName); @@ -128,3 +142,138 @@ void sqliteDetach(Parse *pParse, Token *pDbname){ sqliteResetInternalSchema(db, i); } } + +/* +** Initialize a DbFixer structure. This routine must be called prior +** to passing the structure to one of the sqliteFixAAAA() routines below. +** +** The return value indicates whether or not fixation is required. TRUE +** means we do need to fix the database references, FALSE means we do not. +*/ +int sqliteFixInit( + DbFixer *pFix, /* The fixer to be initialized */ + Parse *pParse, /* Error messages will be written here */ + int iDb, /* This is the database that must must be used */ + const char *zType, /* "view", "trigger", or "index" */ + const Token *pName /* Name of the view, trigger, or index */ +){ + sqlite *db; + + if( iDb<0 || iDb==1 ) return 0; + db = pParse->db; + assert( db->nDb>iDb ); + pFix->pParse = pParse; + pFix->zDb = db->aDb[iDb].zName; + pFix->zType = zType; + pFix->pName = pName; + return 1; +} + +/* +** The following set of routines walk through the parse tree and assign +** a specific database to all table references where the database name +** was left unspecified in the original SQL statement. The pFix structure +** must have been initialized by a prior call to sqliteFixInit(). +** +** These routines are used to make sure that an index, trigger, or +** view in one database does not refer to objects in a different database. +** (Exception: indices, triggers, and views in the TEMP database are +** allowed to refer to anything.) If a reference is explicitly made +** to an object in a different database, an error message is added to +** pParse->zErrMsg and these routines return non-zero. If everything +** checks out, these routines return 0. +*/ +int sqliteFixSrcList( + DbFixer *pFix, /* Context of the fixation */ + SrcList *pList /* The Source list to check and modify */ +){ + int i; + const char *zDb; + + if( pList==0 ) return 0; + zDb = pFix->zDb; + for(i=0; i<pList->nSrc; i++){ + if( pList->a[i].zDatabase==0 ){ + pList->a[i].zDatabase = sqliteStrDup(zDb); + }else if( sqliteStrICmp(pList->a[i].zDatabase,zDb)!=0 ){ + sqliteErrorMsg(pFix->pParse, + "%s %z cannot reference objects in database %s", + pFix->zType, sqliteStrNDup(pFix->pName->z, pFix->pName->n), + pList->a[i].zDatabase); + return 1; + } + if( sqliteFixSelect(pFix, pList->a[i].pSelect) ) return 1; + if( sqliteFixExpr(pFix, pList->a[i].pOn) ) return 1; + } + return 0; +} +int sqliteFixSelect( + DbFixer *pFix, /* Context of the fixation */ + Select *pSelect /* The SELECT statement to be fixed to one database */ +){ + while( pSelect ){ + if( sqliteFixExprList(pFix, pSelect->pEList) ){ + return 1; + } + if( sqliteFixSrcList(pFix, pSelect->pSrc) ){ + return 1; + } + if( sqliteFixExpr(pFix, pSelect->pWhere) ){ + return 1; + } + if( sqliteFixExpr(pFix, pSelect->pHaving) ){ + return 1; + } + pSelect = pSelect->pPrior; + } + return 0; +} +int sqliteFixExpr( + DbFixer *pFix, /* Context of the fixation */ + Expr *pExpr /* The expression to be fixed to one database */ +){ + while( pExpr ){ + if( sqliteFixSelect(pFix, pExpr->pSelect) ){ + return 1; + } + if( sqliteFixExprList(pFix, pExpr->pList) ){ + return 1; + } + if( sqliteFixExpr(pFix, pExpr->pRight) ){ + return 1; + } + pExpr = pExpr->pLeft; + } + return 0; +} +int sqliteFixExprList( + DbFixer *pFix, /* Context of the fixation */ + ExprList *pList /* The expression to be fixed to one database */ +){ + int i; + if( pList==0 ) return 0; + for(i=0; i<pList->nExpr; i++){ + if( sqliteFixExpr(pFix, pList->a[i].pExpr) ){ + return 1; + } + } + return 0; +} +int sqliteFixTriggerStep( + DbFixer *pFix, /* Context of the fixation */ + TriggerStep *pStep /* The trigger step be fixed to one database */ +){ + while( pStep ){ + if( sqliteFixSelect(pFix, pStep->pSelect) ){ + return 1; + } + if( sqliteFixExpr(pFix, pStep->pWhere) ){ + return 1; + } + if( sqliteFixExprList(pFix, pStep->pExprList) ){ + return 1; + } + pStep = pStep->pNext; + } + return 0; +} diff --git a/ext/sqlite/libsqlite/src/btree.c b/ext/sqlite/libsqlite/src/btree.c index 30979d0e31..9f433f4036 100644 --- a/ext/sqlite/libsqlite/src/btree.c +++ b/ext/sqlite/libsqlite/src/btree.c @@ -2477,7 +2477,7 @@ static int balance(Btree *pBt, MemPage *pPage, BtCursor *pCur){ int minV = pgnoNew[i]; int minI = i; for(j=i+1; j<k; j++){ - if( pgnoNew[j]<minV ){ + if( pgnoNew[j]<(unsigned)minV ){ minI = j; minV = pgnoNew[j]; } diff --git a/ext/sqlite/libsqlite/src/btree.h b/ext/sqlite/libsqlite/src/btree.h index 064b7f97dd..1e1b2163d7 100644 --- a/ext/sqlite/libsqlite/src/btree.h +++ b/ext/sqlite/libsqlite/src/btree.h @@ -95,7 +95,7 @@ struct BtCursorOps { #define SQLITE_N_BTREE_META 10 int sqliteBtreeOpen(const char *zFilename, int mode, int nPg, Btree **ppBtree); -int sqliteRBtreeOpen(const char *zFilename, int mode, int nPg, Btree **ppBtree); +int sqliteRbtreeOpen(const char *zFilename, int mode, int nPg, Btree **ppBtree); #define btOps(pBt) (*((BtOps **)(pBt))) #define btCOps(pCur) (*((BtCursorOps **)(pCur))) diff --git a/ext/sqlite/libsqlite/src/btree_rb.c b/ext/sqlite/libsqlite/src/btree_rb.c index d4c63a5b8b..39a842032a 100644 --- a/ext/sqlite/libsqlite/src/btree_rb.c +++ b/ext/sqlite/libsqlite/src/btree_rb.c @@ -580,8 +580,9 @@ int sqliteRbtreeOpen( const char *zFilename, int mode, int nPg, - Rbtree **ppRbtree + Btree **ppBtree ){ + Rbtree **ppRbtree = (Rbtree**)ppBtree; *ppRbtree = (Rbtree *)sqliteMalloc(sizeof(Rbtree)); sqliteHashInit(&(*ppRbtree)->tblHash, SQLITE_HASH_INT, 0); diff --git a/ext/sqlite/libsqlite/src/build.c b/ext/sqlite/libsqlite/src/build.c index 76077ac943..8eea830a0d 100644 --- a/ext/sqlite/libsqlite/src/build.c +++ b/ext/sqlite/libsqlite/src/build.c @@ -118,6 +118,12 @@ void sqliteExec(Parse *pParse){ ** of that table and (optionally) the name of the database ** containing the table. Return NULL if not found. ** +** If zDatabase is 0, all databases are searched for the +** table and the first matching table is returned. (No checking +** for duplicate table names is done.) The search order is +** TEMP first, then MAIN, then any auxiliary databases added +** using the ATTACH command. +** ** See also sqliteLocateTable(). */ Table *sqliteFindTable(sqlite *db, const char *zName, const char *zDatabase){ @@ -137,38 +143,22 @@ Table *sqliteFindTable(sqlite *db, const char *zName, const char *zDatabase){ ** a particular database table given the name ** of that table and (optionally) the name of the database ** containing the table. Return NULL if not found. +** Also leave an error message in pParse->zErrMsg. ** -** If pParse->useDb is not negative, then the table must be -** located in that database. If a different database is specified, -** an error message is generated into pParse->zErrMsg. +** The difference between this routine and sqliteFindTable() +** is that this routine leaves an error message in pParse->zErrMsg +** where sqliteFindTable() does not. */ Table *sqliteLocateTable(Parse *pParse, const char *zName, const char *zDbase){ - sqlite *db; - const char *zUse; Table *p; - db = pParse->db; - if( pParse->useDb<0 ){ - p = sqliteFindTable(db, zName, zDbase); - }else { - assert( pParse->useDb<db->nDb ); - assert( db->aDb[pParse->useDb].pBt!=0 ); - zUse = db->aDb[pParse->useDb].zName; - if( zDbase && pParse->useDb!=1 && sqliteStrICmp(zDbase, zUse)!=0 ){ - sqliteErrorMsg(pParse,"cannot use database %s in this context", zDbase); - return 0; - } - p = sqliteFindTable(db, zName, zUse); - if( p==0 && pParse->useDb==1 && zDbase==0 ){ - p = sqliteFindTable(db, zName, 0); - } - } + + p = sqliteFindTable(pParse->db, zName, zDbase); if( p==0 ){ if( zDbase ){ sqliteErrorMsg(pParse, "no such table: %s.%s", zDbase, zName); - }else if( (pParse->useDb==0 || pParse->useDb>=2) - && sqliteFindTable(db, zName, 0)!=0 ){ + }else if( sqliteFindTable(pParse->db, zName, 0)!=0 ){ sqliteErrorMsg(pParse, "table \"%s\" is not in database \"%s\"", - zName, zUse); + zName, zDbase); }else{ sqliteErrorMsg(pParse, "no such table: %s", zName); } @@ -181,6 +171,12 @@ Table *sqliteLocateTable(Parse *pParse, const char *zName, const char *zDbase){ ** a particular index given the name of that index ** and the name of the database that contains the index. ** Return NULL if not found. +** +** If zDatabase is 0, all databases are searched for the +** table and the first matching index is returned. (No checking +** for duplicate index names is done.) The search order is +** TEMP first, then MAIN, then any auxiliary databases added +** using the ATTACH command. */ Index *sqliteFindIndex(sqlite *db, const char *zName, const char *zDb){ Index *p = 0; @@ -1046,6 +1042,7 @@ void sqliteCreateView( int n; const char *z; Token sEnd; + DbFixer sFix; sqliteStartTable(pParse, pBegin, pName, isTemp, 1); p = pParse->pNewTable; @@ -1053,6 +1050,12 @@ void sqliteCreateView( sqliteSelectDelete(pSelect); return; } + if( sqliteFixInit(&sFix, pParse, p->iDb, "view", pName) + && sqliteFixSelect(&sFix, pSelect) + ){ + sqliteSelectDelete(pSelect); + return; + } /* Make a copy of the entire SELECT statement that defines the view. ** This will force all the Expr.token.z values to be dynamically @@ -1297,12 +1300,8 @@ void sqliteDropTable(Parse *pParse, Token *pName, int isView){ /* Drop all triggers associated with the table being dropped */ pTrigger = pTable->pTrigger; while( pTrigger ){ - SrcList *pNm; assert( pTrigger->iDb==pTable->iDb || pTrigger->iDb==1 ); - pNm = sqliteSrcListAppend(0, 0, 0); - pNm->a[0].zName = sqliteStrDup(pTrigger->name); - pNm->a[0].zDatabase = sqliteStrDup(db->aDb[pTable->iDb].zName); - sqliteDropTrigger(pParse, pNm, 1); + sqliteDropTriggerPtr(pParse, pTrigger, 1); if( pParse->explain ){ pTrigger = pTrigger->pNext; }else{ @@ -1538,10 +1537,17 @@ void sqliteCreateIndex( Index *pIndex; /* The index to be created */ char *zName = 0; int i, j; - Token nullId; /* Fake token for an empty ID list */ + Token nullId; /* Fake token for an empty ID list */ + DbFixer sFix; /* For assigning database names to pTable */ sqlite *db = pParse->db; if( pParse->nErr || sqlite_malloc_failed ) goto exit_create_index; + if( !isTemp && pParse->initFlag + && sqliteFixInit(&sFix, pParse, pParse->iDb, "index", pName) + && sqliteFixSrcList(&sFix, pTable) + ){ + goto exit_create_index; + } /* ** Find the table that is to be indexed. Return early if not found. diff --git a/ext/sqlite/libsqlite/src/copy.c b/ext/sqlite/libsqlite/src/copy.c index ac2d8ecd37..5fca758d63 100644 --- a/ext/sqlite/libsqlite/src/copy.c +++ b/ext/sqlite/libsqlite/src/copy.c @@ -96,7 +96,8 @@ void sqliteCopy( sqliteVdbeAddOp(v, OP_FileColumn, i, 0); } } - sqliteGenerateConstraintChecks(pParse, pTab, 0, 0, 0, 0, onError, addr); + sqliteGenerateConstraintChecks(pParse, pTab, 0, 0, pTab->iPKey>=0, + 0, onError, addr); sqliteCompleteInsertion(pParse, pTab, 0, 0, 0, 0, -1); if( (db->flags & SQLITE_CountRows)!=0 ){ sqliteVdbeAddOp(v, OP_AddImm, 1, 0); /* Increment row count */ diff --git a/ext/sqlite/libsqlite/src/expr.c b/ext/sqlite/libsqlite/src/expr.c index 2a380dd538..d3b4cc69b1 100644 --- a/ext/sqlite/libsqlite/src/expr.c +++ b/ext/sqlite/libsqlite/src/expr.c @@ -191,6 +191,7 @@ SrcList *sqliteSrcListDup(SrcList *p){ if( pNew==0 ) return 0; pNew->nSrc = p->nSrc; for(i=0; i<p->nSrc; i++){ + pNew->a[i].zDatabase = sqliteStrDup(p->a[i].zDatabase); pNew->a[i].zName = sqliteStrDup(p->a[i].zName); pNew->a[i].zAlias = sqliteStrDup(p->a[i].zAlias); pNew->a[i].jointype = p->a[i].jointype; diff --git a/ext/sqlite/libsqlite/src/insert.c b/ext/sqlite/libsqlite/src/insert.c index 313764f51e..07cb30440e 100644 --- a/ext/sqlite/libsqlite/src/insert.c +++ b/ext/sqlite/libsqlite/src/insert.c @@ -293,10 +293,14 @@ void sqliteInsert( } } if( j>=pTab->nCol ){ - sqliteErrorMsg(pParse, "table %S has no column named %s", - pTabList, 0, pColumn->a[i].zName); - pParse->nErr++; - goto insert_cleanup; + if( sqliteIsRowid(pColumn->a[i].zName) ){ + keyColumn = i; + }else{ + sqliteErrorMsg(pParse, "table %S has no column named %s", + pTabList, 0, pColumn->a[i].zName); + pParse->nErr++; + goto insert_cleanup; + } } } } @@ -482,7 +486,8 @@ void sqliteInsert( /* Generate code to check constraints and generate index keys and ** do the insertion. */ - sqliteGenerateConstraintChecks(pParse, pTab, base, 0,0,0,onError,endOfLoop); + sqliteGenerateConstraintChecks(pParse, pTab, base, 0, keyColumn>=0, + 0, onError, endOfLoop); sqliteCompleteInsertion(pParse, pTab, base, 0,0,0, after_triggers ? newIdx : -1); } @@ -660,7 +665,6 @@ void sqliteGenerateConstraintChecks( */ for(i=0; i<nCol; i++){ if( i==pTab->iPKey ){ - /* Fix me: Make sure the INTEGER PRIMARY KEY is not NULL. */ continue; } onError = pTab->aCol[i].notNull; @@ -711,10 +715,8 @@ void sqliteGenerateConstraintChecks( /* If we have an INTEGER PRIMARY KEY, make sure the primary key ** of the new record does not previously exist. Except, if this ** is an UPDATE and the primary key is not changing, that is OK. - ** Also, if the conflict resolution policy is REPLACE, then we - ** can skip this test. */ - if( (recnoChng || !isUpdate) && pTab->iPKey>=0 ){ + if( recnoChng ){ onError = pTab->keyConf; if( overrideError!=OE_Default ){ onError = overrideError; @@ -723,37 +725,49 @@ void sqliteGenerateConstraintChecks( }else if( onError==OE_Default ){ onError = OE_Abort; } - if( onError!=OE_Replace ){ - if( isUpdate ){ - sqliteVdbeAddOp(v, OP_Dup, nCol+1, 1); - sqliteVdbeAddOp(v, OP_Dup, nCol+1, 1); - jumpInst1 = sqliteVdbeAddOp(v, OP_Eq, 0, 0); + + if( isUpdate ){ + sqliteVdbeAddOp(v, OP_Dup, nCol+1, 1); + sqliteVdbeAddOp(v, OP_Dup, nCol+1, 1); + jumpInst1 = sqliteVdbeAddOp(v, OP_Eq, 0, 0); + } + sqliteVdbeAddOp(v, OP_Dup, nCol, 1); + jumpInst2 = sqliteVdbeAddOp(v, OP_NotExists, base, 0); + switch( onError ){ + default: { + onError = OE_Abort; + /* Fall thru into the next case */ } - sqliteVdbeAddOp(v, OP_Dup, nCol, 1); - jumpInst2 = sqliteVdbeAddOp(v, OP_NotExists, base, 0); - switch( onError ){ - case OE_Rollback: - case OE_Abort: - case OE_Fail: { - sqliteVdbeAddOp(v, OP_Halt, SQLITE_CONSTRAINT, onError); - sqliteVdbeChangeP3(v, -1, "PRIMARY KEY must be unique", P3_STATIC); - break; - } - case OE_Ignore: { - sqliteVdbeAddOp(v, OP_Pop, nCol+1+hasTwoRecnos, 0); - sqliteVdbeAddOp(v, OP_Goto, 0, ignoreDest); - break; + case OE_Rollback: + case OE_Abort: + case OE_Fail: { + sqliteVdbeAddOp(v, OP_Halt, SQLITE_CONSTRAINT, onError); + sqliteVdbeChangeP3(v, -1, "PRIMARY KEY must be unique", P3_STATIC); + break; + } + case OE_Replace: { + sqliteGenerateRowIndexDelete(pParse->db, v, pTab, base, 0); + if( isUpdate ){ + sqliteVdbeAddOp(v, OP_Dup, nCol+hasTwoRecnos, 1); + sqliteVdbeAddOp(v, OP_MoveTo, base, 0); } - default: assert(0); + seenReplace = 1; + break; } - contAddr = sqliteVdbeCurrentAddr(v); - sqliteVdbeChangeP2(v, jumpInst2, contAddr); - if( isUpdate ){ - sqliteVdbeChangeP2(v, jumpInst1, contAddr); - sqliteVdbeAddOp(v, OP_Dup, nCol+1, 1); - sqliteVdbeAddOp(v, OP_MoveTo, base, 0); + case OE_Ignore: { + assert( seenReplace==0 ); + sqliteVdbeAddOp(v, OP_Pop, nCol+1+hasTwoRecnos, 0); + sqliteVdbeAddOp(v, OP_Goto, 0, ignoreDest); + break; } } + contAddr = sqliteVdbeCurrentAddr(v); + sqliteVdbeChangeP2(v, jumpInst2, contAddr); + if( isUpdate ){ + sqliteVdbeChangeP2(v, jumpInst1, contAddr); + sqliteVdbeAddOp(v, OP_Dup, nCol+1, 1); + sqliteVdbeAddOp(v, OP_MoveTo, base, 0); + } } /* Test all UNIQUE constraints by creating entries for each UNIQUE @@ -788,6 +802,11 @@ void sqliteGenerateConstraintChecks( }else if( onError==OE_Default ){ onError = OE_Abort; } + if( seenReplace ){ + if( onError==OE_Ignore ) onError = OE_Replace; + else if( onError==OE_Fail ) onError = OE_Abort; + } + /* Check to see if the new index entry will be unique */ sqliteVdbeAddOp(v, OP_Dup, extra+nCol+1+hasTwoRecnos, 1); diff --git a/ext/sqlite/libsqlite/src/main.c b/ext/sqlite/libsqlite/src/main.c index ebba7cbc57..e2d51d87df 100644 --- a/ext/sqlite/libsqlite/src/main.c +++ b/ext/sqlite/libsqlite/src/main.c @@ -80,7 +80,6 @@ int sqliteInitCallback(void *pInit, int argc, char **argv, char **azColName){ sParse.db = pData->db; sParse.initFlag = 1; sParse.iDb = atoi(argv[4]); - sParse.useDb = -1; sParse.newTnum = atoi(argv[2]); sParse.useCallback = 1; sqliteRunParser(&sParse, argv[3], pData->pzErrMsg); @@ -322,7 +321,7 @@ static int sqliteInitOne(sqlite *db, int iDb, char **pzErrMsg){ db->aDb[iDb].pBt = 0; return SQLITE_FORMAT; } - sqliteBtreeSetCacheSize(db->aDb[iDb].pBt, size); + sqliteBtreeSetCacheSize(db->aDb[iDb].pBt, db->cache_size); sqliteBtreeSetSafetyLevel(db->aDb[iDb].pBt, meta[4]==0 ? 2 : meta[4]); /* Read the schema information out of the schema tables @@ -332,7 +331,6 @@ static int sqliteInitOne(sqlite *db, int iDb, char **pzErrMsg){ sParse.xCallback = sqliteInitCallback; sParse.pArg = (void*)&initData; sParse.initFlag = 1; - sParse.useDb = -1; sParse.useCallback = 1; if( iDb==0 ){ sqliteRunParser(&sParse, @@ -442,6 +440,9 @@ sqlite *sqlite_open(const char *zFilename, int mode, char **pzErrMsg){ } /* Open the backend database driver */ + if( zFilename[0]==':' && strcmp(zFilename,":memory:")==0 ){ + db->temp_store = 2; + } rc = sqliteBtreeFactory(db, zFilename, 0, MAX_PAGES, &db->aDb[0].pBt); if( rc!=SQLITE_OK ){ switch( rc ){ @@ -623,7 +624,6 @@ static int sqliteMain( sParse.db = db; sParse.xCallback = xCallback; sParse.pArg = pArg; - sParse.useDb = -1; sParse.useCallback = ppVm==0; if( db->xTrace ) db->xTrace(db->pTraceArg, zSql); sqliteRunParser(&sParse, zSql, pzErrMsg); diff --git a/ext/sqlite/libsqlite/src/os.c b/ext/sqlite/libsqlite/src/os.c index 46f22a4341..d9d16ed0c1 100644 --- a/ext/sqlite/libsqlite/src/os.c +++ b/ext/sqlite/libsqlite/src/os.c @@ -992,6 +992,13 @@ int sqliteOsFileSize(OsFile *id, off_t *pSize){ /* ** Return true (non-zero) if we are running under WinNT, Win2K or WinXP. ** Return false (zero) for Win95, Win98, or WinME. +** +** Here is an interesting observation: Win95, Win98, and WinME lack +** the LockFileEx() API. But we can still statically link against that +** API as long as we don't call it win running Win95/98/ME. A call to +** this routine is used to determine if the host is Win95/98/ME or +** WinNT/2K/XP so that we will know whether or not we can safely call +** the LockFileEx() API. */ int isNT(void){ static osType = 0; /* 0=unknown 1=win95 2=winNT */ @@ -1006,10 +1013,10 @@ int isNT(void){ #endif /* -** Windows file locking notes: [the same/equivalent applies to MacOS] +** Windows file locking notes: [similar issues apply to MacOS] ** -** We cannot use LockFileEx() or UnlockFileEx() because those functions -** are not available under Win95/98/ME. So we use only LockFile() and +** We cannot use LockFileEx() or UnlockFileEx() on Win95/98/ME because +** those functions are not available. So we use only LockFile() and ** UnlockFile(). ** ** LockFile() prevents not just writing but also reading by other processes. @@ -1034,6 +1041,14 @@ int isNT(void){ ** another process jumping into the middle and messing us up. The same ** argument applies to sqliteOsWriteLock(). ** +** On WinNT/2K/XP systems, LockFileEx() and UnlockFileEx() are available, +** which means we can use reader/writer locks. When reader writer locks +** are used, the lock is placed on the same range of bytes that is used +** for probabilistic locking in Win95/98/ME. Hence, the locking scheme +** will support two or more Win95 readers or two or more WinNT readers. +** But a single Win95 reader will lock out all WinNT readers and a single +** WinNT reader will lock out all other Win95 readers. +** ** Note: On MacOS we use the resource fork for locking. ** ** The following #defines specify the range of bytes used for locking. @@ -1096,14 +1111,22 @@ int sqliteOsReadLock(OsFile *id){ int lk = (sqliteRandomInteger() & 0x7ffffff)%N_LOCKBYTE+1; int res; int cnt = 100; - int page = isNT() ? 0xffffffff : 0; - while( cnt-->0 && (res = LockFile(id->h, FIRST_LOCKBYTE, page, 1, 0))==0 ){ + while( cnt-->0 && (res = LockFile(id->h, FIRST_LOCKBYTE, 0, 1, 0))==0 ){ Sleep(1); } if( res ){ - UnlockFile(id->h, FIRST_LOCKBYTE+1, page, N_LOCKBYTE, 0); - res = LockFile(id->h, FIRST_LOCKBYTE+lk, page, 1, 0); - UnlockFile(id->h, FIRST_LOCKBYTE, page, 1, 0); + UnlockFile(id->h, FIRST_LOCKBYTE+1, 0, N_LOCKBYTE, 0); + if( isNT() ){ + OVERLAPPED ovlp; + ovlp.Offset = FIRST_LOCKBYTE+1; + ovlp.OffsetHigh = 0; + ovlp.hEvent = 0; + res = LockFileEx(id->h, LOCKFILE_FAIL_IMMEDIATELY, + 0, N_LOCKBYTE, 0, &ovlp); + }else{ + res = LockFile(id->h, FIRST_LOCKBYTE+lk, 0, 1, 0); + } + UnlockFile(id->h, FIRST_LOCKBYTE, 0, 1, 0); } if( res ){ id->locked = lk; @@ -1191,18 +1214,23 @@ int sqliteOsWriteLock(OsFile *id){ }else{ int res; int cnt = 100; - int page = isNT() ? 0xffffffff : 0; - while( cnt-->0 && (res = LockFile(id->h, FIRST_LOCKBYTE, page, 1, 0))==0 ){ + while( cnt-->0 && (res = LockFile(id->h, FIRST_LOCKBYTE, 0, 1, 0))==0 ){ Sleep(1); } if( res ){ - if( id->locked==0 - || UnlockFile(id->h, FIRST_LOCKBYTE + id->locked, page, 1, 0) ){ - res = LockFile(id->h, FIRST_LOCKBYTE+1, page, N_LOCKBYTE, 0); + if( id->locked>0 ){ + if( isNT() ){ + UnlockFile(id->h, FIRST_LOCKBYTE+1, 0, N_LOCKBYTE, 0); + }else{ + res = UnlockFile(id->h, FIRST_LOCKBYTE + id->locked, 0, 1, 0); + } + } + if( res ){ + res = LockFile(id->h, FIRST_LOCKBYTE+1, 0, N_LOCKBYTE, 0); }else{ res = 0; } - UnlockFile(id->h, FIRST_LOCKBYTE, page, 1, 0); + UnlockFile(id->h, FIRST_LOCKBYTE, 0, 1, 0); } if( res ){ id->locked = -1; @@ -1291,15 +1319,14 @@ int sqliteOsUnlock(OsFile *id){ #endif #if OS_WIN int rc; - int page = isNT() ? 0xffffffff : 0; if( id->locked==0 ){ rc = SQLITE_OK; - }else if( id->locked<0 ){ - UnlockFile(id->h, FIRST_LOCKBYTE+1, page, N_LOCKBYTE, 0); + }else if( isNT() || id->locked<0 ){ + UnlockFile(id->h, FIRST_LOCKBYTE+1, 0, N_LOCKBYTE, 0); rc = SQLITE_OK; id->locked = 0; }else{ - UnlockFile(id->h, FIRST_LOCKBYTE+id->locked, page, 1, 0); + UnlockFile(id->h, FIRST_LOCKBYTE+id->locked, 0, 1, 0); rc = SQLITE_OK; id->locked = 0; } diff --git a/ext/sqlite/libsqlite/src/pager.c b/ext/sqlite/libsqlite/src/pager.c index e133a3cad0..4e9d0c9059 100644 --- a/ext/sqlite/libsqlite/src/pager.c +++ b/ext/sqlite/libsqlite/src/pager.c @@ -496,7 +496,7 @@ static int pager_playback_one_page(Pager *pPager, OsFile *jfd, int format){ if( pgRec.pgno==0 ){ return SQLITE_DONE; } - if( pgRec.pgno>pPager->dbSize ){ + if( pgRec.pgno>(unsigned)pPager->dbSize ){ return SQLITE_OK; } if( format>=JOURNAL_FORMAT_3 ){ @@ -944,7 +944,7 @@ int sqlitepager_truncate(Pager *pPager, Pgno nPage){ rc = pager_errcode(pPager); return rc; } - if( nPage>=pPager->dbSize ){ + if( nPage>=(unsigned)pPager->dbSize ){ return SQLITE_OK; } syncAllPages(pPager); diff --git a/ext/sqlite/libsqlite/src/parse.c b/ext/sqlite/libsqlite/src/parse.c index da1a6f0461..9bc27af745 100644 --- a/ext/sqlite/libsqlite/src/parse.c +++ b/ext/sqlite/libsqlite/src/parse.c @@ -4,7 +4,7 @@ /* First off, code is include which follows the "include" declaration ** in the input file. */ #include <stdio.h> -#line 35 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 35 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" #include "sqliteInt.h" #include "parse.h" @@ -30,7 +30,7 @@ struct LimitVal { struct TrigEvent { int a; IdList * b; }; -#line 34 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 34 "/home/wez/src/php/php4.3-cvs/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. */ @@ -4375,144 +4375,144 @@ static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){ ** inside the C code. */ case 135: -#line 673 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 673 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteExprListDelete((yypminor->yy62));} -#line 4380 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4380 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 157: -#line 520 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 520 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteExprDelete((yypminor->yy334));} -#line 4385 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4385 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 158: -#line 692 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 692 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteExprDelete((yypminor->yy334));} -#line 4390 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4390 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 159: -#line 690 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 690 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteExprListDelete((yypminor->yy62));} -#line 4395 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4395 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 161: -#line 341 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 341 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteSrcListDelete((yypminor->yy335));} -#line 4400 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4400 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 162: -#line 435 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 435 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteExprListDelete((yypminor->yy62));} -#line 4405 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4405 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 163: -#line 440 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 440 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteExprDelete((yypminor->yy334));} -#line 4410 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4410 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 167: -#line 715 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 715 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteIdListDelete((yypminor->yy92));} -#line 4415 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4415 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 168: -#line 717 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 717 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteIdListDelete((yypminor->yy92));} -#line 4420 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4420 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 171: -#line 498 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 498 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteIdListDelete((yypminor->yy92));} -#line 4425 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4425 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 172: -#line 496 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 496 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteIdListDelete((yypminor->yy92));} -#line 4430 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4430 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 174: -#line 490 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 490 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteExprListDelete((yypminor->yy62));} -#line 4435 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4435 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 183: -#line 396 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 396 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteExprDelete((yypminor->yy334));} -#line 4440 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4440 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 185: -#line 276 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 276 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteSelectDelete((yypminor->yy11));} -#line 4445 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4445 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 187: -#line 407 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 407 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteExprListDelete((yypminor->yy62));} -#line 4450 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4450 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 194: -#line 312 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 312 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteExprListDelete((yypminor->yy62));} -#line 4455 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4455 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 195: -#line 310 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 310 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteExprListDelete((yypminor->yy62));} -#line 4460 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4460 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 196: -#line 274 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 274 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteSelectDelete((yypminor->yy11));} -#line 4465 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4465 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 197: -#line 337 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 337 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteSrcListDelete((yypminor->yy335));} -#line 4470 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4470 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 198: -#line 465 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 465 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteExprListDelete((yypminor->yy62));} -#line 4475 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4475 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 200: -#line 411 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 411 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteExprDelete((yypminor->yy334));} -#line 4480 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4480 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 201: -#line 409 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 409 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteExprListDelete((yypminor->yy62));} -#line 4485 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4485 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 203: -#line 339 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 339 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteSrcListDelete((yypminor->yy335));} -#line 4490 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4490 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 207: -#line 807 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 807 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteDeleteTriggerStep((yypminor->yy347));} -#line 4495 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4495 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 208: -#line 799 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 799 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteDeleteTriggerStep((yypminor->yy347));} -#line 4500 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4500 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 210: -#line 783 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 783 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteIdListDelete((yypminor->yy234).b);} -#line 4505 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4505 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 215: -#line 401 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 401 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteIdListDelete((yypminor->yy92));} -#line 4510 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4510 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 217: -#line 459 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 459 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteExprDelete((yypminor->yy334));} -#line 4515 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 4515 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; default: break; /* If no destructor action specified: do nothing */ } @@ -5000,26 +5000,26 @@ static void yy_reduce( /* No destructor defined for SEMI */ break; case 5: -#line 77 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 77 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { sqliteExec(pParse); } -#line 5005 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5005 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for cmd */ break; case 6: -#line 78 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 78 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { sqliteBeginParse(pParse, 1); } -#line 5011 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5011 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for EXPLAIN */ break; case 7: -#line 79 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 79 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { sqliteBeginParse(pParse, 0); } -#line 5017 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5017 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 8: -#line 84 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 84 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteBeginTransaction(pParse,yymsp[0].minor.yy52);} -#line 5022 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5022 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for BEGIN */ /* No destructor defined for trans_opt */ break; @@ -5033,23 +5033,23 @@ static void yy_reduce( /* No destructor defined for nm */ break; case 12: -#line 88 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 88 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteCommitTransaction(pParse);} -#line 5038 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5038 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for COMMIT */ /* No destructor defined for trans_opt */ break; case 13: -#line 89 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 89 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteCommitTransaction(pParse);} -#line 5045 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5045 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for END */ /* No destructor defined for trans_opt */ break; case 14: -#line 90 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 90 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteRollbackTransaction(pParse);} -#line 5052 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5052 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for ROLLBACK */ /* No destructor defined for trans_opt */ break; @@ -5058,41 +5058,41 @@ static void yy_reduce( /* No destructor defined for create_table_args */ break; case 16: -#line 95 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 95 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { sqliteStartTable(pParse,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy210,yymsp[-2].minor.yy52,0); } -#line 5065 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5065 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for TABLE */ break; case 17: -#line 99 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 99 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = 1;} -#line 5071 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5071 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for TEMP */ break; case 18: -#line 100 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 100 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = 0;} -#line 5077 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5077 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 19: -#line 101 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 101 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { sqliteEndTable(pParse,&yymsp[0].minor.yy0,0); } -#line 5084 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5084 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LP */ /* No destructor defined for columnlist */ /* No destructor defined for conslist_opt */ break; case 20: -#line 104 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 104 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { sqliteEndTable(pParse,0,yymsp[0].minor.yy11); sqliteSelectDelete(yymsp[0].minor.yy11); } -#line 5095 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5095 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for AS */ break; case 21: @@ -5109,72 +5109,72 @@ static void yy_reduce( /* No destructor defined for carglist */ break; case 24: -#line 116 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 116 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteAddColumn(pParse,&yymsp[0].minor.yy210);} -#line 5114 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5114 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 25: -#line 122 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 122 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy210 = yymsp[0].minor.yy0;} -#line 5119 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5119 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 26: -#line 138 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 138 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy210 = yymsp[0].minor.yy0;} -#line 5124 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5124 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 27: -#line 139 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 139 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy210 = yymsp[0].minor.yy0;} -#line 5129 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5129 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 28: -#line 144 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 144 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy210 = yymsp[0].minor.yy0;} -#line 5134 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5134 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 29: -#line 145 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 145 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy210 = yymsp[0].minor.yy0;} -#line 5139 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5139 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 30: -#line 146 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 146 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy210 = yymsp[0].minor.yy0;} -#line 5144 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5144 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 31: break; case 32: -#line 149 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 149 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteAddColumnType(pParse,&yymsp[0].minor.yy210,&yymsp[0].minor.yy210);} -#line 5151 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5151 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 33: -#line 150 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 150 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteAddColumnType(pParse,&yymsp[-3].minor.yy210,&yymsp[0].minor.yy0);} -#line 5156 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5156 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LP */ /* No destructor defined for signed */ break; case 34: -#line 152 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 152 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteAddColumnType(pParse,&yymsp[-5].minor.yy210,&yymsp[0].minor.yy0);} -#line 5163 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5163 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LP */ /* No destructor defined for signed */ /* No destructor defined for COMMA */ /* No destructor defined for signed */ break; case 35: -#line 154 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 154 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy210 = yymsp[0].minor.yy210;} -#line 5172 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5172 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 36: -#line 155 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 155 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy210 = yymsp[-1].minor.yy210;} -#line 5177 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5177 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for ids */ break; case 37: @@ -5203,54 +5203,54 @@ static void yy_reduce( /* No destructor defined for ccons */ break; case 44: -#line 163 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 163 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);} -#line 5208 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5208 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DEFAULT */ break; case 45: -#line 164 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 164 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);} -#line 5214 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5214 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DEFAULT */ break; case 46: -#line 165 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 165 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);} -#line 5220 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5220 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DEFAULT */ break; case 47: -#line 166 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 166 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);} -#line 5226 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5226 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DEFAULT */ /* No destructor defined for PLUS */ break; case 48: -#line 167 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 167 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,1);} -#line 5233 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5233 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DEFAULT */ /* No destructor defined for MINUS */ break; case 49: -#line 168 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 168 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);} -#line 5240 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5240 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DEFAULT */ break; case 50: -#line 169 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 169 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);} -#line 5246 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5246 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DEFAULT */ /* No destructor defined for PLUS */ break; case 51: -#line 170 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 170 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,1);} -#line 5253 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5253 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DEFAULT */ /* No destructor defined for MINUS */ break; @@ -5263,24 +5263,24 @@ static void yy_reduce( /* No destructor defined for onconf */ break; case 54: -#line 177 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 177 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteAddNotNull(pParse, yymsp[0].minor.yy52);} -#line 5268 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5268 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for NOT */ /* No destructor defined for NULL */ break; case 55: -#line 178 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 178 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteAddPrimaryKey(pParse,0,yymsp[0].minor.yy52);} -#line 5275 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5275 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for PRIMARY */ /* No destructor defined for KEY */ /* No destructor defined for sortorder */ break; case 56: -#line 179 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 179 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteCreateIndex(pParse,0,0,0,yymsp[0].minor.yy52,0,0,0);} -#line 5283 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5283 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for UNIQUE */ break; case 57: @@ -5291,117 +5291,117 @@ static void yy_reduce( /* No destructor defined for onconf */ break; case 58: -#line 182 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 182 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteCreateForeignKey(pParse,0,&yymsp[-2].minor.yy210,yymsp[-1].minor.yy92,yymsp[0].minor.yy52);} -#line 5296 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5296 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for REFERENCES */ break; case 59: -#line 183 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 183 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteDeferForeignKey(pParse,yymsp[0].minor.yy52);} -#line 5302 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5302 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 60: -#line 184 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 184 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { sqliteAddCollateType(pParse, sqliteCollateType(yymsp[0].minor.yy210.z, yymsp[0].minor.yy210.n)); } -#line 5309 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5309 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for COLLATE */ break; case 61: -#line 194 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 194 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = OE_Restrict * 0x010101; } -#line 5315 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5315 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 62: -#line 195 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 195 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = (yymsp[-1].minor.yy52 & yymsp[0].minor.yy279.mask) | yymsp[0].minor.yy279.value; } -#line 5320 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5320 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 63: -#line 197 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 197 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy279.value = 0; yygotominor.yy279.mask = 0x000000; } -#line 5325 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5325 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for MATCH */ /* No destructor defined for nm */ break; case 64: -#line 198 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 198 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy279.value = yymsp[0].minor.yy52; yygotominor.yy279.mask = 0x0000ff; } -#line 5332 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5332 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for ON */ /* No destructor defined for DELETE */ break; case 65: -#line 199 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 199 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy279.value = yymsp[0].minor.yy52<<8; yygotominor.yy279.mask = 0x00ff00; } -#line 5339 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5339 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for ON */ /* No destructor defined for UPDATE */ break; case 66: -#line 200 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 200 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy279.value = yymsp[0].minor.yy52<<16; yygotominor.yy279.mask = 0xff0000; } -#line 5346 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5346 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for ON */ /* No destructor defined for INSERT */ break; case 67: -#line 202 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 202 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = OE_SetNull; } -#line 5353 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5353 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for SET */ /* No destructor defined for NULL */ break; case 68: -#line 203 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 203 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = OE_SetDflt; } -#line 5360 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5360 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for SET */ /* No destructor defined for DEFAULT */ break; case 69: -#line 204 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 204 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = OE_Cascade; } -#line 5367 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5367 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for CASCADE */ break; case 70: -#line 205 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 205 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = OE_Restrict; } -#line 5373 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5373 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for RESTRICT */ break; case 71: -#line 207 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 207 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = yymsp[0].minor.yy52;} -#line 5379 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5379 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for NOT */ /* No destructor defined for DEFERRABLE */ break; case 72: -#line 208 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 208 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = yymsp[0].minor.yy52;} -#line 5386 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5386 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DEFERRABLE */ break; case 73: -#line 210 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 210 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = 0;} -#line 5392 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5392 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 74: -#line 211 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 211 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = 1;} -#line 5397 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5397 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for INITIALLY */ /* No destructor defined for DEFERRED */ break; case 75: -#line 212 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 212 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = 0;} -#line 5404 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5404 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for INITIALLY */ /* No destructor defined for IMMEDIATE */ break; @@ -5428,18 +5428,18 @@ static void yy_reduce( /* No destructor defined for nm */ break; case 82: -#line 224 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 224 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteAddPrimaryKey(pParse,yymsp[-2].minor.yy92,yymsp[0].minor.yy52);} -#line 5433 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5433 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for PRIMARY */ /* No destructor defined for KEY */ /* No destructor defined for LP */ /* No destructor defined for RP */ break; case 83: -#line 226 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 226 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteCreateIndex(pParse,0,0,yymsp[-2].minor.yy92,yymsp[0].minor.yy52,0,0,0);} -#line 5442 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5442 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for UNIQUE */ /* No destructor defined for LP */ /* No destructor defined for RP */ @@ -5450,12 +5450,12 @@ static void yy_reduce( /* No destructor defined for onconf */ break; case 85: -#line 229 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 229 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { sqliteCreateForeignKey(pParse, yymsp[-6].minor.yy92, &yymsp[-3].minor.yy210, yymsp[-2].minor.yy92, yymsp[-1].minor.yy52); sqliteDeferForeignKey(pParse, yymsp[0].minor.yy52); } -#line 5458 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5458 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for FOREIGN */ /* No destructor defined for KEY */ /* No destructor defined for LP */ @@ -5463,108 +5463,108 @@ static void yy_reduce( /* No destructor defined for REFERENCES */ break; case 86: -#line 234 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 234 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = 0;} -#line 5468 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5468 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 87: -#line 235 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 235 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = yymsp[0].minor.yy52;} -#line 5473 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5473 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 88: -#line 243 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 243 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = OE_Default; } -#line 5478 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5478 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 89: -#line 244 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 244 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = yymsp[0].minor.yy52; } -#line 5483 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5483 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for ON */ /* No destructor defined for CONFLICT */ break; case 90: -#line 245 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 245 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = OE_Default; } -#line 5490 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5490 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 91: -#line 246 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 246 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = yymsp[0].minor.yy52; } -#line 5495 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5495 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for OR */ break; case 92: -#line 247 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 247 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = OE_Rollback; } -#line 5501 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5501 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for ROLLBACK */ break; case 93: -#line 248 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 248 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = OE_Abort; } -#line 5507 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5507 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for ABORT */ break; case 94: -#line 249 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 249 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = OE_Fail; } -#line 5513 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5513 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for FAIL */ break; case 95: -#line 250 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 250 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = OE_Ignore; } -#line 5519 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5519 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for IGNORE */ break; case 96: -#line 251 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 251 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = OE_Replace; } -#line 5525 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5525 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for REPLACE */ break; case 97: -#line 255 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 255 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteDropTable(pParse,&yymsp[0].minor.yy210,0);} -#line 5531 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5531 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DROP */ /* No destructor defined for TABLE */ break; case 98: -#line 259 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 259 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { sqliteCreateView(pParse, &yymsp[-5].minor.yy0, &yymsp[-2].minor.yy210, yymsp[0].minor.yy11, yymsp[-4].minor.yy52); } -#line 5540 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5540 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for VIEW */ /* No destructor defined for AS */ break; case 99: -#line 262 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 262 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { sqliteDropTable(pParse, &yymsp[0].minor.yy210, 1); } -#line 5549 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5549 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DROP */ /* No destructor defined for VIEW */ break; case 100: -#line 268 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 268 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { sqliteSelect(pParse, yymsp[0].minor.yy11, SRT_Callback, 0, 0, 0, 0); sqliteSelectDelete(yymsp[0].minor.yy11); } -#line 5559 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5559 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 101: -#line 278 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 278 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy11 = yymsp[0].minor.yy11;} -#line 5564 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5564 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 102: -#line 279 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 279 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { if( yymsp[0].minor.yy11 ){ yymsp[0].minor.yy11->op = yymsp[-1].minor.yy52; @@ -5572,137 +5572,137 @@ static void yy_reduce( } yygotominor.yy11 = yymsp[0].minor.yy11; } -#line 5575 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5575 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 103: -#line 287 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 287 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = TK_UNION;} -#line 5580 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5580 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for UNION */ break; case 104: -#line 288 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 288 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = TK_ALL;} -#line 5586 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5586 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for UNION */ /* No destructor defined for ALL */ break; case 105: -#line 289 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 289 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = TK_INTERSECT;} -#line 5593 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5593 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for INTERSECT */ break; case 106: -#line 290 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 290 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = TK_EXCEPT;} -#line 5599 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5599 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for EXCEPT */ break; case 107: -#line 292 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 292 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy11 = sqliteSelectNew(yymsp[-6].minor.yy62,yymsp[-5].minor.yy335,yymsp[-4].minor.yy334,yymsp[-3].minor.yy62,yymsp[-2].minor.yy334,yymsp[-1].minor.yy62,yymsp[-7].minor.yy52,yymsp[0].minor.yy280.limit,yymsp[0].minor.yy280.offset); } -#line 5607 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5607 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for SELECT */ break; case 108: -#line 300 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 300 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = 1;} -#line 5613 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5613 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DISTINCT */ break; case 109: -#line 301 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 301 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = 0;} -#line 5619 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5619 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for ALL */ break; case 110: -#line 302 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 302 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = 0;} -#line 5625 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5625 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 111: -#line 313 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 313 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy62 = yymsp[-1].minor.yy62;} -#line 5630 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5630 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for COMMA */ break; case 112: -#line 314 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 314 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy62 = 0;} -#line 5636 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5636 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 113: -#line 315 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 315 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy62 = sqliteExprListAppend(yymsp[-2].minor.yy62,yymsp[-1].minor.yy334,yymsp[0].minor.yy210.n?&yymsp[0].minor.yy210:0); } -#line 5643 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5643 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 114: -#line 318 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 318 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy62 = sqliteExprListAppend(yymsp[-1].minor.yy62, sqliteExpr(TK_ALL, 0, 0, 0), 0); } -#line 5650 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5650 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for STAR */ break; case 115: -#line 321 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 321 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { Expr *pRight = sqliteExpr(TK_ALL, 0, 0, 0); Expr *pLeft = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy210); yygotominor.yy62 = sqliteExprListAppend(yymsp[-3].minor.yy62, sqliteExpr(TK_DOT, pLeft, pRight, 0), 0); } -#line 5660 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5660 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DOT */ /* No destructor defined for STAR */ break; case 116: -#line 331 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 331 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy210 = yymsp[0].minor.yy210; } -#line 5667 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5667 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for AS */ break; case 117: -#line 332 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 332 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy210 = yymsp[0].minor.yy210; } -#line 5673 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5673 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 118: -#line 333 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 333 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy210.n = 0; } -#line 5678 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5678 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 119: -#line 345 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 345 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy335 = sqliteMalloc(sizeof(*yygotominor.yy335));} -#line 5683 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5683 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 120: -#line 346 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 346 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy335 = yymsp[0].minor.yy335;} -#line 5688 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5688 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for FROM */ break; case 121: -#line 351 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 351 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy335 = yymsp[-1].minor.yy335; if( yygotominor.yy335 && yygotominor.yy335->nSrc>0 ) yygotominor.yy335->a[yygotominor.yy335->nSrc-1].jointype = yymsp[0].minor.yy52; } -#line 5697 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5697 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 122: -#line 355 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 355 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy335 = 0;} -#line 5702 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5702 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 123: -#line 356 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 356 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy335 = sqliteSrcListAppend(yymsp[-5].minor.yy335,&yymsp[-4].minor.yy210,&yymsp[-3].minor.yy210); if( yymsp[-2].minor.yy210.n ) sqliteSrcListAddAlias(yygotominor.yy335,&yymsp[-2].minor.yy210); @@ -5715,10 +5715,10 @@ static void yy_reduce( else { sqliteIdListDelete(yymsp[0].minor.yy92); } } } -#line 5718 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5718 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 124: -#line 368 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 368 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy335 = sqliteSrcListAppend(yymsp[-6].minor.yy335,0,0); yygotominor.yy335->a[yygotominor.yy335->nSrc-1].pSelect = yymsp[-4].minor.yy11; @@ -5732,318 +5732,318 @@ static void yy_reduce( else { sqliteIdListDelete(yymsp[0].minor.yy92); } } } -#line 5735 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5735 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LP */ /* No destructor defined for RP */ break; case 125: -#line 383 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 383 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy210.z=0; yygotominor.yy210.n=0;} -#line 5742 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5742 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 126: -#line 384 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 384 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy210 = yymsp[0].minor.yy210;} -#line 5747 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5747 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DOT */ break; case 127: -#line 388 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 388 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = JT_INNER; } -#line 5753 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5753 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for COMMA */ break; case 128: -#line 389 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 389 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = JT_INNER; } -#line 5759 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5759 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for JOIN */ break; case 129: -#line 390 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 390 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = sqliteJoinType(pParse,&yymsp[-1].minor.yy0,0,0); } -#line 5765 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5765 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for JOIN */ break; case 130: -#line 391 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 391 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = sqliteJoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy210,0); } -#line 5771 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5771 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for JOIN */ break; case 131: -#line 393 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 393 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = sqliteJoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy210,&yymsp[-1].minor.yy210); } -#line 5777 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5777 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for JOIN */ break; case 132: -#line 397 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 397 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = yymsp[0].minor.yy334;} -#line 5783 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5783 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for ON */ break; case 133: -#line 398 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 398 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = 0;} -#line 5789 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5789 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 134: -#line 402 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 402 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy92 = yymsp[-1].minor.yy92;} -#line 5794 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5794 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for USING */ /* No destructor defined for LP */ /* No destructor defined for RP */ break; case 135: -#line 403 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 403 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy92 = 0;} -#line 5802 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5802 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 136: -#line 413 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 413 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy62 = 0;} -#line 5807 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5807 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 137: -#line 414 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 414 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy62 = yymsp[0].minor.yy62;} -#line 5812 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5812 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for ORDER */ /* No destructor defined for BY */ break; case 138: -#line 415 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 415 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy62 = sqliteExprListAppend(yymsp[-4].minor.yy62,yymsp[-2].minor.yy334,0); if( yygotominor.yy62 ) yygotominor.yy62->a[yygotominor.yy62->nExpr-1].sortOrder = yymsp[-1].minor.yy52+yymsp[0].minor.yy52; } -#line 5822 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5822 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for COMMA */ break; case 139: -#line 419 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 419 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy62 = sqliteExprListAppend(0,yymsp[-2].minor.yy334,0); if( yygotominor.yy62 ) yygotominor.yy62->a[0].sortOrder = yymsp[-1].minor.yy52+yymsp[0].minor.yy52; } -#line 5831 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5831 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 140: -#line 423 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 423 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = yymsp[0].minor.yy334;} -#line 5836 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5836 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 141: -#line 428 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 428 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = SQLITE_SO_ASC;} -#line 5841 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5841 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for ASC */ break; case 142: -#line 429 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 429 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = SQLITE_SO_DESC;} -#line 5847 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5847 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DESC */ break; case 143: -#line 430 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 430 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = SQLITE_SO_ASC;} -#line 5853 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5853 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 144: -#line 431 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 431 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = SQLITE_SO_UNK;} -#line 5858 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5858 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 145: -#line 432 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 432 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = sqliteCollateType(yymsp[0].minor.yy210.z, yymsp[0].minor.yy210.n);} -#line 5863 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5863 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for COLLATE */ break; case 146: -#line 436 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 436 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy62 = 0;} -#line 5869 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5869 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 147: -#line 437 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 437 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy62 = yymsp[0].minor.yy62;} -#line 5874 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5874 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for GROUP */ /* No destructor defined for BY */ break; case 148: -#line 441 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 441 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = 0;} -#line 5881 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5881 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 149: -#line 442 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 442 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = yymsp[0].minor.yy334;} -#line 5886 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5886 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for HAVING */ break; case 150: -#line 445 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 445 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy280.limit = -1; yygotominor.yy280.offset = 0;} -#line 5892 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5892 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 151: -#line 446 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 446 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy280.limit = atoi(yymsp[0].minor.yy0.z); yygotominor.yy280.offset = 0;} -#line 5897 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5897 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LIMIT */ break; case 152: -#line 448 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 448 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy280.limit = atoi(yymsp[-2].minor.yy0.z); yygotominor.yy280.offset = atoi(yymsp[0].minor.yy0.z);} -#line 5903 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5903 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LIMIT */ /* No destructor defined for OFFSET */ break; case 153: -#line 450 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 450 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy280.limit = atoi(yymsp[0].minor.yy0.z); yygotominor.yy280.offset = atoi(yymsp[-2].minor.yy0.z);} -#line 5910 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5910 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LIMIT */ /* No destructor defined for COMMA */ break; case 154: -#line 454 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 454 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { sqliteDeleteFrom(pParse, sqliteSrcListAppend(0,&yymsp[-2].minor.yy210,&yymsp[-1].minor.yy210), yymsp[0].minor.yy334); } -#line 5919 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5919 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DELETE */ /* No destructor defined for FROM */ break; case 155: -#line 461 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 461 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = 0;} -#line 5926 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5926 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 156: -#line 462 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 462 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = yymsp[0].minor.yy334;} -#line 5931 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5931 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for WHERE */ break; case 157: -#line 470 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 470 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteUpdate(pParse,sqliteSrcListAppend(0,&yymsp[-4].minor.yy210,&yymsp[-3].minor.yy210),yymsp[-1].minor.yy62,yymsp[0].minor.yy334,yymsp[-5].minor.yy52);} -#line 5937 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5937 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for UPDATE */ /* No destructor defined for SET */ break; case 158: -#line 473 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 473 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy62 = sqliteExprListAppend(yymsp[-4].minor.yy62,yymsp[0].minor.yy334,&yymsp[-2].minor.yy210);} -#line 5944 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5944 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for COMMA */ /* No destructor defined for EQ */ break; case 159: -#line 474 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 474 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy62 = sqliteExprListAppend(0,yymsp[0].minor.yy334,&yymsp[-2].minor.yy210);} -#line 5951 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5951 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for EQ */ break; case 160: -#line 480 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 480 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteInsert(pParse, sqliteSrcListAppend(0,&yymsp[-6].minor.yy210,&yymsp[-5].minor.yy210), yymsp[-1].minor.yy62, 0, yymsp[-4].minor.yy92, yymsp[-8].minor.yy52);} -#line 5957 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5957 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for INTO */ /* No destructor defined for VALUES */ /* No destructor defined for LP */ /* No destructor defined for RP */ break; case 161: -#line 482 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 482 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteInsert(pParse, sqliteSrcListAppend(0,&yymsp[-3].minor.yy210,&yymsp[-2].minor.yy210), 0, yymsp[0].minor.yy11, yymsp[-1].minor.yy92, yymsp[-5].minor.yy52);} -#line 5966 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5966 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for INTO */ break; case 162: -#line 485 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 485 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = yymsp[0].minor.yy52;} -#line 5972 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5972 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for INSERT */ break; case 163: -#line 486 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 486 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = OE_Replace;} -#line 5978 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5978 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for REPLACE */ break; case 164: -#line 492 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 492 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy62 = sqliteExprListAppend(yymsp[-2].minor.yy62,yymsp[0].minor.yy334,0);} -#line 5984 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5984 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for COMMA */ break; case 165: -#line 493 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 493 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy62 = sqliteExprListAppend(0,yymsp[0].minor.yy334,0);} -#line 5990 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5990 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 166: -#line 500 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 500 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy92 = 0;} -#line 5995 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 5995 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 167: -#line 501 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 501 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy92 = yymsp[-1].minor.yy92;} -#line 6000 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6000 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LP */ /* No destructor defined for RP */ break; case 168: -#line 502 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 502 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy92 = sqliteIdListAppend(yymsp[-2].minor.yy92,&yymsp[0].minor.yy210);} -#line 6007 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6007 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for COMMA */ break; case 169: -#line 503 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 503 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy92 = sqliteIdListAppend(0,&yymsp[0].minor.yy210);} -#line 6013 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6013 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 170: -#line 522 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 522 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = yymsp[-1].minor.yy334; sqliteExprSpan(yygotominor.yy334,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); } -#line 6018 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6018 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 171: -#line 523 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 523 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_NULL, 0, 0, &yymsp[0].minor.yy0);} -#line 6023 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6023 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 172: -#line 524 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 524 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy0);} -#line 6028 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6028 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 173: -#line 525 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 525 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy0);} -#line 6033 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6033 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 174: -#line 526 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 526 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { Expr *temp1 = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy210); Expr *temp2 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy210); yygotominor.yy334 = sqliteExpr(TK_DOT, temp1, temp2, 0); } -#line 6042 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6042 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DOT */ break; case 175: -#line 531 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 531 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { Expr *temp1 = sqliteExpr(TK_ID, 0, 0, &yymsp[-4].minor.yy210); Expr *temp2 = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy210); @@ -6051,124 +6051,124 @@ static void yy_reduce( Expr *temp4 = sqliteExpr(TK_DOT, temp2, temp3, 0); yygotominor.yy334 = sqliteExpr(TK_DOT, temp1, temp4, 0); } -#line 6054 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6054 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DOT */ /* No destructor defined for DOT */ break; case 176: -#line 539 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 539 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = yymsp[-1].minor.yy334; ExprSetProperty(yygotominor.yy334,EP_Oracle8Join);} -#line 6061 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6061 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for ORACLE_OUTER_JOIN */ break; case 177: -#line 540 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 540 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_INTEGER, 0, 0, &yymsp[0].minor.yy0);} -#line 6067 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6067 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 178: -#line 541 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 541 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_FLOAT, 0, 0, &yymsp[0].minor.yy0);} -#line 6072 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6072 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 179: -#line 542 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 542 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_STRING, 0, 0, &yymsp[0].minor.yy0);} -#line 6077 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6077 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 180: -#line 543 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 543 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExprFunction(yymsp[-1].minor.yy62, &yymsp[-3].minor.yy0); sqliteExprSpan(yygotominor.yy334,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0); } -#line 6085 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6085 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LP */ break; case 181: -#line 547 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 547 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExprFunction(0, &yymsp[-3].minor.yy0); sqliteExprSpan(yygotominor.yy334,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0); } -#line 6094 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6094 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LP */ /* No destructor defined for STAR */ break; case 182: -#line 551 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 551 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_AND, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6101 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6101 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for AND */ break; case 183: -#line 552 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 552 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_OR, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6107 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6107 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for OR */ break; case 184: -#line 553 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 553 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_LT, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6113 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6113 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LT */ break; case 185: -#line 554 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 554 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_GT, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6119 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6119 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for GT */ break; case 186: -#line 555 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 555 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_LE, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6125 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6125 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LE */ break; case 187: -#line 556 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 556 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_GE, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6131 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6131 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for GE */ break; case 188: -#line 557 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 557 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_NE, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6137 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6137 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for NE */ break; case 189: -#line 558 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 558 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_EQ, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6143 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6143 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for EQ */ break; case 190: -#line 559 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 559 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_BITAND, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6149 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6149 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for BITAND */ break; case 191: -#line 560 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 560 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_BITOR, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6155 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6155 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for BITOR */ break; case 192: -#line 561 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 561 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_LSHIFT, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6161 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6161 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LSHIFT */ break; case 193: -#line 562 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 562 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_RSHIFT, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6167 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6167 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for RSHIFT */ break; case 194: -#line 563 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 563 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { ExprList *pList = sqliteExprListAppend(0, yymsp[0].minor.yy334, 0); pList = sqliteExprListAppend(pList, yymsp[-2].minor.yy334, 0); @@ -6176,10 +6176,10 @@ static void yy_reduce( if( yygotominor.yy334 ) yygotominor.yy334->op = yymsp[-1].minor.yy52; sqliteExprSpan(yygotominor.yy334, &yymsp[-2].minor.yy334->span, &yymsp[0].minor.yy334->span); } -#line 6179 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6179 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 195: -#line 570 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 570 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { ExprList *pList = sqliteExprListAppend(0, yymsp[0].minor.yy334, 0); pList = sqliteExprListAppend(pList, yymsp[-3].minor.yy334, 0); @@ -6188,144 +6188,144 @@ static void yy_reduce( yygotominor.yy334 = sqliteExpr(TK_NOT, yygotominor.yy334, 0, 0); sqliteExprSpan(yygotominor.yy334,&yymsp[-3].minor.yy334->span,&yymsp[0].minor.yy334->span); } -#line 6191 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6191 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for NOT */ break; case 196: -#line 579 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 579 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = TK_LIKE;} -#line 6197 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6197 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LIKE */ break; case 197: -#line 580 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 580 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy52 = TK_GLOB;} -#line 6203 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6203 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for GLOB */ break; case 198: -#line 581 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 581 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_PLUS, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6209 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6209 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for PLUS */ break; case 199: -#line 582 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 582 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_MINUS, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6215 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6215 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for MINUS */ break; case 200: -#line 583 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 583 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_STAR, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6221 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6221 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for STAR */ break; case 201: -#line 584 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 584 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_SLASH, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6227 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6227 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for SLASH */ break; case 202: -#line 585 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 585 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_REM, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6233 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6233 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for REM */ break; case 203: -#line 586 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 586 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = sqliteExpr(TK_CONCAT, yymsp[-2].minor.yy334, yymsp[0].minor.yy334, 0);} -#line 6239 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6239 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for CONCAT */ break; case 204: -#line 587 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 587 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_ISNULL, yymsp[-1].minor.yy334, 0, 0); sqliteExprSpan(yygotominor.yy334,&yymsp[-1].minor.yy334->span,&yymsp[0].minor.yy0); } -#line 6248 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6248 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 205: -#line 591 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 591 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_ISNULL, yymsp[-2].minor.yy334, 0, 0); sqliteExprSpan(yygotominor.yy334,&yymsp[-2].minor.yy334->span,&yymsp[0].minor.yy0); } -#line 6256 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6256 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for IS */ break; case 206: -#line 595 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 595 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_NOTNULL, yymsp[-1].minor.yy334, 0, 0); sqliteExprSpan(yygotominor.yy334,&yymsp[-1].minor.yy334->span,&yymsp[0].minor.yy0); } -#line 6265 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6265 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 207: -#line 599 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 599 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_NOTNULL, yymsp[-2].minor.yy334, 0, 0); sqliteExprSpan(yygotominor.yy334,&yymsp[-2].minor.yy334->span,&yymsp[0].minor.yy0); } -#line 6273 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6273 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for NOT */ break; case 208: -#line 603 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 603 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_NOTNULL, yymsp[-3].minor.yy334, 0, 0); sqliteExprSpan(yygotominor.yy334,&yymsp[-3].minor.yy334->span,&yymsp[0].minor.yy0); } -#line 6282 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6282 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for IS */ /* No destructor defined for NOT */ break; case 209: -#line 607 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 607 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_NOT, yymsp[0].minor.yy334, 0, 0); sqliteExprSpan(yygotominor.yy334,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy334->span); } -#line 6292 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6292 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 210: -#line 611 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 611 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_BITNOT, yymsp[0].minor.yy334, 0, 0); sqliteExprSpan(yygotominor.yy334,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy334->span); } -#line 6300 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6300 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 211: -#line 615 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 615 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_UMINUS, yymsp[0].minor.yy334, 0, 0); sqliteExprSpan(yygotominor.yy334,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy334->span); } -#line 6308 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6308 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 212: -#line 619 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 619 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_UPLUS, yymsp[0].minor.yy334, 0, 0); sqliteExprSpan(yygotominor.yy334,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy334->span); } -#line 6316 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6316 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 213: -#line 623 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 623 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_SELECT, 0, 0, 0); if( yygotominor.yy334 ) yygotominor.yy334->pSelect = yymsp[-1].minor.yy11; sqliteExprSpan(yygotominor.yy334,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); } -#line 6325 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6325 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 214: -#line 628 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 628 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { ExprList *pList = sqliteExprListAppend(0, yymsp[-2].minor.yy334, 0); pList = sqliteExprListAppend(pList, yymsp[0].minor.yy334, 0); @@ -6333,12 +6333,12 @@ static void yy_reduce( if( yygotominor.yy334 ) yygotominor.yy334->pList = pList; sqliteExprSpan(yygotominor.yy334,&yymsp[-4].minor.yy334->span,&yymsp[0].minor.yy334->span); } -#line 6336 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6336 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for BETWEEN */ /* No destructor defined for AND */ break; case 215: -#line 635 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 635 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { ExprList *pList = sqliteExprListAppend(0, yymsp[-2].minor.yy334, 0); pList = sqliteExprListAppend(pList, yymsp[0].minor.yy334, 0); @@ -6347,283 +6347,283 @@ static void yy_reduce( yygotominor.yy334 = sqliteExpr(TK_NOT, yygotominor.yy334, 0, 0); sqliteExprSpan(yygotominor.yy334,&yymsp[-5].minor.yy334->span,&yymsp[0].minor.yy334->span); } -#line 6350 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6350 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for NOT */ /* No destructor defined for BETWEEN */ /* No destructor defined for AND */ break; case 216: -#line 643 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 643 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_IN, yymsp[-4].minor.yy334, 0, 0); if( yygotominor.yy334 ) yygotominor.yy334->pList = yymsp[-1].minor.yy62; sqliteExprSpan(yygotominor.yy334,&yymsp[-4].minor.yy334->span,&yymsp[0].minor.yy0); } -#line 6362 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6362 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for IN */ /* No destructor defined for LP */ break; case 217: -#line 648 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 648 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_IN, yymsp[-4].minor.yy334, 0, 0); if( yygotominor.yy334 ) yygotominor.yy334->pSelect = yymsp[-1].minor.yy11; sqliteExprSpan(yygotominor.yy334,&yymsp[-4].minor.yy334->span,&yymsp[0].minor.yy0); } -#line 6373 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6373 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for IN */ /* No destructor defined for LP */ break; case 218: -#line 653 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 653 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_IN, yymsp[-5].minor.yy334, 0, 0); if( yygotominor.yy334 ) yygotominor.yy334->pList = yymsp[-1].minor.yy62; yygotominor.yy334 = sqliteExpr(TK_NOT, yygotominor.yy334, 0, 0); sqliteExprSpan(yygotominor.yy334,&yymsp[-5].minor.yy334->span,&yymsp[0].minor.yy0); } -#line 6385 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6385 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for NOT */ /* No destructor defined for IN */ /* No destructor defined for LP */ break; case 219: -#line 659 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 659 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_IN, yymsp[-5].minor.yy334, 0, 0); if( yygotominor.yy334 ) yygotominor.yy334->pSelect = yymsp[-1].minor.yy11; yygotominor.yy334 = sqliteExpr(TK_NOT, yygotominor.yy334, 0, 0); sqliteExprSpan(yygotominor.yy334,&yymsp[-5].minor.yy334->span,&yymsp[0].minor.yy0); } -#line 6398 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6398 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for NOT */ /* No destructor defined for IN */ /* No destructor defined for LP */ break; case 220: -#line 667 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 667 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_CASE, yymsp[-3].minor.yy334, yymsp[-1].minor.yy334, 0); if( yygotominor.yy334 ) yygotominor.yy334->pList = yymsp[-2].minor.yy62; sqliteExprSpan(yygotominor.yy334, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0); } -#line 6410 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6410 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 221: -#line 674 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 674 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy62 = sqliteExprListAppend(yymsp[-4].minor.yy62, yymsp[-2].minor.yy334, 0); yygotominor.yy62 = sqliteExprListAppend(yygotominor.yy62, yymsp[0].minor.yy334, 0); } -#line 6418 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6418 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for WHEN */ /* No destructor defined for THEN */ break; case 222: -#line 678 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 678 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy62 = sqliteExprListAppend(0, yymsp[-2].minor.yy334, 0); yygotominor.yy62 = sqliteExprListAppend(yygotominor.yy62, yymsp[0].minor.yy334, 0); } -#line 6428 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6428 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for WHEN */ /* No destructor defined for THEN */ break; case 223: -#line 683 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 683 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = yymsp[0].minor.yy334;} -#line 6435 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6435 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for ELSE */ break; case 224: -#line 684 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 684 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = 0;} -#line 6441 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6441 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 225: -#line 686 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 686 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = yymsp[0].minor.yy334;} -#line 6446 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6446 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 226: -#line 687 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 687 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = 0;} -#line 6451 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6451 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 227: -#line 695 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 695 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy62 = sqliteExprListAppend(yymsp[-2].minor.yy62,yymsp[0].minor.yy334,0);} -#line 6456 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6456 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for COMMA */ break; case 228: -#line 696 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 696 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy62 = sqliteExprListAppend(0,yymsp[0].minor.yy334,0);} -#line 6462 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6462 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 229: -#line 697 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 697 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = yymsp[0].minor.yy334;} -#line 6467 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6467 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 230: -#line 698 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 698 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy334 = 0;} -#line 6472 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6472 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 231: -#line 703 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 703 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-5].minor.yy210, &yymsp[-4].minor.yy210); if( yymsp[-9].minor.yy52!=OE_None ) yymsp[-9].minor.yy52 = yymsp[0].minor.yy52; if( yymsp[-9].minor.yy52==OE_Default) yymsp[-9].minor.yy52 = OE_Abort; sqliteCreateIndex(pParse, &yymsp[-7].minor.yy210, pSrc, yymsp[-2].minor.yy92, yymsp[-9].minor.yy52, yymsp[-10].minor.yy52, &yymsp[-11].minor.yy0, &yymsp[-1].minor.yy0); } -#line 6482 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6482 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for INDEX */ /* No destructor defined for ON */ /* No destructor defined for LP */ break; case 232: -#line 711 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 711 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = OE_Abort; } -#line 6490 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6490 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for UNIQUE */ break; case 233: -#line 712 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 712 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = OE_None; } -#line 6496 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6496 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 234: -#line 720 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 720 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy92 = 0;} -#line 6501 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6501 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 235: -#line 721 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 721 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy92 = yymsp[-1].minor.yy92;} -#line 6506 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6506 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LP */ /* No destructor defined for RP */ break; case 236: -#line 722 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 722 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy92 = sqliteIdListAppend(yymsp[-2].minor.yy92,&yymsp[0].minor.yy210);} -#line 6513 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6513 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for COMMA */ break; case 237: -#line 723 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 723 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy92 = sqliteIdListAppend(0,&yymsp[0].minor.yy210);} -#line 6519 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6519 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 238: -#line 724 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 724 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy210 = yymsp[-1].minor.yy210;} -#line 6524 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6524 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for sortorder */ break; case 239: -#line 729 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 729 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { sqliteDropIndex(pParse, sqliteSrcListAppend(0,&yymsp[-1].minor.yy210,&yymsp[0].minor.yy210)); } -#line 6532 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6532 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DROP */ /* No destructor defined for INDEX */ break; case 240: -#line 737 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 737 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteCopy(pParse,sqliteSrcListAppend(0,&yymsp[-6].minor.yy210,&yymsp[-5].minor.yy210),&yymsp[-3].minor.yy210,&yymsp[0].minor.yy0,yymsp[-7].minor.yy52);} -#line 6539 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6539 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for COPY */ /* No destructor defined for FROM */ /* No destructor defined for USING */ /* No destructor defined for DELIMITERS */ break; case 241: -#line 739 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 739 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteCopy(pParse,sqliteSrcListAppend(0,&yymsp[-3].minor.yy210,&yymsp[-2].minor.yy210),&yymsp[0].minor.yy210,0,yymsp[-4].minor.yy52);} -#line 6548 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6548 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for COPY */ /* No destructor defined for FROM */ break; case 242: -#line 743 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 743 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteVacuum(pParse,0);} -#line 6555 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6555 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for VACUUM */ break; case 243: -#line 744 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 744 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqliteVacuum(pParse,&yymsp[0].minor.yy210);} -#line 6561 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6561 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for VACUUM */ break; case 244: -#line 748 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 748 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqlitePragma(pParse,&yymsp[-2].minor.yy210,&yymsp[0].minor.yy210,0);} -#line 6567 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6567 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for PRAGMA */ /* No destructor defined for EQ */ break; case 245: -#line 749 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 749 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqlitePragma(pParse,&yymsp[-2].minor.yy210,&yymsp[0].minor.yy0,0);} -#line 6574 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6574 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for PRAGMA */ /* No destructor defined for EQ */ break; case 246: -#line 750 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 750 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqlitePragma(pParse,&yymsp[-2].minor.yy210,&yymsp[0].minor.yy210,0);} -#line 6581 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6581 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for PRAGMA */ /* No destructor defined for EQ */ break; case 247: -#line 751 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 751 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqlitePragma(pParse,&yymsp[-2].minor.yy210,&yymsp[0].minor.yy210,1);} -#line 6588 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6588 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for PRAGMA */ /* No destructor defined for EQ */ break; case 248: -#line 752 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 752 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqlitePragma(pParse,&yymsp[-3].minor.yy210,&yymsp[-1].minor.yy210,0);} -#line 6595 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6595 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for PRAGMA */ /* No destructor defined for LP */ /* No destructor defined for RP */ break; case 249: -#line 753 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 753 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {sqlitePragma(pParse,&yymsp[0].minor.yy210,&yymsp[0].minor.yy210,0);} -#line 6603 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6603 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for PRAGMA */ break; case 250: -#line 754 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 754 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy210 = yymsp[0].minor.yy210;} -#line 6609 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6609 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for plus_opt */ break; case 251: -#line 755 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 755 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy210 = yymsp[0].minor.yy210;} -#line 6615 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6615 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for MINUS */ break; case 252: -#line 756 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 756 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy210 = yymsp[0].minor.yy0;} -#line 6621 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6621 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 253: -#line 757 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 757 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy210 = yymsp[0].minor.yy0;} -#line 6626 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6626 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 254: /* No destructor defined for PLUS */ @@ -6631,133 +6631,133 @@ static void yy_reduce( case 255: break; case 256: -#line 763 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 763 "/home/wez/src/php/php4.3-cvs/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.yy347, &all); } -#line 6641 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6641 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for trigger_decl */ /* No destructor defined for BEGIN */ break; case 257: -#line 771 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 771 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { SrcList *pTab = sqliteSrcListAppend(0, &yymsp[-3].minor.yy210, &yymsp[-2].minor.yy210); sqliteBeginTrigger(pParse, &yymsp[-7].minor.yy210, yymsp[-6].minor.yy52, yymsp[-5].minor.yy234.a, yymsp[-5].minor.yy234.b, pTab, yymsp[-1].minor.yy52, yymsp[0].minor.yy270, yymsp[-9].minor.yy52); } -#line 6651 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6651 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for TRIGGER */ /* No destructor defined for ON */ break; case 258: -#line 777 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 777 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = TK_BEFORE; } -#line 6658 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6658 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for BEFORE */ break; case 259: -#line 778 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 778 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = TK_AFTER; } -#line 6664 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6664 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for AFTER */ break; case 260: -#line 779 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 779 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = TK_INSTEAD;} -#line 6670 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6670 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for INSTEAD */ /* No destructor defined for OF */ break; case 261: -#line 780 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 780 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = TK_BEFORE; } -#line 6677 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6677 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 262: -#line 784 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 784 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy234.a = TK_DELETE; yygotominor.yy234.b = 0; } -#line 6682 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6682 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DELETE */ break; case 263: -#line 785 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 785 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy234.a = TK_INSERT; yygotominor.yy234.b = 0; } -#line 6688 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6688 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for INSERT */ break; case 264: -#line 786 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 786 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy234.a = TK_UPDATE; yygotominor.yy234.b = 0;} -#line 6694 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6694 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for UPDATE */ break; case 265: -#line 787 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 787 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy234.a = TK_UPDATE; yygotominor.yy234.b = yymsp[0].minor.yy92; } -#line 6700 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6700 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for UPDATE */ /* No destructor defined for OF */ break; case 266: -#line 790 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 790 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = TK_ROW; } -#line 6707 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6707 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 267: -#line 791 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 791 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = TK_ROW; } -#line 6712 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6712 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for FOR */ /* No destructor defined for EACH */ /* No destructor defined for ROW */ break; case 268: -#line 792 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 792 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy52 = TK_STATEMENT; } -#line 6720 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6720 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for FOR */ /* No destructor defined for EACH */ /* No destructor defined for STATEMENT */ break; case 269: -#line 795 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 795 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy270 = 0; } -#line 6728 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6728 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 270: -#line 796 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 796 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy270 = yymsp[0].minor.yy334; } -#line 6733 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6733 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for WHEN */ break; case 271: -#line 800 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 800 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yymsp[-2].minor.yy347->pNext = yymsp[0].minor.yy347; yygotominor.yy347 = yymsp[-2].minor.yy347; } -#line 6742 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6742 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for SEMI */ break; case 272: -#line 804 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 804 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy347 = 0; } -#line 6748 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6748 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 273: -#line 810 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 810 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy347 = sqliteTriggerUpdateStep(&yymsp[-3].minor.yy210, yymsp[-1].minor.yy62, yymsp[0].minor.yy334, yymsp[-4].minor.yy52); } -#line 6753 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6753 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for UPDATE */ /* No destructor defined for SET */ break; case 274: -#line 815 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 815 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy347 = sqliteTriggerInsertStep(&yymsp[-5].minor.yy210, yymsp[-4].minor.yy92, yymsp[-1].minor.yy62, 0, yymsp[-7].minor.yy52);} -#line 6760 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6760 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for INSERT */ /* No destructor defined for INTO */ /* No destructor defined for VALUES */ @@ -6765,86 +6765,86 @@ static void yy_reduce( /* No destructor defined for RP */ break; case 275: -#line 818 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 818 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy347 = sqliteTriggerInsertStep(&yymsp[-2].minor.yy210, yymsp[-1].minor.yy92, 0, yymsp[0].minor.yy11, yymsp[-4].minor.yy52);} -#line 6770 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6770 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for INSERT */ /* No destructor defined for INTO */ break; case 276: -#line 822 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 822 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy347 = sqliteTriggerDeleteStep(&yymsp[-1].minor.yy210, yymsp[0].minor.yy334);} -#line 6777 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6777 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DELETE */ /* No destructor defined for FROM */ break; case 277: -#line 825 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 825 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" {yygotominor.yy347 = sqliteTriggerSelectStep(yymsp[0].minor.yy11); } -#line 6784 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6784 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" break; case 278: -#line 828 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 828 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_RAISE, 0, 0, 0); yygotominor.yy334->iColumn = OE_Ignore; sqliteExprSpan(yygotominor.yy334, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0); } -#line 6793 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6793 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LP */ /* No destructor defined for IGNORE */ break; case 279: -#line 833 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 833 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy210); yygotominor.yy334->iColumn = OE_Rollback; sqliteExprSpan(yygotominor.yy334, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0); } -#line 6804 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6804 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LP */ /* No destructor defined for ROLLBACK */ /* No destructor defined for COMMA */ break; case 280: -#line 838 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 838 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy210); yygotominor.yy334->iColumn = OE_Abort; sqliteExprSpan(yygotominor.yy334, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0); } -#line 6816 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6816 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LP */ /* No destructor defined for ABORT */ /* No destructor defined for COMMA */ break; case 281: -#line 843 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 843 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { yygotominor.yy334 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy210); yygotominor.yy334->iColumn = OE_Fail; sqliteExprSpan(yygotominor.yy334, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0); } -#line 6828 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6828 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for LP */ /* No destructor defined for FAIL */ /* No destructor defined for COMMA */ break; case 282: -#line 850 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 850 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { - sqliteDropTrigger(pParse,sqliteSrcListAppend(0,&yymsp[-1].minor.yy210,&yymsp[0].minor.yy210),0); + sqliteDropTrigger(pParse,sqliteSrcListAppend(0,&yymsp[-1].minor.yy210,&yymsp[0].minor.yy210)); } -#line 6838 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6838 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DROP */ /* No destructor defined for TRIGGER */ break; case 283: -#line 855 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 855 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { sqliteAttach(pParse, &yymsp[-2].minor.yy210, &yymsp[0].minor.yy210); } -#line 6847 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6847 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for ATTACH */ /* No destructor defined for database_kw_opt */ /* No destructor defined for AS */ @@ -6855,11 +6855,11 @@ static void yy_reduce( case 285: break; case 286: -#line 863 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 863 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" { sqliteDetach(pParse, &yymsp[0].minor.yy210); } -#line 6862 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6862 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" /* No destructor defined for DETACH */ /* No destructor defined for database_kw_opt */ break; @@ -6904,7 +6904,7 @@ static void yy_syntax_error( ){ sqliteParserARG_FETCH; #define TOKEN (yyminor.yy0) -#line 23 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.y" +#line 23 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.y" if( pParse->zErrMsg==0 ){ if( TOKEN.z[0] ){ @@ -6916,7 +6916,7 @@ static void yy_syntax_error( } pParse->nErr++; -#line 6919 "/home/wez/src/php/pear/PECL/sqlite/libsqlite/src/parse.c" +#line 6919 "/home/wez/src/php/php4.3-cvs/ext/sqlite/libsqlite/src/parse.c" sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument variable */ } diff --git a/ext/sqlite/libsqlite/src/parse.y b/ext/sqlite/libsqlite/src/parse.y index f319cc3922..b434fb08a7 100644 --- a/ext/sqlite/libsqlite/src/parse.y +++ b/ext/sqlite/libsqlite/src/parse.y @@ -848,7 +848,7 @@ expr(A) ::= RAISE(X) LP FAIL COMMA nm(Z) RP(Y). { //////////////////////// DROP TRIGGER statement ////////////////////////////// cmd ::= DROP TRIGGER nm(X) dbnm(D). { - sqliteDropTrigger(pParse,sqliteSrcListAppend(0,&X,&D),0); + sqliteDropTrigger(pParse,sqliteSrcListAppend(0,&X,&D)); } //////////////////////// ATTACH DATABASE file AS name ///////////////////////// diff --git a/ext/sqlite/libsqlite/src/pragma.c b/ext/sqlite/libsqlite/src/pragma.c index 13f2bf71c4..252aa502db 100644 --- a/ext/sqlite/libsqlite/src/pragma.c +++ b/ext/sqlite/libsqlite/src/pragma.c @@ -421,6 +421,7 @@ void sqlitePragma(Parse *pParse, Token *pLeft, Token *pRight, int minusFlag){ static VdbeOp indexListPreface[] = { { OP_ColumnName, 0, 0, "seq"}, { OP_ColumnName, 1, 0, "name"}, + { OP_ColumnName, 2, 0, "file"}, }; sqliteVdbeAddOpList(v, ArraySize(indexListPreface), indexListPreface); @@ -430,7 +431,10 @@ void sqlitePragma(Parse *pParse, Token *pLeft, Token *pRight, int minusFlag){ sqliteVdbeAddOp(v, OP_Integer, i, 0); sqliteVdbeAddOp(v, OP_String, 0, 0); sqliteVdbeChangeP3(v, -1, db->aDb[i].zName, P3_STATIC); - sqliteVdbeAddOp(v, OP_Callback, 2, 0); + sqliteVdbeAddOp(v, OP_String, 0, 0); + sqliteVdbeChangeP3(v, -1, sqliteBtreeGetFilename(db->aDb[i].pBt), + P3_STATIC); + sqliteVdbeAddOp(v, OP_Callback, 3, 0); } }else /* diff --git a/ext/sqlite/libsqlite/src/select.c b/ext/sqlite/libsqlite/src/select.c index 9bed641be7..03153bcd8a 100644 --- a/ext/sqlite/libsqlite/src/select.c +++ b/ext/sqlite/libsqlite/src/select.c @@ -1657,6 +1657,7 @@ static int flattenSubquery( if( pSrc->a[iFrom].pTab && pSrc->a[iFrom].pTab->isTransient ){ sqliteDeleteTable(0, pSrc->a[iFrom].pTab); } + sqliteFree(pSrc->a[iFrom].zDatabase); sqliteFree(pSrc->a[iFrom].zName); sqliteFree(pSrc->a[iFrom].zAlias); if( nSubSrc>1 ){ diff --git a/ext/sqlite/libsqlite/src/sqlite.h.in b/ext/sqlite/libsqlite/src/sqlite.h.in index c3980043f0..d4e22e34da 100644 --- a/ext/sqlite/libsqlite/src/sqlite.h.in +++ b/ext/sqlite/libsqlite/src/sqlite.h.in @@ -391,6 +391,7 @@ int sqlite_get_table_vprintf( va_list ap /* Arguments to the format string */ ); char *sqlite_mprintf(const char*,...); +char *sqlite_vmprintf(const char*, va_list); /* ** Windows systems should call this routine to free memory that @@ -554,6 +555,9 @@ int sqlite_set_authorizer( #define SQLITE_SELECT 21 /* NULL NULL */ #define SQLITE_TRANSACTION 22 /* NULL NULL */ #define SQLITE_UPDATE 23 /* Table Name Column Name */ +#define SQLITE_ATTACH 24 /* Filename NULL */ +#define SQLITE_DETACH 25 /* Database Name NULL */ + /* ** The return value of the authorization function should be one of the diff --git a/ext/sqlite/libsqlite/src/sqlite.w32.h b/ext/sqlite/libsqlite/src/sqlite.w32.h index 453b6fd168..778ef3d1c1 100644 --- a/ext/sqlite/libsqlite/src/sqlite.w32.h +++ b/ext/sqlite/libsqlite/src/sqlite.w32.h @@ -28,7 +28,7 @@ extern "C" { /* ** The version of the SQLite library. */ -#define SQLITE_VERSION "2.8.2" +#define SQLITE_VERSION "2.8.3" /* ** The version string is also compiled into the library so that a program @@ -42,7 +42,7 @@ extern const char sqlite_version[]; ** UTF-8 encoded data. The SQLITE_ISO8859 macro is defined if the ** iso8859 encoded should be used. */ -#define SQLITE_iso8859 1 +#define SQLITE_ISO8859 1 /* ** The following constant holds one of two strings, "UTF-8" or "iso8859", @@ -391,6 +391,7 @@ int sqlite_get_table_vprintf( va_list ap /* Arguments to the format string */ ); char *sqlite_mprintf(const char*,...); +char *sqlite_vmprintf(const char*, va_list); /* ** Windows systems should call this routine to free memory that @@ -554,6 +555,9 @@ int sqlite_set_authorizer( #define SQLITE_SELECT 21 /* NULL NULL */ #define SQLITE_TRANSACTION 22 /* NULL NULL */ #define SQLITE_UPDATE 23 /* Table Name Column Name */ +#define SQLITE_ATTACH 24 /* Filename NULL */ +#define SQLITE_DETACH 25 /* Database Name NULL */ + /* ** The return value of the authorization function should be one of the diff --git a/ext/sqlite/libsqlite/src/sqliteInt.h b/ext/sqlite/libsqlite/src/sqliteInt.h index 6c0713d96b..994a4ca247 100644 --- a/ext/sqlite/libsqlite/src/sqliteInt.h +++ b/ext/sqlite/libsqlite/src/sqliteInt.h @@ -132,8 +132,13 @@ typedef unsigned INTPTR_TYPE uptr; /* Big enough to hold a pointer */ ** multi-megabyte records are OK. If your needs are different, you can ** change this define and recompile to increase or decrease the record ** size. +** +** The 16777198 is computed as follows: 238 bytes of payload on the +** original pages plus 16448 overflow pages each holding 1020 bytes of +** data. */ #define MAX_BYTES_PER_ROW 1048576 +/* #define MAX_BYTES_PER_ROW 16777198 */ /* ** If memory allocation problems are found, recompile with @@ -236,7 +241,7 @@ struct Db { Hash idxHash; /* All (named) indices indexed by name */ Hash trigHash; /* All triggers indexed by name */ Hash aFKey; /* Foreign keys indexed by to-table */ - u8 inTrans; /* True if a transaction is underway for this backend */ + u8 inTrans; /* 0: not writable. 1: Transaction. 2: Checkpoint */ u16 flags; /* Flags associated with this database */ }; @@ -852,7 +857,6 @@ struct Parse { ** while generating expressions. Normally false */ u8 iDb; /* Index of database whose schema is being parsed */ u8 useCallback; /* True if callbacks should be used to report results */ - int useDb; /* Restrict references to tables in this database */ int newTnum; /* Table number to use when reparsing CREATE TABLEs */ int nErr; /* Number of errors seen */ int nTab; /* Number of previously allocated VDBE cursors */ @@ -893,12 +897,14 @@ struct Trigger { char *name; /* The name of the trigger */ char *table; /* The table or view to which the trigger applies */ u8 iDb; /* Database containing this trigger */ + u8 iTabDb; /* Database containing Trigger.table */ u8 op; /* One of TK_DELETE, TK_UPDATE, TK_INSERT */ u8 tr_tm; /* One of TK_BEFORE, TK_AFTER */ Expr *pWhen; /* The WHEN clause of the expresion (may be NULL) */ IdList *pColumns; /* If this is an UPDATE OF <column-list> trigger, the <column-list> is stored here */ int foreach; /* One of TK_ROW or TK_STATEMENT */ + Token nameToken; /* Token containing zName. Use during parsing only */ TriggerStep *step_list; /* Link list of trigger program steps */ Trigger *pNext; /* Next trigger associated with the table */ @@ -996,6 +1002,19 @@ struct TriggerStack { }; /* +** The following structure contains information used by the sqliteFix... +** routines as they walk the parse tree to make database references +** explicit. +*/ +typedef struct DbFixer DbFixer; +struct DbFixer { + Parse *pParse; /* The parsing context. Error messages written here */ + const char *zDb; /* Make sure all objects are contained in this database */ + const char *zType; /* Type of the container - used for error messages */ + const Token *pName; /* Name of the container - used for error messages */ +}; + +/* * This global flag is set for performance testing of triggers. When it is set * SQLite will perform the overhead of building new and old trigger references * even when no triggers exist @@ -1135,7 +1154,8 @@ int sqliteSafetyCheck(sqlite*); void sqliteChangeCookie(sqlite*, Vdbe*); void sqliteBeginTrigger(Parse*, Token*,int,int,IdList*,SrcList*,int,Expr*,int); void sqliteFinishTrigger(Parse*, TriggerStep*, Token*); -void sqliteDropTrigger(Parse*, SrcList*, int); +void sqliteDropTrigger(Parse*, SrcList*); +void sqliteDropTriggerPtr(Parse*, Trigger*, int); int sqliteTriggersExist(Parse* , Trigger* , int , int , int, ExprList*); int sqliteCodeRowTrigger(Parse*, int, ExprList*, int, Table *, int, int, int, int); @@ -1164,3 +1184,9 @@ void sqliteAttach(Parse*, Token*, Token*); void sqliteDetach(Parse*, Token*); int sqliteBtreeFactory(const sqlite *db, const char *zFilename, int mode, int nPg, Btree **ppBtree); +int sqliteFixInit(DbFixer*, Parse*, int, const char*, const Token*); +int sqliteFixSrcList(DbFixer*, SrcList*); +int sqliteFixSelect(DbFixer*, Select*); +int sqliteFixExpr(DbFixer*, Expr*); +int sqliteFixExprList(DbFixer*, ExprList*); +int sqliteFixTriggerStep(DbFixer*, TriggerStep*); diff --git a/ext/sqlite/libsqlite/src/trigger.c b/ext/sqlite/libsqlite/src/trigger.c index 227e471534..97891b2cb9 100644 --- a/ext/sqlite/libsqlite/src/trigger.c +++ b/ext/sqlite/libsqlite/src/trigger.c @@ -54,6 +54,7 @@ void sqliteBeginTrigger( char *zName = 0; /* Name of the trigger */ sqlite *db = pParse->db; int iDb; /* When database to store the trigger in */ + DbFixer sFix; /* Check that: ** 1. the trigger name does not already exist. @@ -64,6 +65,12 @@ void sqliteBeginTrigger( */ if( sqlite_malloc_failed ) goto trigger_cleanup; assert( pTableName->nSrc==1 ); + if( pParse->initFlag + && sqliteFixInit(&sFix, pParse, pParse->iDb, "trigger", pName) + && sqliteFixSrcList(&sFix, pTableName) + ){ + goto trigger_cleanup; + } tab = sqliteSrcListLookup(pParse, pTableName); if( !tab ){ goto trigger_cleanup; @@ -127,11 +134,13 @@ void sqliteBeginTrigger( nt->table = sqliteStrDup(pTableName->a[0].zName); if( sqlite_malloc_failed ) goto trigger_cleanup; nt->iDb = iDb; + nt->iTabDb = tab->iDb; nt->op = op; nt->tr_tm = tr_tm; nt->pWhen = sqliteExprDup(pWhen); nt->pColumns = sqliteIdListDup(pColumns); nt->foreach = foreach; + sqliteTokenCopy(&nt->nameToken,pName); assert( pParse->pNewTrigger==0 ); pParse->pNewTrigger = nt; @@ -151,8 +160,9 @@ void sqliteFinishTrigger( TriggerStep *pStepList, /* The triggered program */ Token *pAll /* Token that describes the complete CREATE TRIGGER */ ){ - Trigger *nt; /* The trigger whose construction is finishing up */ + Trigger *nt = 0; /* The trigger whose construction is finishing up */ sqlite *db = pParse->db; /* The database */ + DbFixer sFix; if( pParse->nErr || pParse->pNewTrigger==0 ) goto triggerfinish_cleanup; nt = pParse->pNewTrigger; @@ -162,6 +172,10 @@ void sqliteFinishTrigger( pStepList->pTrig = nt; pStepList = pStepList->pNext; } + if( sqliteFixInit(&sFix, pParse, nt->iDb, "trigger", &nt->nameToken) + && sqliteFixTriggerStep(&sFix, nt->step_list) ){ + goto triggerfinish_cleanup; + } /* if we are not initializing, and this trigger is not on a TEMP table, ** build the sqlite_master entry @@ -184,7 +198,7 @@ void sqliteFinishTrigger( v = sqliteGetVdbe(pParse); if( v==0 ) goto triggerfinish_cleanup; sqliteBeginWriteOperation(pParse, 0, 0); - sqliteOpenMasterTable(v, nt->iDb==1); + sqliteOpenMasterTable(v, nt->iDb); addr = sqliteVdbeAddOpList(v, ArraySize(insertTrig), insertTrig); sqliteVdbeChangeP3(v, addr+2, nt->name, 0); sqliteVdbeChangeP3(v, addr+3, nt->table, 0); @@ -200,15 +214,15 @@ void sqliteFinishTrigger( Table *pTab; sqliteHashInsert(&db->aDb[nt->iDb].trigHash, nt->name, strlen(nt->name)+1, nt); - pTab = sqliteLocateTable(pParse, nt->table, 0); + pTab = sqliteLocateTable(pParse, nt->table, db->aDb[nt->iTabDb].zName); assert( pTab!=0 ); nt->pNext = pTab->pTrigger; pTab->pTrigger = nt; - }else{ - sqliteDeleteTrigger(nt); + nt = 0; } triggerfinish_cleanup: + sqliteDeleteTrigger(nt); sqliteDeleteTrigger(pParse->pNewTrigger); pParse->pNewTrigger = 0; sqliteDeleteTriggerStep(pStepList); @@ -353,24 +367,25 @@ void sqliteDeleteTrigger(Trigger *pTrigger){ sqliteFree(pTrigger->table); sqliteExprDelete(pTrigger->pWhen); sqliteIdListDelete(pTrigger->pColumns); + if( pTrigger->nameToken.dyn ) sqliteFree((char*)pTrigger->nameToken.z); sqliteFree(pTrigger); } /* * This function is called to drop a trigger from the database schema. * - * This may be called directly from the parser, or from within - * sqliteDropTable(). In the latter case the "nested" argument is true. + * This may be called directly from the parser and therefore identifies + * the trigger by name. The sqliteDropTriggerPtr() routine does the + * same job as this routine except it take a spointer to the trigger + * instead of the trigger name. * * Note that this function does not delete the trigger entirely. Instead it * removes it from the internal schema and places it in the trigDrop hash * table. This is so that the trigger can be restored into the database schema * if the transaction is rolled back. */ -void sqliteDropTrigger(Parse *pParse, SrcList *pName, int nested){ +void sqliteDropTrigger(Parse *pParse, SrcList *pName){ Trigger *pTrigger; - Table *pTable; - Vdbe *v; int i; const char *zDb; const char *zName; @@ -392,13 +407,29 @@ void sqliteDropTrigger(Parse *pParse, SrcList *pName, int nested){ sqliteErrorMsg(pParse, "no such trigger: %S", pName, 0); goto drop_trigger_cleanup; } + sqliteDropTriggerPtr(pParse, pTrigger, 0); + +drop_trigger_cleanup: + sqliteSrcListDelete(pName); +} + +/* +** Drop a trigger given a pointer to that trigger. If nested is false, +** then also generate code to remove the trigger from the SQLITE_MASTER +** table. +*/ +void sqliteDropTriggerPtr(Parse *pParse, Trigger *pTrigger, int nested){ + Table *pTable; + Vdbe *v; + sqlite *db = pParse->db; + assert( pTrigger->iDb<db->nDb ); if( pTrigger->iDb>=2 ){ sqliteErrorMsg(pParse, "triggers may not be removed from " "auxiliary database %s", db->aDb[pTrigger->iDb].zName); - goto drop_trigger_cleanup; + return; } - pTable = sqliteFindTable(db, pTrigger->table, db->aDb[pTrigger->iDb].zName); + pTable = sqliteFindTable(db, pTrigger->table,db->aDb[pTrigger->iTabDb].zName); assert(pTable); assert( pTable->iDb==pTrigger->iDb || pTrigger->iDb==1 ); #ifndef SQLITE_OMIT_AUTHORIZATION @@ -409,7 +440,7 @@ void sqliteDropTrigger(Parse *pParse, SrcList *pName, int nested){ if( pTrigger->iDb ) code = SQLITE_DROP_TEMP_TRIGGER; if( sqliteAuthCheck(pParse, code, pTrigger->name, pTable->zName, zDb) || sqliteAuthCheck(pParse, SQLITE_DELETE, zTab, 0, zDb) ){ - goto drop_trigger_cleanup; + return; } } #endif @@ -432,7 +463,7 @@ void sqliteDropTrigger(Parse *pParse, SrcList *pName, int nested){ sqliteBeginWriteOperation(pParse, 0, 0); sqliteOpenMasterTable(v, pTrigger->iDb); base = sqliteVdbeAddOpList(v, ArraySize(dropTrigger), dropTrigger); - sqliteVdbeChangeP3(v, base+1, zName, 0); + sqliteVdbeChangeP3(v, base+1, pTrigger->name, 0); if( pTrigger->iDb==0 ){ sqliteChangeCookie(db, v); } @@ -444,6 +475,8 @@ void sqliteDropTrigger(Parse *pParse, SrcList *pName, int nested){ * If this is not an "explain", then delete the trigger structure. */ if( !pParse->explain ){ + const char *zName = pTrigger->name; + int nName = strlen(zName); if( pTable->pTrigger == pTrigger ){ pTable->pTrigger = pTrigger->pNext; }else{ @@ -460,9 +493,6 @@ void sqliteDropTrigger(Parse *pParse, SrcList *pName, int nested){ sqliteHashInsert(&(db->aDb[pTrigger->iDb].trigHash), zName, nName+1, 0); sqliteDeleteTrigger(pTrigger); } - -drop_trigger_cleanup: - sqliteSrcListDelete(pName); } /* @@ -532,6 +562,36 @@ int sqliteTriggersExist( } /* +** Convert the pStep->target token into a SrcList and return a pointer +** to that SrcList. +** +** This routine adds a specific database name, if needed, to the target when +** forming the SrcList. This prevents a trigger in one database from +** referring to a target in another database. An exception is when the +** trigger is in TEMP in which case it can refer to any other database it +** wants. +*/ +static SrcList *targetSrcList( + Parse *pParse, /* The parsing context */ + TriggerStep *pStep /* The trigger containing the target token */ +){ + Token sDb; /* Dummy database name token */ + int iDb; /* Index of the database to use */ + SrcList *pSrc; /* SrcList to be returned */ + + iDb = pStep->pTrig->iDb; + if( iDb==0 || iDb>=2 ){ + assert( iDb<pParse->db->nDb ); + sDb.z = pParse->db->aDb[iDb].zName; + sDb.n = strlen(sDb.z); + pSrc = sqliteSrcListAppend(0, &sDb, &pStep->target); + } else { + pSrc = sqliteSrcListAppend(0, &pStep->target, 0); + } + return pSrc; +} + +/* ** Generate VDBE code for zero or more statements inside the body of a ** trigger. */ @@ -545,11 +605,9 @@ static int codeTriggerProgram( while( pTriggerStep ){ int saveNTab = pParse->nTab; - int saveUseDb = pParse->useDb; + orconf = (orconfin == OE_Default)?pTriggerStep->orconf:orconfin; pParse->trigStack->orconf = orconf; - pParse->useDb = pTriggerStep->pTrig->iDb; - if( pParse->useDb==1 ) pParse->useDb = -1; switch( pTriggerStep->op ){ case TK_SELECT: { Select * ss = sqliteSelectDup(pTriggerStep->pSelect); @@ -561,7 +619,7 @@ static int codeTriggerProgram( } case TK_UPDATE: { SrcList *pSrc; - pSrc = sqliteSrcListAppend(0, &pTriggerStep->target, 0); + pSrc = targetSrcList(pParse, pTriggerStep); sqliteVdbeAddOp(pParse->pVdbe, OP_ListPush, 0, 0); sqliteUpdate(pParse, pSrc, sqliteExprListDup(pTriggerStep->pExprList), @@ -571,7 +629,7 @@ static int codeTriggerProgram( } case TK_INSERT: { SrcList *pSrc; - pSrc = sqliteSrcListAppend(0, &pTriggerStep->target, 0); + pSrc = targetSrcList(pParse, pTriggerStep); sqliteInsert(pParse, pSrc, sqliteExprListDup(pTriggerStep->pExprList), sqliteSelectDup(pTriggerStep->pSelect), @@ -581,7 +639,7 @@ static int codeTriggerProgram( case TK_DELETE: { SrcList *pSrc; sqliteVdbeAddOp(pParse->pVdbe, OP_ListPush, 0, 0); - pSrc = sqliteSrcListAppend(0, &pTriggerStep->target, 0); + pSrc = targetSrcList(pParse, pTriggerStep); sqliteDeleteFrom(pParse, pSrc, sqliteExprDup(pTriggerStep->pWhere)); sqliteVdbeAddOp(pParse->pVdbe, OP_ListPop, 0, 0); break; @@ -590,7 +648,6 @@ static int codeTriggerProgram( assert(0); } pParse->nTab = saveNTab; - pParse->useDb = saveUseDb; pTriggerStep = pTriggerStep->pNext; } diff --git a/ext/sqlite/libsqlite/src/update.c b/ext/sqlite/libsqlite/src/update.c index 95a49590dc..7a69a9d6cd 100644 --- a/ext/sqlite/libsqlite/src/update.c +++ b/ext/sqlite/libsqlite/src/update.c @@ -128,8 +128,13 @@ void sqliteUpdate( } } if( j>=pTab->nCol ){ - sqliteErrorMsg(pParse, "no such column: %s", pChanges->a[i].zName); - goto update_cleanup; + if( sqliteIsRowid(pChanges->a[i].zName) ){ + chngRecno = 1; + pRecnoExpr = pChanges->a[i].pExpr; + }else{ + sqliteErrorMsg(pParse, "no such column: %s", pChanges->a[i].zName); + goto update_cleanup; + } } #ifndef SQLITE_OMIT_AUTHORIZATION { diff --git a/ext/sqlite/libsqlite/src/util.c b/ext/sqlite/libsqlite/src/util.c index 8520704ea6..129489e046 100644 --- a/ext/sqlite/libsqlite/src/util.c +++ b/ext/sqlite/libsqlite/src/util.c @@ -317,7 +317,8 @@ char *sqliteStrNDup(const char *z, int n){ ** Create a string from the 2nd and subsequent arguments (up to the ** first NULL argument), store the string in memory obtained from ** sqliteMalloc() and make the pointer indicated by the 1st argument -** point to that string. +** 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, ...){ va_list ap; @@ -355,7 +356,9 @@ void sqliteSetString(char **pz, const char *zFirst, ...){ /* ** Works like sqliteSetString, but each string is now followed by ** a length integer which specifies how much of the source string -** to copy (in bytes). -1 means use the whole string. +** to copy (in bytes). -1 means use the whole string. The 1st +** argument must either be NULL or point to memory obtained from +** sqliteMalloc(). */ void sqliteSetNString(char **pz, ...){ va_list ap; @@ -610,188 +613,6 @@ int sqliteStrNICmp(const char *zLeft, const char *zRight, int N){ return N<0 ? 0 : *a - *b; } -#if 0 /* NOT USED */ -/* -** The sortStrCmp() function below is used to order elements according -** to the ORDER BY clause of a SELECT. The sort order is a little different -** from what one might expect. This note attempts to describe what is -** going on. -** -** We want the main string comparision function used for sorting to -** sort both numbers and alphanumeric words into the correct sequence. -** The same routine should do both without prior knowledge of which -** type of text the input represents. It should even work for strings -** which are a mixture of text and numbers. (It does not work for -** numeric substrings in exponential notation, however.) -** -** To accomplish this, we keep track of a state number while scanning -** the two strings. The states are as follows: -** -** 1 Beginning of word -** 2 Arbitrary text -** 3 Integer -** 4 Negative integer -** 5 Real number -** 6 Negative real -** -** The scan begins in state 1, beginning of word. Transitions to other -** states are determined by characters seen, as shown in the following -** chart: -** -** Current State Character Seen New State -** -------------------- -------------- ------------------- -** 0 Beginning of word "-" 3 Negative integer -** digit 2 Integer -** space 0 Beginning of word -** otherwise 1 Arbitrary text -** -** 1 Arbitrary text space 0 Beginning of word -** digit 2 Integer -** otherwise 1 Arbitrary text -** -** 2 Integer space 0 Beginning of word -** "." 4 Real number -** digit 2 Integer -** otherwise 1 Arbitrary text -** -** 3 Negative integer space 0 Beginning of word -** "." 5 Negative Real num -** digit 3 Negative integer -** otherwise 1 Arbitrary text -** -** 4 Real number space 0 Beginning of word -** digit 4 Real number -** otherwise 1 Arbitrary text -** -** 5 Negative real num space 0 Beginning of word -** digit 5 Negative real num -** otherwise 1 Arbitrary text -** -** To implement this state machine, we first classify each character -** into on of the following categories: -** -** 0 Text -** 1 Space -** 2 Digit -** 3 "-" -** 4 "." -** -** Given an arbitrary character, the array charClass[] maps that character -** into one of the atove categories. -*/ -static const unsigned char charClass[] = { - /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ -/* 0x */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, -/* 1x */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 2x */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, -/* 3x */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -/* 4x */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 5x */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 6x */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 7x */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 8x */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 9x */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* Ax */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* Bx */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* Cx */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* Dx */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* Ex */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* Fx */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -}; -#define N_CHAR_CLASS 5 - -/* -** Given the current state number (0 thru 5), this array figures -** the new state number given the character class. -*/ -static const unsigned char stateMachine[] = { - /* Text, Space, Digit, "-", "." */ - 1, 0, 2, 3, 1, /* State 0: Beginning of word */ - 1, 0, 2, 1, 1, /* State 1: Arbitrary text */ - 1, 0, 2, 1, 4, /* State 2: Integer */ - 1, 0, 3, 1, 5, /* State 3: Negative integer */ - 1, 0, 4, 1, 1, /* State 4: Real number */ - 1, 0, 5, 1, 1, /* State 5: Negative real num */ -}; - -/* This routine does a comparison of two strings. Case is used only -** if useCase!=0. Numeric substrings compare in numerical order for the -** most part but this routine does not understand exponential notation. -*/ -static int sortStrCmp(const char *atext, const char *btext, int useCase){ - register unsigned char *a, *b, *map, ca, cb; - int result; - register int cclass = 0; - - a = (unsigned char *)atext; - b = (unsigned char *)btext; - if( useCase ){ - do{ - if( (ca= *a++)!=(cb= *b++) ) break; - cclass = stateMachine[cclass*N_CHAR_CLASS + charClass[ca]]; - }while( ca!=0 ); - }else{ - map = UpperToLower; - do{ - if( (ca=map[*a++])!=(cb=map[*b++]) ) break; - cclass = stateMachine[cclass*N_CHAR_CLASS + charClass[ca]]; - }while( ca!=0 ); - if( ca>='[' && ca<='`' ) cb = b[-1]; - if( cb>='[' && cb<='`' ) ca = a[-1]; - } - switch( cclass ){ - case 0: - case 1: { - if( isdigit(ca) && isdigit(cb) ){ - cclass = 2; - } - break; - } - default: { - break; - } - } - switch( cclass ){ - case 2: - case 3: { - if( isdigit(ca) ){ - if( isdigit(cb) ){ - int acnt, bcnt; - acnt = bcnt = 0; - while( isdigit(*a++) ) acnt++; - while( isdigit(*b++) ) bcnt++; - result = acnt - bcnt; - if( result==0 ) result = ca-cb; - }else{ - result = 1; - } - }else if( isdigit(cb) ){ - result = -1; - }else if( ca=='.' ){ - result = 1; - }else if( cb=='.' ){ - result = -1; - }else{ - result = ca - cb; - cclass = 2; - } - if( cclass==3 ) result = -result; - break; - } - case 0: - case 1: - case 4: { - result = ca - cb; - break; - } - case 5: { - result = cb - ca; - }; - } - return result; -} -#endif /* NOT USED */ - /* ** Return TRUE if z is a pure numeric string. Return FALSE if the ** string contains any character which is not part of a number. diff --git a/ext/sqlite/libsqlite/src/vdbe.c b/ext/sqlite/libsqlite/src/vdbe.c index 3ac4a3acc8..28ba8cd22d 100644 --- a/ext/sqlite/libsqlite/src/vdbe.c +++ b/ext/sqlite/libsqlite/src/vdbe.c @@ -2287,7 +2287,7 @@ case OP_MustBeInt: { /* Do nothing */ }else if( aStack[tos].flags & STK_Real ){ int i = aStack[tos].r; - double r = i; + double r = (double)i; if( r!=aStack[tos].r ){ goto mismatch; } @@ -3168,8 +3168,9 @@ case OP_IncrKey: { */ case OP_Checkpoint: { int i = pOp->p1; - if( i>=0 && i<db->nDb && db->aDb[i].pBt ){ + if( i>=0 && i<db->nDb && db->aDb[i].pBt && db->aDb[i].inTrans==1 ){ rc = sqliteBtreeBeginCkpt(db->aDb[i].pBt); + if( rc==SQLITE_OK ) db->aDb[i].inTrans = 2; } break; } @@ -3382,6 +3383,11 @@ case OP_VerifyCookie: { ** Open a read/write cursor named P1 on the table or index whose root ** page is P2. If P2==0 then take the root page number from the stack. ** +** The P3 value is the name of the table or index being opened. +** The P3 value is not actually used by this opcode and may be +** omitted. But the code generator usually inserts the index or +** table name into P3 to make the code easier to read. +** ** This instruction works just like OpenRead except that it opens the cursor ** in read/write mode. For a given table, there can be one or more read-only ** cursors or a single read/write cursor but not both. @@ -3890,7 +3896,7 @@ case OP_NewRecno: { /* Opcode: PutIntKey P1 P2 * ** -** Write an entry into the database file P1. A new entry is +** Write an entry into the table of cursor P1. A new entry is ** created if it doesn't already exist or the data for an existing ** entry is overwritten. The data is the value on the top of the ** stack. The key is the next value down on the stack. The key must @@ -3902,7 +3908,7 @@ case OP_NewRecno: { */ /* Opcode: PutStrKey P1 * * ** -** Write an entry into the database file P1. A new entry is +** Write an entry into the table of cursor P1. A new entry is ** created if it doesn't already exist or the data for an existing ** entry is overwritten. The data is the value on the top of the ** stack. The key is the next value down on the stack. The key must @@ -4384,13 +4390,13 @@ case OP_Next: { /* Opcode: IdxPut P1 P2 P3 ** -** The top of the stack hold an SQL index key made using the +** The top of the stack holds a SQL index key made using the ** MakeIdxKey instruction. This opcode writes that key into the ** index P1. Data for the entry is nil. ** ** If P2==1, then the key must be unique. If the key is not unique, ** the program aborts with a SQLITE_CONSTRAINT error and the database -** is rolled back. If P3 is not null, then it because part of the +** is rolled back. If P3 is not null, then it becomes part of the ** error message returned with the SQLITE_CONSTRAINT. */ case OP_IdxPut: { @@ -4690,7 +4696,8 @@ case OP_ListWrite: { /* Opcode: ListRewind * * * ** -** Rewind the temporary buffer back to the beginning. +** Rewind the temporary buffer back to the beginning. This is +** now a no-op. */ case OP_ListRewind: { /* This is now a no-op */ @@ -5820,8 +5827,9 @@ int sqliteVdbeFinalize(Vdbe *p, char **pzErrMsg){ sqliteRollbackInternalChanges(db); } for(i=0; i<db->nDb; i++){ - if( db->aDb[i].pBt ){ + if( db->aDb[i].pBt && db->aDb[i].inTrans==2 ){ sqliteBtreeCommitCkpt(db->aDb[i].pBt); + db->aDb[i].inTrans = 1; } } assert( p->tos<p->pc || sqlite_malloc_failed==1 ); diff --git a/ext/sqlite/sqlite.c b/ext/sqlite/sqlite.c index 657b0badc2..2c49b5078f 100644 --- a/ext/sqlite/sqlite.c +++ b/ext/sqlite/sqlite.c @@ -574,6 +574,20 @@ static int php_sqlite_authorizer(void *autharg, int access_type, const char *arg } } return SQLITE_OK; +#ifdef SQLITE_ATTACH + case SQLITE_ATTACH: + { + TSRMLS_FETCH(); + if (PG(safe_mode) && (!php_checkuid(arg3, NULL, CHECKUID_CHECK_FILE_AND_DIR))) { + return SQLITE_DENY; + } + + if (php_check_open_basedir(arg3 TSRMLS_CC)) { + return SQLITE_DENY; + } + } + return SQLITE_OK; +#endif default: /* access allowed */ |