[tarantool-patches] [PATCH 2/4] sql: remove unused error codes, use enum instead of defines

Vladislav Shpilevoy v.shpilevoy at tarantool.org
Tue Apr 3 18:34:13 MSK 2018


---
 src/box/sql/build.c     |  4 ---
 src/box/sql/main.c      | 32 ------------------
 src/box/sql/os_unix.c   |  9 +-----
 src/box/sql/sqliteInt.h | 86 ++++++++++++++++++++++++++++---------------------
 src/box/sql/vdbe.c      |  1 -
 src/box/sql/vdbeInt.h   |  5 +--
 src/box/sql/vdbeapi.c   |  9 ------
 src/box/sql/vdbeaux.c   |  1 -
 8 files changed, 52 insertions(+), 95 deletions(-)

diff --git a/src/box/sql/build.c b/src/box/sql/build.c
index 5e3ed0f39..4510df206 100644
--- a/src/box/sql/build.c
+++ b/src/box/sql/build.c
@@ -105,10 +105,6 @@ sqlite3FinishCoding(Parse * pParse)
 
 				if (db->init.busy == 0)
 					sqlite3VdbeChangeP5(v, 1);
-
-				VdbeComment((v, "usesStmtJournal=%d",
-					     pParse->mayAbort
-					     && pParse->isMultiWrite));
 			}
 
 			/* Code constant expressions that where factored out of inner loops */
diff --git a/src/box/sql/main.c b/src/box/sql/main.c
index b77348c21..8e898178a 100644
--- a/src/box/sql/main.c
+++ b/src/box/sql/main.c
@@ -800,9 +800,6 @@ sqlite3ErrName(int rc)
 		case SQLITE_ERROR:
 			zName = "SQLITE_ERROR";
 			break;
-		case SQLITE_INTERNAL:
-			zName = "SQLITE_INTERNAL";
-			break;
 		case SQLITE_PERM:
 			zName = "SQLITE_PERM";
 			break;
@@ -821,9 +818,6 @@ sqlite3ErrName(int rc)
 		case SQLITE_NOMEM:
 			zName = "SQLITE_NOMEM";
 			break;
-		case SQLITE_READONLY:
-			zName = "SQLITE_READONLY";
-			break;
 		case SQLITE_INTERRUPT:
 			zName = "SQLITE_INTERRUPT";
 			break;
@@ -917,12 +911,6 @@ sqlite3ErrName(int rc)
 		case SQLITE_CANTOPEN:
 			zName = "SQLITE_CANTOPEN";
 			break;
-		case SQLITE_PROTOCOL:
-			zName = "SQLITE_PROTOCOL";
-			break;
-		case SQLITE_EMPTY:
-			zName = "SQLITE_EMPTY";
-			break;
 		case SQLITE_SCHEMA:
 			zName = "SQLITE_SCHEMA";
 			break;
@@ -959,27 +947,15 @@ sqlite3ErrName(int rc)
 		case SQLITE_MISUSE:
 			zName = "SQLITE_MISUSE";
 			break;
-		case SQLITE_NOLFS:
-			zName = "SQLITE_NOLFS";
-			break;
-		case SQLITE_FORMAT:
-			zName = "SQLITE_FORMAT";
-			break;
 		case SQLITE_RANGE:
 			zName = "SQLITE_RANGE";
 			break;
-		case SQLITE_NOTADB:
-			zName = "SQLITE_NOTADB";
-			break;
 		case SQL_TARANTOOL_ERROR:
 			zName = "SQLITE_TARANTOOL_ERROR";
 			break;
 		case SQLITE_ROW:
 			zName = "SQLITE_ROW";
 			break;
-		case SQLITE_NOTICE:
-			zName = "SQLITE_NOTICE";
-			break;
 		case SQLITE_WARNING:
 			zName = "SQLITE_WARNING";
 			break;
