gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/changes.test (about)

     1  # 2021 June 22
     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  # Tests for the sqlite3_changes() and sqlite3_total_changes() APIs.
    13  #
    14  
    15  set testdir [file dirname $argv0]
    16  source $testdir/tester.tcl
    17  set testprefix changes
    18  
    19  # To test that the change-counters do not suffer from 32-bit signed integer 
    20  # rollover, add the following line to the array of test cases below. The
    21  # test will take will over an hour to run.
    22  #
    23  #   7 (1<<31)+10 ""
    24  #
    25  
    26  foreach {tn nRow wor} {
    27    1 50 ""
    28    2 50 "WITHOUT ROWID"
    29  
    30    3 5000 ""
    31    4 5000 "WITHOUT ROWID"
    32  
    33    5 50000 ""
    34    6 50000 "WITHOUT ROWID"
    35  } {
    36    reset_db
    37    set nBig [expr $nRow]
    38    
    39    do_execsql_test 1.$tn.0 "
    40      PRAGMA journal_mode = off;
    41      CREATE TABLE t1(x INTEGER PRIMARY KEY) $wor;
    42    " {off}
    43    
    44    do_execsql_test 1.$tn.1 {
    45      WITH s(i) AS (
    46        SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i < $nBig
    47      )
    48      INSERT INTO t1 SELECT i FROM s;
    49    }
    50    
    51    do_test 1.$tn.2 {
    52      db changes
    53    } [expr $nBig]
    54    
    55    do_test 1.$tn.3 {
    56      db total_changes
    57    } [expr $nBig]
    58    
    59    do_execsql_test 1.$tn.4 {
    60      INSERT INTO t1 VALUES(-1)
    61    }
    62    
    63    do_test 1.$tn.5 {
    64      db changes
    65    } [expr 1]
    66    
    67    do_test 1.$tn.6 {
    68      db total_changes
    69    } [expr {$nBig+1}]
    70    
    71    do_execsql_test 1.$tn.7a {
    72      SELECT count(*) FROM t1
    73    } [expr {$nBig+1}]
    74    
    75    do_execsql_test 1.$tn.7 {
    76      DELETE FROM t1
    77    }
    78    
    79    do_test 1.$tn.8 {
    80      db changes
    81    } [expr {$nBig+1}]
    82    
    83    do_test 1.$tn.9 {
    84      db total_changes
    85    } [expr {2*($nBig+1)}]
    86  }
    87  
    88  finish_test
    89  
    90