xref: /sqlite-3.40.0/test/count.test (revision 4d9c1dd2)
1# 2009 February 24
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.  The
12# focus of this file is testing "SELECT count(*)" statements.
13#
14# $Id: count.test,v 1.1 2009/02/24 10:48:28 danielk1977 Exp $
15
16set testdir [file dirname $argv0]
17source $testdir/tester.tcl
18
19set iTest 0
20foreach zIndex [list {
21  /* no-op */
22} {
23  CREATE INDEX i1 ON t1(a);
24}] {
25  incr iTest
26  do_test count-1.$iTest.1 {
27    execsql {
28      DROP TABLE IF EXISTS t1;
29      CREATE TABLE t1(a, b);
30    }
31    execsql $zIndex
32    execsql {
33      INSERT INTO t1 VALUES(1, 2);
34      INSERT INTO t1 VALUES(3, 4);
35      SELECT count(*) FROM t1;
36    }
37  } {2}
38
39  do_test count-1.$iTest.2 {
40    execsql {
41      INSERT INTO t1 SELECT * FROM t1;          --   4
42      INSERT INTO t1 SELECT * FROM t1;          --   8
43      INSERT INTO t1 SELECT * FROM t1;          --  16
44      INSERT INTO t1 SELECT * FROM t1;          --  32
45      INSERT INTO t1 SELECT * FROM t1;          --  64
46      INSERT INTO t1 SELECT * FROM t1;          -- 128
47      INSERT INTO t1 SELECT * FROM t1;          -- 256
48      SELECT count(*) FROM t1;
49    }
50  } {256}
51
52  do_test count-1.$iTest.3 {
53    execsql {
54      INSERT INTO t1 SELECT * FROM t1;          --  512
55      INSERT INTO t1 SELECT * FROM t1;          -- 1024
56      INSERT INTO t1 SELECT * FROM t1;          -- 2048
57      INSERT INTO t1 SELECT * FROM t1;          -- 4096
58      SELECT count(*) FROM t1;
59    }
60  } {4096}
61
62  do_test count-1.$iTest.4 {
63    execsql {
64      BEGIN;
65      INSERT INTO t1 SELECT * FROM t1;          --  8192
66      INSERT INTO t1 SELECT * FROM t1;          -- 16384
67      INSERT INTO t1 SELECT * FROM t1;          -- 32768
68      INSERT INTO t1 SELECT * FROM t1;          -- 65536
69      COMMIT;
70      SELECT count(*) FROM t1;
71    }
72  } {65536}
73}
74
75finish_test
76
77