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