github.com/jdgcs/sqlite3@v1.12.1-0.20210908114423-bc5f96e4dd51/testdata/tcl/bigsort.test (about) 1 # 2014 November 26 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 # 12 13 set testdir [file dirname $argv0] 14 source $testdir/tester.tcl 15 set testprefix bigsort 16 17 #-------------------------------------------------------------------- 18 # At one point there was an overflow problem if the product of the 19 # cache-size and page-size was larger than 2^31. Causing an infinite 20 # loop if the product was also an integer multiple of 2^32, or 21 # inefficiency otherwise. 22 # 23 # This test causes thrashing on machines with smaller amounts of 24 # memory. Make sure the host has at least 8GB available before running 25 # this test. 26 # 27 if {[catch {exec free | grep Mem:} out] || [lindex $out 1]<8000000} { 28 finish_test 29 return 30 } 31 32 do_execsql_test 1.0 { 33 PRAGMA page_size = 1024; 34 CREATE TABLE t1(a, b); 35 BEGIN; 36 WITH data(x,y) AS ( 37 SELECT 1, zeroblob(10000) 38 UNION ALL 39 SELECT x+1, y FROM data WHERE x < 300000 40 ) 41 INSERT INTO t1 SELECT * FROM data; 42 COMMIT; 43 } 44 do_execsql_test 1.1 { 45 PRAGMA cache_size = 4194304; 46 CREATE INDEX i1 ON t1(a, b); 47 } 48 49 50 finish_test