Tarantool development patches archive
 help / color / mirror / Atom feed
From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
To: Mergen Imeev <imeevma@tarantool.org>
Cc: tarantool-patches@freelists.org
Subject: [tarantool-patches] Re: [PATCH v1 5/9] sql: make SQL_TARANTOOL_ERROR the only errcode of OP_Halt
Date: Tue, 4 Jun 2019 21:34:52 +0200	[thread overview]
Message-ID: <a598ee98-5d25-9c8b-c2f7-04a1c62b4de1@tarantool.org> (raw)
In-Reply-To: <20190603115351.GA24317@tarantool.org>

Hi! Thanks for the fixes!

I noticed, that in many places you copy-pasted ER_SQL_EXECUTE
error message. It should not be so. Consider my fixes below and
on the branch:

==============================================================================

commit b7b929b7cfd3f45a26be797bfbe1cdc7e7379edc
Author: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Date:   Tue Jun 4 21:20:22 2019 +0200

    Review fixes

diff --git a/src/box/sql/expr.c b/src/box/sql/expr.c
index 4fbc8f53f..652e5a273 100644
--- a/src/box/sql/expr.c
+++ b/src/box/sql/expr.c
@@ -4386,9 +4386,9 @@ sqlExprCodeTarget(Parse * pParse, Expr * pExpr, int target)
 					  ON_CONFLICT_ACTION_IGNORE, 0,
 					  pExpr->u.zToken, 0);
 		} else {
-			const char *err = tt_sprintf("Failed to execute SQL "\
-						     "statement: %s",
-						     pExpr->u.zToken);
+			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);
diff --git a/src/box/sql/fk_constraint.c b/src/box/sql/fk_constraint.c
index 5256bec82..660674122 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,
 		 * transaction.
 		 */
 		assert(incr_count == 1);
