Improved VDBE comments on the constraint checker. Fix a missing write
lock in the UPDATE logic.
FossilOrigin-Name: 3bed599e74d354bf1513e4fb0e8665376ba44d0b
diff --git a/src/insert.c b/src/insert.c
index d003c7a..3c9402d 100644
--- a/src/insert.c
+++ b/src/insert.c
@@ -1435,12 +1435,14 @@
regIdx = sqlite3GetTempRange(pParse, pIdx->nColumn);
for(i=0; i<pIdx->nColumn; i++){
int iField = pIdx->aiColumn[i];
+ int x;
if( iField<0 || iField==pTab->iPKey ){
- iField = regNewData;
+ x = regNewData;
}else{
- iField += regNewData + 1;
+ x = iField + regNewData + 1;
}
- sqlite3VdbeAddOp2(v, OP_SCopy, iField, regIdx+i);
+ sqlite3VdbeAddOp2(v, OP_SCopy, x, regIdx+i);
+ VdbeComment((v, "%s", iField<0 ? "rowid" : pTab->aCol[iField].zName));
}
sqlite3VdbeAddOp3(v, OP_MakeRecord, regIdx, pIdx->nColumn, aRegIdx[ix]);
sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v, pIdx), P4_TRANSIENT);
diff --git a/src/update.c b/src/update.c
index b88d5a8..9efb734 100644
--- a/src/update.c
+++ b/src/update.c
@@ -387,6 +387,7 @@
if( !okOnePass && HasRowid(pTab) ){
sqlite3OpenTable(pParse, iDataCur, iDb, pTab, OP_OpenWrite);
}
+ sqlite3TableLock(pParse, iDb, pTab->tnum, 1, pTab->zName);
if( onError==OE_Replace ){
openAll = 1;
}else{