From 961303c1e7a9393f44d0ff4aa4d7f20f2422dcbc Mon Sep 17 00:00:00 2001 From: shess Date: Thu, 13 Sep 2007 18:16:08 +0000 Subject: [PATCH] Drop the forced error from fts3.c and add forced errors to fts2.c and fts1.c. (CVS 4427) FossilOrigin-Name: fec6567a0f8a868cda9bba2a473491dfb17b6c88 --- ext/fts1/fts1.c | 21 +++++++++++++++++++++ ext/fts2/fts2.c | 23 +++++++++++++++++++++++ ext/fts3/fts3.c | 6 ------ manifest | 16 ++++++++-------- manifest.uuid | 2 +- 5 files changed, 53 insertions(+), 15 deletions(-) diff --git a/ext/fts1/fts1.c b/ext/fts1/fts1.c index 0912498103..5a69965d47 100644 --- a/ext/fts1/fts1.c +++ b/ext/fts1/fts1.c @@ -1,3 +1,24 @@ +/* fts1 has a design flaw which can lead to database corruption (see +** below). It is recommended not to use it any longer, instead use +** fts3 (or higher). If you believe that your use of fts1 is safe, +** add -DSQLITE_ENABLE_BROKEN_FTS1=1 to your CFLAGS. +*/ +#ifndef SQLITE_ENABLE_BROKEN_FTS1 +#error fts1 has a design flaw and has been deprecated. +#endif +/* The flaw is that fts1 uses the content table's unaliased rowid as +** the unique docid. fts1 embeds the rowid in the index it builds, +** and expects the rowid to not change. The SQLite VACUUM operation +** will renumber such rowids, thereby breaking fts1. If you are using +** fts1 in a system which has disabled VACUUM, then you can continue +** to use it safely. Note that PRAGMA auto_vacuum does NOT disable +** VACUUM, though systems using auto_vacuum are unlikely to invoke +** VACUUM. +** +** fts1 should be safe even across VACUUM if you only insert documents +** and never delete. +*/ + /* The author disclaims copyright to this source code. * * This is an SQLite module implementing full-text search. diff --git a/ext/fts2/fts2.c b/ext/fts2/fts2.c index 1d2ad371d8..65ad173abc 100644 --- a/ext/fts2/fts2.c +++ b/ext/fts2/fts2.c @@ -1,3 +1,26 @@ +/* fts2 has a design flaw which can lead to database corruption (see +** below). It is recommended not to use it any longer, instead use +** fts3 (or higher). If you believe that your use of fts2 is safe, +** add -DSQLITE_ENABLE_BROKEN_FTS2=1 to your CFLAGS. +*/ +#ifndef SQLITE_ENABLE_BROKEN_FTS2 +#error fts2 has a design flaw and has been deprecated. +#endif +/* The flaw is that fts2 uses the content table's unaliased rowid as +** the unique docid. fts2 embeds the rowid in the index it builds, +** and expects the rowid to not change. The SQLite VACUUM operation +** will renumber such rowids, thereby breaking fts2. If you are using +** fts2 in a system which has disabled VACUUM, then you can continue +** to use it safely. Note that PRAGMA auto_vacuum does NOT disable +** VACUUM, though systems using auto_vacuum are unlikely to invoke +** VACUUM. +** +** Unlike fts1, which is safe across VACUUM if you never delete +** documents, fts2 has a second exposure to this flaw, in the segments +** table. So fts2 should be considered unsafe across VACUUM in all +** cases. +*/ + /* ** 2006 Oct 10 ** diff --git a/ext/fts3/fts3.c b/ext/fts3/fts3.c index 605e7c5d27..b39291975a 100644 --- a/ext/fts3/fts3.c +++ b/ext/fts3/fts3.c @@ -1,9 +1,3 @@ -/* fts3 is not ready for use. So don't use it yet! Contact -** shess@google.com with questions. -*/ -#ifndef SQLITE_FTS3_IS_NOT_READY -#error fts3 is not ready for use. -#endif /* ** 2006 Oct 10 ** diff --git a/manifest b/manifest index e5b461d656..47e9f55415 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\san\simplicit\s(HIDDEN)\sdocid\scolumn.\s\sThis\sworks\sas\san\salias\sto\nrowid,\ssimilar\sto\show\sthings\swork\sin\sSQLite\stables\swith\sINTEGER\nPRIMARY\sKEY.\s\sAdd\stests\sto\sverify\soperation.\s(CVS\s4426) -D 2007-09-13T18:14:49 +C Drop\sthe\sforced\serror\sfrom\sfts3.c\sand\sadd\sforced\serrors\sto\sfts2.c\sand\nfts1.c.\s(CVS\s4427) +D 2007-09-13T18:16:08 F Makefile.in cbfb898945536a8f9ea8b897e1586dd1fdbcc5db F Makefile.linux-gcc 65241babba6faf1152bf86574477baab19190499 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028 @@ -24,7 +24,7 @@ F ext/README.txt 913a7bd3f4837ab14d7e063304181787658b14e1 F ext/fts1/README.txt 20ac73b006a70bcfd80069bdaf59214b6cf1db5e F ext/fts1/ft_hash.c 3927bd880e65329bdc6f506555b228b28924921b F ext/fts1/ft_hash.h 1a35e654a235c2c662d3ca0dfc3138ad60b8b7d5 -F ext/fts1/fts1.c d07c6eeb3cedb19c5d74b53ae71f1c47d6a782cc +F ext/fts1/fts1.c e45ff77a01524470ae1c2837e201654627ff1f19 F ext/fts1/fts1.h 6060b8f62c1d925ea8356cb1a6598073eb9159a6 F ext/fts1/fts1_hash.c 3196cee866edbebb1c0521e21672e6d599965114 F ext/fts1/fts1_hash.h 957d378355ed29f672cd5add012ce8b088a5e089 @@ -37,7 +37,7 @@ F ext/fts1/simple_tokenizer.c 1844d72f7194c3fd3d7e4173053911bf0661b70d F ext/fts1/tokenizer.h 0c53421b832366d20d720d21ea3e1f6e66a36ef9 F ext/fts2/README.tokenizers 2ff290e0a130f6e7611f2e608cb3b5aaea721abc F ext/fts2/README.txt 8c18f41574404623b76917b9da66fcb0ab38328d -F ext/fts2/fts2.c 9a02a0db89b29b6185557ca7ca2d188a814ea64d +F ext/fts2/fts2.c 02720dd6e35c1ec836d17de2c9941ee1c369d884 F ext/fts2/fts2.h da5f76c65163301d1068a971fd32f4119e3c95fa F ext/fts2/fts2_hash.c cafebb4620d19684c4c9872530012441df60f503 F ext/fts2/fts2_hash.h e283308156018329f042816eb09334df714e105e @@ -49,7 +49,7 @@ F ext/fts2/fts2_tokenizer1.c 8a545c232bdffafd117c4eeaf59789691909f26a F ext/fts2/mkfts2amal.tcl 974d5d438cb3f7c4a652639262f82418c1e4cff0 F ext/fts3/README.tokenizers a97c9a55b3422f6cb04af9de9296fe2447ea4a78 F ext/fts3/README.txt 8c18f41574404623b76917b9da66fcb0ab38328d -F ext/fts3/fts3.c 6d266d7250a544ae27026dc5caf655b94f63d74b +F ext/fts3/fts3.c 6b390b5054f9267ee5778dccffc856a3d70e7b70 F ext/fts3/fts3.h 3a10a0af180d502cecc50df77b1b22df142817fe F ext/fts3/fts3_hash.c 84654768178452b00bbc986dd878a8299dc1e3dc F ext/fts3/fts3_hash.h af585d6867d478fc0457f64cfaae60e09541e63a @@ -577,7 +577,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5 -P ca669eaf1b4af441741129bee4af02f32a7c74b8 -R a51a9cf24cdebc5c4ac36a19e3d14834 +P c8d2345200f9ece1af712543982097d0b6f348c7 +R ef2d8ee95ba1b46aa99333d48f97eddd U shess -Z 890136427fcf1284643fc3a90d814552 +Z 7e45d9fdd88f579666a7625daeccbaf8 diff --git a/manifest.uuid b/manifest.uuid index a57a8d5389..3ce6c17083 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c8d2345200f9ece1af712543982097d0b6f348c7 \ No newline at end of file +fec6567a0f8a868cda9bba2a473491dfb17b6c88 \ No newline at end of file