1*0a841a2bSdan# 2022 June 6 2*0a841a2bSdan# 3*0a841a2bSdan# The author disclaims copyright to this source code. In place of 4*0a841a2bSdan# a legal notice, here is a blessing: 5*0a841a2bSdan# 6*0a841a2bSdan# May you do good and not evil. 7*0a841a2bSdan# May you find forgiveness for yourself and forgive others. 8*0a841a2bSdan# May you share freely, never taking more than you give. 9*0a841a2bSdan# 10*0a841a2bSdan#*********************************************************************** 11*0a841a2bSdan# 12*0a841a2bSdan 13*0a841a2bSdanset testdir [file dirname $argv0] 14*0a841a2bSdansource $testdir/tester.tcl 15*0a841a2bSdanset testprefix changes2 16*0a841a2bSdan 17*0a841a2bSdando_execsql_test 1.0 { 18*0a841a2bSdan CREATE TABLE some_table ( 19*0a841a2bSdan id INTEGER NOT NULL, value VARCHAR(40) NOT NULL, PRIMARY KEY (id) 20*0a841a2bSdan ); 21*0a841a2bSdan INSERT INTO some_table (id, value) VALUES (1, 'v1'); 22*0a841a2bSdan} {} 23*0a841a2bSdan 24*0a841a2bSdanset ::stmt [sqlite3_prepare_v2 db { 25*0a841a2bSdan UPDATE some_table SET value='v2' WHERE id=1 RETURNING id 26*0a841a2bSdan} -1 dummy] 27*0a841a2bSdan 28*0a841a2bSdando_test 1.1 { 29*0a841a2bSdan list [sqlite3_step $::stmt] [db changes] 30*0a841a2bSdan} {SQLITE_ROW 1} 31*0a841a2bSdan 32*0a841a2bSdando_test 1.2 { 33*0a841a2bSdan list [sqlite3_step $::stmt] [db changes] 34*0a841a2bSdan} {SQLITE_DONE 1} 35*0a841a2bSdan 36*0a841a2bSdansqlite3_reset $::stmt 37*0a841a2bSdan 38*0a841a2bSdando_execsql_test 1.2 { 39*0a841a2bSdan DROP TABLE some_table; 40*0a841a2bSdan CREATE TABLE some_table ( 41*0a841a2bSdan id INTEGER NOT NULL, value VARCHAR(40) NOT NULL, PRIMARY KEY (id) 42*0a841a2bSdan ); 43*0a841a2bSdan INSERT INTO some_table (id, value) VALUES (1, 'v1'); 44*0a841a2bSdan} {} 45*0a841a2bSdan 46*0a841a2bSdando_test 1.3 { 47*0a841a2bSdan list [sqlite3_step $::stmt] [db changes] 48*0a841a2bSdan} {SQLITE_ROW 1} 49*0a841a2bSdan 50*0a841a2bSdando_test 1.4 { 51*0a841a2bSdan list [sqlite3_step $::stmt] [db changes] 52*0a841a2bSdan} {SQLITE_DONE 1} 53*0a841a2bSdan 54*0a841a2bSdansqlite3_finalize $::stmt 55*0a841a2bSdan 56*0a841a2bSdan#------------------------------------------------------------------------- 57*0a841a2bSdanreset_db 58*0a841a2bSdan 59*0a841a2bSdando_execsql_test 2.0 { 60*0a841a2bSdan CREATE TABLE t1(a, b); 61*0a841a2bSdan CREATE TABLE log(t); 62*0a841a2bSdan} {} 63*0a841a2bSdan 64*0a841a2bSdanset ::stmt [sqlite3_prepare_v2 db { 65*0a841a2bSdan INSERT INTO log VALUES(changes() || ' changes') 66*0a841a2bSdan} -1 dummy] 67*0a841a2bSdan 68*0a841a2bSdando_execsql_test 2.1 { 69*0a841a2bSdan INSERT INTO t1 VALUES (1, 'v1'), (2, 'v2'); 70*0a841a2bSdan} {} 71*0a841a2bSdan 72*0a841a2bSdando_test 2.2 { 73*0a841a2bSdan list [sqlite3_step $::stmt] [sqlite3_reset $::stmt] 74*0a841a2bSdan} {SQLITE_DONE SQLITE_OK} 75*0a841a2bSdan 76*0a841a2bSdando_execsql_test 2.3 { 77*0a841a2bSdan CREATE TABLE t3(x); 78*0a841a2bSdan} 79*0a841a2bSdan 80*0a841a2bSdando_execsql_test 2.2 { 81*0a841a2bSdan INSERT INTO t1 VALUES (3, 'v1'), (4, 'v2'); 82*0a841a2bSdan} {} 83*0a841a2bSdan 84*0a841a2bSdando_test 2.3 { 85*0a841a2bSdan list [sqlite3_step $::stmt] [sqlite3_reset $::stmt] 86*0a841a2bSdan} {SQLITE_DONE SQLITE_OK} 87*0a841a2bSdan 88*0a841a2bSdansqlite3_finalize $::stmt 89*0a841a2bSdan 90*0a841a2bSdando_execsql_test 2.4 { 91*0a841a2bSdan SELECT * FROM log; 92*0a841a2bSdan} {{2 changes} {2 changes}} 93*0a841a2bSdan 94*0a841a2bSdanfinish_test 95*0a841a2bSdan 96