From: drh Date: Wed, 7 Jan 2009 15:52:54 +0000 (+0000) Subject: For archival purposes, add the TCL script that was used to generate many X-Git-Tag: version-3.6.10~51 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f3c57015d80d3608e8b37a454ea24e499cecef88;p=thirdparty%2Fsqlite.git For archival purposes, add the TCL script that was used to generate many of the test cases for where7.test. (CVS 6133) FossilOrigin-Name: 0e01cdc8d283acd2757d69bf6d8e36bb1f47d460 --- diff --git a/manifest b/manifest index 8f41891265..edf5166295 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Conjecture:\sa\sjournal\sheader\swith\snRec==0\smust\sbe\sthe\slast\sheader\sin\sthe\njournal.\s\sAdd\sasserts\sto\smake\sthis\sconjecture\sexplicit.\s(CVS\s6132) -D 2009-01-07T15:33:46 +C For\sarchival\spurposes,\sadd\sthe\sTCL\sscript\sthat\swas\sused\sto\sgenerate\smany\nof\sthe\stest\scases\sfor\swhere7.test.\s(CVS\s6133) +D 2009-01-07T15:52:55 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 05461a9b5803d5ad10c79f989801e9fd2cc3e592 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -428,6 +428,7 @@ F test/lock5.test 6b1f78f09ad1522843dad571b76b321e6f439bf7 F test/lock6.test f4e9052b14da3bd6807a757d5aed15c17321031a F test/lookaside.test e69f822f13745f1d5c445c6e30e30f059f30c8e5 F test/main.test 187a9a1b5248ed74a83838c581c15ec6023b555b +F test/make-where7.tcl 40bb740b37eead343eaf57b74ab72d2a5a304745 F test/malloc.test 6bfb1b95188b103b69536effa943ad195c7655d1 F test/malloc3.test 4bc57f850b212f706f3e1b37c4eced1d5a727cd1 F test/malloc4.test 957337613002b7058a85116493a262f679f3a261 @@ -692,7 +693,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e -P 83d1eafbde556f56969c6f285b6767d2c658dbfc -R e0c72c9528a9fa2ec3f8b366bc70534d +P 15b5b5f90c2ffa79155cdc2dbc4fb5583cb72017 +R 4dcc277c9df1693948059e5f5c701096 U drh -Z 5a8b01afe6b4e3b34d058c12ce65dc71 +Z 514d88051bd5ba44a89485825f5030f6 diff --git a/manifest.uuid b/manifest.uuid index 623b96ccd2..8c6aa82413 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -15b5b5f90c2ffa79155cdc2dbc4fb5583cb72017 \ No newline at end of file +0e01cdc8d283acd2757d69bf6d8e36bb1f47d460 \ No newline at end of file diff --git a/test/make-where7.tcl b/test/make-where7.tcl new file mode 100644 index 0000000000..74cbd83723 --- /dev/null +++ b/test/make-where7.tcl @@ -0,0 +1,122 @@ +#!/usr/bin/tclsh +# +# Run this script to generate randomized test cases for the where7.test +# script. The output will need to be manually copied and pasted into +# the where7.test script. +# +puts "do_test where7-2.1 \173" +puts " db eval \173" +puts " CREATE TABLE t2(a INTEGER PRIMARY KEY,b,c,d,e,f,g);" +set NA 100 +for {set a 1} {$a<=$NA} {incr a} { + set b [expr {$a*11}] + set div3 [expr {int(($a+2)/3)}] + set c [expr {$div3*1001}] + set d [expr {$a*1.001}] + set e [expr {$div3*100.1}] + set x [expr {$a%26}] + set f [string range {abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz} \ + $x [expr {$x+8}]] + set div5 [expr {int(($a+7)/5)}] + set x [expr {$div5%26}] + set g [string range {zyxwvutsrqponmlkjihgfedcbazyxwvutsrqponmlkjihgfedcba} \ + $x [expr {$x+6}]] + puts " INSERT INTO t2 VALUES($a,$b,$c,$d,$e,'$f','$g');" + lappend fidx($f) $a + lappend gidx($g) $a + set gof($a) $g + set fof($a) $f + + set expr "a=$a" + set term($expr) $a + set expr "((a BETWEEN [expr {$a-1}] AND [expr {$a+1}]) AND a!=$a)" + set x {} + if {$a>1} {set x [expr {$a-1}]} + if {$a<$NA} {lappend x [expr {$a+1}]} + set term($expr) $x + set expr "b=$b" + set term($expr) $a + set expr "b=[expr {$a*11+3}]" + set term($expr) {} + set expr "c=$c" + lappend term($expr) $a + set expr "(d>=$a.0 AND d<[expr {$a+1.0}] AND d NOT NULL)" + lappend term($expr) $a + set expr "f='$f'" + lappend term($expr) $a + set expr \ + "(f GLOB '?[string range $f 1 4]*' AND f GLOB '[string range $f 0 3]*')" + lappend term($expr) $a + set expr "(g='$g' AND f GLOB '[string range $f 0 4]*')" + lappend term($expr) $a +} +puts " CREATE INDEX t2b ON t2(b);" +puts " CREATE INDEX t2c ON t2(c);" +puts " CREATE INDEX t2d ON t2(d);" +puts " CREATE INDEX t2e ON t2(e);" +puts " CREATE INDEX t2f ON t2(f);" +puts " CREATE INDEX t2g ON t2(g);" +puts " CREATE TABLE t3(a INTEGER PRIMARY KEY,b,c,d,e,f,g);" +puts " INSERT INTO t3 SELECT * FROM t2;" +puts " CREATE INDEX t3b ON t3(b,c);" +puts " CREATE INDEX t3c ON t3(c,e);" +puts " CREATE INDEX t3d ON t3(d,g);" +puts " CREATE INDEX t3e ON t3(e,f,g);" +puts " CREATE INDEX t3f ON t3(f,b,d,c);" +puts " CREATE INDEX t3g ON t3(g,f);" + +puts " \175" +puts "\175 {}" + +set term(b<0) {} +set term(1000000=[expr {int(($NA+2)/3)*1001+1}]) {} +set term(d<0.0) {} +set term(d>1e10) {} +set expr {e IS NULL} +set term($expr) {} +set expr {f IS NULL} +set term($expr) {} +set expr {g IS NULL} +set term($expr) {} + +set NT 1000 +set termlist [array names term] +set nterm [llength $termlist] +for {set i 2} {$i<=$NT+1} {incr i} { + set n [expr {int(rand()*10)+2}] + set w {} + unset -nocomplain r + for {set j 0} {$j<$n} {incr j} { + set k [expr {int(rand()*$nterm)}] + set t [lindex $termlist $k] + lappend w $t + foreach a $term($t) { + set r($a) 1 + } + } + if {[info exists seen($w)]} { + incr i -1 + continue + } + set seen($w) 1 + set result [lsort -int [array names r]] + puts "do_test where7-2.$i.1 \173" + puts " count_steps \173" + puts " SELECT a FROM t2" + set wc [join $w "\n OR "] + puts " WHERE $wc" + puts " ORDER BY a" + puts " \175" + puts "\175 {$result scan 0 sort 0}" + puts "do_test where7-2.$i.2 \173" + puts " count_steps \173" + puts " SELECT a FROM t3" + set wc [join $w "\n OR "] + puts " WHERE $wc" + puts " ORDER BY a" + puts " \175" + puts "\175 {$result scan 0 sort 0}" +} +puts "finish_test"