]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Minor tweak to the SQL schema used by fts5.
authordan <dan@noemail.net>
Mon, 27 Jul 2015 11:43:36 +0000 (11:43 +0000)
committerdan <dan@noemail.net>
Mon, 27 Jul 2015 11:43:36 +0000 (11:43 +0000)
FossilOrigin-Name: 427bf09ba41158041d774aac2b5ffbd062c6eabe

ext/fts5/fts5_index.c
ext/fts5/fts5_storage.c
ext/fts5/test/fts5aa.test
manifest
manifest.uuid

index 065df4fac17f3d8bc9693a8c66681c72cceb0e8e..973a511bd106fdc2144e7120496a5a0153a4c168 100644 (file)
@@ -2329,7 +2329,7 @@ static void fts5SegIterSeekInit(
   if( p->pIdxSelect==0 ){
     Fts5Config *pConfig = p->pConfig;
     fts5IndexPrepareStmt(p, &p->pIdxSelect, sqlite3_mprintf(
-          "SELECT pgno, dlidx FROM '%q'.'%q_idx' WHERE "
+          "SELECT pgno FROM '%q'.'%q_idx' WHERE "
           "segid=? AND term<=? ORDER BY term DESC LIMIT 1",
           pConfig->zDb, pConfig->zName
     ));
@@ -2338,8 +2338,9 @@ static void fts5SegIterSeekInit(
   sqlite3_bind_int(p->pIdxSelect, 1, pSeg->iSegid);
   sqlite3_bind_blob(p->pIdxSelect, 2, pTerm, nTerm, SQLITE_STATIC);
   if( SQLITE_ROW==sqlite3_step(p->pIdxSelect) ){
-    iPg = sqlite3_column_int(p->pIdxSelect, 0);
-    bDlidx = sqlite3_column_int(p->pIdxSelect, 1);
+    i64 val = sqlite3_column_int(p->pIdxSelect, 0);
+    iPg = (val>>1);
+    bDlidx = (val & 0x0001);
   }
   p->rc = sqlite3_reset(p->pIdxSelect);
 
@@ -3211,8 +3212,7 @@ static void fts5WriteFlushBtree(Fts5Index *p, Fts5SegWriter *pWriter){
     /* The following was already done in fts5WriteInit(): */
     /* sqlite3_bind_int(p->pIdxWriter, 1, pWriter->iSegid); */
     sqlite3_bind_blob(p->pIdxWriter, 2, z, pWriter->btterm.n, SQLITE_STATIC);
-    sqlite3_bind_int(p->pIdxWriter, 3, pWriter->iBtPage);
-    sqlite3_bind_int(p->pIdxWriter, 4, bFlag);
+    sqlite3_bind_int64(p->pIdxWriter, 3, bFlag + ((i64)pWriter->iBtPage<<1));
     sqlite3_step(p->pIdxWriter);
     p->rc = sqlite3_reset(p->pIdxWriter);
   }
@@ -3559,7 +3559,7 @@ static void fts5WriteInit(
   if( p->pIdxWriter==0 ){
     Fts5Config *pConfig = p->pConfig;
     fts5IndexPrepareStmt(p, &p->pIdxWriter, sqlite3_mprintf(
-          "INSERT INTO '%q'.'%q_idx'(segid,term,pgno,dlidx) VALUES(?,?,?,?)", 
+          "INSERT INTO '%q'.'%q_idx'(segid,term,pgno) VALUES(?,?,?)", 
           pConfig->zDb, pConfig->zName
     ));
   }
@@ -4498,7 +4498,7 @@ int sqlite3Fts5IndexOpen(
       );
       if( rc==SQLITE_OK ){
         rc = sqlite3Fts5CreateTable(pConfig, "idx", 
-            "segid, term, pgno, dlidx, PRIMARY KEY(segid, term)", 
+            "segid, term, pgno, PRIMARY KEY(segid, term)", 
             1, pzErr
         );
       }
@@ -5067,7 +5067,7 @@ static void fts5IndexIntegrityCheckSegment(
   if( pSeg->pgnoFirst==0 ) return;
 
   fts5IndexPrepareStmt(p, &pStmt, sqlite3_mprintf(
-      "SELECT segid, term, pgno, dlidx FROM '%q'.'%q_idx' WHERE segid=%d",
+      "SELECT segid, term, (pgno>>1), (pgno & 1) FROM '%q'.'%q_idx' WHERE segid=%d",
       pConfig->zDb, pConfig->zName, pSeg->iSegid
   ));
 
index 1ddbb7940ac63cf0517e6d1164ef5dab2612693b..f09b7d9158216f00926bf8fc10254ea4c47a30d7 100644 (file)
@@ -604,7 +604,9 @@ int sqlite3Fts5StorageDeleteAll(Fts5Storage *p){
 
   /* Delete the contents of the %_data and %_docsize tables. */
   rc = fts5ExecPrintf(pConfig->db, 0,
-      "DELETE FROM %Q.'%q_data';",
+      "DELETE FROM %Q.'%q_data';" 
+      "DELETE FROM %Q.'%q_idx';",
+      pConfig->zDb, pConfig->zName,
       pConfig->zDb, pConfig->zName
   );
   if( rc==SQLITE_OK && pConfig->bColumnsize ){
index 39be723c3277b77e02cb6d8ccf1ae5d06d8671db..daa535cd9b9e346e6b476d4d0519189583cbee56 100644 (file)
@@ -27,7 +27,7 @@ do_execsql_test 1.0 {
 } {
   t1 {CREATE VIRTUAL TABLE t1 USING fts5(a, b, c)}
   t1_data {CREATE TABLE 't1_data'(id INTEGER PRIMARY KEY, block BLOB)}
-  t1_idx {CREATE TABLE 't1_idx'(segid, term, pgno, dlidx, PRIMARY KEY(segid, term)) WITHOUT ROWID}
+  t1_idx {CREATE TABLE 't1_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID}
   t1_content {CREATE TABLE 't1_content'(id INTEGER PRIMARY KEY, c0, c1, c2)}
   t1_docsize {CREATE TABLE 't1_docsize'(id INTEGER PRIMARY KEY, sz BLOB)}
   t1_config {CREATE TABLE 't1_config'(k PRIMARY KEY, v) WITHOUT ROWID}
index eaca5d450e588e9215a3e0d06fb711782a10d8ed..202fef47d24da254d70287d785cda96a8672245c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Remove\sa\spotentially\sundefined\sbehaviour\sinvolving\ssigned\sintegers\sand\sbitshift\soperations\sfrom\sfts5_hash.c.
-D 2015-07-27T11:01:19.255
+C Minor\stweak\sto\sthe\sSQL\sschema\sused\sby\sfts5.
+D 2015-07-27T11:43:36.660
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 4de3ef40c8b3b75c0c55ff4242a43c8ce1ad90ee
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -112,9 +112,9 @@ F ext/fts5/fts5_buffer.c 80f9ba4431848cb857e3d2158f5280093dcd8015
 F ext/fts5/fts5_config.c fdfa63ae8e527ecfaa50f94063c610429cc887cf
 F ext/fts5/fts5_expr.c 56dcbcbdc9029dd76a31360de664559839f4be41
 F ext/fts5/fts5_hash.c 4bf4b99708848357b8a2b5819e509eb6d3df9246
-F ext/fts5/fts5_index.c e0580e54ce3f44f516231d07be6ce21a550fc9dc
+F ext/fts5/fts5_index.c 02b4d8b0ca77cb00af6cbedd3aa1aaaa18608e3f
 F ext/fts5/fts5_main.c 0de7ba81488d2c502c8e794eaf7983d468e4c6e9
-F ext/fts5/fts5_storage.c 877399c557f273a725b5e4fc26f07e67ca90570a
+F ext/fts5/fts5_storage.c 22ec9b5d35a39e2b5b65daf4ba7cd47fbb2d0df5
 F ext/fts5/fts5_tcl.c 85eb4e0d0fefa9420b78151496ad4599a1783e20
 F ext/fts5/fts5_tokenize.c 30f97a8c74683797b4cd233790444fbefb3b0708
 F ext/fts5/fts5_unicode2.c 78273fbd588d1d9bd0a7e4e0ccc9207348bae33c
@@ -123,7 +123,7 @@ F ext/fts5/fts5_vocab.c 4e268a3fcbc099e50e335a1135be985a41ff6f7f
 F ext/fts5/fts5parse.y 833db1101b78c0c47686ab1b84918e38c36e9452
 F ext/fts5/mkportersteps.tcl 5acf962d2e0074f701620bb5308155fa1e4a63ba
 F ext/fts5/test/fts5_common.tcl e0b4a846a7670f6232a644ece69ef25a5c19c0e8
-F ext/fts5/test/fts5aa.test 8dac4216e5ad8fd240cff078d1893520bb1f5fb2
+F ext/fts5/test/fts5aa.test c6e680a0d1b6c2616a382f1006d5d91eca697bd0
 F ext/fts5/test/fts5ab.test 6fe3a56731d15978afbb74ae51b355fc9310f2ad
 F ext/fts5/test/fts5ac.test 9737992d08c56bfd4803e933744d2d764e23795c
 F ext/fts5/test/fts5ad.test b2edee8b7de0c21d2c88f8a18c195034aad6952d
@@ -1366,7 +1366,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 5ec933c257884019484db7f533ce920012e47a1c
-R 9f928401b669a6c07f568b37deea414f
+P ad6286ab1f40e4716456a67b719f9cd733f988eb
+R c68925a95e6de88396d9c6895e046f42
 U dan
-Z 20f258f623b78af69c3c22c9b7050053
+Z 7e591d2a7d163efa89020980b07c1f9a
index 93c48cc3e8468ce31e032e03dde91de381d3f842..b8ef51dec58a69fb1919aa9e1e05a20d2e35107b 100644 (file)
@@ -1 +1 @@
-ad6286ab1f40e4716456a67b719f9cd733f988eb
\ No newline at end of file
+427bf09ba41158041d774aac2b5ffbd062c6eabe
\ No newline at end of file