xref: /sqlite-3.40.0/test/misc2.test (revision dc2d94de)
18ce10ba6Sdrh# 2003 June 21
28ce10ba6Sdrh#
38ce10ba6Sdrh# The author disclaims copyright to this source code.  In place of
48ce10ba6Sdrh# a legal notice, here is a blessing:
58ce10ba6Sdrh#
68ce10ba6Sdrh#    May you do good and not evil.
78ce10ba6Sdrh#    May you find forgiveness for yourself and forgive others.
88ce10ba6Sdrh#    May you share freely, never taking more than you give.
98ce10ba6Sdrh#
108ce10ba6Sdrh#***********************************************************************
118ce10ba6Sdrh# This file implements regression tests for SQLite library.
128ce10ba6Sdrh#
138ce10ba6Sdrh# This file implements tests for miscellanous features that were
148ce10ba6Sdrh# left out of other test files.
158ce10ba6Sdrh#
16*dc2d94deSdrh# $Id: misc2.test,v 1.5 2003/07/27 17:16:08 drh Exp $
178ce10ba6Sdrh
188ce10ba6Sdrhset testdir [file dirname $argv0]
198ce10ba6Sdrhsource $testdir/tester.tcl
208ce10ba6Sdrh
218ce10ba6Sdrh# Test for ticket #360
228ce10ba6Sdrh#
238ce10ba6Sdrhdo_test misc2-1.1 {
248ce10ba6Sdrh  catchsql {
258ce10ba6Sdrh    CREATE TABLE FOO(bar integer);
268ce10ba6Sdrh    CREATE TRIGGER foo_insert BEFORE INSERT ON foo BEGIN
278ce10ba6Sdrh      SELECT CASE WHEN (NOT new.bar BETWEEN 0 AND 20)
288ce10ba6Sdrh             THEN raise(rollback, 'aiieee') END;
298ce10ba6Sdrh    END;
308ce10ba6Sdrh    INSERT INTO foo(bar) VALUES (1);
318ce10ba6Sdrh  }
32dc339ee2Sdrh} {0 {}}
33dc339ee2Sdrhdo_test misc2-1.2 {
34dc339ee2Sdrh  catchsql {
35dc339ee2Sdrh    INSERT INTO foo(bar) VALUES (111);
36dc339ee2Sdrh  }
378ce10ba6Sdrh} {1 aiieee}
38d60ccc6aSdrh
39d60ccc6aSdrh# Make sure ROWID works on a view and a subquery.  Ticket #364
40d60ccc6aSdrh#
41d60ccc6aSdrhdo_test misc2-2.1 {
42d60ccc6aSdrh  execsql {
43d60ccc6aSdrh    CREATE TABLE t1(a,b,c);
44d60ccc6aSdrh    INSERT INTO t1 VALUES(1,2,3);
45da808d56Sdrh    CREATE TABLE t2(a,b,c);
46d60ccc6aSdrh    INSERT INTO t2 VALUES(7,8,9);
47d60ccc6aSdrh    SELECT rowid, * FROM (SELECT * FROM t1, t2);
48d60ccc6aSdrh  }
49d60ccc6aSdrh} {{} 1 2 3 7 8 9}
50d60ccc6aSdrhdo_test misc2-2.2 {
51d60ccc6aSdrh  execsql {
52d60ccc6aSdrh    CREATE VIEW v1 AS SELECT * FROM t1, t2;
53d60ccc6aSdrh    SELECT rowid, * FROM v1;
54d60ccc6aSdrh  }
55d60ccc6aSdrh} {{} 1 2 3 7 8 9}
56da808d56Sdrh
57da808d56Sdrh# Check name binding precedence.  Ticket #387
58da808d56Sdrh#
59da808d56Sdrhdo_test misc2-3.1 {
60da808d56Sdrh  catchsql {
61da808d56Sdrh    SELECT t1.b+t2.b AS a, t1.a, t2.a FROM t1, t2 WHERE a==10
62da808d56Sdrh  }
63da808d56Sdrh} {1 {ambiguous column name: a}}
64*dc2d94deSdrh
65*dc2d94deSdrh# Make sure 32-bit integer overflow is handled properly in queries.
66*dc2d94deSdrh# ticket #408
67*dc2d94deSdrh#
68*dc2d94deSdrhdo_test misc2-4.1 {
69*dc2d94deSdrh  execsql {
70*dc2d94deSdrh    INSERT INTO t1 VALUES(4000000000,'a','b');
71*dc2d94deSdrh    SELECT a FROM t1 WHERE a>1;
72*dc2d94deSdrh  }
73*dc2d94deSdrh} {4000000000}
74*dc2d94deSdrhdo_test misc2-4.2 {
75*dc2d94deSdrh  execsql {
76*dc2d94deSdrh    INSERT INTO t1 VALUES(2147483648,'b2','c2');
77*dc2d94deSdrh    INSERT INTO t1 VALUES(2147483647,'b3','c3');
78*dc2d94deSdrh    SELECT a FROM t1 WHERE a>2147483647;
79*dc2d94deSdrh  }
80*dc2d94deSdrh} {4000000000 2147483648}
81*dc2d94deSdrhdo_test misc2-4.3 {
82*dc2d94deSdrh  execsql {
83*dc2d94deSdrh    SELECT a FROM t1 WHERE a<2147483648;
84*dc2d94deSdrh  }
85*dc2d94deSdrh} {1 2147483647}
86*dc2d94deSdrhdo_test misc2-4.4 {
87*dc2d94deSdrh  execsql {
88*dc2d94deSdrh    SELECT a FROM t1 WHERE a<=2147483648;
89*dc2d94deSdrh  }
90*dc2d94deSdrh} {1 2147483648 2147483647}
91*dc2d94deSdrhdo_test misc2-4.5 {
92*dc2d94deSdrh  execsql {
93*dc2d94deSdrh    SELECT a FROM t1 WHERE a<10000000000;
94*dc2d94deSdrh  }
95*dc2d94deSdrh} {1 4000000000 2147483648 2147483647}
96*dc2d94deSdrhdo_test misc2-4.6 {
97*dc2d94deSdrh  execsql {
98*dc2d94deSdrh    SELECT a FROM t1 WHERE a<1000000000000 ORDER BY 1;
99*dc2d94deSdrh  }
100*dc2d94deSdrh} {1 2147483647 2147483648 4000000000}
101