[tarantool-patches] [PATCH v1 22/28] sql: remove SQL_TARANTOOL_ERROR errcode
imeevma at tarantool.org
imeevma at tarantool.org
Mon Jun 10 16:57:01 MSK 2019
Removing this error code is part of getting rid of the SQL error
system.
---
src/box/sql.c | 72 +++++++++++++++++++--------------------------
src/box/sql/build.c | 6 ++--
src/box/sql/expr.c | 5 ++--
src/box/sql/fk_constraint.c | 4 +--
src/box/sql/insert.c | 7 ++---
src/box/sql/main.c | 6 ++--
src/box/sql/prepare.c | 4 +--
src/box/sql/select.c | 16 +++++-----
src/box/sql/sqlInt.h | 6 ++--
src/box/sql/tarantoolInt.h | 4 +--
src/box/sql/vdbe.c | 29 +++++++-----------
src/box/sql/vdbeapi.c | 10 +++----
src/box/sql/vdbeaux.c | 8 ++---
src/box/sql/vdbemem.c | 4 +--
src/box/sql/where.c | 2 +-
15 files changed, 79 insertions(+), 104 deletions(-)
diff --git a/src/box/sql.c b/src/box/sql.c
index 51f7b77..d8c7d91 100644
--- a/src/box/sql.c
+++ b/src/box/sql.c
@@ -172,7 +172,7 @@ const void *tarantoolsqlPayloadFetch(BtCursor *pCur, u32 *pAmt)
int tarantoolsqlFirst(BtCursor *pCur, int *pRes)
{
if (key_alloc(pCur, sizeof(nil_key)) != 0)
- return SQL_TARANTOOL_ERROR;
+ return -1;
memcpy(pCur->key, nil_key, sizeof(nil_key));
pCur->iter_type = ITER_GE;
return cursor_seek(pCur, pRes);
@@ -182,7 +182,7 @@ int tarantoolsqlFirst(BtCursor *pCur, int *pRes)
int tarantoolsqlLast(BtCursor *pCur, int *pRes)
{
if (key_alloc(pCur, sizeof(nil_key)) != 0)
- return SQL_TARANTOOL_ERROR;
+ return -1;
memcpy(pCur->key, nil_key, sizeof(nil_key));
pCur->iter_type = ITER_LE;
return cursor_seek(pCur, pRes);
@@ -230,9 +230,9 @@ int tarantoolsqlMovetoUnpacked(BtCursor *pCur, UnpackedRecord *pIdxKey,
sql_vdbe_mem_encode_tuple(pIdxKey->aMem, pIdxKey->nField,
&tuple_size, region);
if (tuple == NULL)
- return SQL_TARANTOOL_ERROR;
+ return -1;
if (key_alloc(pCur, tuple_size) != 0)
- return SQL_TARANTOOL_ERROR;
+ return -1;
memcpy(pCur->key, tuple, tuple_size);
region_truncate(region, used);
@@ -382,9 +382,7 @@ int tarantoolsqlEphemeralInsert(struct space *space, const char *tuple,
{
assert(space != NULL);
mp_tuple_assert(tuple, tuple_end);
- if (space_ephemeral_replace(space, tuple, tuple_end) != 0)
- return SQL_TARANTOOL_ERROR;
- return 0;
+ return space_ephemeral_replace(space, tuple, tuple_end);
}
/* Simply delete ephemeral space by calling space_delete(). */
@@ -409,8 +407,7 @@ insertOrReplace(struct space *space, const char *tuple, const char *tuple_end,
request.space_id = space->def->id;
request.type = type;
mp_tuple_assert(request.tuple, request.tuple_end);
- int rc = box_process_rw(&request, space, NULL);
- return rc == 0 ? 0 : SQL_TARANTOOL_ERROR;
+ return box_process_rw(&request, space, NULL);
}
int tarantoolsqlInsert(struct space *space, const char *tuple,
@@ -431,7 +428,7 @@ int tarantoolsqlReplace(struct space *space, const char *tuple,
*
* @param pCur Cursor pointing to ephemeral space.
*
- * @retval 0 on success, SQL_TARANTOOL_ERROR otherwise.
+ * @retval 0 on success, -1 otherwise.
*/
int tarantoolsqlEphemeralDelete(BtCursor *pCur)
{
@@ -445,12 +442,12 @@ int tarantoolsqlEphemeralDelete(BtCursor *pCur)
pCur->iter->index->def->key_def,
MULTIKEY_NONE, &key_size);
if (key == NULL)
- return SQL_TARANTOOL_ERROR;
+ return -1;
int rc = space_ephemeral_delete(pCur->space, key);
if (rc != 0) {
diag_log();
- return SQL_TARANTOOL_ERROR;
+ return -1;
}
return 0;
}
@@ -465,17 +462,14 @@ int tarantoolsqlDelete(BtCursor *pCur, u8 flags)
char *key;
uint32_t key_size;
- int rc;
key = tuple_extract_key(pCur->last_tuple,
pCur->iter->index->def->key_def,
MULTIKEY_NONE, &key_size);
if (key == NULL)
- return SQL_TARANTOOL_ERROR;
- rc = sql_delete_by_key(pCur->space, pCur->index->def->iid, key,
- key_size);
-
- return rc == 0 ? 0 : SQL_TARANTOOL_ERROR;
+ return -1;
+ return sql_delete_by_key(pCur->space, pCur->index->def->iid, key,
+ key_size);
}
int
@@ -491,9 +485,7 @@ sql_delete_by_key(struct space *space, uint32_t iid, char *key,
request.space_id = space->def->id;
request.index_id = iid;
assert(space_index(space, iid)->def->opts.is_unique);
- int rc = box_process_rw(&request, space, &unused);
-
- return rc == 0 ? 0 : SQL_TARANTOOL_ERROR;
+ return box_process_rw(&request, space, &unused);
}
/*
@@ -503,7 +495,7 @@ sql_delete_by_key(struct space *space, uint32_t iid, char *key,
*
* @param pCur Cursor pointing to ephemeral space.
*
- * @retval 0 on success, SQL_TARANTOOL_ERROR otherwise.
+ * @retval 0 on success, -1 otherwise.
*/
int tarantoolsqlEphemeralClearTable(BtCursor *pCur)
{
@@ -515,7 +507,7 @@ int tarantoolsqlEphemeralClearTable(BtCursor *pCur)
0 /* part_count */);
if (it == NULL) {
pCur->eState = CURSOR_INVALID;
- return SQL_TARANTOOL_ERROR;
+ return -1;
}
struct tuple *tuple;
@@ -527,7 +519,7 @@ int tarantoolsqlEphemeralClearTable(BtCursor *pCur)
MULTIKEY_NONE, &key_size);
if (space_ephemeral_delete(pCur->space, key) != 0) {
iterator_delete(it);
- return SQL_TARANTOOL_ERROR;
+ return -1;
}
}
iterator_delete(it);
@@ -554,7 +546,7 @@ int tarantoolsqlClearTable(struct space *space, uint32_t *tuple_count)
struct index *pk = space_index(space, 0 /* PK */);
struct iterator *iter = index_create_iterator(pk, ITER_ALL, nil_key, 0);
if (iter == NULL)
- return SQL_TARANTOOL_ERROR;
+ return -1;
while (iterator_next(iter, &tuple) == 0 && tuple != NULL) {
request.key = tuple_extract_key(tuple, pk->def->key_def,
MULTIKEY_NONE, &key_size);
@@ -562,7 +554,7 @@ int tarantoolsqlClearTable(struct space *space, uint32_t *tuple_count)
rc = box_process_rw(&request, space, &unused);
if (rc != 0) {
iterator_delete(iter);
- return SQL_TARANTOOL_ERROR;
+ return -1;
}
(*tuple_count)++;
}
@@ -607,8 +599,11 @@ int tarantoolsqlRenameTrigger(const char *trig_name,
assert(mp_typeof(*field) == MP_MAP);
mp_decode_map(&field);
const char *sql_str = mp_decode_str(&field, &key_len);
- if (sqlStrNICmp(sql_str, "sql", 3) != 0)
- goto rename_fail;
+ if (sqlStrNICmp(sql_str, "sql", 3) != 0) {
+ diag_set(ClientError, ER_SQL_EXECUTE, "can't modify name of "\
+ "space created not via SQL facilities");
+ return -1;
+ }
uint32_t trigger_stmt_len;
const char *trigger_stmt_old = mp_decode_str(&field, &trigger_stmt_len);
char *trigger_stmt = (char*)region_alloc(&fiber()->gc,
@@ -644,11 +639,6 @@ int tarantoolsqlRenameTrigger(const char *trig_name,
trigger_stmt_new_len);
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 -1;
}
int
@@ -676,9 +666,7 @@ sql_rename_table(uint32_t space_id, const char *new_name)
pos = mp_encode_str(pos, "=", 1);
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 -1;
- return 0;
+ return box_update(BOX_SPACE_ID, 0, raw, ops, ops, pos, 0, NULL);
}
int
@@ -848,7 +836,7 @@ key_alloc(BtCursor *cur, size_t key_size)
* @param key Start of buffer containing key.
* @param key_end End of buffer containing key.
*
- * @retval 0 on success, SQL_TARANTOOL_ERROR otherwise.
+ * @retval 0 on success, -1 otherwise.
*/
static int
cursor_seek(BtCursor *pCur, int *pRes)
@@ -862,13 +850,13 @@ cursor_seek(BtCursor *pCur, int *pRes)
uint32_t part_count = mp_decode_array(&key);
if (key_validate(pCur->index->def, pCur->iter_type, key, part_count)) {
diag_log();
- return SQL_TARANTOOL_ERROR;
+ return -1;
}
struct space *space = pCur->space;
struct txn *txn = NULL;
if (space->def->id != 0 && txn_begin_ro_stmt(space, &txn) != 0)
- return SQL_TARANTOOL_ERROR;
+ return -1;
struct iterator *it =
index_create_iterator(pCur->index, pCur->iter_type, key,
part_count);
@@ -876,7 +864,7 @@ cursor_seek(BtCursor *pCur, int *pRes)
if (txn != NULL)
txn_rollback_stmt();
pCur->eState = CURSOR_INVALID;
- return SQL_TARANTOOL_ERROR;
+ return -1;
}
if (txn != NULL)
txn_commit_ro_stmt(txn);
@@ -894,7 +882,7 @@ cursor_seek(BtCursor *pCur, int *pRes)
* @param pCur Cursor which contains space and tuple.
* @param[out] pRes Flag which is 0 if reached end of space, 1 otherwise.
*
- * @retval 0 on success, SQL_TARANTOOL_ERROR otherwise.
+ * @retval 0 on success, -1 otherwise.
*/
static int
cursor_advance(BtCursor *pCur, int *pRes)
@@ -903,7 +891,7 @@ cursor_advance(BtCursor *pCur, int *pRes)
struct tuple *tuple;
if (iterator_next(pCur->iter, &tuple) != 0)
- return SQL_TARANTOOL_ERROR;
+ return -1;
if (pCur->last_tuple)
box_tuple_unref(pCur->last_tuple);
if (tuple) {
diff --git a/src/box/sql/build.c b/src/box/sql/build.c
index b6cec65..38a6cae 100644
--- a/src/box/sql/build.c
+++ b/src/box/sql/build.c
@@ -141,7 +141,7 @@ sql_finish_coding(struct Parse *parse_context)
sqlVdbeChangeP2(v, record->insertion_opcode,
v->nOp);
}
- sqlVdbeAddOp1(v, OP_Halt, SQL_TARANTOOL_ERROR);
+ sqlVdbeAddOp1(v, OP_Halt, -1);
VdbeComment((v,
"Exit with an error if CREATE statement fails"));
}
@@ -3286,8 +3286,8 @@ vdbe_emit_halt_with_presence_test(struct Parse *parser, int space_id,
if (no_error) {
sqlVdbeAddOp0(v, OP_Halt);
} else {
- sqlVdbeAddOp4(v, OP_Halt, SQL_TARANTOOL_ERROR, 0,
- tarantool_error_code, error, P4_DYNAMIC);
+ sqlVdbeAddOp4(v, OP_Halt, -1, 0, tarantool_error_code, error,
+ P4_DYNAMIC);
}
sqlVdbeAddOp1(v, OP_Close, cursor);
return 0;
diff --git a/src/box/sql/expr.c b/src/box/sql/expr.c
index 054c516..2395c64 100644
--- a/src/box/sql/expr.c
+++ b/src/box/sql/expr.c
@@ -4394,9 +4394,8 @@ sqlExprCodeTarget(Parse * pParse, Expr * pExpr, int target)
const char *err =
tt_sprintf(tnt_errcode_desc(ER_SQL_EXECUTE),
pExpr->u.zToken);
- sqlVdbeAddOp4(v, OP_Halt, SQL_TARANTOOL_ERROR,
- pExpr->on_conflict_action, ER_SQL_EXECUTE,
- err, 0);
+ sqlVdbeAddOp4(v, OP_Halt, -1, pExpr->on_conflict_action,
+ ER_SQL_EXECUTE, err, 0);
}
break;
}
diff --git a/src/box/sql/fk_constraint.c b/src/box/sql/fk_constraint.c
index 6cb41f8..06c863a 100644
--- a/src/box/sql/fk_constraint.c
+++ b/src/box/sql/fk_constraint.c
@@ -287,8 +287,8 @@ fk_constraint_lookup_parent(struct Parse *parse_context, struct space *parent,
assert(incr_count == 1);
const char *err = tt_sprintf(tnt_errcode_desc(ER_SQL_EXECUTE),
"FOREIGN KEY constraint failed");
- sqlVdbeAddOp4(v, OP_Halt, SQL_TARANTOOL_ERROR, 0,
- ER_SQL_EXECUTE, err, P4_STATIC);
+ sqlVdbeAddOp4(v, OP_Halt, -1, 0, ER_SQL_EXECUTE, err,
+ P4_STATIC);
} else {
sqlVdbeAddOp2(v, OP_FkCounter, fk_def->is_deferred,
incr_count);
diff --git a/src/box/sql/insert.c b/src/box/sql/insert.c
index 3309753..43931c0 100644
--- a/src/box/sql/insert.c
+++ b/src/box/sql/insert.c
@@ -812,7 +812,7 @@ vdbe_emit_ck_constraint(struct Parse *parser, struct Expr *expr,
sqlExprIfTrue(parser, expr, check_is_passed, SQL_JUMPIFNULL);
const char *fmt = tnt_errcode_desc(ER_CK_CONSTRAINT_FAILED);
const char *error_msg = tt_sprintf(fmt, ck_constraint_name, expr_str);
- sqlVdbeAddOp4(v, OP_Halt, SQL_TARANTOOL_ERROR, ON_CONFLICT_ACTION_ABORT,
+ sqlVdbeAddOp4(v, OP_Halt, -1, ON_CONFLICT_ACTION_ABORT,
0, sqlDbStrDup(parser->db, error_msg), P4_DYNAMIC);
sqlVdbeChangeP5(v, ER_CK_CONSTRAINT_FAILED);
VdbeNoopComment((v, "END: ck constraint %s test", ck_constraint_name));
@@ -865,9 +865,8 @@ vdbe_emit_constraint_checks(struct Parse *parse_context, struct space *space,
"failed: %s.%s", def->name,
def->fields[i].name));
addr = sqlVdbeAddOp1(v, OP_NotNull, new_tuple_reg + i);
- sqlVdbeAddOp4(v, OP_Halt, SQL_TARANTOOL_ERROR,
- on_conflict_nullable, ER_SQL_EXECUTE,
- err, P4_STATIC);
+ sqlVdbeAddOp4(v, OP_Halt, -1, on_conflict_nullable,
+ ER_SQL_EXECUTE, err, P4_STATIC);
sqlVdbeJumpHere(v, addr);
break;
case ON_CONFLICT_ACTION_IGNORE:
diff --git a/src/box/sql/main.c b/src/box/sql/main.c
index e6d3a3d..76d464f 100644
--- a/src/box/sql/main.c
+++ b/src/box/sql/main.c
@@ -258,7 +258,7 @@ sqlCreateFunc(sql * db,
(255 < (sqlStrlen30(zFunctionName)))) {
diag_set(ClientError, ER_CREATE_FUNCTION, zFunctionName,
"wrong function definition");
- return SQL_TARANTOOL_ERROR;
+ return -1;
}
assert(SQL_FUNC_CONSTANT == SQL_DETERMINISTIC);
@@ -276,7 +276,7 @@ sqlCreateFunc(sql * db,
diag_set(ClientError, ER_CREATE_FUNCTION, zFunctionName,
"unable to create function due to active "\
"statements");
- return SQL_TARANTOOL_ERROR;
+ return -1;
} else {
sqlExpirePreparedStatements(db);
}
@@ -285,7 +285,7 @@ sqlCreateFunc(sql * db,
p = sqlFindFunction(db, zFunctionName, nArg, 1);
assert(p || db->mallocFailed);
if (p == NULL)
- return SQL_TARANTOOL_ERROR;
+ return -1;
/* If an older version of the function with a configured destructor is
* being replaced invoke the destructor function here.
diff --git a/src/box/sql/prepare.c b/src/box/sql/prepare.c
index 4f072f1..0aa744f 100644
--- a/src/box/sql/prepare.c
+++ b/src/box/sql/prepare.c
@@ -83,7 +83,7 @@ sqlPrepare(sql * db, /* Database handle. */
if (nBytes > mxLen) {
diag_set(ClientError, ER_SQL_PARSER_LIMIT,
"SQL command length", nBytes, mxLen);
- rc = SQL_TARANTOOL_ERROR;
+ rc = -1;
goto end_prepare;
}
zSqlCopy = sqlDbStrNDup(db, zSql, nBytes);
@@ -105,7 +105,7 @@ sqlPrepare(sql * db, /* Database handle. */
*pzTail = sParse.zTail;
}
if (sParse.is_aborted)
- rc = SQL_TARANTOOL_ERROR;
+ rc = -1;
if (rc == 0 && sParse.pVdbe && sParse.explain) {
static const char *const azColName[] = {
diff --git a/src/box/sql/select.c b/src/box/sql/select.c
index 2ecad78..a92fa8a 100644
--- a/src/box/sql/select.c
+++ b/src/box/sql/select.c
@@ -2105,8 +2105,8 @@ computeLimitRegisters(Parse * pParse, Select * p, int iBreak)
"Only positive integers are "\
"allowed in the LIMIT clause");
sqlVdbeResolveLabel(v, halt_label);
- sqlVdbeAddOp4(v, OP_Halt, SQL_TARANTOOL_ERROR, 0,
- ER_SQL_EXECUTE, err, P4_STATIC);
+ sqlVdbeAddOp4(v, OP_Halt, -1, 0, ER_SQL_EXECUTE, err,
+ P4_STATIC);
sqlVdbeResolveLabel(v, positive_limit_label);
VdbeCoverage(v);
@@ -2137,9 +2137,8 @@ computeLimitRegisters(Parse * pParse, Select * p, int iBreak)
err = tt_sprintf(err, "Expression subquery "\
"could be limited only "\
"with 1");
- sqlVdbeAddOp4(v, OP_Halt, SQL_TARANTOOL_ERROR,
- 0, ER_SQL_EXECUTE, err,
- P4_STATIC);
+ sqlVdbeAddOp4(v, OP_Halt, -1, 0, ER_SQL_EXECUTE,
+ err, P4_STATIC);
sqlVdbeResolveLabel(v, no_err);
sqlReleaseTempReg(pParse, r1);
@@ -2164,8 +2163,8 @@ computeLimitRegisters(Parse * pParse, Select * p, int iBreak)
"Only positive integers are allowed "\
"in the OFFSET clause");
sqlVdbeResolveLabel(v, offset_error_label);
- sqlVdbeAddOp4(v, OP_Halt, SQL_TARANTOOL_ERROR, 0,
- ER_SQL_EXECUTE, err, P4_STATIC);
+ sqlVdbeAddOp4(v, OP_Halt, -1, 0, ER_SQL_EXECUTE, err,
+ P4_STATIC);
sqlVdbeResolveLabel(v, positive_offset_label);
sqlReleaseTempReg(pParse, r1);
@@ -5436,8 +5435,7 @@ vdbe_code_raise_on_multiple_rows(struct Parse *parser, int limit_reg, int end_ma
const char *error = tt_sprintf(tnt_errcode_desc(ER_SQL_EXECUTE),
"Expression subquery returned more "\
"than 1 row");
- sqlVdbeAddOp4(v, OP_Halt, SQL_TARANTOOL_ERROR, 0, ER_SQL_EXECUTE, error,
- P4_STATIC);
+ sqlVdbeAddOp4(v, OP_Halt, -1, 0, ER_SQL_EXECUTE, error, P4_STATIC);
sqlReleaseTempReg(parser, r1);
}
diff --git a/src/box/sql/sqlInt.h b/src/box/sql/sqlInt.h
index cff8ef5..d5a1a9a 100644
--- a/src/box/sql/sqlInt.h
+++ b/src/box/sql/sqlInt.h
@@ -356,12 +356,10 @@ struct sql_vfs {
#define SQL_LIMIT_WORKER_THREADS 10
enum sql_ret_code {
- /** Abort due to constraint violation. */
- SQL_TARANTOOL_ERROR = 4,
/** sql_step() has another row ready. */
- SQL_ROW,
+ SQL_ROW = 1,
/** sql_step() has finished executing. */
- SQL_DONE,
+ SQL_DONE = 2,
};
void *
diff --git a/src/box/sql/tarantoolInt.h b/src/box/sql/tarantoolInt.h
index 71073ad..e166045 100644
--- a/src/box/sql/tarantoolInt.h
+++ b/src/box/sql/tarantoolInt.h
@@ -35,7 +35,7 @@ int tarantoolsqlDelete(BtCursor * pCur, u8 flags);
* @param key Key of record to be deleted.
* @param key_size Size of key.
*
- * @retval 0 on success, SQL_TARANTOOL_ERROR otherwise.
+ * @retval 0 on success, -1 otherwise.
*/
int
sql_delete_by_key(struct space *space, uint32_t iid, char *key,
@@ -82,7 +82,7 @@ sql_ephemeral_space_create(uint32_t filed_count, struct sql_key_info *key_info);
* @param tuple Tuple to be inserted.
* @param tuple_end End of tuple to be inserted.
*
- * @retval 0 on success, SQL_TARANTOOL_ERROR otherwise.
+ * @retval 0 on success, -1 otherwise.
*/
int tarantoolsqlEphemeralInsert(struct space *space, const char *tuple,
const char *tuple_end);
diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c
index c592518..68edbc0 100644
--- a/src/box/sql/vdbe.c
+++ b/src/box/sql/vdbe.c
@@ -682,7 +682,7 @@ vdbe_field_ref_fetch(struct vdbe_field_ref *field_ref, uint32_t fieldno,
uint32_t dummy;
data = field_ref->data + slots[fieldno];
if (vdbe_decode_msgpack_into_mem(data, dest_mem, &dummy) != 0)
- return SQL_TARANTOOL_ERROR;
+ return -1;
/*
* MsgPack map, array or extension (unsupported in sql).
@@ -703,7 +703,7 @@ vdbe_field_ref_fetch(struct vdbe_field_ref *field_ref, uint32_t fieldno,
int len = dest_mem->n;
if (dest_mem->szMalloc < len + 1) {
if (sqlVdbeMemGrow(dest_mem, len + 1, 1) != 0)
- return SQL_TARANTOOL_ERROR;
+ return -1;
} else {
dest_mem->z =
memcpy(dest_mem->zMalloc, dest_mem->z, len);
@@ -1018,8 +1018,8 @@ case OP_Yield: { /* in1, jump */
*
* If P4 is not null then it is an error message string.
*
- * If P1 is SQL_TARANTOOL_ERROR then P3 is a ClientError code and
- * P4 is error message to set.
+ * If P1 is -1 then P3 is a ClientError code and P4 is error
+ * message to set.
*
* There is an implied "Halt 0 0 0" instruction inserted at the
* very end of every program. So a jump past the last instruction
@@ -1056,14 +1056,12 @@ case OP_Halt: {
p->errorAction = (u8)pOp->p2;
p->pc = pcx;
if (p->rc) {
- assert(p->rc == SQL_TARANTOOL_ERROR);
if (pOp->p4.z != NULL)
box_error_set(__FILE__, __LINE__, pOp->p3, pOp->p4.z);
assert(! diag_is_empty(diag_get()));
}
- rc = sqlVdbeHalt(p);
- assert(rc == 0 || rc == -1);
- rc = p->rc ? SQL_TARANTOOL_ERROR : SQL_DONE;
+ sqlVdbeHalt(p);
+ rc = p->rc ? -1 : SQL_DONE;
goto vdbe_return;
}
@@ -3604,7 +3602,6 @@ case OP_Found: { /* jump, in3 */
rc = sqlCursorMovetoUnpacked(pC->uc.pCursor, pIdxKey, &res);
if (pFree != NULL)
sqlDbFree(db, pFree);
- assert(rc == 0 || rc == SQL_TARANTOOL_ERROR);
if (rc != 0)
goto abort_due_to_error;
pC->seekResult = res;
@@ -4274,7 +4271,6 @@ case OP_IdxInsert: {
} else if (pOp->p5 & OPFLAG_OE_ROLLBACK) {
p->errorAction = ON_CONFLICT_ACTION_ROLLBACK;
}
- assert(rc == 0 || rc == SQL_TARANTOOL_ERROR);
if (rc != 0)
goto abort_due_to_error;
break;
@@ -4352,9 +4348,8 @@ case OP_Update: {
}
assert(rc == 0);
- if (box_update(space->def->id, 0, key_mem->z, key_mem->z + key_mem->n,
- ops, ops + ops_size, 0, NULL) != 0)
- rc = SQL_TARANTOOL_ERROR;
+ rc = box_update(space->def->id, 0, key_mem->z, key_mem->z + key_mem->n,
+ ops, ops + ops_size, 0, NULL);
if (pOp->p5 & OPFLAG_OE_IGNORE) {
/*
@@ -4373,7 +4368,6 @@ case OP_Update: {
} else if (pOp->p5 & OPFLAG_OE_ROLLBACK) {
p->errorAction = ON_CONFLICT_ACTION_ROLLBACK;
}
- assert(rc == 0 || rc == SQL_TARANTOOL_ERROR);
if (rc != 0)
goto abort_due_to_error;
break;
@@ -5159,7 +5153,7 @@ case OP_Init: { /* jump */
*/
if (p->pFrame == NULL && sql_vdbe_prepare(p) != 0) {
sqlDbFree(db, p);
- rc = SQL_TARANTOOL_ERROR;
+ rc = -1;
break;
}
@@ -5264,7 +5258,7 @@ default: { /* This is really OP_Noop and OP_Explain */
* an error of some kind.
*/
abort_due_to_error:
- rc = SQL_TARANTOOL_ERROR;
+ rc = -1;
p->rc = rc;
/* This is the only way out of this procedure. */
@@ -5274,8 +5268,7 @@ vdbe_return:
assert(rc!=0 || nExtraDelete==0
|| sql_strlike_ci("DELETE%", p->zSql, 0) != 0
);
- assert(rc == 0 || rc == SQL_TARANTOOL_ERROR ||
- rc == SQL_ROW || rc == SQL_DONE);
+ assert(rc == 0 || rc == -1 || rc == SQL_ROW || rc == SQL_DONE);
return rc;
/* Jump to here if a string or blob larger than SQL_MAX_LENGTH
diff --git a/src/box/sql/vdbeapi.c b/src/box/sql/vdbeapi.c
index 336dc3b..268aff6 100644
--- a/src/box/sql/vdbeapi.c
+++ b/src/box/sql/vdbeapi.c
@@ -297,7 +297,7 @@ invokeValueDestructor(const void *p, /* Value to destroy */
"big");
pCtx->is_aborted = true;
}
- return SQL_TARANTOOL_ERROR;
+ return -1;
}
void
@@ -394,7 +394,7 @@ sql_result_zeroblob64(sql_context * pCtx, u64 n)
if (n > (u64) pOut->db->aLimit[SQL_LIMIT_LENGTH]) {
diag_set(ClientError, ER_SQL_EXECUTE, "string or blob is too "\
"big");
- return SQL_TARANTOOL_ERROR;
+ return -1;
}
sqlVdbeMemSetZeroBlob(pCtx->pOut, (int)n);
return 0;
@@ -427,8 +427,8 @@ sqlStep(Vdbe * p)
}
if (p->pc <= 0 && p->expired) {
- p->rc = SQL_TARANTOOL_ERROR;
- return SQL_TARANTOOL_ERROR;
+ p->rc = -1;
+ return -1;
}
if (p->pc < 0) {
@@ -1134,7 +1134,7 @@ sql_bind_zeroblob64(sql_stmt * pStmt, int i, sql_uint64 n)
if (n > (u64) p->db->aLimit[SQL_LIMIT_LENGTH]) {
diag_set(ClientError, ER_SQL_EXECUTE, "string or blob is too "\
"big");
- rc = SQL_TARANTOOL_ERROR;
+ rc = -1;
} else {
assert((n & 0x7FFFFFFF) == n);
rc = sql_bind_zeroblob(pStmt, i, n);
diff --git a/src/box/sql/vdbeaux.c b/src/box/sql/vdbeaux.c
index 8e2ca35..d4ba3a3 100644
--- a/src/box/sql/vdbeaux.c
+++ b/src/box/sql/vdbeaux.c
@@ -2079,7 +2079,7 @@ sqlVdbeCloseStatement(Vdbe * p, int eOp)
* violations, return -1. Otherwise, 0.
*
* If there are outstanding FK violations and this function returns
- * SQL_TARANTOOL_ERROR and set an error.
+ * -1 and set an error.
*/
int
sqlVdbeCheckFk(Vdbe * p, int deferred)
@@ -2088,11 +2088,11 @@ sqlVdbeCheckFk(Vdbe * p, int deferred)
if ((deferred && txn != NULL && txn->psql_txn != NULL &&
txn->psql_txn->fk_deferred_count > 0) ||
(!deferred && p->nFkConstraint > 0)) {
- p->rc = SQL_TARANTOOL_ERROR;
+ p->rc = -1;
p->errorAction = ON_CONFLICT_ACTION_ABORT;
diag_set(ClientError, ER_SQL_EXECUTE, "FOREIGN KEY constraint "\
"failed");
- return SQL_TARANTOOL_ERROR;
+ return -1;
}
return 0;
}
@@ -2210,7 +2210,7 @@ sqlVdbeHalt(Vdbe * p)
*/
rc = (in_txn() == NULL ||
txn_commit(in_txn()) == 0) ?
- 0 : SQL_TARANTOOL_ERROR;
+ 0 : -1;
closeCursorsAndFree(p);
}
if (rc != 0) {
diff --git a/src/box/sql/vdbemem.c b/src/box/sql/vdbemem.c
index da63193..c3db534 100644
--- a/src/box/sql/vdbemem.c
+++ b/src/box/sql/vdbemem.c
@@ -995,7 +995,7 @@ sqlVdbeMemSetStr(Mem * pMem, /* Memory cell to set to string value */
if (nByte > iLimit) {
diag_set(ClientError, ER_SQL_EXECUTE, "string or blob "\
"is too big");
- return SQL_TARANTOOL_ERROR;
+ return -1;
}
testcase(nAlloc == 0);
testcase(nAlloc == 31);
@@ -1021,7 +1021,7 @@ sqlVdbeMemSetStr(Mem * pMem, /* Memory cell to set to string value */
if (nByte > iLimit) {
diag_set(ClientError, ER_SQL_EXECUTE, "string or blob is too "\
"big");
- return SQL_TARANTOOL_ERROR;
+ return -1;
}
return 0;
diff --git a/src/box/sql/where.c b/src/box/sql/where.c
index 9739268..d2bfbfc 100644
--- a/src/box/sql/where.c
+++ b/src/box/sql/where.c
@@ -2779,7 +2779,7 @@ whereLoopAddBtree(WhereLoopBuilder * pBuilder, /* WHERE clause information */
if (key_def == NULL) {
tnt_error:
pWInfo->pParse->is_aborted = true;
- return SQL_TARANTOOL_ERROR;
+ return -1;
}
struct index_opts opts;
--
2.7.4
More information about the Tarantool-patches
mailing list