blob: 4a553cd6d5454a3465ba6df29a4b9ec3a9fd5a66 [file] [log] [blame]
danielk19771d461462009-04-21 09:02:45 +00001# 2009 April 17
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# This file implements regression tests for SQLite library. The
13# focus of this file is the code in rowhash.c.
14#
drh048129d2010-06-02 14:43:30 +000015# NB: The rowhash.c module is no longer part of the source tree. But
16# we might as well keep this test.
17#
danielk19771d461462009-04-21 09:02:45 +000018
19set testdir [file dirname $argv0]
20source $testdir/tester.tcl
21
22do_test rowhash-1.1 {
23 execsql {
24 CREATE TABLE t1(id INTEGER PRIMARY KEY, a, b, c);
25 CREATE INDEX i1 ON t1(a);
26 CREATE INDEX i2 ON t1(b);
27 CREATE INDEX i3 ON t1(c);
28 }
29} {}
30
31proc do_keyset_test {name lKey} {
32 db transaction {
33 execsql { DELETE FROM t1 }
34 foreach key $lKey {
drh84fe0662009-04-21 17:13:38 +000035 execsql { INSERT OR IGNORE INTO t1 VALUES($key, 'a', 'b', 'c') }
danielk19771d461462009-04-21 09:02:45 +000036 }
37 }
38 do_test $name {
39 lsort -integer [execsql {
40 SELECT id FROM t1 WHERE a = 'a' OR b = 'b' OR c = 'c';
41 }]
danielk19772e905672009-04-28 15:48:08 +000042 } [lsort -integer -unique $lKey]
danielk19771d461462009-04-21 09:02:45 +000043}
44
45do_keyset_test rowhash-2.1 {1 2 3}
46do_keyset_test rowhash-2.2 {0 1 2 3}
47do_keyset_test rowhash-2.3 {62 125 188}
shaneb1a82db2009-04-23 18:42:04 +000048if {[working_64bit_int]} {
49 expr srand(1)
drh048129d2010-06-02 14:43:30 +000050 unset -nocomplain i L
shaneb1a82db2009-04-23 18:42:04 +000051 for {set i 4} {$i < 10} {incr i} {
52 for {set j 0} {$j < 5000} {incr j} {
drh7895fdd2009-05-02 12:02:01 +000053 lappend L [expr int(rand()*1000000000)]
shaneb1a82db2009-04-23 18:42:04 +000054 }
55 do_keyset_test rowhash-2.$i $L
danielk19771d461462009-04-21 09:02:45 +000056 }
danielk19771d461462009-04-21 09:02:45 +000057}
58
59finish_test