github.com/jdgcs/sqlite3@v1.12.1-0.20210908114423-bc5f96e4dd51/testdata/tcl/tkt1567.test (about) 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 17 set testdir [file dirname $argv0] 18 source $testdir/tester.tcl 19 20 do_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 } {} 31 integrity_check tkt1567-1.2 32 33 do_test tkt1567-1.3 { 34 execsql { 35 BEGIN; 36 UPDATE t1 SET a = a||'x' WHERE rowid%2==0; 37 } 38 } {} 39 do_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}} 44 do_test tkt1567-1.5 { 45 execsql { 46 COMMIT; 47 } 48 } {} 49 integrity_check tkt1567-1.6 50 51 do_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 } {} 62 integrity_check tkt1567-2.2 63 64 do_test tkt1567-2.3 { 65 execsql { 66 BEGIN; 67 UPDATE t2 SET a = a||'x' WHERE rowid%2==0; 68 } 69 } {} 70 do_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}} 75 do_test tkt1567-2.5 { 76 execsql { 77 COMMIT; 78 } 79 } {} 80 integrity_check tkt1567-2.6 81 82 finish_test