[tarantool-patches] [PATCH v1 1/3] sql: remove legacy.c

imeevma at tarantool.org imeevma at tarantool.org
Tue Apr 9 20:17:03 MSK 2019


The module legacy.c is not used and should be removed.

Needed for #4074
---
 src/box/sql/CMakeLists.txt |   1 -
 src/box/sql/analyze.c      |  12 +--
 src/box/sql/legacy.c       | 187 ---------------------------------------------
 src/box/sql/sqlInt.h       |   7 --
 4 files changed, 7 insertions(+), 200 deletions(-)
 delete mode 100644 src/box/sql/legacy.c

diff --git a/src/box/sql/CMakeLists.txt b/src/box/sql/CMakeLists.txt
index b9dbe14..886d671 100644
--- a/src/box/sql/CMakeLists.txt
+++ b/src/box/sql/CMakeLists.txt
@@ -38,7 +38,6 @@ add_library(sql STATIC
     global.c
     hash.c
     insert.c
-    legacy.c
     main.c
     malloc.c
     os.c
diff --git a/src/box/sql/analyze.c b/src/box/sql/analyze.c
index 0c02050..379b2e3 100644
--- a/src/box/sql/analyze.c
+++ b/src/box/sql/analyze.c
@@ -1218,7 +1218,7 @@ decode_stat_string(const char *stat_string, int stat_size, tRowcnt *stat_exact,
  * @param argv Callback arguments.
  * @retval 0 on success, -1 otherwise.
  */
-static int
+int
 analysis_loader(void *data, int argc, char **argv, char **unused)
 {
 	assert(argc == 3);
@@ -1704,11 +1704,13 @@ sql_analysis_load(struct sql *db)
 	info.db = db;
 	info.stats = stats;
 	info.index_count = 0;
-	const char *load_stat1 =
+	MAYBE_UNUSED const char *load_stat1 =
 		"SELECT \"tbl\",\"idx\",\"stat\" FROM \"_sql_stat1\"";
-	/* Load new statistics out of the _sql_stat1 table. */
-	if (sql_exec(db, load_stat1, analysis_loader, &info, 0) != 0)
-		goto fail;
+	/*
+	 * Here was loading new statistics out of the _sql_stat1
+	 * table using analysis_loader. This part of code was
+	 * removed due to removal of sql_exec().
+	 */
 	if (info.index_count == 0) {
 		box_txn_commit();
 		return SQL_OK;
diff --git a/src/box/sql/legacy.c b/src/box/sql/legacy.c
deleted file mode 100644
index 599fba0..0000000
--- a/src/box/sql/legacy.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright 2010-2017, Tarantool AUTHORS, please see AUTHORS file.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * 1. Redistributions of source code must retain the above
- *    copyright notice, this list of conditions and the
- *    following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- *    copyright notice, this list of conditions and the following
- *    disclaimer in the documentation and/or other materials
- *    provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY <COPYRIGHT HOLDER> ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
- * <COPYRIGHT HOLDER> OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/*
- * Main file for the sql library.  The routines in this file
- * implement the programmer interface to the library.  Routines in
- * other files are for internal use by sql and should not be
- * accessed by users of the library.
- */
-
-#include "sqlInt.h"
-#include "box/session.h"
-
-/*
- * Execute SQL code.  Return one of the SQL_ success/failure
- * codes.  Also write an error message into memory obtained from
- * malloc() and make *pzErrMsg point to that message.
- *
- * If the SQL is a query, then for each row in the query result
- * the xCallback() function is called.  pArg becomes the first
- * argument to xCallback().  If xCallback=NULL then no callback
- * is invoked, even for queries.
- */
-int
-sql_exec(sql * db,	/* The database on which the SQL executes */
-	     const char *zSql,	/* The SQL to be executed */
-	     sql_callback xCallback,	/* Invoke this callback routine */
-	     void *pArg,	/* First argument to xCallback() */
-	     char **pzErrMsg	/* Write error messages here */
-    )
-{
-	int rc = SQL_OK;	/* Return code */
-	const char *zLeftover;	/* Tail of unprocessed SQL */
-	sql_stmt *pStmt = 0;	/* The current SQL statement */
-	char **azCols = 0;	/* Names of result columns */
-	int callbackIsInit;	/* True if callback data is initialized */
-	struct session *user_session = current_session();
-
-	if (!sqlSafetyCheckOk(db))
-		return SQL_MISUSE;
-	if (zSql == 0)
-		zSql = "";
-
-	sqlError(db, SQL_OK);
-	while (rc == SQL_OK && zSql[0]) {
-		int nCol;
-		char **azVals = 0;
-
-		pStmt = 0;
-		rc = sql_prepare_v2(db, zSql, -1, &pStmt, &zLeftover);
-		assert(rc == SQL_OK || pStmt == 0);
-		if (rc != SQL_OK) {
-			continue;
-		}
-		if (!pStmt) {
-			/* this happens for a comment or white-space */
-			zSql = zLeftover;
-			continue;
-		}
-
-		callbackIsInit = 0;
-		nCol = sql_column_count(pStmt);
-
-		while (1) {
-			int i;
-			rc = sql_step(pStmt);
-			/* Invoke the callback function if required */
-			if (xCallback && (SQL_ROW == rc ||
-					  (SQL_DONE == rc && !callbackIsInit
-					   && user_session->
-					   sql_flags & SQL_NullCallback))) {
-				if (!callbackIsInit) {
-					azCols =
-					    sqlDbMallocZero(db,
-								2 * nCol *
-								sizeof(const
-								       char *) +
-								1);
-					if (azCols == 0) {
-						goto exec_out;
-					}
-					for (i = 0; i < nCol; i++) {
-						azCols[i] =
-						    (char *)
-						    sql_column_name(pStmt,
-									i);
-						/* sqlVdbeSetColName() installs column names as UTF8
-						 * strings so there is no way for sql_column_name() to fail.
-						 */
-						assert(azCols[i] != 0);
-					}
-					callbackIsInit = 1;
-				}
-				if (rc == SQL_ROW) {
-					azVals = &azCols[nCol];
-					for (i = 0; i < nCol; i++) {
-						azVals[i] =
-						    (char *)
-						    sql_column_text(pStmt,
-									i);
-						if (!azVals[i]
-						    &&
-						    sql_column_type(pStmt,
-									i) !=
-						    SQL_NULL) {
-							sqlOomFault(db);
-							goto exec_out;
-						}
-					}
-				}
-				if (xCallback(pArg, nCol, azVals, azCols)) {
-					/* EVIDENCE-OF: R-38229-40159 If the callback function to
-					 * sql_exec() returns non-zero, then sql_exec() will
-					 * return SQL_ABORT.
-					 */
-					rc = SQL_ABORT;
-					sqlVdbeFinalize((Vdbe *) pStmt);
-					pStmt = 0;
-					sqlError(db, SQL_ABORT);
-					goto exec_out;
-				}
-			}
-
-			if (rc != SQL_ROW) {
-				rc = sqlVdbeFinalize((Vdbe *) pStmt);
-				pStmt = 0;
-				zSql = zLeftover;
-				while (sqlIsspace(zSql[0]))
-					zSql++;
-				break;
-			}
-		}
-
-		sqlDbFree(db, azCols);
-		azCols = 0;
-	}
-
- exec_out:
-	if (pStmt)
-		sqlVdbeFinalize((Vdbe *) pStmt);
-	sqlDbFree(db, azCols);
-
-	rc = sqlApiExit(db, rc);
-	if (rc != SQL_OK && pzErrMsg) {
-		int nErrMsg = 1 + sqlStrlen30(sql_errmsg(db));
-		*pzErrMsg = sqlMalloc(nErrMsg);
-		if (*pzErrMsg) {
-			memcpy(*pzErrMsg, sql_errmsg(db), nErrMsg);
-		} else {
-			rc = SQL_NOMEM;
-			sqlError(db, SQL_NOMEM);
-		}
-	} else if (pzErrMsg) {
-		*pzErrMsg = 0;
-	}
-
-	assert((rc & db->errMask) == rc);
-	return rc;
-}
diff --git a/src/box/sql/sqlInt.h b/src/box/sql/sqlInt.h
index b322602..1a42d0d 100644
--- a/src/box/sql/sqlInt.h
+++ b/src/box/sql/sqlInt.h
@@ -593,13 +593,6 @@ sql_column_value(sql_stmt *,
 int
 sql_finalize(sql_stmt * pStmt);
 
-int
-sql_exec(sql *,	/* An open database */
-	     const char *sql,	/* SQL to be evaluated */
-	     int (*callback) (void *, int, char **, char **),	/* Callback function */
-	     void *,	/* 1st argument to callback */
-	     char **errmsg	/* Error msg written here */
-	);
 #define SQL_IOERR_READ              (SQL_IOERR | (1<<8))
 #define SQL_IOERR_SHORT_READ        (SQL_IOERR | (2<<8))
 #define SQL_IOERR_WRITE             (SQL_IOERR | (3<<8))
-- 
2.7.4





More information about the Tarantool-patches mailing list