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 D07442E6C7 for ; Mon, 10 Jun 2019 09:56:56 -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 ALxtAebikTYU for ; Mon, 10 Jun 2019 09:56:56 -0400 (EDT) Received: from smtp36.i.mail.ru (smtp36.i.mail.ru [94.100.177.96]) (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 8521D2E6C2 for ; Mon, 10 Jun 2019 09:56:56 -0400 (EDT) From: imeevma@tarantool.org Subject: [tarantool-patches] [PATCH v1 18/28] sql: remove SQL_CONSTRAINT errcode Date: Mon, 10 Jun 2019 16:56:54 +0300 Message-Id: <40cba82136f5c06632922856f95294616a475b74.1560174553.git.imeevma@gmail.com> In-Reply-To: References: 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: v.shpilevoy@tarantool.org Cc: tarantool-patches@freelists.org Removing this error code is part of getting rid of the SQL error system. --- src/box/sql/fk_constraint.c | 4 ++-- src/box/sql/sqlInt.h | 7 ------- src/box/sql/vdbe.c | 1 - src/box/sql/vdbeaux.c | 10 +++------- 4 files changed, 5 insertions(+), 17 deletions(-) diff --git a/src/box/sql/fk_constraint.c b/src/box/sql/fk_constraint.c index 08e7f62..6cb41f8 100644 --- a/src/box/sql/fk_constraint.c +++ b/src/box/sql/fk_constraint.c @@ -44,7 +44,7 @@ * * Foreign keys in sql come in two flavours: deferred and immediate. * If an immediate foreign key constraint is violated, - * SQL_CONSTRAINT_FOREIGNKEY is returned and the current + * -1 is returned and the current * statement transaction rolled back. If a * deferred foreign key constraint is violated, no action is taken * immediately. However if the application attempts to commit the @@ -110,7 +110,7 @@ * is that the counter used is stored as part of each individual statement * object (struct Vdbe). If, after the statement has run, its immediate * constraint counter is greater than zero, - * it returns SQL_CONSTRAINT_FOREIGNKEY + * it returns -1. * and the statement transaction is rolled back. An exception is an INSERT * statement that inserts a single row only (no triggers). In this case, * instead of using a counter, an exception is thrown immediately if the diff --git a/src/box/sql/sqlInt.h b/src/box/sql/sqlInt.h index 9f15893..ec4eb29 100644 --- a/src/box/sql/sqlInt.h +++ b/src/box/sql/sqlInt.h @@ -363,7 +363,6 @@ enum sql_ret_code { /** Some kind of disk I/O error occurred. */ SQL_IOERR, /** Abort due to constraint violation. */ - SQL_CONSTRAINT, SQL_TARANTOOL_ERROR, /** sql_step() has another row ready. */ SQL_ROW, @@ -604,12 +603,6 @@ sql_exec(sql *, /* An open database */ #define SQL_IOERR_GETTEMPPATH (SQL_IOERR | (25<<8)) #define SQL_IOERR_CONVPATH (SQL_IOERR | (26<<8)) #define SQL_IOERR_VNODE (SQL_IOERR | (27<<8)) -#define SQL_CONSTRAINT_FOREIGNKEY (SQL_CONSTRAINT | (3<<8)) -#define SQL_CONSTRAINT_FUNCTION (SQL_CONSTRAINT | (4<<8)) -#define SQL_CONSTRAINT_NOTNULL (SQL_CONSTRAINT | (5<<8)) -#define SQL_CONSTRAINT_PRIMARYKEY (SQL_CONSTRAINT | (6<<8)) -#define SQL_CONSTRAINT_TRIGGER (SQL_CONSTRAINT | (7<<8)) -#define SQL_CONSTRAINT_UNIQUE (SQL_CONSTRAINT | (8<<8)) /** * Subtype of a main type. Allows to do some subtype specific diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c index c63f11c..57d6d60 100644 --- a/src/box/sql/vdbe.c +++ b/src/box/sql/vdbe.c @@ -1069,7 +1069,6 @@ case OP_Halt: { } rc = sqlVdbeHalt(p); assert(rc == 0 || rc==SQL_ERROR); - assert(rc==0 || (p->rc&0xff)==SQL_CONSTRAINT); rc = p->rc ? SQL_TARANTOOL_ERROR : SQL_DONE; goto vdbe_return; } diff --git a/src/box/sql/vdbeaux.c b/src/box/sql/vdbeaux.c index 4f06369..308373b 100644 --- a/src/box/sql/vdbeaux.c +++ b/src/box/sql/vdbeaux.c @@ -2088,8 +2088,7 @@ sqlVdbeCloseStatement(Vdbe * p, int eOp) * violations, return SQL_ERROR. Otherwise, 0. * * If there are outstanding FK violations and this function returns - * SQL_ERROR, set the result of the VM to SQL_CONSTRAINT_FOREIGNKEY - * and write an error message to it. Then return SQL_ERROR. + * SQL_TARANTOOL_ERROR and set an error. */ int sqlVdbeCheckFk(Vdbe * p, int deferred) @@ -2253,7 +2252,6 @@ sqlVdbeHalt(Vdbe * p) closeCursorsAndFree(p); return SQL_ERROR; } - rc = SQL_CONSTRAINT_FOREIGNKEY; } else { /* The auto-commit flag is true, the vdbe program was successful * or hit an 'OR FAIL' constraint and there are no deferred foreign @@ -2296,17 +2294,15 @@ sqlVdbeHalt(Vdbe * p) /* If eStatementOp is non-zero, then a statement transaction needs to * be committed or rolled back. Call sqlVdbeCloseStatement() to * do so. If this operation returns an error, and the current statement - * error code is 0 or SQL_CONSTRAINT, then promote the + * error code is 0 or -1, then promote the * current statement error code. */ if (eStatementOp) { rc = sqlVdbeCloseStatement(p, eStatementOp); if (rc) { box_txn_rollback(); - if (p->rc == 0 - || (p->rc & 0xff) == SQL_CONSTRAINT) { + if (p->rc == 0) p->rc = rc; - } closeCursorsAndFree(p); sqlRollbackAll(p); sqlCloseSavepoints(p); -- 2.7.4