xref: /sqlite-3.40.0/test/tkt1567.test (revision f9c8ce3c)
1# 2005 December 19 2005
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 #1567 is
14# fixed.
15#
16
17set testdir [file dirname $argv0]
18source $testdir/tester.tcl
19
20do_test tkt1567-1.1 {
21  execsql {
22    CREATE TABLE t1(a TEXT PRIMARY KEY);
23  }
24  set bigstr abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
25  for {set i 0} {$i<100} {incr i} {
26    set x [format %5d [expr $i*2]]
27    set sql "INSERT INTO t1 VALUES('$x-$bigstr')"
28    execsql $sql
29  }
30} {}
31integrity_check tkt1567-1.2
32
33do_test tkt1567-1.3 {
34  execsql {
35    BEGIN;
36    UPDATE t1 SET a = a||'x' WHERE rowid%2==0;
37  }
38} {}
39do_test tkt1567-1.4 {
40  catchsql {
41    UPDATE t1 SET a = CASE WHEN rowid<90 THEN substr(a,1,10) ELSE '9999' END;
42  }
43} {1 {UNIQUE constraint failed: t1.a}}
44do_test tkt1567-1.5 {
45  execsql {
46    COMMIT;
47  }
48} {}
49integrity_check tkt1567-1.6
50
51do_test tkt1567-2.1 {
52  execsql {
53    CREATE TABLE t2(a TEXT PRIMARY KEY, rowid INT) WITHOUT rowid;
54  }
55  set bigstr abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
56  for {set i 0} {$i<100} {incr i} {
57    set x [format %5d [expr $i*2]]
58    set sql "INSERT INTO t2 VALUES('$x-$bigstr', $i+1)"
59    execsql $sql
60  }
61} {}
62integrity_check tkt1567-2.2
63
64do_test tkt1567-2.3 {
65  execsql {
66    BEGIN;
67    UPDATE t2 SET a = a||'x' WHERE rowid%2==0;
68  }
69} {}
70do_test tkt1567-2.4 {
71  catchsql {
72    UPDATE t2 SET a = CASE WHEN rowid<90 THEN substr(a,1,10) ELSE '9999' END;
73  }
74} {1 {UNIQUE constraint failed: t2.a}}
75do_test tkt1567-2.5 {
76  execsql {
77    COMMIT;
78  }
79} {}
80integrity_check tkt1567-2.6
81
82finish_test
83