xref: /sqlite-3.40.0/test/queryonly.test (revision b1eaa718)
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