Annotation of embedaddon/sqlite3/test/intarray.test, revision 1.1
1.1 ! misho 1: # 2009 November 10
! 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: # This file implements regression tests for SQLite library.
! 12: #
! 13: # This file implements tests for the "intarray" object implemented
! 14: # in test_intarray.c.
! 15: #
! 16:
! 17: set testdir [file dirname $argv0]
! 18: source $testdir/tester.tcl
! 19:
! 20: ifcapable !vtab {
! 21: return
! 22: }
! 23:
! 24: do_test intarray-1.0 {
! 25: db eval {
! 26: CREATE TABLE t1(a INTEGER PRIMARY KEY, b);
! 27: }
! 28: for {set i 1} {$i<=999} {incr i} {
! 29: set b [format {x%03d} $i]
! 30: db eval {INSERT INTO t1(a,b) VALUES($i,$b)}
! 31: }
! 32: db eval {
! 33: CREATE TABLE t2(x INTEGER PRIMARY KEY, y);
! 34: INSERT INTO t2 SELECT * FROM t1;
! 35: SELECT b FROM t1 WHERE a IN (12,34,56,78) ORDER BY a
! 36: }
! 37: } {x012 x034 x056 x078}
! 38:
! 39: do_test intarray-1.1 {
! 40: set ia1 [sqlite3_intarray_create db ia1]
! 41: set ia2 [sqlite3_intarray_create db ia2]
! 42: set ia3 [sqlite3_intarray_create db ia3]
! 43: set ia4 [sqlite3_intarray_create db ia4]
! 44: db eval {
! 45: SELECT type, name FROM sqlite_temp_master
! 46: ORDER BY name
! 47: }
! 48: } {table ia1 table ia2 table ia3 table ia4}
! 49:
! 50: do_test intarray-1.2 {
! 51: db eval {
! 52: SELECT b FROM t1 WHERE a IN ia3 ORDER BY a
! 53: }
! 54: } {}
! 55:
! 56: do_test intarray-1.3 {
! 57: sqlite3_intarray_bind $ia3 45 123 678
! 58: db eval {
! 59: SELECT b FROM t1 WHERE a IN ia3 ORDER BY a
! 60: }
! 61: } {x045 x123 x678}
! 62:
! 63: do_test intarray-1.4 {
! 64: db eval {
! 65: SELECT count(b) FROM t1 WHERE a NOT IN ia3 ORDER BY a
! 66: }
! 67: } {996}
! 68:
! 69: #explain {SELECT b FROM t1 WHERE a NOT IN ia3}
! 70:
! 71: do_test intarray-1.5 {
! 72: set cmd sqlite3_intarray_bind
! 73: lappend cmd $ia1
! 74: for {set i 1} {$i<=999} {incr i} {
! 75: lappend cmd $i
! 76: lappend cmd [expr {$i+1000}]
! 77: lappend cmd [expr {$i+2000}]
! 78: }
! 79: eval $cmd
! 80: db eval {
! 81: REPLACE INTO t1 SELECT * FROM t2;
! 82: DELETE FROM t1 WHERE a NOT IN ia1;
! 83: SELECT count(*) FROM t1;
! 84: }
! 85: } {999}
! 86:
! 87: do_test intarray-1.6 {
! 88: db eval {
! 89: DELETE FROM t1 WHERE a IN ia1;
! 90: SELECT count(*) FROM t1;
! 91: }
! 92: } {0}
! 93:
! 94: do_test intarray-2.1 {
! 95: db eval {
! 96: CREATE TEMP TABLE t3(p,q);
! 97: INSERT INTO t3 SELECT * FROM t2;
! 98: SELECT count(*) FROM t3 WHERE p IN ia1;
! 99: }
! 100: } {999}
! 101:
! 102: do_test intarray-2.2 {
! 103: set ia5 [sqlite3_intarray_create db ia5]
! 104: db eval {
! 105: SELECT count(*) FROM t3 WHERE p IN ia1;
! 106: }
! 107: } {999}
! 108:
! 109: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>