[tarantool-patches] [PATCH v1 11/28] sql: remove SQL_LOCKED errcode

imeevma at tarantool.org imeevma at tarantool.org
Mon Jun 10 16:56:43 MSK 2019


Removing this error code is part of getting rid of the SQL error
system.
---
 src/box/sql/prepare.c |  5 -----
 src/box/sql/sqlInt.h  |  2 --
 src/box/sql/vdbeapi.c | 27 +--------------------------
 3 files changed, 1 insertion(+), 33 deletions(-)

diff --git a/src/box/sql/prepare.c b/src/box/sql/prepare.c
index ecae5d4..57b78d9 100644
--- a/src/box/sql/prepare.c
+++ b/src/box/sql/prepare.c
@@ -207,11 +207,6 @@ sqlLockAndPrepare(sql * db,		/* Database handle. */
 
 /*
  * Rerun the compilation of a statement after a schema change.
- *
- * If the statement is successfully recompiled, return 0. Otherwise,
- * if the statement cannot be recompiled because another connection has
- * locked the sql_master table, return SQL_LOCKED. If any other error
- * occurs, return SQL_SCHEMA.
  */
 int
 sqlReprepare(Vdbe * p)
diff --git a/src/box/sql/sqlInt.h b/src/box/sql/sqlInt.h
index 5bdec67..7af3961 100644
--- a/src/box/sql/sqlInt.h
+++ b/src/box/sql/sqlInt.h
@@ -360,8 +360,6 @@ enum sql_ret_code {
 	SQL_ERROR = 1,
 	/** The database file is locked. */
 	SQL_BUSY,
-	/** A table in the database is locked. */
-	SQL_LOCKED,
 	/** A malloc() failed. */
 	SQL_NOMEM,
 	/** Some kind of disk I/O error occurred. */
diff --git a/src/box/sql/vdbeapi.c b/src/box/sql/vdbeapi.c
index 97204cc..f3f7f48 100644
--- a/src/box/sql/vdbeapi.c
+++ b/src/box/sql/vdbeapi.c
@@ -417,33 +417,8 @@ sqlStep(Vdbe * p)
 	int rc;
 
 	assert(p);
-	if (p->magic != VDBE_MAGIC_RUN) {
-		/* We used to require that sql_reset() be called before retrying
-		 * sql_step() after any error or after SQL_DONE.  But beginning
-		 * with version 3.7.0, we changed this so that sql_reset() would
-		 * be called automatically instead of throwing the SQL_MISUSE error.
-		 * This "automatic-reset" change is not technically an incompatibility,
-		 * since any application that receives an SQL_MISUSE is broken by
-		 * definition.
-		 *
-		 * Nevertheless, some published applications that were originally written
-		 * for version 3.6.23 or earlier do in fact depend on SQL_MISUSE
-		 * returns, and those were broken by the automatic-reset change.  As a
-		 * a work-around, the SQL_OMIT_AUTORESET compile-time restores the
-		 * legacy behavior of returning SQL_MISUSE for cases where the
-		 * previous sql_step() returned something other than a SQL_LOCKED
-		 * or SQL_BUSY error.
-		 */
-#ifdef SQL_OMIT_AUTORESET
-		if ((rc = p->rc & 0xff) == SQL_BUSY || rc == SQL_LOCKED) {
-			sql_reset((sql_stmt *) p);
-		} else {
-			return SQL_MISUSE;
-		}
-#else
+	if (p->magic != VDBE_MAGIC_RUN)
 		sql_reset((sql_stmt *) p);
-#endif
-	}
 
 	/* Check that malloc() has not failed. If it has, return early. */
 	db = p->db;
-- 
2.7.4





More information about the Tarantool-patches mailing list