From: dan Date: Mon, 27 Jul 2015 11:43:36 +0000 (+0000) Subject: Minor tweak to the SQL schema used by fts5. X-Git-Tag: version-3.8.11~1^2~1 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=8d90087146638c2272ee3bb107b1f5de852a66b4;p=thirdparty%2Fsqlite.git Minor tweak to the SQL schema used by fts5. FossilOrigin-Name: 427bf09ba41158041d774aac2b5ffbd062c6eabe --- diff --git a/ext/fts5/fts5_index.c b/ext/fts5/fts5_index.c index 065df4fac1..973a511bd1 100644 --- a/ext/fts5/fts5_index.c +++ b/ext/fts5/fts5_index.c @@ -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 )); diff --git a/ext/fts5/fts5_storage.c b/ext/fts5/fts5_storage.c index 1ddbb7940a..f09b7d9158 100644 --- a/ext/fts5/fts5_storage.c +++ b/ext/fts5/fts5_storage.c @@ -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 ){ diff --git a/ext/fts5/test/fts5aa.test b/ext/fts5/test/fts5aa.test index 39be723c32..daa535cd9b 100644 --- a/ext/fts5/test/fts5aa.test +++ b/ext/fts5/test/fts5aa.test @@ -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} diff --git a/manifest b/manifest index eaca5d450e..202fef47d2 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index 93c48cc3e8..b8ef51dec5 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -ad6286ab1f40e4716456a67b719f9cd733f988eb \ No newline at end of file +427bf09ba41158041d774aac2b5ffbd062c6eabe \ No newline at end of file