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