AryaWu/sqlite
0
1# 2018-07-182#3# The author disclaims copyright to this source code. In place of4# 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# Test case for SQLITE_FCNTL_DATA_VERSION13#14 15set testdir [file dirname $argv0]16source $testdir/tester.tcl17 18# Construct a database and get its initial data version19sqlite3 db test.db20do_test dataversion1-100 {21 db eval {22 CREATE TABLE t1(x);23 INSERT INTO t1(x) VALUES(99);24 SELECT * FROM t1;25 }26} {99}27set dv1 [file_control_data_version db main]28 29# The data version does not change by ATTACH or by changes to30# other schemas within the same connection.31#32do_test dataversion1-101 {33 db eval {34 ATTACH ':memory:' AS aux1;35 CREATE TABLE aux1.t2(y);36 CREATE TEMP TABLE t3(z);37 }38 file_control_data_version db main39} $dv140 41# The data version does change when SQL modifies the table42do_test dataversion1-110 {43 db eval {44 UPDATE t1 SET x=x+1;45 }46 set dv2 [file_control_data_version db]47 expr {$::dv1==$dv2}48} {0}49 50# But the data version is constant if there are changes to other51# schemas52set dv1 [file_control_data_version db main]53do_test dataversion1-120 {54 db eval {55 UPDATE t2 SET y=y+1;56 }57 file_control_data_version db58} $dv159 60# Changes to the database via another connection are not detected61# until there is a read transaction.62#63sqlite3 db2 test.db64do_test dataversion1-130 {65 db2 eval {66 SELECT * FROM t167 }68} {100}69do_test dataversion1-131 {70 file_control_data_version db71} $dv172do_test dataversion1-132 {73 db2 eval {74 UPDATE t1 SET x=x+1;75 }76 set dv2 [file_control_data_version db]77 expr {$::dv1==$dv2}78} {1}79do_test dataversion1-133 {80 db eval {SELECT * FROM t1}81 set dv2 [file_control_data_version db]82 expr {$::dv1==$dv2}83} {0}84 85 86 87finish_test88 