xref: /sqlite-3.40.0/test/bigsort.test (revision 7aa3ebee)
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
13set testdir [file dirname $argv0]
14source $testdir/tester.tcl
15set 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#
27if {[catch {exec free | grep Mem:} out] || [lindex $out 1]<8000000} {
28  finish_test
29  return
30}
31
32do_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}
44do_execsql_test 1.1 {
45  PRAGMA cache_size = 4194304;
46  CREATE INDEX i1 ON t1(a, b);
47}
48
49
50finish_test
51