| Index: third_party/sqlite/src/src/legacy.c
|
| diff --git a/third_party/sqlite/src/src/legacy.c b/third_party/sqlite/src/src/legacy.c
|
| index ebab2de37d996e1bb4a4d9a84caec76a5eff99ea..a10006e55847d4f78cd2912db44d5de48ab9129a 100644
|
| --- a/third_party/sqlite/src/src/legacy.c
|
| +++ b/third_party/sqlite/src/src/legacy.c
|
| @@ -38,20 +38,19 @@ int sqlite3_exec(
|
| const char *zLeftover; /* Tail of unprocessed SQL */
|
| sqlite3_stmt *pStmt = 0; /* The current SQL statement */
|
| char **azCols = 0; /* Names of result columns */
|
| - int nRetry = 0; /* Number of retry attempts */
|
| int callbackIsInit; /* True if callback data is initialized */
|
|
|
| if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
|
| if( zSql==0 ) zSql = "";
|
|
|
| sqlite3_mutex_enter(db->mutex);
|
| - sqlite3Error(db, SQLITE_OK, 0);
|
| - while( (rc==SQLITE_OK || (rc==SQLITE_SCHEMA && (++nRetry)<2)) && zSql[0] ){
|
| + sqlite3Error(db, SQLITE_OK);
|
| + while( rc==SQLITE_OK && zSql[0] ){
|
| int nCol;
|
| char **azVals = 0;
|
|
|
| pStmt = 0;
|
| - rc = sqlite3_prepare(db, zSql, -1, &pStmt, &zLeftover);
|
| + rc = sqlite3_prepare_v2(db, zSql, -1, &pStmt, &zLeftover);
|
| assert( rc==SQLITE_OK || pStmt==0 );
|
| if( rc!=SQLITE_OK ){
|
| continue;
|
| @@ -97,10 +96,13 @@ int sqlite3_exec(
|
| }
|
| }
|
| if( xCallback(pArg, nCol, azVals, azCols) ){
|
| + /* EVIDENCE-OF: R-38229-40159 If the callback function to
|
| + ** sqlite3_exec() returns non-zero, then sqlite3_exec() will
|
| + ** return SQLITE_ABORT. */
|
| rc = SQLITE_ABORT;
|
| sqlite3VdbeFinalize((Vdbe *)pStmt);
|
| pStmt = 0;
|
| - sqlite3Error(db, SQLITE_ABORT, 0);
|
| + sqlite3Error(db, SQLITE_ABORT);
|
| goto exec_out;
|
| }
|
| }
|
| @@ -108,11 +110,8 @@ int sqlite3_exec(
|
| if( rc!=SQLITE_ROW ){
|
| rc = sqlite3VdbeFinalize((Vdbe *)pStmt);
|
| pStmt = 0;
|
| - if( rc!=SQLITE_SCHEMA ){
|
| - nRetry = 0;
|
| - zSql = zLeftover;
|
| - while( sqlite3Isspace(zSql[0]) ) zSql++;
|
| - }
|
| + zSql = zLeftover;
|
| + while( sqlite3Isspace(zSql[0]) ) zSql++;
|
| break;
|
| }
|
| }
|
| @@ -126,14 +125,14 @@ exec_out:
|
| sqlite3DbFree(db, azCols);
|
|
|
| rc = sqlite3ApiExit(db, rc);
|
| - if( rc!=SQLITE_OK && ALWAYS(rc==sqlite3_errcode(db)) && pzErrMsg ){
|
| + if( rc!=SQLITE_OK && pzErrMsg ){
|
| int nErrMsg = 1 + sqlite3Strlen30(sqlite3_errmsg(db));
|
| *pzErrMsg = sqlite3Malloc(nErrMsg);
|
| if( *pzErrMsg ){
|
| memcpy(*pzErrMsg, sqlite3_errmsg(db), nErrMsg);
|
| }else{
|
| rc = SQLITE_NOMEM;
|
| - sqlite3Error(db, SQLITE_NOMEM, 0);
|
| + sqlite3Error(db, SQLITE_NOMEM);
|
| }
|
| }else if( pzErrMsg ){
|
| *pzErrMsg = 0;
|
|
|