[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