| # 2014 March 25. |
| # |
| # The author disclaims copyright to this source code. In place of |
| # a legal notice, here is a blessing: |
| # |
| # May you do good and not evil. |
| # May you find forgiveness for yourself and forgive others. |
| # May you share freely, never taking more than you give. |
| # |
| #*********************************************************************** |
| # This file implements regression tests for SQLite library. |
| # |
| # Specifically, the tests in this file attempt to verify that |
| # multi-threaded sorting works. |
| # |
| |
| set testdir [file dirname $argv0] |
| source $testdir/tester.tcl |
| set testprefix sort2 |
| |
| foreach {tn script} { |
| 1 { } |
| 2 { |
| catch { db close } |
| reset_db |
| catch { db eval {PRAGMA threads=7} } |
| } |
| } { |
| |
| eval $script |
| |
| do_execsql_test $tn.1 { |
| PRAGMA cache_size = 5; |
| WITH r(x,y) AS ( |
| SELECT 1, randomblob(100) |
| UNION ALL |
| SELECT x+1, randomblob(100) FROM r |
| LIMIT 100000 |
| ) |
| SELECT count(x), length(y) FROM r GROUP BY (x%5) |
| } { |
| 20000 100 20000 100 20000 100 20000 100 20000 100 |
| } |
| |
| do_execsql_test $tn.2.1 { |
| CREATE TABLE t1(a, b); |
| WITH r(x,y) AS ( |
| SELECT 1, randomblob(100) |
| UNION ALL |
| SELECT x+1, randomblob(100) FROM r |
| LIMIT 10000 |
| ) INSERT INTO t1 SELECT * FROM r; |
| } |
| |
| do_execsql_test $tn.2.2 { |
| CREATE UNIQUE INDEX i1 ON t1(b, a); |
| } |
| |
| do_execsql_test $tn.2.3 { |
| CREATE UNIQUE INDEX i2 ON t1(a); |
| } |
| |
| do_execsql_test $tn.2.4 { PRAGMA integrity_check } {ok} |
| |
| breakpoint |
| do_execsql_test $tn.3 { |
| PRAGMA cache_size = 5; |
| WITH r(x,y) AS ( |
| SELECT 1, randomblob(100) |
| UNION ALL |
| SELECT x+1, randomblob(100) FROM r |
| LIMIT 1000000 |
| ) |
| SELECT count(x), length(y) FROM r GROUP BY (x%5) |
| } { |
| 200000 100 200000 100 200000 100 200000 100 200000 100 |
| } |
| } |
| |
| finish_test |