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