diff options
author | drh <drh@noemail.net> | 2018-04-20 13:18:51 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2018-04-20 13:18:51 +0000 |
commit | 7fc3aba8623e703cfdb2eade8ec3d1362da38907 (patch) | |
tree | 52282a5e1fb3fdfc8ae4575116ef4e9e0375ffb2 /src/upsert.c | |
parent | 2ac4e5cca9b882d142fd21c83a0e930f9bbd56da (diff) | |
download | sqlite-7fc3aba8623e703cfdb2eade8ec3d1362da38907.tar.gz sqlite-7fc3aba8623e703cfdb2eade8ec3d1362da38907.zip |
Enhance UPSERT so that the UPDATE uses the same set of cursors as the INSERT.
FossilOrigin-Name: c37f39d18d41ae5ba6c4561d87cbbf71f3b6896b86cc5cff9cdf046b02dc521a
Diffstat (limited to 'src/upsert.c')
-rw-r--r-- | src/upsert.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/src/upsert.c b/src/upsert.c index 9e23c86bf..80c0056c0 100644 --- a/src/upsert.c +++ b/src/upsert.c @@ -222,7 +222,7 @@ void sqlite3UpsertDoUpdate( pE1 = sqlite3ExprAlloc(db, TK_COLUMN, 0, 0); if( pE1 ){ pE1->pTab = pTab; - pE1->iTable = pParse->nTab; + pE1->iTable = pUpsert->iDataCur; pE1->iColumn = -1; } pE2 = sqlite3ExprAlloc(db, TK_REGISTER, 0, 0); @@ -234,11 +234,6 @@ void sqlite3UpsertDoUpdate( }else{ /* a WITHOUT ROWID table */ int i, j; - int iTab = pParse->nTab+1; - Index *pX; - for(pX=pTab->pIndex; ALWAYS(pX) && !IsPrimaryKeyIndex(pX); pX=pX->pNext){ - iTab++; - } for(i=0; i<pIdx->nKeyCol; i++){ regKey = ++pParse->nMem; sqlite3VdbeAddOp3(v, OP_Column, iCur, i, regKey); @@ -247,7 +242,7 @@ void sqlite3UpsertDoUpdate( pE1 = sqlite3ExprAlloc(db, TK_COLUMN, 0, 0); if( pE1 ){ pE1->pTab = pTab; - pE1->iTable = iTab; + pE1->iTable = pUpsert->iDataCur; pE1->iColumn = j; } pE2 = sqlite3ExprAlloc(db, TK_REGISTER, 0, 0); |