Annotation of embedaddon/sqlite3/test/tkt-f777251dc7a.test, revision 1.1.1.1
1.1 misho 1: # 2009 October 16
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 to verify that ticket [f777251dc7a] has been
14: # fixed.
15: #
16:
17: set testdir [file dirname $argv0]
18: source $testdir/tester.tcl
19:
20: do_test tkt-f7772-1.1 {
21: execsql {
22: CREATE TEMP TABLE t1(x UNIQUE);
23: INSERT INTO t1 VALUES(1);
24: CREATE TABLE t2(x, y);
25: INSERT INTO t2 VALUES(1, 2);
26: CREATE TEMP TABLE t3(w, z);
27: }
28: } {}
29:
30: proc force_rollback {} {
31: catch {db eval {INSERT OR ROLLBACK INTO t1 VALUES(1)}}
32: }
33: db function force_rollback force_rollback
34:
35: do_test tkt-f7772-1.2 {
36: catchsql {
37: BEGIN IMMEDIATE;
38: SELECT x, force_rollback(), EXISTS(SELECT 1 FROM t3 WHERE w=x) FROM t2;
39: }
40: } {1 {callback requested query abort}}
41: do_test tkt-f7772-1.3 {
42: sqlite3_get_autocommit db
43: } {1}
44:
45: do_test tkt-f7772-2.1 {
46: execsql {
47: DROP TABLE IF EXISTS t1;
48: DROP TABLE IF EXISTS t2;
49: DROP TABLE IF EXISTS t3;
50:
51: CREATE TEMP TABLE t1(x UNIQUE);
52: INSERT INTO t1 VALUES(1);
53: CREATE TABLE t2(x, y);
54: INSERT INTO t2 VALUES(1, 2);
55: }
56: } {}
57: do_test tkt-f7772-2.2 {
58: execsql {
59: BEGIN IMMEDIATE;
60: CREATE TEMP TABLE t3(w, z);
61: }
62: catchsql {
63: SELECT x, force_rollback(), EXISTS(SELECT 1 FROM t3 WHERE w=x) FROM t2
64: }
65: } {1 {callback requested query abort}}
66: do_test tkt-f7772-2.3 {
67: sqlite3_get_autocommit db
68: } {1}
69:
70: do_test tkt-f7772-3.1 {
71: execsql {
72: DROP TABLE IF EXISTS t1;
73: DROP TABLE IF EXISTS t2;
74: DROP TABLE IF EXISTS t3;
75:
76: CREATE TEMP TABLE t1(x);
77: CREATE TABLE t2(x);
78: CREATE TABLE t3(x);
79:
80: INSERT INTO t1 VALUES(1);
81: INSERT INTO t1 VALUES(2);
82: INSERT INTO t2 VALUES(1);
83: INSERT INTO t2 VALUES(2);
84: }
85: } {}
86:
87: proc ins {} { db eval {INSERT INTO t3 VALUES('hello')} }
88: db function ins ins
89:
90: do_test tkt-f7772-3.2 {
91: execsql {
92: SELECT ins() AS x FROM t2 UNION ALL SELECT ins() AS x FROM t1
93: }
94: } {{} {} {} {}}
95: do_test tkt-f7772-3.3 {
96: execsql { SELECT * FROM t3 }
97: } {hello hello hello hello}
98:
99: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>