1# 2022 June 6 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# 12 13set testdir [file dirname $argv0] 14source $testdir/tester.tcl 15set testprefix changes2 16 17do_execsql_test 1.0 { 18 CREATE TABLE some_table ( 19 id INTEGER NOT NULL, value VARCHAR(40) NOT NULL, PRIMARY KEY (id) 20 ); 21 INSERT INTO some_table (id, value) VALUES (1, 'v1'); 22} {} 23 24set ::stmt [sqlite3_prepare_v2 db { 25 UPDATE some_table SET value='v2' WHERE id=1 RETURNING id 26} -1 dummy] 27 28do_test 1.1 { 29 list [sqlite3_step $::stmt] [db changes] 30} {SQLITE_ROW 1} 31 32do_test 1.2 { 33 list [sqlite3_step $::stmt] [db changes] 34} {SQLITE_DONE 1} 35 36sqlite3_reset $::stmt 37 38do_execsql_test 1.2 { 39 DROP TABLE some_table; 40 CREATE TABLE some_table ( 41 id INTEGER NOT NULL, value VARCHAR(40) NOT NULL, PRIMARY KEY (id) 42 ); 43 INSERT INTO some_table (id, value) VALUES (1, 'v1'); 44} {} 45 46do_test 1.3 { 47 list [sqlite3_step $::stmt] [db changes] 48} {SQLITE_ROW 1} 49 50do_test 1.4 { 51 list [sqlite3_step $::stmt] [db changes] 52} {SQLITE_DONE 1} 53 54sqlite3_finalize $::stmt 55 56#------------------------------------------------------------------------- 57reset_db 58 59do_execsql_test 2.0 { 60 CREATE TABLE t1(a, b); 61 CREATE TABLE log(t); 62} {} 63 64set ::stmt [sqlite3_prepare_v2 db { 65 INSERT INTO log VALUES(changes() || ' changes') 66} -1 dummy] 67 68do_execsql_test 2.1 { 69 INSERT INTO t1 VALUES (1, 'v1'), (2, 'v2'); 70} {} 71 72do_test 2.2 { 73 list [sqlite3_step $::stmt] [sqlite3_reset $::stmt] 74} {SQLITE_DONE SQLITE_OK} 75 76do_execsql_test 2.3 { 77 CREATE TABLE t3(x); 78} 79 80do_execsql_test 2.2 { 81 INSERT INTO t1 VALUES (3, 'v1'), (4, 'v2'); 82} {} 83 84do_test 2.3 { 85 list [sqlite3_step $::stmt] [sqlite3_reset $::stmt] 86} {SQLITE_DONE SQLITE_OK} 87 88sqlite3_finalize $::stmt 89 90do_execsql_test 2.4 { 91 SELECT * FROM log; 92} {{2 changes} {2 changes}} 93 94finish_test 95 96