summaryrefslogtreecommitdiff
path: root/ext/pdo_sqlite/sqlite/src/delete.c
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2005-06-30 20:58:36 +0000
committerIlia Alshanetsky <iliaa@php.net>2005-06-30 20:58:36 +0000
commit7d02c9dcb2e9e06aef2e74068abedb929198c4c5 (patch)
treed4aa4b9ee9c45ef44c51d06710917b81fc022667 /ext/pdo_sqlite/sqlite/src/delete.c
parentefc6ccaa01caba362c59e1708261076e25a28efe (diff)
downloadphp-git-7d02c9dcb2e9e06aef2e74068abedb929198c4c5.tar.gz
Upgraded bundled sqlite lib to 3.2.2
Diffstat (limited to 'ext/pdo_sqlite/sqlite/src/delete.c')
-rw-r--r--ext/pdo_sqlite/sqlite/src/delete.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/ext/pdo_sqlite/sqlite/src/delete.c b/ext/pdo_sqlite/sqlite/src/delete.c
index fa661977d7..15eb8f4e8d 100644
--- a/ext/pdo_sqlite/sqlite/src/delete.c
+++ b/ext/pdo_sqlite/sqlite/src/delete.c
@@ -27,7 +27,11 @@ Table *sqlite3SrcListLookup(Parse *pParse, SrcList *pSrc){
struct SrcList_item *pItem;
for(i=0, pItem=pSrc->a; i<pSrc->nSrc; i++, pItem++){
pTab = sqlite3LocateTable(pParse, pItem->zName, pItem->zDatabase);
+ sqlite3DeleteTable(pParse->db, pItem->pTab);
pItem->pTab = pTab;
+ if( pTab ){
+ pTab->nRef++;
+ }
}
return pTab;
}
@@ -99,7 +103,6 @@ void sqlite3DeleteFrom(
sContext.pParse = 0;
if( pParse->nErr || sqlite3_malloc_failed ){
- pTabList = 0;
goto delete_from_cleanup;
}
db = pParse->db;
@@ -231,12 +234,12 @@ void sqlite3DeleteFrom(
/* Begin the database scan
*/
- pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, 0, 0);
+ pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, 0);
if( pWInfo==0 ) goto delete_from_cleanup;
/* Remember the rowid of every item to be deleted.
*/
- sqlite3VdbeAddOp(v, OP_Recno, iCur, 0);
+ sqlite3VdbeAddOp(v, OP_Rowid, iCur, 0);
sqlite3VdbeAddOp(v, OP_ListWrite, 0, 0);
if( db->flags & SQLITE_CountRows ){
sqlite3VdbeAddOp(v, OP_AddImm, 1, 0);
@@ -265,21 +268,21 @@ void sqlite3DeleteFrom(
*/
if( triggers_exist ){
addr = sqlite3VdbeAddOp(v, OP_ListRead, 0, end);
- sqlite3VdbeAddOp(v, OP_Dup, 0, 0);
if( !isView ){
+ sqlite3VdbeAddOp(v, OP_Dup, 0, 0);
sqlite3OpenTableForReading(v, iCur, pTab);
}
sqlite3VdbeAddOp(v, OP_MoveGe, iCur, 0);
- sqlite3VdbeAddOp(v, OP_Recno, iCur, 0);
+ sqlite3VdbeAddOp(v, OP_Rowid, iCur, 0);
sqlite3VdbeAddOp(v, OP_RowData, iCur, 0);
- sqlite3VdbeAddOp(v, OP_PutIntKey, oldIdx, 0);
+ sqlite3VdbeAddOp(v, OP_Insert, oldIdx, 0);
if( !isView ){
sqlite3VdbeAddOp(v, OP_Close, iCur, 0);
}
(void)sqlite3CodeRowTrigger(pParse, TK_DELETE, 0, TRIGGER_BEFORE, pTab,
-1, oldIdx, (pParse->trigStack)?pParse->trigStack->orconf:OE_Default,
- addr);
+ addr);
}
if( !isView ){
@@ -313,7 +316,7 @@ void sqlite3DeleteFrom(
}
(void)sqlite3CodeRowTrigger(pParse, TK_DELETE, 0, TRIGGER_AFTER, pTab, -1,
oldIdx, (pParse->trigStack)?pParse->trigStack->orconf:OE_Default,
- addr);
+ addr);
}
/* End of the delete loop */
@@ -429,13 +432,14 @@ void sqlite3GenerateIndexKey(
int j;
Table *pTab = pIdx->pTable;
- sqlite3VdbeAddOp(v, OP_Recno, iCur, 0);
+ sqlite3VdbeAddOp(v, OP_Rowid, iCur, 0);
for(j=0; j<pIdx->nColumn; j++){
int idx = pIdx->aiColumn[j];
if( idx==pTab->iPKey ){
sqlite3VdbeAddOp(v, OP_Dup, j, 0);
}else{
sqlite3VdbeAddOp(v, OP_Column, iCur, idx);
+ sqlite3ColumnDefault(v, pTab, idx);
}
}
sqlite3VdbeAddOp(v, OP_MakeRecord, pIdx->nColumn, (1<<24));