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);
next prev parent 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