From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id CA81D2EEB7 for ; Sun, 2 Jun 2019 12:34:18 -0400 (EDT) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id AG3s77PaV0C3 for ; Sun, 2 Jun 2019 12:34:18 -0400 (EDT) Received: from smtp51.i.mail.ru (smtp51.i.mail.ru [94.100.177.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id EA2972EEBD for ; Sun, 2 Jun 2019 12:34:17 -0400 (EDT) Subject: [tarantool-patches] Re: [PATCH v1 9/9] sql: set errors in VDBE using diag_set() References: From: Vladislav Shpilevoy Message-ID: <2fb295d4-473a-eb96-1f32-c12b2a0e96aa@tarantool.org> Date: Sun, 2 Jun 2019 18:34:12 +0200 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-Help: List-Unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-Subscribe: List-Owner: List-post: List-Archive: To: imeevma@tarantool.org Cc: tarantool-patches@freelists.org > diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c > index 43d7329..5bf5e6e 100644 > --- a/src/box/sql/vdbe.c > +++ b/src/box/sql/vdbe.c > @@ -3903,7 +3852,8 @@ case OP_SorterCompare: { > pIn3 = &aMem[pOp->p3]; > nKeyCol = pOp->p4.i; > res = 0; > - rc = sqlVdbeSorterCompare(pC, pIn3, nKeyCol, &res); > + if (sqlVdbeSorterCompare(pC, pIn3, nKeyCol, &res) != 0) > + rc = SQL_TARANTOOL_ERROR; In all the similar places you remove SQL_TARANTOOL_ERROR, but here you added it. Why? > VdbeBranchTaken(res!=0,2); > if (rc) goto abort_due_to_error; > if (res) goto jump_to_p2; > @@ -4137,15 +4085,18 @@ case OP_Rewind: { /* jump */ > pC->seekOp = OP_Rewind; > #endif > if (isSorter(pC)) { > - rc = sqlVdbeSorterRewind(pC, &res); > + if (sqlVdbeSorterRewind(pC, &res) != SQL_OK) > + goto abort_due_to_error; > } else { > assert(pC->eCurType==CURTYPE_TARANTOOL); > pCrsr = pC->uc.pCursor; > assert(pCrsr); > - rc = tarantoolsqlFirst(pCrsr, &res); > + if (tarantoolsqlFirst(pCrsr, &res) != SQL_OK) > + rc = SQL_TARANTOOL_ERROR; The same. Consider my review fixes on the branch and below. They are motivated by several points: 1) in the original code there were places comparing 'rc' with 0, but you replaced them with 'rc ==/!= SQL_OK'. I rolled back such changes, because we move towards removal of SQL_OK. So when you need to choose between 0 and SQL_OK - use 0. 2) there were places using SQL_OK, but very easy to fix and compare with 0. I did it. 3) in a couple of places you kept 'rc = SQL_TARANTOOL_ERROR'. I don't know why, but I dropped it, and the tests passed. If I was wrong, tell me, please. ======================================================================= commit e203a7c93132605e04931045ccc8ba4fd4bce7fa Author: Vladislav Shpilevoy Date: Sun Jun 2 18:28:25 2019 +0200 Review fixes diff --git a/src/box/sql.c b/src/box/sql.c index 59a8bfbd5..d4d9d9671 100644 --- a/src/box/sql.c +++ b/src/box/sql.c @@ -325,21 +325,19 @@ int tarantoolsqlMovetoUnpacked(BtCursor *pCur, UnpackedRecord *pIdxKey, * * @retval SQL_OK */ -int tarantoolsqlEphemeralCount(struct BtCursor *pCur, i64 *pnEntry) +int64_t +tarantoolsqlEphemeralCount(struct BtCursor *pCur) { assert(pCur->curFlags & BTCF_TEphemCursor); - struct index *primary_index = space_index(pCur->space, 0 /* PK */); - *pnEntry = index_count(primary_index, pCur->iter_type, NULL, 0); - return SQL_OK; + return index_count(primary_index, pCur->iter_type, NULL, 0); } -int tarantoolsqlCount(BtCursor *pCur, i64 *pnEntry) +int64_t +tarantoolsqlCount(struct BtCursor *pCur) { assert(pCur->curFlags & BTCF_TaCursor); - - *pnEntry = index_count(pCur->index, pCur->iter_type, NULL, 0); - return SQL_OK; + return index_count(pCur->index, pCur->iter_type, NULL, 0); } struct space * @@ -621,12 +619,12 @@ int tarantoolsqlRenameTrigger(const char *trig_name, char *key_begin = (char*) region_alloc(&fiber()->gc, key_len); if (key_begin == NULL) { diag_set(OutOfMemory, key_len, "region_alloc", "key_begin"); - return SQL_TARANTOOL_ERROR; + return -1; } char *key = mp_encode_array(key_begin, 1); key = mp_encode_str(key, trig_name, trig_name_len); if (box_index_get(BOX_TRIGGER_ID, 0, key_begin, key, &tuple) != 0) - return SQL_TARANTOOL_ERROR; + return -1; assert(tuple != NULL); assert(tuple_field_count(tuple) == 3); const char *field = tuple_field(tuple, BOX_TRIGGER_FIELD_SPACE_ID); @@ -645,7 +643,7 @@ int tarantoolsqlRenameTrigger(const char *trig_name, if (trigger_stmt == NULL) { diag_set(OutOfMemory, trigger_stmt_len + 1, "region_alloc", "trigger_stmt"); - return SQL_TARANTOOL_ERROR; + return -1; } memcpy(trigger_stmt, trigger_stmt_old, trigger_stmt_len); trigger_stmt[trigger_stmt_len] = '\0'; @@ -662,7 +660,7 @@ int tarantoolsqlRenameTrigger(const char *trig_name, char *new_tuple = (char*)region_alloc(&fiber()->gc, key_len); if (new_tuple == NULL) { diag_set(OutOfMemory, key_len, "region_alloc", "new_tuple"); - return SQL_TARANTOOL_ERROR; + return -1; } char *new_tuple_end = mp_encode_array(new_tuple, 3); new_tuple_end = mp_encode_str(new_tuple_end, trig_name, trig_name_len); @@ -672,15 +670,12 @@ int tarantoolsqlRenameTrigger(const char *trig_name, new_tuple_end = mp_encode_str(new_tuple_end, trigger_stmt, trigger_stmt_new_len); - if (box_replace(BOX_TRIGGER_ID, new_tuple, new_tuple_end, NULL) != 0) - return SQL_TARANTOOL_ERROR; - else - return SQL_OK; + return box_replace(BOX_TRIGGER_ID, new_tuple, new_tuple_end, NULL); rename_fail: diag_set(ClientError, ER_SQL_EXECUTE, "can't modify name of space " "created not via SQL facilities"); - return SQL_TARANTOOL_ERROR; + return -1; } int @@ -695,7 +690,7 @@ sql_rename_table(uint32_t space_id, const char *new_name) char *raw = (char *) region_alloc(region, size); if (raw == NULL) { diag_set(OutOfMemory, size, "region_alloc", "raw"); - return SQL_TARANTOOL_ERROR; + return -1; } /* Encode key. */ char *pos = mp_encode_array(raw, 1); @@ -709,7 +704,7 @@ sql_rename_table(uint32_t space_id, const char *new_name) pos = mp_encode_uint(pos, BOX_SPACE_FIELD_NAME); pos = mp_encode_str(pos, new_name, name_len); if (box_update(BOX_SPACE_ID, 0, raw, ops, ops, pos, 0, NULL) != 0) - return SQL_TARANTOOL_ERROR; + return -1; return 0; } @@ -834,8 +829,8 @@ tarantoolsqlIncrementMaxid(uint64_t *space_max_id) request.space_id = space_schema->def->id; if (box_process_rw(&request, space_schema, &res) != 0 || res == NULL || tuple_field_u64(res, 1, space_max_id) != 0) - return SQL_TARANTOOL_ERROR; - return SQL_OK; + return -1; + return 0; } /* diff --git a/src/box/sql/analyze.c b/src/box/sql/analyze.c index 979542948..4106bce37 100644 --- a/src/box/sql/analyze.c +++ b/src/box/sql/analyze.c @@ -1691,7 +1691,7 @@ sql_analysis_load(struct sql *db) assert(stat_space != NULL); ssize_t index_count = box_index_len(stat_space->def->id, 0); if (index_count < 0) - return SQL_TARANTOOL_ERROR; + return -1; if (box_txn_begin() != 0) goto fail; size_t stats_size = index_count * sizeof(struct index_stat); @@ -1712,7 +1712,7 @@ sql_analysis_load(struct sql *db) goto fail; if (info.index_count == 0) { box_txn_commit(); - return SQL_OK; + return 0; } /* * This query is used to allocate enough memory for @@ -1768,12 +1768,9 @@ sql_analysis_load(struct sql *db) */ const char *order_query = "SELECT \"tbl\",\"idx\" FROM " "\"_sql_stat4\" GROUP BY \"tbl\",\"idx\""; - if (load_stat_to_index(db, order_query, heap_stats) != 0) - goto fail; - if (box_txn_commit() != 0) - return SQL_TARANTOOL_ERROR; - return SQL_OK; + if (load_stat_to_index(db, order_query, heap_stats) == 0) + return box_txn_commit(); fail: box_txn_rollback(); - return SQL_TARANTOOL_ERROR; + return -1; } diff --git a/src/box/sql/sqlInt.h b/src/box/sql/sqlInt.h index 9c0659bc9..777527865 100644 --- a/src/box/sql/sqlInt.h +++ b/src/box/sql/sqlInt.h @@ -4591,7 +4591,8 @@ sql_index_tuple_size(struct space *space, struct index *idx); * samples[] arrays. * * @param db Database handler. - * @retval sql_OK on success, smth else otherwise. + * @retval 0 Success. + * @retval -1 Error. */ int sql_analysis_load(struct sql *db); diff --git a/src/box/sql/tarantoolInt.h b/src/box/sql/tarantoolInt.h index f15e1472b..0474f2976 100644 --- a/src/box/sql/tarantoolInt.h +++ b/src/box/sql/tarantoolInt.h @@ -34,7 +34,8 @@ int tarantoolsqlNext(BtCursor * pCur, int *pRes); int tarantoolsqlPrevious(BtCursor * pCur, int *pRes); int tarantoolsqlMovetoUnpacked(BtCursor * pCur, UnpackedRecord * pIdxKey, int *pRes); -int tarantoolsqlCount(BtCursor * pCur, i64 * pnEntry); +int64_t +tarantoolsqlCount(struct BtCursor *pCur); int tarantoolsqlInsert(struct space *space, const char *tuple, const char *tuple_end); int tarantoolsqlReplace(struct space *space, const char *tuple, @@ -62,7 +63,8 @@ int tarantoolsqlClearTable(struct space *space, uint32_t *tuple_count); * @param space_id Table's space identifier. * @param new_name new name of table * - * @retval 0 on success, SQL_TARANTOOL_ERROR otherwise. + * @retval 0 Success. + * @retval -1 Error. */ int sql_rename_table(uint32_t space_id, const char *new_name); @@ -100,7 +102,8 @@ sql_ephemeral_space_create(uint32_t filed_count, struct sql_key_info *key_info); int tarantoolsqlEphemeralInsert(struct space *space, const char *tuple, const char *tuple_end); int tarantoolsqlEphemeralDelete(BtCursor * pCur); -int tarantoolsqlEphemeralCount(BtCursor * pCur, i64 * pnEntry); +int64_t +tarantoolsqlEphemeralCount(struct BtCursor *pCur); int tarantoolsqlEphemeralDrop(BtCursor * pCur); int tarantoolsqlEphemeralClearTable(BtCursor * pCur); diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c index 5bf5e6e88..0b1d7888d 100644 --- a/src/box/sql/vdbe.c +++ b/src/box/sql/vdbe.c @@ -1432,7 +1432,7 @@ case OP_Concat: { /* same as TK_CONCAT, in1, in2, out3 */ mem_type_to_str(pIn2), mem_type_to_str(pIn1)); goto abort_due_to_error; } - if (ExpandBlob(pIn1) != SQL_OK || ExpandBlob(pIn2) != SQL_OK) + if (ExpandBlob(pIn1) != 0 || ExpandBlob(pIn2) != 0) goto abort_due_to_error; nByte = pIn1->n + pIn2->n; if (nByte>db->aLimit[SQL_LIMIT_LENGTH]) { @@ -1892,7 +1892,7 @@ case OP_Realify: { /* in1 */ */ case OP_Cast: { /* in1 */ pIn1 = &aMem[pOp->p1]; - if (ExpandBlob(pIn1) != SQL_OK) + if (ExpandBlob(pIn1) != 0) goto abort_due_to_error; rc = sqlVdbeMemCast(pIn1, pOp->p2); UPDATE_MAX_BLOBSIZE(pIn1); @@ -2659,7 +2659,7 @@ case OP_Column: { if ((pDest->flags & (MEM_Ephem | MEM_Str)) == (MEM_Ephem | MEM_Str)) { int len = pDest->n; if (pDest->szMallocaRow) sqlVdbeMemRelease(&sMem); goto abort_due_to_error; @@ -2790,7 +2790,8 @@ case OP_MakeRecord: { * routine. */ if (bIsEphemeral) { - rc = sqlVdbeMemClearAndResize(pOut, tuple_size); + if (sqlVdbeMemClearAndResize(pOut, tuple_size) != 0) + goto abort_due_to_error; pOut->flags = MEM_Blob; pOut->n = tuple_size; memcpy(pOut->z, tuple, tuple_size); @@ -2805,8 +2806,6 @@ case OP_MakeRecord: { pOut->n = tuple_size; pOut->z = tuple; } - if (rc) - goto no_mem; assert(sqlVdbeCheckMemInvariants(pOut)); assert(pOp->p3>0 && pOp->p3<=(p->nMem+1 - p->nCursor)); REGISTER_TRACE(pOp->p3, pOut); @@ -2827,15 +2826,11 @@ case OP_Count: { /* out2 */ assert(p->apCsr[pOp->p1]->eCurType==CURTYPE_TARANTOOL); pCrsr = p->apCsr[pOp->p1]->uc.pCursor; assert(pCrsr); - nEntry = 0; /* Not needed. Only used to silence a warning. */ if (pCrsr->curFlags & BTCF_TaCursor) { - if (tarantoolsqlCount(pCrsr, &nEntry) != SQL_OK) - goto abort_due_to_error; - } else if (pCrsr->curFlags & BTCF_TEphemCursor) { - if (tarantoolsqlEphemeralCount(pCrsr, &nEntry) != SQL_OK) - goto abort_due_to_error; + nEntry = tarantoolsqlCount(pCrsr); } else { - unreachable(); + assert((pCrsr->curFlags & BTCF_TEphemCursor) != 0); + nEntry = tarantoolsqlEphemeralCount(pCrsr); } pOut = out2Prerelease(p, pOp); pOut->u.i = nEntry; @@ -2905,7 +2900,7 @@ case OP_Savepoint: { p->rc = rc = SQL_BUSY; goto vdbe_return; } - if (p->rc != SQL_OK) + if (p->rc != 0) goto abort_due_to_error; } else { if (p1==SAVEPOINT_ROLLBACK) @@ -3154,7 +3149,7 @@ case OP_SorterOpen: { pCx = allocateCursor(p, pOp->p1, pOp->p2, CURTYPE_SORTER); if (pCx==0) goto no_mem; pCx->key_def = def; - if (sqlVdbeSorterInit(db, pCx) != SQL_OK) + if (sqlVdbeSorterInit(db, pCx) != 0) goto abort_due_to_error; break; } @@ -3851,11 +3846,9 @@ case OP_SorterCompare: { assert(pOp->p4type==P4_INT32); pIn3 = &aMem[pOp->p3]; nKeyCol = pOp->p4.i; - res = 0; if (sqlVdbeSorterCompare(pC, pIn3, nKeyCol, &res) != 0) - rc = SQL_TARANTOOL_ERROR; + goto abort_due_to_error; VdbeBranchTaken(res!=0,2); - if (rc) goto abort_due_to_error; if (res) goto jump_to_p2; break; }; @@ -3878,7 +3871,7 @@ case OP_SorterData: { pOut = &aMem[pOp->p2]; pC = p->apCsr[pOp->p1]; assert(isSorter(pC)); - if (sqlVdbeSorterRowkey(pC, pOut) != SQL_OK) + if (sqlVdbeSorterRowkey(pC, pOut) != 0) goto abort_due_to_error; assert(pOut->flags & MEM_Blob); assert(pOp->p1>=0 && pOp->p1nCursor); @@ -3948,8 +3941,8 @@ case OP_RowData: { testcase( n==0); sqlVdbeMemRelease(pOut); - if (sql_vdbe_mem_alloc_region(pOut, n) != SQL_OK || - sqlCursorPayload(pCrsr, 0, n, pOut->z) != SQL_OK) + if (sql_vdbe_mem_alloc_region(pOut, n) != 0 || + sqlCursorPayload(pCrsr, 0, n, pOut->z) != 0) goto abort_due_to_error; UPDATE_MAX_BLOBSIZE(pOut); REGISTER_TRACE(pOp->p2, pOut); @@ -4013,10 +4006,10 @@ case OP_Last: { /* jump */ pC->seekOp = OP_Last; #endif if (pOp->p3==0 || !sqlCursorIsValidNN(pCrsr)) { - rc = tarantoolsqlLast(pCrsr, &res); + if (tarantoolsqlLast(pCrsr, &res) != 0) + goto abort_due_to_error; pC->nullRow = (u8)res; pC->cacheStatus = CACHE_STALE; - if (rc) goto abort_due_to_error; if (pOp->p2>0) { VdbeBranchTaken(res!=0,2); if (res) goto jump_to_p2; @@ -4085,17 +4078,15 @@ case OP_Rewind: { /* jump */ pC->seekOp = OP_Rewind; #endif if (isSorter(pC)) { - if (sqlVdbeSorterRewind(pC, &res) != SQL_OK) + if (sqlVdbeSorterRewind(pC, &res) != 0) goto abort_due_to_error; } else { assert(pC->eCurType==CURTYPE_TARANTOOL); pCrsr = pC->uc.pCursor; assert(pCrsr); - if (tarantoolsqlFirst(pCrsr, &res) != SQL_OK) - rc = SQL_TARANTOOL_ERROR; - pC->cacheStatus = CACHE_STALE; - if (rc != SQL_OK) + if (tarantoolsqlFirst(pCrsr, &res) != 0) goto abort_due_to_error; + pC->cacheStatus = CACHE_STALE; } pC->nullRow = (u8)res; assert(pOp->p2>0 && pOp->p2nOp); @@ -4179,7 +4170,8 @@ case OP_SorterNext: { /* jump */ pC = p->apCsr[pOp->p1]; assert(isSorter(pC)); res = 0; - rc = sqlVdbeSorterNext(db, pC, &res); + if (sqlVdbeSorterNext(db, pC, &res) != 0) + goto abort_due_to_error; goto next_tail; case OP_PrevIfOpen: /* jump */ case OP_NextIfOpen: /* jump */ @@ -4210,11 +4202,11 @@ case OP_Next: /* jump */ || pC->seekOp==OP_SeekLT || pC->seekOp==OP_SeekLE || pC->seekOp==OP_Last); - rc = pOp->p4.xAdvance(pC->uc.pCursor, &res); + if (pOp->p4.xAdvance(pC->uc.pCursor, &res) != 0) + goto abort_due_to_error; next_tail: pC->cacheStatus = CACHE_STALE; VdbeBranchTaken(res==0,2); - if (rc) goto abort_due_to_error; if (res==0) { pC->nullRow = 0; p->aCounter[pOp->p5]++; @@ -4242,8 +4234,8 @@ case OP_SorterInsert: { /* in2 */ assert(isSorter(cursor)); pIn2 = &aMem[pOp->p2]; assert((pIn2->flags & MEM_Blob) != 0); - if (ExpandBlob(pIn2) != SQL_OK || - sqlVdbeSorterWrite(cursor, pIn2) != SQL_OK) + if (ExpandBlob(pIn2) != 0 || + sqlVdbeSorterWrite(cursor, pIn2) != 0) goto abort_due_to_error; break; } @@ -4273,7 +4265,7 @@ case OP_IdxInsert: { assert((pIn2->flags & MEM_Blob) != 0); if (pOp->p5 & OPFLAG_NCHANGE) p->nChange++; - if (ExpandBlob(pIn2) != SQL_OK) + if (ExpandBlob(pIn2) != 0) goto abort_due_to_error; struct space *space; if (pOp->p4type == P4_SPACEPTR) @@ -4457,7 +4449,7 @@ case OP_SDelete: { struct space *space = space_by_id(pOp->p1); assert(space != NULL); assert(space_is_system(space)); - if (sql_delete_by_key(space, 0, pIn2->z, pIn2->n) != SQL_OK) + if (sql_delete_by_key(space, 0, pIn2->z, pIn2->n) != 0) goto abort_due_to_error; if (pOp->p5 & OPFLAG_NCHANGE) p->nChange++; @@ -4491,15 +4483,15 @@ case OP_IdxDelete: { r.default_rc = 0; r.aMem = &aMem[pOp->p2]; r.opcode = OP_IdxDelete; - if (sqlCursorMovetoUnpacked(pCrsr, &r, &res) != SQL_OK) + if (sqlCursorMovetoUnpacked(pCrsr, &r, &res) != 0) goto abort_due_to_error; if (res==0) { assert(pCrsr->eState == CURSOR_VALID); if (pCrsr->curFlags & BTCF_TaCursor) { - if (tarantoolsqlDelete(pCrsr, 0) != SQL_OK) + if (tarantoolsqlDelete(pCrsr, 0) != 0) goto abort_due_to_error; } else if (pCrsr->curFlags & BTCF_TEphemCursor) { - if (tarantoolsqlEphemeralDelete(pCrsr) != SQL_OK) + if (tarantoolsqlEphemeralDelete(pCrsr) != 0) goto abort_due_to_error; } else { unreachable(); @@ -4612,13 +4604,12 @@ case OP_Clear: { uint32_t space_id = pOp->p1; struct space *space = space_by_id(space_id); assert(space != NULL); - rc = 0; if (pOp->p2 > 0) { if (box_truncate(space_id) != 0) goto abort_due_to_error; } else { uint32_t tuple_count; - if (tarantoolsqlClearTable(space, &tuple_count) != SQL_OK) + if (tarantoolsqlClearTable(space, &tuple_count) != 0) goto abort_due_to_error; if ((pOp->p5 & OPFLAG_NCHANGE) != 0) p->nChange += tuple_count; @@ -4645,7 +4636,7 @@ case OP_ResetSorter: { } else { assert(pC->eCurType==CURTYPE_TARANTOOL); assert(pC->uc.pCursor->curFlags & BTCF_TEphemCursor); - if (tarantoolsqlEphemeralClearTable(pC->uc.pCursor) != SQL_OK) + if (tarantoolsqlEphemeralClearTable(pC->uc.pCursor) != 0) goto abort_due_to_error; } break; @@ -4679,7 +4670,7 @@ case OP_RenameTable: { zNewTableName = pOp->p4.z; zOldTableName = sqlDbStrNDup(db, zOldTableName, sqlStrlen30(zOldTableName)); - if (sql_rename_table(space_id, zNewTableName) != SQL_OK) + if (sql_rename_table(space_id, zNewTableName) != 0) goto abort_due_to_error; /* * Rebuild 'CREATE TRIGGER' expressions of all triggers @@ -4691,16 +4682,13 @@ case OP_RenameTable: { /* Store pointer as trigger will be destructed. */ struct sql_trigger *next_trigger = trigger->next; /* - * FIXME: In the case of error, - * part of triggers would have invalid - * space name in tuple so can not been - * persisted. - * Server could be restarted. - * In this case, rename table back and - * try again. + * FIXME: In the case of error, part of triggers + * would have invalid space name in tuple so can + * not been persisted. Server could be restarted. + * In this case, rename table back and try again. */ if (tarantoolsqlRenameTrigger(trigger->zName, zOldTableName, - zNewTableName) != SQL_OK) + zNewTableName) != 0) goto abort_due_to_error; trigger = next_trigger; } @@ -4716,7 +4704,7 @@ case OP_RenameTable: { */ case OP_LoadAnalysis: { assert(pOp->p1==0 ); - if (sql_analysis_load(db) != SQL_OK) + if (sql_analysis_load(db) != 0) goto abort_due_to_error; break; } @@ -5241,7 +5229,7 @@ case OP_IncMaxid: { assert(pOp->p1 > 0); pOut = &aMem[pOp->p1]; - if (tarantoolsqlIncrementMaxid((uint64_t*) &pOut->u.i) != SQL_OK) + if (tarantoolsqlIncrementMaxid((uint64_t*) &pOut->u.i) != 0) goto abort_due_to_error; pOut->flags = MEM_Int; break;