-		const char *err = "Failed to execute SQL statement: FOREIGN "\
-				  "KEY constraint failed";
+		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);
 	} else {
diff --git a/src/box/sql/insert.c b/src/box/sql/insert.c
index 286a72134..4e93a83e3 100644
--- a/src/box/sql/insert.c
+++ b/src/box/sql/insert.c
@@ -856,6 +856,7 @@ vdbe_emit_constraint_checks(struct Parse *parse_context, struct space *space,
 	bool is_update = upd_cols != NULL;
 	assert(space != NULL);
 	struct space_def *def = space->def;
+	const char *err;
 	/* Insertion into VIEW is prohibited. */
 	assert(!def->opts.is_view);
 	uint32_t autoinc_fieldno = sql_space_autoinc_fieldno(space);
@@ -880,15 +881,15 @@ vdbe_emit_constraint_checks(struct Parse *parse_context, struct space *space,
 		if (on_conflict_nullable == ON_CONFLICT_ACTION_REPLACE &&
 		    dflt == NULL)
 			on_conflict_nullable = ON_CONFLICT_ACTION_ABORT;
-		const char *err;
 		int addr;
 		switch (on_conflict_nullable) {
 		case ON_CONFLICT_ACTION_ABORT:
 		case ON_CONFLICT_ACTION_ROLLBACK:
 		case ON_CONFLICT_ACTION_FAIL:
-			err = tt_sprintf("Failed to execute SQL statement: "\
-					 "NOT NULL constraint failed: %s.%s",
-					 def->name, def->fields[i].name);
+			err = tt_sprintf(tnt_errcode_desc(ER_SQL_EXECUTE),
+					 tt_sprintf("NOT NULL constraint "\
+						    "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,
@@ -936,11 +937,10 @@ vdbe_emit_constraint_checks(struct Parse *parse_context, struct space *space,
 				char *name = checks->a[i].zName;
 				if (name == NULL)
 					name = def->name;
-				const char *err =
-					tt_sprintf("Failed to execute SQL "\
-						   "statement: CHECK "\
-						   "constraint failed: %s",
-						   name);
+				err = tnt_errcode_desc(ER_SQL_EXECUTE);
+				err = tt_sprintf(err, tt_sprintf("CHECK "\
+						 "constraint failed: %s",
+						 name));
 				sqlVdbeAddOp4(v, OP_Halt, SQL_TARANTOOL_ERROR,
 					      on_conflict_check, ER_SQL_EXECUTE,
 					      err, P4_STATIC);
diff --git a/src/box/sql/select.c b/src/box/sql/select.c
index 4fc59d8b9..9a01c438c 100644
--- a/src/box/sql/select.c
+++ b/src/box/sql/select.c
@@ -2107,12 +2107,12 @@ computeLimitRegisters(Parse * pParse, Select * p, int iBreak)
 		sqlVdbeAddOp2(v, OP_Integer, 0, r1);
 		sqlVdbeAddOp3(v, OP_Ge, r1, positive_limit_label, iLimit);
 		/* Otherwise return an error and stop */
-		const char *wrong_limit_error =
-			"Failed to execute SQL statement: Only positive "\
-			"integers are allowed in the LIMIT clause";
+		const char *err = tt_sprintf(tnt_errcode_desc(ER_SQL_EXECUTE),
+					     "Only positive integers are "\
+					     "allowed in the LIMIT clause");
 		sqlVdbeResolveLabel(v, halt_label);
 		sqlVdbeAddOp4(v, OP_Halt, SQL_TARANTOOL_ERROR, 0,
-			      ER_SQL_EXECUTE, wrong_limit_error, P4_STATIC);
+			      ER_SQL_EXECUTE, err, P4_STATIC);
 
 		sqlVdbeResolveLabel(v, positive_limit_label);
 		VdbeCoverage(v);
@@ -2139,12 +2139,12 @@ computeLimitRegisters(Parse * pParse, Select * p, int iBreak)
 				sqlVdbeAddOp2(v, OP_Integer, 1, r1);
 				int no_err = sqlVdbeMakeLabel(v);
 				sqlVdbeAddOp3(v, OP_Eq, iLimit, no_err, r1);
-				const char *error =
-					"Failed to execute SQL statement: "\
-					"Expression subquery could be limited "\
-					"only with 1";
+				err = tnt_errcode_desc(ER_SQL_EXECUTE);
+				err = tt_sprintf(err, "Expression subquery "\
+						 "could be limited only "\
+						 "with 1");
 				sqlVdbeAddOp4(v, OP_Halt, SQL_TARANTOOL_ERROR,
-					      0, ER_SQL_EXECUTE, error,
+					      0, ER_SQL_EXECUTE, err,
 					      P4_STATIC);
 				sqlVdbeResolveLabel(v, no_err);
 				sqlReleaseTempReg(pParse, r1);
@@ -2166,14 +2166,12 @@ computeLimitRegisters(Parse * pParse, Select * p, int iBreak)
 
             		sqlVdbeAddOp3(v, OP_Ge, r1, positive_offset_label, iOffset);
 			/* Otherwise return an error and stop */
-			const char *wrong_offset_error =
-				"Failed to execute SQL statement: Only "\
-				"positive integers are allowed in the OFFSET "\
-				"clause";
+			err = tt_sprintf(tnt_errcode_desc(ER_SQL_EXECUTE),
+					 "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, wrong_offset_error,
-				      P4_STATIC);
+				      ER_SQL_EXECUTE, err, P4_STATIC);
 
 			sqlVdbeResolveLabel(v, positive_offset_label);
             		sqlReleaseTempReg(pParse, r1);
@@ -5442,9 +5440,9 @@ vdbe_code_raise_on_multiple_rows(struct Parse *parser, int limit_reg, int end_ma
 	int r1 = sqlGetTempReg(parser);
 	sqlVdbeAddOp2(v, OP_Integer, 0, r1);
 	sqlVdbeAddOp3(v, OP_Ne, r1, end_mark, limit_reg);
-	const char *error =
-		"Failed to execute SQL statement: Expression subquery "\
-		"returned more than 1 row";
+	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);
 	sqlReleaseTempReg(parser, r1);

  reply	other threads:[~2019-06-04 19:34 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-28 11:39 [tarantool-patches] [PATCH v1 0/9] sql: set errors in VDBE using diag_set() imeevma
2019-05-28 11:39 ` [tarantool-patches] [PATCH v1 1/9] sql: remove mayAbort field from struct Parse imeevma
2019-05-28 11:39 ` [tarantool-patches] [PATCH v1 2/9] sql: remove error codes SQL_TARANTOOL_*_FAIL imeevma
2019-05-28 11:39 ` [tarantool-patches] [PATCH v1 3/9] sql: remove error ER_SQL imeevma
2019-05-28 11:39 ` [tarantool-patches] [PATCH v1 4/9] sql: rework diag_set() in OP_Halt imeevma
2019-06-02 16:35   ` [tarantool-patches] " Vladislav Shpilevoy
2019-06-03  8:41     ` Imeev Mergen
2019-06-04 19:34       ` Vladislav Shpilevoy
2019-06-08 12:11         ` Mergen Imeev
2019-05-28 11:39 ` [tarantool-patches] [PATCH v1 5/9] sql: make SQL_TARANTOOL_ERROR the only errcode of OP_Halt imeevma
2019-06-02 16:35   ` [tarantool-patches] " Vladislav Shpilevoy
2019-06-03 11:53     ` Mergen Imeev
2019-06-04 19:34       ` Vladislav Shpilevoy [this message]
2019-06-08 12:15         ` Mergen Imeev
2019-05-28 11:39 ` [tarantool-patches] [PATCH v1 6/9] sql: remove error SQL_INTERRUPT imeevma
2019-05-28 11:39 ` [tarantool-patches] [PATCH v1 7/9] sql: remove error SQL_MISMATCH imeevma
2019-05-28 11:39 ` [tarantool-patches] [PATCH v1 8/9] sql: use diag_set() to set an error in SQL functions imeevma
2019-06-02 16:35   ` [tarantool-patches] " Vladislav Shpilevoy
2019-06-03 11:54     ` Mergen Imeev
2019-05-28 11:39 ` [tarantool-patches] [PATCH v1 9/9] sql: set errors in VDBE using diag_set() imeevma
2019-06-02 16:34   ` [tarantool-patches] " Vladislav Shpilevoy
2019-06-03 12:10     ` Mergen Imeev
2019-06-03 12:20       ` Mergen Imeev
2019-06-09 17:14 ` [tarantool-patches] Re: [PATCH v1 0/9] " Vladislav Shpilevoy
2019-06-13  9:44 ` Kirill Yukhin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a598ee98-5d25-9c8b-c2f7-04a1c62b4de1@tarantool.org \
    --to=v.shpilevoy@tarantool.org \
    --cc=imeevma@tarantool.org \
    --cc=tarantool-patches@freelists.org \
    --subject='[tarantool-patches] Re: [PATCH v1 5/9] sql: make SQL_TARANTOOL_ERROR the only errcode of OP_Halt' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox