]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fixes to allow fts3 tables to be renamed mid-transaction.
authordan <dan@noemail.net>
Tue, 24 Aug 2010 16:59:47 +0000 (16:59 +0000)
committerdan <dan@noemail.net>
Tue, 24 Aug 2010 16:59:47 +0000 (16:59 +0000)
FossilOrigin-Name: d1c875320a045c3938c765ceb543dfba1a0ecf0b

ext/fts3/fts3.c
manifest
manifest.uuid
src/vdbe.c
test/fts3ao.test

index 16c95edae44afd5f7e8797310e4902514d0e859e..bbb1b945a60eb92258c3bd7442a8fe1314bf9026 100644 (file)
@@ -2581,11 +2581,14 @@ static int fts3RenameMethod(
   const char *zName               /* New name of table */
 ){
   Fts3Table *p = (Fts3Table *)pVtab;
-  sqlite3 *db;                    /* Database connection */
+  sqlite3 *db = p->db;            /* Database connection */
   int rc;                         /* Return Code */
-  db = p->db;
-  rc = SQLITE_OK;
+
+  rc = sqlite3Fts3PendingTermsFlush(p);
+  if( rc!=SQLITE_OK ){
+    return rc;
+  }
+
   fts3DbExec(&rc, db,
     "ALTER TABLE %Q.'%q_content'  RENAME TO '%q_content';",
     p->zDb, p->zName, zName
index 7843b282fb100fdf73e518d5bd0882b182e4d17c..dd93b3265c83c6db594355b95c4be0722b539927 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\stests\sto\se_expr.test.
-D 2010-08-24T13:11:53
+C Fixes\sto\sallow\sfts3\stables\sto\sbe\srenamed\smid-transaction.
+D 2010-08-24T16:59:48
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 543f91f24cd7fee774ecc0a61c19704c0c3e78fd
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -60,7 +60,7 @@ F ext/fts2/mkfts2amal.tcl 974d5d438cb3f7c4a652639262f82418c1e4cff0
 F ext/fts3/README.syntax a19711dc5458c20734b8e485e75fb1981ec2427a
 F ext/fts3/README.tokenizers 998756696647400de63d5ba60e9655036cb966e9
 F ext/fts3/README.txt 8c18f41574404623b76917b9da66fcb0ab38328d
-F ext/fts3/fts3.c e818310c473d7703f7818887a3537ec42ae0d528
+F ext/fts3/fts3.c f6436b3bcd67f8638f2acd80583d26d3fcd81de5
 F ext/fts3/fts3.h 3a10a0af180d502cecc50df77b1b22df142817fe
 F ext/fts3/fts3Int.h 70528ba8c33991699f96ecc64112122833cdbdb5
 F ext/fts3/fts3_expr.c 42d5697731cd30fbeabd081bb3e6d3df5531f606
@@ -218,7 +218,7 @@ F src/update.c 1521162d20c2994af1fdc8833e1a88dae09052c8
 F src/utf.c 1baeeac91707a4df97ccc6141ec0f808278af685
 F src/util.c 32aebf04c10e51ad3977a928b7416bed671b620b
 F src/vacuum.c 241a8386727c1497eba4955933356dfba6ff8c9f
-F src/vdbe.c 66c262a923915e596379b1d597178e04c5d719e4
+F src/vdbe.c d735223ecacaa7f657f2e8fe3274cfc3fb4e3a04
 F src/vdbe.h 4de0efb4b0fdaaa900cf419b35c458933ef1c6d2
 F src/vdbeInt.h ffd68c4d4229227a5089bec53a1c635146177abc
 F src/vdbeapi.c d0f4407e465f261780ad725c1caece7d66a6aa35
@@ -410,7 +410,7 @@ F test/fts3ak.test bd14deafe9d1586e8e9bf032411026ac4f8c925d
 F test/fts3al.test 07d64326e79bbdbab20ee87fc3328fbf01641c9f
 F test/fts3am.test 218aa6ba0dfc50c7c16b2022aac5c6be593d08d8
 F test/fts3an.test a49ccadc07a2f7d646ec1b81bc09da2d85a85b18
-F test/fts3ao.test 0aa29dd4fc1c8d46b1f7cfe5926f7ac97551bea9
+F test/fts3ao.test 8fee868a0e131b98ce3e8907dc69936278e8b29a
 F test/fts3atoken.test 25c2070e1e8755d414bf9c8200427b277a9f99fa
 F test/fts3b.test e93bbb653e52afde110ad53bbd793f14fe7a8984
 F test/fts3c.test fc723a9cf10b397fdfc2b32e73c53c8b1ec02958
@@ -846,7 +846,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P 7f2f71cc9e3c39093f09231f448576cff6afb5fe
-R aba17ed62d7523dad2435b92dcbb7f3b
+P 5c1c694ee1b3b71e20089412f6cba1847dc7f958
+R 25f3b83483bf6c0fefff05a4b75ff439
 U dan
-Z 181c658325527cf2c74e166fe7d3a968
+Z 19f58c47941c660f7043731f7e66713a
index f651eef49e28430323d6e328ff54fe362b5eb561..31e50c7525f4f91b2d82b4c31e0041dd20bbc688 100644 (file)
@@ -1 +1 @@
-5c1c694ee1b3b71e20089412f6cba1847dc7f958
\ No newline at end of file
+d1c875320a045c3938c765ceb543dfba1a0ecf0b
\ No newline at end of file
index 1e7fc1675289b752f9eb40ce899457bce4fe1f62..e58482095685e909bf5c51808541da03a2d15558 100644 (file)
@@ -5648,6 +5648,7 @@ case OP_VRename: {
   assert( pName->flags & MEM_Str );
   rc = pVtab->pModule->xRename(pVtab, pName->z);
   importVtabErrMsg(p, pVtab);
+  p->expired = 0;
 
   break;
 }
index c3d356e8fde76c59713d710ac2e0e10718194877..ba047e953c860853b15236bb507fbd7642a8a70e 100644 (file)
@@ -166,4 +166,38 @@ do_test fts3ao-3.3 {
   execsql { SELECT a, b, c FROM t1 WHERE c MATCH 'two'; }
 } {{one three four} {one four} {one two}}
 
+#---------------------------------------------------------------------
+# Test that it is possible to rename an fts3 table within a 
+# transaction.
+#
+do_test fts3ao-4.1 {
+  execsql {
+    CREATE VIRTUAL TABLE t4 USING fts3;
+    INSERT INTO t4 VALUES('the quick brown fox');
+  }
+} {}
+do_test fts3ao-4.2 {
+  execsql {
+    BEGIN;
+      INSERT INTO t4 VALUES('jumped over the');
+  }
+} {}
+do_test fts3ao-4.3 { execsql { ALTER TABLE t4 RENAME TO t5; } } {}
+do_test fts3ao-4.4 { execsql { INSERT INTO t5 VALUES('lazy dog'); } } {}
+do_test fts3ao-4.5 { execsql COMMIT } {}
+do_test fts3ao-4.6 {
+  execsql { SELECT * FROM t5 }
+} {{the quick brown fox} {jumped over the} {lazy dog}}
+do_test fts3ao-4.7 {
+  execsql {
+    BEGIN;
+      INSERT INTO t5 VALUES('Down came a jumbuck to drink at that billabong');
+      ALTER TABLE t5 RENAME TO t6;
+      INSERT INTO t6 VALUES('Down came the troopers, one, two, three');
+    ROLLBACK;
+    SELECT * FROM t5;
+  }
+} {{the quick brown fox} {jumped over the} {lazy dog}}
+
 finish_test
+