@@ -1008,32 +984,24 @@ sqlite3ErrStr(int rc)
 	static const char *const aMsg[] = {
 		/* SQLITE_OK          */ "not an error",
 		/* SQLITE_ERROR       */ "SQL logic error or missing database",
-		/* SQLITE_INTERNAL    */ 0,
 		/* SQLITE_PERM        */ "access permission denied",
 		/* SQLITE_ABORT       */ "callback requested query abort",
 		/* SQLITE_BUSY        */ "database is locked",
 		/* SQLITE_LOCKED      */ "database table is locked",
 		/* SQLITE_NOMEM       */ "out of memory",
-		/* SQLITE_READONLY    */ "attempt to write a readonly database",
 		/* SQLITE_INTERRUPT   */ "interrupted",
 		/* SQLITE_IOERR       */ "disk I/O error",
 		/* SQLITE_CORRUPT     */ "database disk image is malformed",
 		/* SQLITE_NOTFOUND    */ "unknown operation",
 		/* SQLITE_FULL        */ "database or disk is full",
 		/* SQLITE_CANTOPEN    */ "unable to open database file",
-		/* SQLITE_PROTOCOL    */ "locking protocol",
-		/* SQLITE_EMPTY       */ "table contains no data",
 		/* SQLITE_SCHEMA      */ "database schema has changed",
 		/* SQLITE_TOOBIG      */ "string or blob too big",
 		/* SQLITE_CONSTRAINT  */ "constraint failed",
 		/* SQLITE_MISMATCH    */ "datatype mismatch",
 		/* SQLITE_MISUSE      */
 		    "library routine called out of sequence",
-		/* SQLITE_NOLFS       */ "large file support is disabled",
-		/* SQLITE_FORMAT      */ "auxiliary database format error",
 		/* SQLITE_RANGE       */ "bind or column index out of range",
-		/* SQLITE_NOTADB      */
-		    "file is encrypted or is not a database",
 		/* SQL_TARANTOOL_ITERATOR_FAIL */ "Tarantool's iterator failed",
 		/* SQL_TARANTOOL_INSERT_FAIL */ "Tarantool's insert failed",
 		/* SQL_TARANTOOL_DELETE_FAIL */ "Tarantool's delete failed",
diff --git a/src/box/sql/os_unix.c b/src/box/sql/os_unix.c
index 8dce6f0c2..9cb8a54d0 100644
--- a/src/box/sql/os_unix.c
+++ b/src/box/sql/os_unix.c
@@ -1011,10 +1011,6 @@ findInodeInfo(unixFile * pFile,	/* Unix file with file desc used in the key */
 	rc = osFstat(fd, &statbuf);
 	if (rc != 0) {
 		storeLastErrno(pFile, errno);
-#if defined(EOVERFLOW) && defined(SQLITE_DISABLE_LFS)
-		if (pFile->lastErrno == EOVERFLOW)
-			return SQLITE_NOLFS;
-#endif
 		return SQLITE_IOERR;
 	}
 #ifdef __APPLE__
@@ -6011,10 +6007,7 @@ proxyFileControl(sqlite3_file * id, int op, void *pArg)
 			int isProxyStyle = (pFile->pMethod == &proxyIoMethods);
 			if (pArg == NULL || (const char *)pArg == 0) {
 				if (isProxyStyle) {
-					/* turn off proxy locking - not supported. */
-					rc = SQLITE_ERROR
-					    /*SQLITE_PROTOCOL? SQLITE_MISUSE? */
-					    ;
+					rc = SQLITE_ERROR;
 				} else {
 					/* turn off proxy locking - already off - NOOP */
 					rc = SQLITE_OK;
diff --git a/src/box/sql/sqliteInt.h b/src/box/sql/sqliteInt.h
index e786cf842..f78a93a71 100644
--- a/src/box/sql/sqliteInt.h
+++ b/src/box/sql/sqliteInt.h
@@ -405,42 +405,56 @@ struct sqlite3_vfs {
 #define SQLITE_LIMIT_TRIGGER_DEPTH             9
 #define SQLITE_LIMIT_WORKER_THREADS           10
 
-#define SQLITE_OK           0	/* Successful result */
-/* beginning-of-error-codes */
-#define SQLITE_ERROR        1	/* SQL error or missing database */
-#define SQLITE_INTERNAL     2	/* Internal logic error in SQLite */
-#define SQLITE_PERM         3	/* Access permission denied */
-#define SQLITE_ABORT        4	/* Callback routine requested an abort */
-#define SQLITE_BUSY         5	/* The database file is locked */
-#define SQLITE_LOCKED       6	/* A table in the database is locked */
-#define SQLITE_NOMEM        7	/* A malloc() failed */
-#define SQLITE_READONLY     8	/* Attempt to write a readonly database */
-#define SQLITE_INTERRUPT    9	/* Operation terminated by sqlite3_interrupt() */
-#define SQLITE_IOERR       10	/* Some kind of disk I/O error occurred */
-#define SQLITE_CORRUPT     11	/* The database disk image is malformed */
-#define SQLITE_NOTFOUND    12	/* Unknown opcode in sqlite3_file_control() */
-#define SQLITE_FULL        13	/* Insertion failed because database is full */
-#define SQLITE_CANTOPEN    14	/* Unable to open the database file */
-#define SQLITE_PROTOCOL    15	/* Database lock protocol error */
-#define SQLITE_EMPTY       16	/* Database is empty */
-#define SQLITE_SCHEMA      17	/* The database schema changed */
-#define SQLITE_TOOBIG      18	/* String or BLOB exceeds size limit */
-#define SQLITE_CONSTRAINT  19	/* Abort due to constraint violation */
-#define SQLITE_MISMATCH    20	/* Data type mismatch */
-#define SQLITE_MISUSE      21	/* Library used incorrectly */
-#define SQLITE_NOLFS       22	/* Uses OS features not supported on host */
-#define SQLITE_FORMAT      23	/* Auxiliary database format error */
-#define SQLITE_RANGE       24	/* 2nd parameter to sqlite3_bind out of range */
-#define SQLITE_NOTADB      25	/* File opened that is not a database file */
-#define SQL_TARANTOOL_ITERATOR_FAIL 26
-#define SQL_TARANTOOL_INSERT_FAIL   27
-#define SQL_TARANTOOL_DELETE_FAIL   28
-#define SQL_TARANTOOL_ERROR         29
-#define SQLITE_NOTICE      31	/* Notifications from sqlite3_log() */
-#define SQLITE_WARNING     32	/* Warnings from sqlite3_log() */
-#define SQLITE_ROW         100	/* sqlite3_step() has another row ready */
-#define SQLITE_DONE        101	/* sqlite3_step() has finished executing */
-/* end-of-error-codes */
+enum sql_ret_code {
+	/** Result of a routine is ok. */
+	SQLITE_OK = 0,
+	/** Common error code. */
+	SQLITE_ERROR,
+	/** Access permission denied. */
+	SQLITE_PERM,
+	/** Callback routine requested an abort. */
+	SQLITE_ABORT,
+	/** The database file is locked. */
+	SQLITE_BUSY,
+	/** A table in the database is locked. */
+	SQLITE_LOCKED,
+	/** A malloc() failed. */
+	SQLITE_NOMEM,
+	/** Operation terminated by sqlite3_interrupt(). */
+	SQLITE_INTERRUPT,
+	/** Some kind of disk I/O error occurred. */
+	SQLITE_IOERR,
+	/** The database disk image is malformed. */
+	SQLITE_CORRUPT,
+	/** Unknown opcode in sqlite3_file_control(). */
+	SQLITE_NOTFOUND,
+	/** Insertion failed because database is full. */
+	SQLITE_FULL,
+	/** Unable to open the database file. */
+	SQLITE_CANTOPEN,
+	/** The database schema changed. */
+	SQLITE_SCHEMA,
+	/** String or BLOB exceeds size limit. */
+	SQLITE_TOOBIG,
+	/** Abort due to constraint violation. */
+	SQLITE_CONSTRAINT,
+	/** Data type mismatch. */
+	SQLITE_MISMATCH,
+	/** Library used incorrectly. */
+	SQLITE_MISUSE,
+	/** 2nd parameter to sqlite3_bind out of range. */
+	SQLITE_RANGE,
+	SQL_TARANTOOL_ITERATOR_FAIL,
+	SQL_TARANTOOL_INSERT_FAIL,
+	SQL_TARANTOOL_DELETE_FAIL,
+	SQL_TARANTOOL_ERROR,
+	/** Warnings from sqlite3_log(). */
+	SQLITE_WARNING,
+	/** sqlite3_step() has another row ready. */
+	SQLITE_ROW,
+	/** sqlite3_step() has finished executing. */
+	SQLITE_DONE,
+};
 
 void *
 sqlite3_malloc(int);
diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c
index bf8a27709..1685c27ce 100644
--- a/src/box/sql/vdbe.c
+++ b/src/box/sql/vdbe.c
@@ -1419,7 +1419,6 @@ case OP_ResultRow: {
 	 */
 	if (SQLITE_OK!=(rc = sqlite3VdbeCheckFk(p, 0))) {
 		assert(user_session->sql_flags&SQLITE_CountRows);
-		assert(p->usesStmtJournal);
 		goto abort_due_to_error;
 	}
 
diff --git a/src/box/sql/vdbeInt.h b/src/box/sql/vdbeInt.h
index fcb45c8a8..f8f4e566b 100644
--- a/src/box/sql/vdbeInt.h
+++ b/src/box/sql/vdbeInt.h
@@ -418,9 +418,6 @@ struct Vdbe {
 	i64 startTime;		/* Time when query started - used for profiling */
 #endif
 	int nOp;		/* Number of instructions in the program */
-#ifdef SQLITE_DEBUG
-	int rcApp;		/* errcode set by sqlite3_result_error_code() */
-#endif
 	u16 nResColumn;		/* Number of columns in one row of the result set */
 	u8 errorAction;		/* Recovery action to do in case of an error */
 	bft expired:1;		/* True if the VM needs to be recompiled */
@@ -428,7 +425,6 @@ struct Vdbe {
 	bft explain:2;		/* True if EXPLAIN present on SQL command */
 	bft changeCntOn:1;	/* True to update the change-counter */
 	bft runOnlyOnce:1;	/* Automatically expire on reset */
-	bft usesStmtJournal:1;	/* True if uses a statement journal */
 	bft isPrepareV2:1;	/* True if prepared with prepare_v2() */
 	u32 aCounter[5];	/* Counters used by sqlite3_stmt_status() */
 	char *zSql;		/* Text of the SQL statement that generated this */
@@ -446,6 +442,7 @@ struct Vdbe {
 	int nScan;		/* Entries in aScan[] */
 	ScanStatus *aScan;	/* Scan definitions for sqlite3_stmt_scanstatus() */
 #endif
+
 };
 
 /*
diff --git a/src/box/sql/vdbeapi.c b/src/box/sql/vdbeapi.c
index dff1e1697..4c6e90c64 100644
--- a/src/box/sql/vdbeapi.c
+++ b/src/box/sql/vdbeapi.c
@@ -469,10 +469,6 @@ sqlite3_result_error_code(sqlite3_context * pCtx, int errCode)
 {
 	pCtx->isError = errCode;
 	pCtx->fErrorOrAux = 1;
-#ifdef SQLITE_DEBUG
-	if (pCtx->pVdbe)
-		pCtx->pVdbe->rcApp = errCode;
-#endif
 	if (pCtx->pOut->flags & MEM_Null) {
 		sqlite3VdbeMemSetStr(pCtx->pOut, sqlite3ErrStr(errCode), -1, 1,
 				     SQLITE_STATIC);
@@ -580,9 +576,6 @@ sqlite3Step(Vdbe * p)
 		db->nVdbeActive++;
 		p->pc = 0;
 	}
-#ifdef SQLITE_DEBUG
-	p->rcApp = SQLITE_OK;
-#endif
 #ifndef SQLITE_OMIT_EXPLAIN
 	if (p->explain) {
 		rc = sqlite3VdbeList(p);
@@ -614,8 +607,6 @@ sqlite3Step(Vdbe * p)
 	 */
 	assert(rc == SQLITE_ROW || rc == SQLITE_DONE || rc == SQLITE_ERROR
 	       || (rc & 0xff) == SQLITE_BUSY || rc == SQLITE_MISUSE);
-	assert((p->rc != SQLITE_ROW && p->rc != SQLITE_DONE)
-	       || p->rc == p->rcApp);
 	if (p->isPrepareV2 && rc != SQLITE_ROW && rc != SQLITE_DONE) {
 		/* If this statement was prepared using sqlite3_prepare_v2(), and an
 		 * error has occurred, then return the error code in p->rc to the
diff --git a/src/box/sql/vdbeaux.c b/src/box/sql/vdbeaux.c
index e4335524a..bb121a318 100644
--- a/src/box/sql/vdbeaux.c
+++ b/src/box/sql/vdbeaux.c
@@ -2148,7 +2148,6 @@ sqlite3VdbeMakeReady(Vdbe * p,	/* The VDBE */
 	assert(EIGHT_BYTE_ALIGNMENT(&x.pSpace[x.nFree]));
 
 	resolveP2Values(p, &nArg);
-	p->usesStmtJournal = (u8) (pParse->isMultiWrite && pParse->mayAbort);
 	if (pParse->explain && nMem < 10) {
 		nMem = 10;
 	}
-- 
2.14.3 (Apple Git-98)





More information about the Tarantool-patches mailing list