1*c5c4113dSnw141292 2*c5c4113dSnw141292#pragma ident "%Z%%M% %I% %E% SMI" 3*c5c4113dSnw141292 4*c5c4113dSnw141292 5*c5c4113dSnw141292set testdir [file dirname $argv0] 6*c5c4113dSnw141292source $testdir/tester.tcl 7*c5c4113dSnw141292 8*c5c4113dSnw141292db close 9*c5c4113dSnw141292set DB [sqlite db test.db] 10*c5c4113dSnw141292 11*c5c4113dSnw141292execsql { 12*c5c4113dSnw141292 CREATE TABLE t1(a); 13*c5c4113dSnw141292 INSERT INTO t1 VALUES(1); 14*c5c4113dSnw141292 INSERT INTO t1 VALUES(2); 15*c5c4113dSnw141292 INSERT INTO t1 VALUES(3); 16*c5c4113dSnw141292 INSERT INTO t1 VALUES(4); 17*c5c4113dSnw141292} 18*c5c4113dSnw141292 19*c5c4113dSnw141292do_test capi3-13.1 { 20*c5c4113dSnw141292 execsql { 21*c5c4113dSnw141292 CREATE TABLE t3(a unique on conflict rollback); 22*c5c4113dSnw141292 INSERT INTO t3 SELECT a FROM t1; 23*c5c4113dSnw141292 BEGIN; 24*c5c4113dSnw141292 INSERT INTO t1 SELECT * FROM t1; 25*c5c4113dSnw141292 } 26*c5c4113dSnw141292} {} 27*c5c4113dSnw141292do_test capi3-13.2 { 28*c5c4113dSnw141292 set STMT [sqlite_compile $DB "SELECT a FROM t1" TAIL] 29*c5c4113dSnw141292 sqlite_step $STMT 30*c5c4113dSnw141292 sqlite_step $STMT 31*c5c4113dSnw141292 sqlite_step $STMT 32*c5c4113dSnw141292 sqlite_step $STMT 33*c5c4113dSnw141292 sqlite_step $STMT 34*c5c4113dSnw141292} {SQLITE_ROW} 35*c5c4113dSnw141292do_test capi3-13.3 { 36*c5c4113dSnw141292# This causes a ROLLBACK, which deletes the table out from underneath the 37*c5c4113dSnw141292# SELECT statement. Causes a crash. 38*c5c4113dSnw141292 catchsql { 39*c5c4113dSnw141292 INSERT INTO t3 SELECT a FROM t1; 40*c5c4113dSnw141292 } 41*c5c4113dSnw141292} {1 {column a is not unique}} 42*c5c4113dSnw141292do_test capi3-13.4 { 43*c5c4113dSnw141292 sqlite_step $STMT 44*c5c4113dSnw141292 sqlite_step $STMT 45*c5c4113dSnw141292 sqlite_step $STMT 46*c5c4113dSnw141292 sqlite_step $STMT 47*c5c4113dSnw141292} {SQLITE_DONE} 48*c5c4113dSnw141292do_test capi3-13.5 { 49*c5c4113dSnw141292 sqlite_finalize $STMT 50*c5c4113dSnw141292} {SQLITE_OK} 51*c5c4113dSnw141292 52*c5c4113dSnw141292finish_test 53