[tarantool-patches] Re: [PATCH v1 11/21] sql: remove SQL_SCHEMA errcode

n.pettik korablev at tarantool.org
Sat May 25 19:18:45 MSK 2019


> diff --git a/src/box/sql/prepare.c b/src/box/sql/prepare.c
> index 2083d27..61081fb 100644
> --- a/src/box/sql/prepare.c
> +++ b/src/box/sql/prepare.c
> @@ -190,56 +190,15 @@ sqlLockAndPrepare(sql * db,		/* Database handle. */
> 		      sql_stmt ** ppStmt,	/* OUT: A pointer to the prepared statement */
> 		      const char **pzTail)	/* OUT: End of parsed string */
> {
> -	int rc;

Why not completely replace with sqlPrepare?

> -
> 	*ppStmt = 0;
> 	assert(zSql != NULL && db != NULL);
> -	rc = sqlPrepare(db, zSql, nBytes, saveSqlFlag, pOld, ppStmt,
> -			    pzTail);
> -	if (rc == SQL_SCHEMA) {
> -		sql_finalize(*ppStmt);
> -		rc = sqlPrepare(db, zSql, nBytes, saveSqlFlag, pOld, ppStmt,
> -				    pzTail);
> -	}
> -	assert(rc == 0 || *ppStmt == 0);
> -	return rc;
> -}
> -
> -/*
> - * Rerun the compilation of a statement after a schema change.
> - */
> -int
> -sqlReprepare(Vdbe * p)
> -{
> -	int rc;
> -	sql_stmt *pNew;
> -	const char *zSql;
> -	sql *db;
> -
> -	zSql = sql_sql((sql_stmt *) p);
> -	assert(zSql != 0);	/* Reprepare only called for prepare_v2() statements */
> -	db = sqlVdbeDb(p);
> -	rc = sqlLockAndPrepare(db, zSql, -1, 0, p, &pNew, 0);
> -	if (rc) {
> -		if (rc == SQL_NOMEM) {
> -			sqlOomFault(db);
> -		}
> -		assert(pNew == 0);
> -		return rc;
> -	} else {
> -		assert(pNew != 0);
> -	}
> -	sqlVdbeSwap((Vdbe *) pNew, p);
> -	sqlTransferBindings(pNew, (sql_stmt *) p);
> -	sqlVdbeResetStepResult((Vdbe *) pNew);
> -	sqlVdbeFinalize((Vdbe *) pNew);
> -	return 0;
> +	return sqlPrepare(db, zSql, nBytes, saveSqlFlag, pOld, ppStmt, pzTail);
> }

This routine may turn out to be useful when we add
working prepared statements.






More information about the Tarantool-patches mailing list