From: drh Date: Wed, 25 Jan 2012 20:43:22 +0000 (+0000) Subject: Only invalidate the schema when the OP_ParseSchema opcode fails, not X-Git-Tag: version-3.7.11~83 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4d0d91666cdc9a3a0523656bd5a14d23f1c879a4;p=thirdparty%2Fsqlite.git Only invalidate the schema when the OP_ParseSchema opcode fails, not on any general failure of a vdbe program. FossilOrigin-Name: 11f68d997da4aadf3f51c12c5139f3fdda8678bf --- diff --git a/manifest b/manifest index 89d526200f..c257a3ab4b 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\san\sFTS\sproblem\striggered\sby\squerying\sfor\san\sN\scharacter\sprefix\susing\san\sN+1\scharacter\sprefix\sindex\safter\srows\shave\sbeen\sdeleted\sfrom\sthe\sFTS\stable. -D 2012-01-25T16:29:45.749 +C Only\sinvalidate\sthe\sschema\swhen\sthe\sOP_ParseSchema\sopcode\sfails,\snot\non\sany\sgeneral\sfailure\sof\sa\svdbe\sprogram. +D 2012-01-25T20:43:22.828 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 3f79a373e57c3b92dabf76f40b065e719d31ac34 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -240,11 +240,11 @@ F src/update.c d3076782c887c10e882996550345da9c4c9f9dea F src/utf.c 890c67dcfcc7a74623c95baac7535aadfe265e84 F src/util.c 9e07bd67dfafe9c75b1da78c87ba030cebbb5388 F src/vacuum.c 0c0ba2242355c6048d65e2b333abe0f7c06348fa -F src/vdbe.c fc1b97fa6816bac5de2f631b7d4a9b8d8daf6c03 +F src/vdbe.c 595a240233b88960dd99380edf2fb7ec4317ee24 F src/vdbe.h 18f581cac1f4339ec3299f3e0cc6e11aec654cdb F src/vdbeInt.h ef9b8584b23b033894a0804dc6b90196c6779fb9 F src/vdbeapi.c 3662b6a468a2a4605a15dfab313baa6dff81ad91 -F src/vdbeaux.c eb13a6917ed7455b5b49236fe5cfb3d3c3e4c57b +F src/vdbeaux.c e8cf7b251b93b9690f659deb8d95608f11139ff7 F src/vdbeblob.c 32f2a4899d67f69634ea4dd93e3f651936d732cb F src/vdbemem.c 3c171040c28a95084fb5024ab731140a86fd5439 F src/vdbesort.c 468d43c057063e54da4f1988b38b4f46d60e7790 @@ -988,7 +988,7 @@ F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/warnings-clang.sh 9f406d66e750e8ac031c63a9ef3248aaa347ef2a F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 -P 7036886e83fccad32187668306ee2ae3f950dfce -R 57813aba0c543953696b45a4603bd663 -U dan -Z c267c1375aaf1973adf1dbf05cf88f8d +P c05c3fd20d93f430140d762ead23bacd337ffb4d +R 5aa59fe283a6d87f44afad865139b28c +U drh +Z 2035157af4127fd9885fd84104456171 diff --git a/manifest.uuid b/manifest.uuid index 7e71e75c35..1758df6a10 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c05c3fd20d93f430140d762ead23bacd337ffb4d \ No newline at end of file +11f68d997da4aadf3f51c12c5139f3fdda8678bf \ No newline at end of file diff --git a/src/vdbe.c b/src/vdbe.c index 98f159a6aa..4287b49a22 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -4833,6 +4833,7 @@ case OP_ParseSchema: { db->init.busy = 0; } } + if( rc ) sqlite3ResetInternalSchema(db, -1); if( rc==SQLITE_NOMEM ){ goto no_mem; } diff --git a/src/vdbeaux.c b/src/vdbeaux.c index c1566f37d8..8fa1288e63 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -2292,12 +2292,6 @@ int sqlite3VdbeHalt(Vdbe *p){ } p->nChange = 0; } - - /* Rollback or commit any schema changes that occurred. */ - if( p->rc!=SQLITE_OK && db->flags&SQLITE_InternChanges ){ - sqlite3ResetInternalSchema(db, -1); - db->flags = (db->flags | SQLITE_InternChanges); - } /* Release the locks */ sqlite3VdbeLeave(p);