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