gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/sort2.test (about) 1 # 2014 March 25. 2 # 3 # The author disclaims copyright to this source code. In place of 4 # a legal notice, here is a blessing: 5 # 6 # May you do good and not evil. 7 # May you find forgiveness for yourself and forgive others. 8 # May you share freely, never taking more than you give. 9 # 10 #*********************************************************************** 11 # This file implements regression tests for SQLite library. 12 # 13 # Specifically, the tests in this file attempt to verify that 14 # multi-threaded sorting works. 15 # 16 17 set testdir [file dirname $argv0] 18 source $testdir/tester.tcl 19 set testprefix sort2 20 db close 21 sqlite3_shutdown 22 sqlite3_config_pmasz 10 23 sqlite3_initialize 24 sqlite3 db test.db 25 26 foreach {tn script} { 27 1 { } 28 2 { 29 catch { db close } 30 reset_db 31 catch { db eval {PRAGMA threads=7} } 32 } 33 } { 34 eval $script 35 36 do_execsql_test $tn.1 { 37 PRAGMA cache_size = 5; 38 WITH r(x,y) AS ( 39 SELECT 1, randomblob(100) 40 UNION ALL 41 SELECT x+1, randomblob(100) FROM r 42 LIMIT 100000 43 ) 44 SELECT count(x), length(y) FROM r GROUP BY (x%5) 45 } { 46 20000 100 20000 100 20000 100 20000 100 20000 100 47 } 48 49 do_execsql_test $tn.2.1 { 50 CREATE TABLE t1(a, b); 51 WITH r(x,y) AS ( 52 SELECT 1, randomblob(100) 53 UNION ALL 54 SELECT x+1, randomblob(100) FROM r 55 LIMIT 10000 56 ) INSERT INTO t1 SELECT * FROM r; 57 } 58 59 do_execsql_test $tn.2.2 { 60 CREATE UNIQUE INDEX i1 ON t1(b, a); 61 } 62 63 do_execsql_test $tn.2.3 { 64 CREATE UNIQUE INDEX i2 ON t1(a); 65 } 66 67 do_execsql_test $tn.2.4 { PRAGMA integrity_check } {ok} 68 69 # Because it uses so much data, this test can take 12-13 seconds even on 70 # a modern workstation. So it is omitted from "veryquick" and other 71 # permutations.test tests. 72 if {[isquick]==0} { 73 do_execsql_test $tn.3 { 74 PRAGMA cache_size = 5; 75 WITH r(x,y) AS ( 76 SELECT 1, randomblob(100) 77 UNION ALL 78 SELECT x+1, randomblob(100) FROM r 79 LIMIT 1000000 80 ) 81 SELECT count(x), length(y) FROM r GROUP BY (x%5) 82 } { 83 200000 100 200000 100 200000 100 200000 100 200000 100 84 } 85 } 86 } 87 88 finish_test