diff options
Diffstat (limited to 'src/update.c')
-rw-r--r-- | src/update.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/src/update.c b/src/update.c index 04648149c..f8cb2afed 100644 --- a/src/update.c +++ b/src/update.c @@ -652,8 +652,7 @@ void sqlite3Update( if( nChangeFrom==0 && HasRowid(pTab) ){ sqlite3VdbeAddOp3(v, OP_Null, 0, regRowSet, regOldRowid); iEph = pParse->nTab++; - addrOpen = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, iEph, 0); - sqlite3VdbeLoadString(v, regRowSet, ""); + addrOpen = sqlite3VdbeAddOp3(v, OP_OpenEphemeral, iEph, 0, regRowSet); }else{ assert( pPk!=0 || HasRowid(pTab) ); nPk = pPk ? pPk->nKeyCol : 0; @@ -748,7 +747,7 @@ void sqlite3Update( aRegIdx[nAllIdx] = ++pParse->nMem; sqlite3VdbeAddOp3(v, OP_Insert, iEph, regRowSet, regOldRowid); }else{ - if( addrOpen ) sqlite3VdbeChangeToNoop(v, addrOpen); + if( ALWAYS(addrOpen) ) sqlite3VdbeChangeToNoop(v, addrOpen); } }else{ /* Read the PK of the current row into an array of registers. In @@ -1088,11 +1087,9 @@ void sqlite3Update( }else if( eOnePass==ONEPASS_MULTI ){ sqlite3VdbeResolveLabel(v, labelContinue); sqlite3WhereEnd(pWInfo); - }else /*if( pPk || nChangeFrom )*/{ + }else{ sqlite3VdbeResolveLabel(v, labelContinue); sqlite3VdbeAddOp2(v, OP_Next, iEph, addrTop); VdbeCoverage(v); -// }else{ -// sqlite3VdbeGoto(v, labelContinue); } sqlite3VdbeResolveLabel(v, labelBreak); |