diff --git a/ext/fts5/fts5.c b/ext/fts5/fts5.c index 054851cba2..cc6457df6a 100644 --- a/ext/fts5/fts5.c +++ b/ext/fts5/fts5.c @@ -1085,7 +1085,10 @@ static int fts5SpecialInsert( }else if( 0==sqlite3_stricmp("integrity-check", z) ){ rc = sqlite3Fts5StorageIntegrity(pTab->pStorage); }else{ - rc = sqlite3Fts5ConfigSetValue(pTab->pConfig, z, pVal, &bError); + rc = sqlite3Fts5IndexLoadConfig(pTab->pIndex); + if( rc==SQLITE_OK ){ + rc = sqlite3Fts5ConfigSetValue(pTab->pConfig, z, pVal, &bError); + } if( rc==SQLITE_OK ){ if( bError ){ rc = SQLITE_ERROR; diff --git a/ext/fts5/fts5Int.h b/ext/fts5/fts5Int.h index 6148ec7f6c..afe1911180 100644 --- a/ext/fts5/fts5Int.h +++ b/ext/fts5/fts5Int.h @@ -343,6 +343,8 @@ int sqlite3Fts5IndexReads(Fts5Index *p); int sqlite3Fts5IndexReinit(Fts5Index *p); int sqlite3Fts5IndexOptimize(Fts5Index *p); +int sqlite3Fts5IndexLoadConfig(Fts5Index *p); + /* ** End of interface to code in fts5_index.c. **************************************************************************/ diff --git a/ext/fts5/fts5_index.c b/ext/fts5/fts5_index.c index a7394a84e5..570ff429de 100644 --- a/ext/fts5/fts5_index.c +++ b/ext/fts5/fts5_index.c @@ -4368,6 +4368,13 @@ int sqlite3Fts5IndexSetCookie(Fts5Index *p, int iNew){ return rc; } +int sqlite3Fts5IndexLoadConfig(Fts5Index *p){ + Fts5Structure *pStruct; + pStruct = fts5StructureRead(p, 0); + fts5StructureRelease(pStruct); + return fts5IndexReturn(p); +} + /************************************************************************* ************************************************************************** ** Below this point is the implementation of the fts5_decode() scalar diff --git a/ext/fts5/tool/loadfts5.tcl b/ext/fts5/tool/loadfts5.tcl index 2572e38aea..c63564cd0a 100644 --- a/ext/fts5/tool/loadfts5.tcl +++ b/ext/fts5/tool/loadfts5.tcl @@ -24,16 +24,22 @@ proc usage {} { puts stderr "Usage: $::argv0 ?SWITCHES? DATABASE PATH" puts stderr "" puts stderr "Switches are:" - puts stderr " -fts4 (use fts4 instead of fts5)" + puts stderr " -fts4 (use fts4 instead of fts5)" + puts stderr " -fts5 (use fts5)" + puts stderr " -porter (use porter tokenizer)" + puts stderr " -limit N (load no more than N documents)" + puts stderr " -automerge N (set the automerge parameter to N)" exit 1 } -set O(vtab) fts5 -set O(tok) "" -set O(limit) 0 +set O(vtab) fts5 +set O(tok) "" +set O(limit) 0 +set O(automerge) -1 if {[llength $argv]<2} usage -for {set i 0} {$i < [llength $argv]-2} {incr i} { +set nOpt [expr {[llength $argv]-2}] +for {set i 0} {$i < $nOpt} {incr i} { set arg [lindex $argv $i] switch -- [lindex $argv $i] { -fts4 { @@ -49,9 +55,14 @@ for {set i 0} {$i < [llength $argv]-2} {incr i} { } -limit { - incr i + if { [incr i]>=$nOpt } usage set O(limit) [lindex $argv $i] } + + -automerge { + if { [incr i]>=$nOpt } usage + set O(automerge) [lindex $argv $i] + } default { usage @@ -64,6 +75,13 @@ db func loadfile loadfile db transaction { db eval "CREATE VIRTUAL TABLE t1 USING $O(vtab) (path, content$O(tok))" + if {$O(automerge)>=0} { + if {$O(vtab) == "fts5"} { + db eval { INSERT INTO t1(t1, rank) VALUES('automerge', $O(automerge)) } + } else { + db eval { INSERT INTO t1(t1) VALUES('automerge=' || $O(automerge)) } + } + } load_hierachy [lindex $argv end] } diff --git a/manifest b/manifest index 7615e891da..991f99eb4f 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Improve\sthe\sperformance\sof\sthe\sfts5\sporter\stokenizer\simplementation. -D 2015-01-17T17:48:10.103 +C Ensure\san\sup\sto\sdate\scopy\sof\sthe\sfts5\sconfiguration\shas\sbeen\sloaded\sinto\smemory\sbefore\sattempting\sto\smodify\sthe\ssame\sconfiguration. +D 2015-01-17T20:01:52.023 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 7cd23e4fc91004a6bd081623e1bc6932e44828c0 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -104,15 +104,15 @@ F ext/fts3/unicode/CaseFolding.txt 8c678ca52ecc95e16bc7afc2dbf6fc9ffa05db8c F ext/fts3/unicode/UnicodeData.txt cd07314edb62d49fde34debdaf92fa2aa69011e7 F ext/fts3/unicode/mkunicode.tcl 4199cb887040ee3c3cd59a5171ddb0566904586e F ext/fts5/extract_api_docs.tcl 55a6d648d516f35d9a1e580ac00de27154e1904a -F ext/fts5/fts5.c 790880afffb249c79f9a36b38f9d774515f5cf7b +F ext/fts5/fts5.c 0ba5a8f27e1aa4deab82f0fc295d55f67dfe7f34 F ext/fts5/fts5.h f931954065693898d26c51f23f1d27200184a69a -F ext/fts5/fts5Int.h 0142ba4c3c70e1976578604c0e738670f7689726 +F ext/fts5/fts5Int.h b593d5ff5f0cc6493778f88bc19db1dea42e003b F ext/fts5/fts5_aux.c 549aef152b0fd46020f5595d861b1fd60b3f9b4f F ext/fts5/fts5_buffer.c 32dd3c950392346ca69a0f1803501766c5c954f9 F ext/fts5/fts5_config.c 33534ca25198cc62c54ff7d285d455c57ad19399 F ext/fts5/fts5_expr.c 6ba7a2e34a80989cca509bd295de1bc9f8e739a3 F ext/fts5/fts5_hash.c 63fa8379c5f2ac107d47c2b7d9ac04c95ef8a279 -F ext/fts5/fts5_index.c 6f9f98875b2ee5a16255911e1dc1b0b32cb1c350 +F ext/fts5/fts5_index.c 33473b527bc0a20fe4d262c2b7b4b67d6c4db5a2 F ext/fts5/fts5_storage.c 8bc9e5b6654e1545e9513def277ef3f025921664 F ext/fts5/fts5_tcl.c 1293fac2bb26903fd3d5cdee59c5885ba7e620d5 F ext/fts5/fts5_tokenize.c 7c61d5c35c3449597bdeaa54dd48afe26852c7b0 @@ -144,7 +144,7 @@ F ext/fts5/test/fts5rebuild.test 2a5e98205393487b4a732c8290999af7c0b907b4 F ext/fts5/test/fts5tokenizer.test b34ae592db66f6e89546d791ce1f905ba0b3395c F ext/fts5/test/fts5unicode.test 79b3e34eb29ce4929628aa514a40cb467fdabe4d F ext/fts5/test/fts5unicode2.test 64a5267fd6082fcb46439892ebd0cbaa5c38acee -F ext/fts5/tool/loadfts5.tcl 55c1f3ebf3f4b4f54be5bbdc823e36d59fc5e2dd +F ext/fts5/tool/loadfts5.tcl 17c9771fb225b6b7ddd02a698fc7f320eadd7b15 F ext/icu/README.txt d9fbbad0c2f647c3fdf715fc9fd64af53aedfc43 F ext/icu/icu.c d415ccf984defeb9df2c0e1afcfaa2f6dc05eacb F ext/icu/sqliteicu.h 728867a802baa5a96de7495e9689a8e01715ef37 @@ -1277,7 +1277,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P af8d43a4a08528bbae25ee38fe25de8a86f8a21c -R bbc2aaea254f25294ae3538c1336787c +P 96ea600440de05ee663e71c3f0d0de2c64108bf9 +R 026d50b0e36062cf8629af1a1c3f509d U dan -Z 3ca0ddccabcad41dd9682a0c32f2940d +Z 986e1351ec9614d6453e829ee3d25fd7 diff --git a/manifest.uuid b/manifest.uuid index 5130bde3f4..a1cc5de558 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -96ea600440de05ee663e71c3f0d0de2c64108bf9 \ No newline at end of file +f30afd209aa4ce42766b1493750c4f5b5f1e9502 \ No newline at end of file