xref: /sqlite-3.40.0/test/changes2.test (revision 0a841a2b)
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