1*b1eaa718Sdrh# 2013-07-11 2*b1eaa718Sdrh# 3*b1eaa718Sdrh# The author disclaims copyright to this source code. In place of 4*b1eaa718Sdrh# a legal notice, here is a blessing: 5*b1eaa718Sdrh# 6*b1eaa718Sdrh# May you do good and not evil. 7*b1eaa718Sdrh# May you find forgiveness for yourself and forgive others. 8*b1eaa718Sdrh# May you share freely, never taking more than you give. 9*b1eaa718Sdrh# 10*b1eaa718Sdrh#*********************************************************************** 11*b1eaa718Sdrh# This file implements regression tests for SQLite library. 12*b1eaa718Sdrh# 13*b1eaa718Sdrh# This file tests the "query_only" pragma. 14*b1eaa718Sdrh# 15*b1eaa718Sdrh 16*b1eaa718Sdrhset testdir [file dirname $argv0] 17*b1eaa718Sdrhsource $testdir/tester.tcl 18*b1eaa718Sdrh 19*b1eaa718Sdrhdo_execsql_test queryonly-1.1 { 20*b1eaa718Sdrh CREATE TABLE t1(a); 21*b1eaa718Sdrh INSERT INTO t1 VALUES(123),(456); 22*b1eaa718Sdrh SELECT a FROM t1 ORDER BY a; 23*b1eaa718Sdrh} {123 456} 24*b1eaa718Sdrhdo_execsql_test queryonly-1.2 { 25*b1eaa718Sdrh PRAGMA query_only; 26*b1eaa718Sdrh} {0} 27*b1eaa718Sdrhdo_execsql_test queryonly-1.3 { 28*b1eaa718Sdrh PRAGMA query_only=ON; 29*b1eaa718Sdrh PRAGMA query_only; 30*b1eaa718Sdrh} {1} 31*b1eaa718Sdrhdo_test queryonly-1.4 { 32*b1eaa718Sdrh catchsql {INSERT INTO t1 VALUES(789);} 33*b1eaa718Sdrh} {1 {attempt to write a readonly database}} 34*b1eaa718Sdrhdo_test queryonly-1.5 { 35*b1eaa718Sdrh catchsql {DELETE FROM t1;} 36*b1eaa718Sdrh} {1 {attempt to write a readonly database}} 37*b1eaa718Sdrhdo_test queryonly-1.6 { 38*b1eaa718Sdrh catchsql {UPDATE t1 SET a=a+1;} 39*b1eaa718Sdrh} {1 {attempt to write a readonly database}} 40*b1eaa718Sdrhdo_test queryonly-1.7 { 41*b1eaa718Sdrh catchsql {CREATE TABLE t2(b);} 42*b1eaa718Sdrh} {1 {attempt to write a readonly database}} 43*b1eaa718Sdrhdo_test queryonly-1.8 { 44*b1eaa718Sdrh catchsql {CREATE INDEX t1a ON t1(a);} 45*b1eaa718Sdrh} {1 {attempt to write a readonly database}} 46*b1eaa718Sdrhdo_test queryonly-1.9 { 47*b1eaa718Sdrh catchsql {DROP TABLE t1;} 48*b1eaa718Sdrh} {1 {attempt to write a readonly database}} 49*b1eaa718Sdrhdo_test queryonly-1.10 { 50*b1eaa718Sdrh catchsql {ANALYZE;} 51*b1eaa718Sdrh} {1 {attempt to write a readonly database}} 52*b1eaa718Sdrhdo_execsql_test queryonly-1.11 { 53*b1eaa718Sdrh SELECT a FROM t1 ORDER BY a; 54*b1eaa718Sdrh} {123 456} 55*b1eaa718Sdrh 56*b1eaa718Sdrhdo_execsql_test queryonly-2.2 { 57*b1eaa718Sdrh PRAGMA query_only; 58*b1eaa718Sdrh} {1} 59*b1eaa718Sdrhdo_execsql_test queryonly-2.3 { 60*b1eaa718Sdrh PRAGMA query_only=OFF; 61*b1eaa718Sdrh PRAGMA query_only; 62*b1eaa718Sdrh} {0} 63*b1eaa718Sdrhdo_execsql_test queryonly-2.4 { 64*b1eaa718Sdrh INSERT INTO t1 VALUES(789); 65*b1eaa718Sdrh SELECT a FROM t1 ORDER BY a; 66*b1eaa718Sdrh} {123 456 789} 67*b1eaa718Sdrhdo_execsql_test queryonly-2.5 { 68*b1eaa718Sdrh UPDATE t1 SET a=a+1; 69*b1eaa718Sdrh SELECT a FROM t1 ORDER BY a; 70*b1eaa718Sdrh} {124 457 790} 71*b1eaa718Sdrh 72*b1eaa718Sdrhfinish_test 73