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