From: dan Date: Fri, 11 Dec 2009 07:07:36 +0000 (+0000) Subject: Add comment to fts3rnd.test to explain how the test works. X-Git-Tag: version-3.7.2~714 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1548f210bab413ecbaf231ac4cbc4431d6f8b629;p=thirdparty%2Fsqlite.git Add comment to fts3rnd.test to explain how the test works. FossilOrigin-Name: 6b740c7cd57d618623ed028be4213dfef860054a --- diff --git a/manifest b/manifest index f713ebea14..ad36ac0f06 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,5 @@ ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -C Extensive\sedits\sto\sthe\scomments\sin\sthe\ssqlite.h.in\ssource\sfile\sto\sidentify\ntestable\sstatements\sof\struth\sabout\sthe\sC-language\sinterface. -D 2009-12-11T03:44:19 +C Add\scomment\sto\sfts3rnd.test\sto\sexplain\show\sthe\stest\sworks. +D 2009-12-11T07:07:36 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in c5827ead754ab32b9585487177c93bb00b9497b3 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -405,7 +402,7 @@ F test/fts3expr.test 05dab77387801e4900009917bb18f556037d82da F test/fts3expr2.test 18da930352e5693eaa163a3eacf96233b7290d1a F test/fts3malloc.test d02ee86b21edd2b43044e0d6dfdcd26cb6efddcb F test/fts3near.test dc196dd17b4606f440c580d45b3d23aa975fd077 -F test/fts3rnd.test d7fe25493aa76f5010df0a6dbfa4dfa14f537c26 +F test/fts3rnd.test b1fd9a0b8bd95014b1c2cb9d5a8f27b5b3afc50d F test/func.test af106ed834001738246d276659406823e35cde7b F test/func2.test 772d66227e4e6684b86053302e2d74a2500e1e0f F test/fuzz.test a4174c3009a3e2c2e14b31b364ebf7ddb49de2c9 @@ -781,14 +778,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P c2d22960f652264c48ec41b9ca4047aa142d86f7 -R 486c06b197bfc51eb94a7f962ed6737c -U drh -Z ea7c058e969ebde5efdd00ab50b34456 ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.6 (GNU/Linux) - -iD8DBQFLIcAWoxKgR168RlERAnIhAJ0RwDqvVTXI0zkKGEA3VqBT511IwACgitGK -F8Of11tttSf9woDPKl/nH5c= -=iUzM ------END PGP SIGNATURE----- +P ea884e1ed8dba1aa0f3cf68fc71923954983f6c6 +R ae6e3fceaf15353a41abf5fd7eaec6f2 +U dan +Z ad28381e408238f8547c0374a8ed6615 diff --git a/manifest.uuid b/manifest.uuid index 4bdf8bb9ca..82342c7952 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -ea884e1ed8dba1aa0f3cf68fc71923954983f6c6 \ No newline at end of file +6b740c7cd57d618623ed028be4213dfef860054a \ No newline at end of file diff --git a/test/fts3rnd.test b/test/fts3rnd.test index bf783e7f6e..100c127ed2 100644 --- a/test/fts3rnd.test +++ b/test/fts3rnd.test @@ -9,6 +9,72 @@ # Brute force (random data) tests for FTS3. # +#------------------------------------------------------------------------- +# +# The FTS3 tests implemented in this file focus on testing that FTS3 +# returns the correct set of documents for various types of full-text +# query. This is done using pseudo-randomly generated data and queries. +# The expected result of each query is calculated using Tcl code. +# +# 1. The database is initialized to contain a single table with three +# columns. 100 rows are inserted into the table. Each of the three +# values in each row is a document consisting of between 0 and 100 +# terms. Terms are selected from a vocabulary of $G(nVocab) terms. +# +# 2. The following is performed 100 times: +# +# a. A row is inserted into the database. The row contents are +# generated as in step 1. The docid is a pseudo-randomly selected +# value between 0 and 1000000. +# +# b. A psuedo-randomly selected row is updated. One of its columns is +# set to contain a new document generated in the same way as the +# documents in step 1. +# +# c. A psuedo-randomly selected row is deleted. +# +# d. For each of several types of fts3 queries, 10 SELECT queries +# of the form: +# +# SELECT docid FROM WHERE MATCH '' +# +# are evaluated. The results are compared to those calculated by +# Tcl code in this file. The patterns used for the different query +# types are: +# +# 1. query = +# 2. query = +# 3. query = " " +# 4. query = " " +# 5. query = " " +# 6. query = NEAR +# 7. query = NEAR/11 NEAR/11 +# 8. query = OR +# 9. query = NOT +# 10. query = AND +# 11. query = NEAR OR NEAR +# 12. query = NEAR NOT NEAR +# 13. query = NEAR AND NEAR +# +# where is a term psuedo-randomly selected from the vocabulary +# and prefix is the first 2 characters of such a term followed by +# a "*" character. +# +# Every second iteration, steps (a) through (d) above are performed +# within a single transaction. This forces the queries in (d) to +# read data from both the database and the in-memory hash table +# that caches the full-text index entries created by steps (a), (b) +# and (c) until the transaction is committed. +# +# The procedure above is run 5 times, using advisory fts3 node sizes of 50, +# 500, 1000 and 2000 bytes. +# +# After the test using an advisory node-size of 50, an OOM test is run using +# the database. This test is similar to step (d) above, except that it tests +# the effects of transient and persistent OOM conditions encountered while +# executing each query. +# + set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -17,12 +83,13 @@ source $testdir/tester.tcl ifcapable !fts3 { finish_test ; return } source $testdir/fts3_common.tcl +set G(nVocab) 100 + set nVocab 100 set lVocab [list] expr srand(0) - # Generate a vocabulary of nVocab words. Each word is 3 characters long. # set lChar {a b c d e f g h i j k l m n o p q r s t u v w x y z}