<HTML><BODY><p><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">Branch:<br><a href="https://github.com/tarantool/tarantool/tree/bn/gh-3119-backend-removal">https://github.com/tarantool/tarantool/tree/bn/gh-3119-backend-removal</a> <br><br>///////////////////////////////////////////////////////////////////////</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">PATCH V3 04/10] sql: remove struct Db</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>diff --git a/src/box/sql/prepare.c b/src/box/sql/prepare.c</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>@ -182,7 +181,6 @@ sqlite3InitDatabase(sqlite3 * db)</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">></span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">> /* Create a cursor to hold the database open</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">> */</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>- pDb = &db->mdb;</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>Also, remove comment: it seems to belong to code you deleted.<br><br>-----------------------------------------------------------</span></p><p>- /* Create a cursor to hold the database open<br>- */<br>- pDb = &db->mdb;<br>-<br><br><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">///////////////////////////////////////////////////////////////////////</span><br><br><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">[PATCH V3 08/10] sql: delete CursorPayload structure</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>@@ -519,36 +519,36 @@ int tarantoolSqlite3EphemeralDrop(BtCursor *pCur)</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">> return SQLITE_OK;</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>}</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">></span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>-static int insertOrReplace(BtCursor *pCur, const CursorPayload *pX,</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>- int operationType)</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>+static int insert_or_replace(BtCursor *pCur, int operation_type)</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>{</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>+ assert(pCur != NULL);</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">> assert(pCur->curFlags & BTCF_TaCursor);</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>- assert(operationType == TARANTOOL_INDEX_INSERT ||</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>- operationType == TARANTOOL_INDEX_REPLACE);</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>+ assert(operation_type == TARANTOOL_INDEX_INSERT ||</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>+ operation_type == TARANTOOL_INDEX_REPLACE);<br><br><br></span>Also travis build seems ok - https://travis-ci.org/tarantool/tarantool/builds/349785542<br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">></span>If you are fixing codestyle (which is not encoureged until</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">></span>it is the main goal of patch OR it is already trapped in your patch),</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">></span>then fix name of pCur: in Tarantool we don't use hungarian notation.</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">></span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">></span>Also, not sure if assert which you added is suitable:</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">></span>insert and replace funcs are called only from one place.</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">></span>Moreover, there dereference happens firsly, thus such assertion</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">></span>will never be fired. Don't use asserts just for make visibility of safety.</span><br></p><p><font face="Helvetica, Arial, Tahoma, Verdana, sans-serif">---------------------------------------------------------------<br></font></p><p>-static int insertOrReplace(BtCursor *pCur, const CursorPayload *pX,<br>- int operationType)<br>+static int insertOrReplace(BtCursor *pCur, int operationType)<br> {<br>+ assert(pCur != NULL);<br> assert(pCur->curFlags & BTCF_TaCursor);<br>- assert(operationType == TARANTOOL_INDEX_INSERT ||<br>- operationType == TARANTOOL_INDEX_REPLACE);</p><p>int space_id = SQLITE_PAGENO_TO_SPACEID(pCur->pgnoRoot);<br> int rc;<br> if (operationType == TARANTOOL_INDEX_INSERT) {<br>- rc = box_insert(space_id, pX->pKey,<br>- (const char *)pX->pKey + pX->nKey,<br>+ rc = box_insert(space_id, pCur->pKey,<br>+ (const char *)pCur->pKey + pCur->nKey,<br> NULL /* result */);<br> } else {<br>- rc = box_replace(space_id, pX->pKey,<br>- (const char *)pX->pKey + pX->nKey,<br>+ rc = box_replace(space_id, pCur->pKey,<br>+ (const char *)pCur->pKey + pCur->nKey,<br> NULL /* result */);<br> }</p><p>return rc == 0 ? SQLITE_OK : SQL_TARANTOOL_INSERT_FAIL;;<br> }</p><p>-int tarantoolSqlite3Insert(BtCursor *pCur, const CursorPayload *pX)<br>+int tarantoolSqlite3Insert(BtCursor *pCur)<br> {<br>- return insertOrReplace(pCur, pX, TARANTOOL_INDEX_INSERT);<br>+ return insertOrReplace(pCur, TARANTOOL_INDEX_INSERT);<br> }</p><p>-int tarantoolSqlite3Replace(BtCursor *pCur, const CursorPayload *pX)<br>+int tarantoolSqlite3Replace(BtCursor *pCur)<br> {<br>- return insertOrReplace(pCur, pX, TARANTOOL_INDEX_REPLACE);<br>+ return insertOrReplace(pCur, TARANTOOL_INDEX_REPLACE);<br> }</p><p><font face="Helvetica, Arial, Tahoma, Verdana, sans-serif">///////////////////////////////////////////////////////////////////<br><br><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>- assert((x.pKey == 0) == (pBtCur->pKeyInfo == 0));<br><br><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>Why have you deleted this assert? You are able to rewrite it using</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>BtCur->pKey.</span><br></span>--------------------------------------------------------<br><br>+ assert((pIn2->z == 0) == (pBtCur->pKeyInfo == 0));<br><br>////////////////////////////////////////////////////////////////////<br><br><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>+ * release it, so memory</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>+ * should be explicitly nulllified.</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">> I guess, not memory but pointers should be nullified.<br><br>----------------------------</span></font></p><p>+ * release it, so pointers should be explicitly<br>+ * nullified.<br><br>//////////////////////////////////////////////////////////////////////<br><br><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">PATCH V3 09/10] sql: remove unnecessary VDBE flags</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>This flags are unnecessary for us, so in this patch</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>they were removed (and all related to them).</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>I guess, phrase "all related to them" isn't correct.</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>I would better say sort of "everything related to them".</span><br><br>that opcode VDBE flags like 'readOnly', 'bIsReader'</p><p>'''<br>would be assigned incorrectly. Also unnecessary OP_Destroy<br>opcode was removed.</p><p><font face="Helvetica, Arial, Tahoma, Verdana, sans-serif"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"></span></font></p><p>This flags are unnecessary for us, so in this patch<br>they were removed (and everything related to them).<br>''''<br><br>//////////////////////////////////////////////////////////////////////////<br><br><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>You can completely remove this opcode: AFAIK it is not used anymore.</span><br style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;">>But it is up to you.<br><br></span>--------</p><p>-/* Opcode: Destroy P1 P2 P3 * *<br>- *<br>- * Delete an entire database table or index whose root page in the database<br>- * file is given by P1.<br>- *<br>- * The table being destroyed is in the main database file if P3==0. If<br>- * P3==1 then the table to be clear is in the auxiliary database file<br>- * that is used to store tables create using CREATE TEMPORARY TABLE.<br>- *<br>- * Zero is stored in register P2.<br>- *<br>- * See also: Clear<br>- */<br>-case OP_Destroy: { /* out2 */<br>- int iMoved;<br>-<br>- assert(p->readOnly==0);<br>- assert(pOp->p1>1);<br>- pOut = out2Prerelease(p, pOp);<br>- pOut->flags = MEM_Null;<br>- if (db->nVdbeRead > 1) {<br>- rc = SQLITE_LOCKED;<br>- p->errorAction = ON_CONFLICT_ACTION_ABORT;<br>- goto abort_due_to_error;<br>- } else {<br>- iMoved = 0; /* Not needed. Only to silence a warning. */<br>- pOut->flags = MEM_Int;<br>- pOut->u.i = iMoved;<br>- if (rc) goto abort_due_to_error;<br>- }<br>- break;<br>-}<br>-</p><p>@@ -581,7 +581,6 @@ opIterNext(VdbeOpIter * p)<br> *<br> * * OP_Halt with P1=SQLITE_CONSTRAINT and P2=ON_CONFLICT_ACTION_ABORT.<br> * * OP_HaltIfNull with P1=SQLITE_CONSTRAINT and P2=ON_CONFLICT_ACTION_ABORT.<br>- * * OP_Destroy<br> * * OP_FkCounter with P2==0 (immediate foreign key constraint)<br> *<br> * Then check that the value of Parse.mayAbort is true if an<br>@@ -603,11 +602,9 @@ sqlite3VdbeAssertMayAbort(Vdbe * v, int mayAbort)</p><p>while ((pOp = opIterNext(&sIter)) != 0) {<br> int opcode = pOp->opcode;<br>- if (opcode == OP_Destroy ||<br>- ((opcode == OP_Halt || opcode == OP_HaltIfNull)<br>- && ((pOp->p1 & 0xff) == SQLITE_CONSTRAINT<br>- && pOp->p2 == ON_CONFLICT_ACTION_ABORT))<br>- ) {<br>+ if ((opcode == OP_Halt || opcode == OP_HaltIfNull) &&<br>+ (pOp->p1 & 0xff) == SQLITE_CONSTRAINT &&<br>+ pOp->p2 == ON_CONFLICT_ACTION_ABORT){<br> hasAbort = 1;<br> break;<br> }<br><br></p><p>--- a/src/box/sql/opcodes.h<br>+++ b/src/box/sql/opcodes.h<br>@@ -119,26 +119,25 @@<br> #define OP_IdxReplace 116 /* synopsis: key=r[P2] */<br> #define OP_IdxInsert 117 /* synopsis: key=r[P2] */<br> #define OP_IdxDelete 118 /* synopsis: key=r[P2@P3] */<br>-#define OP_Destroy 119</p><p><br><br><br></p><p><font face="Helvetica, Arial, Tahoma, Verdana, sans-serif"><span style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;" data-mce-style="font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif;"></span><br></font></p></BODY></HTML>