1*1da57d55SToomas Soome#
27c478bd9Sstevel@tonic-gate# 2002 March 6
37c478bd9Sstevel@tonic-gate#
47c478bd9Sstevel@tonic-gate# The author disclaims copyright to this source code.  In place of
57c478bd9Sstevel@tonic-gate# a legal notice, here is a blessing:
67c478bd9Sstevel@tonic-gate#
77c478bd9Sstevel@tonic-gate#    May you do good and not evil.
87c478bd9Sstevel@tonic-gate#    May you find forgiveness for yourself and forgive others.
97c478bd9Sstevel@tonic-gate#    May you share freely, never taking more than you give.
107c478bd9Sstevel@tonic-gate#
117c478bd9Sstevel@tonic-gate#***********************************************************************
127c478bd9Sstevel@tonic-gate# This file implements regression tests for SQLite library.
137c478bd9Sstevel@tonic-gate#
147c478bd9Sstevel@tonic-gate# This file implements tests for the PRAGMA command.
157c478bd9Sstevel@tonic-gate#
167c478bd9Sstevel@tonic-gate# $Id: pragma.test,v 1.9 2004/04/23 17:04:45 drh Exp $
177c478bd9Sstevel@tonic-gate
187c478bd9Sstevel@tonic-gateset testdir [file dirname $argv0]
197c478bd9Sstevel@tonic-gatesource $testdir/tester.tcl
207c478bd9Sstevel@tonic-gate
217c478bd9Sstevel@tonic-gate# Delete the preexisting database to avoid the special setup
227c478bd9Sstevel@tonic-gate# that the "all.test" script does.
237c478bd9Sstevel@tonic-gate#
247c478bd9Sstevel@tonic-gatedb close
257c478bd9Sstevel@tonic-gatefile delete test.db
267c478bd9Sstevel@tonic-gateset DB [sqlite db test.db]
277c478bd9Sstevel@tonic-gate
287c478bd9Sstevel@tonic-gatedo_test pragma-1.1 {
297c478bd9Sstevel@tonic-gate  execsql {
307c478bd9Sstevel@tonic-gate    PRAGMA cache_size;
317c478bd9Sstevel@tonic-gate    PRAGMA default_cache_size;
327c478bd9Sstevel@tonic-gate    PRAGMA synchronous;
337c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous;
347c478bd9Sstevel@tonic-gate  }
357c478bd9Sstevel@tonic-gate} {2000 2000 1 1}
367c478bd9Sstevel@tonic-gatedo_test pragma-1.2 {
377c478bd9Sstevel@tonic-gate  execsql {
387c478bd9Sstevel@tonic-gate    PRAGMA cache_size=1234;
397c478bd9Sstevel@tonic-gate    PRAGMA cache_size;
407c478bd9Sstevel@tonic-gate    PRAGMA default_cache_size;
417c478bd9Sstevel@tonic-gate    PRAGMA synchronous;
427c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous;
437c478bd9Sstevel@tonic-gate  }
447c478bd9Sstevel@tonic-gate} {1234 2000 1 1}
457c478bd9Sstevel@tonic-gatedo_test pragma-1.3 {
467c478bd9Sstevel@tonic-gate  db close
477c478bd9Sstevel@tonic-gate  sqlite db test.db
487c478bd9Sstevel@tonic-gate  execsql {
497c478bd9Sstevel@tonic-gate    PRAGMA cache_size;
507c478bd9Sstevel@tonic-gate    PRAGMA default_cache_size;
517c478bd9Sstevel@tonic-gate    PRAGMA synchronous;
527c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous;
537c478bd9Sstevel@tonic-gate  }
547c478bd9Sstevel@tonic-gate} {2000 2000 1 1}
557c478bd9Sstevel@tonic-gatedo_test pragma-1.4 {
567c478bd9Sstevel@tonic-gate  execsql {
577c478bd9Sstevel@tonic-gate    PRAGMA synchronous=OFF;
587c478bd9Sstevel@tonic-gate    PRAGMA cache_size;
597c478bd9Sstevel@tonic-gate    PRAGMA default_cache_size;
607c478bd9Sstevel@tonic-gate    PRAGMA synchronous;
617c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous;
627c478bd9Sstevel@tonic-gate  }
637c478bd9Sstevel@tonic-gate} {2000 2000 0 1}
647c478bd9Sstevel@tonic-gatedo_test pragma-1.5 {
657c478bd9Sstevel@tonic-gate  execsql {
667c478bd9Sstevel@tonic-gate    PRAGMA cache_size=4321;
677c478bd9Sstevel@tonic-gate    PRAGMA cache_size;
687c478bd9Sstevel@tonic-gate    PRAGMA default_cache_size;
697c478bd9Sstevel@tonic-gate    PRAGMA synchronous;
707c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous;
717c478bd9Sstevel@tonic-gate  }
727c478bd9Sstevel@tonic-gate} {4321 2000 0 1}
737c478bd9Sstevel@tonic-gatedo_test pragma-1.6 {
747c478bd9Sstevel@tonic-gate  execsql {
757c478bd9Sstevel@tonic-gate    PRAGMA synchronous=ON;
767c478bd9Sstevel@tonic-gate    PRAGMA cache_size;
777c478bd9Sstevel@tonic-gate    PRAGMA default_cache_size;
787c478bd9Sstevel@tonic-gate    PRAGMA synchronous;
797c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous;
807c478bd9Sstevel@tonic-gate  }
817c478bd9Sstevel@tonic-gate} {4321 2000 1 1}
827c478bd9Sstevel@tonic-gatedo_test pragma-1.7 {
837c478bd9Sstevel@tonic-gate  db close
847c478bd9Sstevel@tonic-gate  sqlite db test.db
857c478bd9Sstevel@tonic-gate  execsql {
867c478bd9Sstevel@tonic-gate    PRAGMA cache_size;
877c478bd9Sstevel@tonic-gate    PRAGMA default_cache_size;
887c478bd9Sstevel@tonic-gate    PRAGMA synchronous;
897c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous;
907c478bd9Sstevel@tonic-gate  }
917c478bd9Sstevel@tonic-gate} {2000 2000 1 1}
927c478bd9Sstevel@tonic-gatedo_test pragma-1.8 {
937c478bd9Sstevel@tonic-gate  execsql {
947c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous=OFF;
957c478bd9Sstevel@tonic-gate    PRAGMA cache_size;
967c478bd9Sstevel@tonic-gate    PRAGMA default_cache_size;
977c478bd9Sstevel@tonic-gate    PRAGMA synchronous;
987c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous;
997c478bd9Sstevel@tonic-gate  }
1007c478bd9Sstevel@tonic-gate} {2000 2000 0 0}
1017c478bd9Sstevel@tonic-gatedo_test pragma-1.9 {
1027c478bd9Sstevel@tonic-gate  execsql {
1037c478bd9Sstevel@tonic-gate    PRAGMA default_cache_size=123;
1047c478bd9Sstevel@tonic-gate    PRAGMA cache_size;
1057c478bd9Sstevel@tonic-gate    PRAGMA default_cache_size;
1067c478bd9Sstevel@tonic-gate    PRAGMA synchronous;
1077c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous;
1087c478bd9Sstevel@tonic-gate  }
1097c478bd9Sstevel@tonic-gate} {123 123 0 0}
1107c478bd9Sstevel@tonic-gatedo_test pragma-1.10 {
1117c478bd9Sstevel@tonic-gate  db close
1127c478bd9Sstevel@tonic-gate  set ::DB [sqlite db test.db]
1137c478bd9Sstevel@tonic-gate  execsql {
1147c478bd9Sstevel@tonic-gate    PRAGMA cache_size;
1157c478bd9Sstevel@tonic-gate    PRAGMA default_cache_size;
1167c478bd9Sstevel@tonic-gate    PRAGMA synchronous;
1177c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous;
1187c478bd9Sstevel@tonic-gate  }
1197c478bd9Sstevel@tonic-gate} {123 123 0 0}
1207c478bd9Sstevel@tonic-gatedo_test pragma-1.11 {
1217c478bd9Sstevel@tonic-gate  execsql {
1227c478bd9Sstevel@tonic-gate    PRAGMA synchronous=NORMAL;
1237c478bd9Sstevel@tonic-gate    PRAGMA cache_size;
1247c478bd9Sstevel@tonic-gate    PRAGMA default_cache_size;
1257c478bd9Sstevel@tonic-gate    PRAGMA synchronous;
1267c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous;
1277c478bd9Sstevel@tonic-gate  }
1287c478bd9Sstevel@tonic-gate} {123 123 1 0}
1297c478bd9Sstevel@tonic-gatedo_test pragma-1.12 {
1307c478bd9Sstevel@tonic-gate  execsql {
1317c478bd9Sstevel@tonic-gate    PRAGMA synchronous=FULL;
1327c478bd9Sstevel@tonic-gate    PRAGMA cache_size;
1337c478bd9Sstevel@tonic-gate    PRAGMA default_cache_size;
1347c478bd9Sstevel@tonic-gate    PRAGMA synchronous;
1357c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous;
1367c478bd9Sstevel@tonic-gate  }
1377c478bd9Sstevel@tonic-gate} {123 123 2 0}
1387c478bd9Sstevel@tonic-gatedo_test pragma-1.13 {
1397c478bd9Sstevel@tonic-gate  db close
1407c478bd9Sstevel@tonic-gate  set ::DB [sqlite db test.db]
1417c478bd9Sstevel@tonic-gate  execsql {
1427c478bd9Sstevel@tonic-gate    PRAGMA cache_size;
1437c478bd9Sstevel@tonic-gate    PRAGMA default_cache_size;
1447c478bd9Sstevel@tonic-gate    PRAGMA synchronous;
1457c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous;
1467c478bd9Sstevel@tonic-gate  }
1477c478bd9Sstevel@tonic-gate} {123 123 0 0}
1487c478bd9Sstevel@tonic-gatedo_test pragma-1.14 {
1497c478bd9Sstevel@tonic-gate  execsql {
1507c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous=FULL;
1517c478bd9Sstevel@tonic-gate    PRAGMA cache_size;
1527c478bd9Sstevel@tonic-gate    PRAGMA default_cache_size;
1537c478bd9Sstevel@tonic-gate    PRAGMA synchronous;
1547c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous;
1557c478bd9Sstevel@tonic-gate  }
1567c478bd9Sstevel@tonic-gate} {123 123 2 2}
1577c478bd9Sstevel@tonic-gatedo_test pragma-1.15 {
1587c478bd9Sstevel@tonic-gate  db close
1597c478bd9Sstevel@tonic-gate  set ::DB [sqlite db test.db]
1607c478bd9Sstevel@tonic-gate  execsql {
1617c478bd9Sstevel@tonic-gate    PRAGMA cache_size;
1627c478bd9Sstevel@tonic-gate    PRAGMA default_cache_size;
1637c478bd9Sstevel@tonic-gate    PRAGMA synchronous;
1647c478bd9Sstevel@tonic-gate    PRAGMA default_synchronous;
1657c478bd9Sstevel@tonic-gate  }
1667c478bd9Sstevel@tonic-gate} {123 123 2 2}
1677c478bd9Sstevel@tonic-gate
1687c478bd9Sstevel@tonic-gatedo_test pragma-2.1 {
1697c478bd9Sstevel@tonic-gate  execsql {
1707c478bd9Sstevel@tonic-gate    PRAGMA show_datatypes=on;
1717c478bd9Sstevel@tonic-gate    PRAGMA empty_result_callbacks=off;
1727c478bd9Sstevel@tonic-gate  }
1737c478bd9Sstevel@tonic-gate  sqlite_datatypes $::DB {SELECT * FROM sqlite_master}
1747c478bd9Sstevel@tonic-gate} {}
1757c478bd9Sstevel@tonic-gatedo_test pragma-2.2 {
1767c478bd9Sstevel@tonic-gate  execsql {
1777c478bd9Sstevel@tonic-gate    PRAGMA empty_result_callbacks=on;
1787c478bd9Sstevel@tonic-gate  }
1797c478bd9Sstevel@tonic-gate  sqlite_datatypes $::DB {SELECT * FROM sqlite_master}
1807c478bd9Sstevel@tonic-gate} {text text text integer text}
1817c478bd9Sstevel@tonic-gate
1827c478bd9Sstevel@tonic-gate# Make sure we can read the schema when empty_result_callbacks are
1837c478bd9Sstevel@tonic-gate# turned on. Ticket #406
1847c478bd9Sstevel@tonic-gatedo_test pragma-2.2.1 {
1857c478bd9Sstevel@tonic-gate  execsql {
1867c478bd9Sstevel@tonic-gate    BEGIN;
1877c478bd9Sstevel@tonic-gate    CREATE TABLE tabx(a,b,c,d);
1887c478bd9Sstevel@tonic-gate    ROLLBACK;
1897c478bd9Sstevel@tonic-gate    SELECT count(*) FROM sqlite_master;
1907c478bd9Sstevel@tonic-gate  }
1917c478bd9Sstevel@tonic-gate} {0}
1927c478bd9Sstevel@tonic-gate
1937c478bd9Sstevel@tonic-gatedo_test pragma-2.3 {
1947c478bd9Sstevel@tonic-gate  execsql {
1957c478bd9Sstevel@tonic-gate    CREATE TABLE t1(
1967c478bd9Sstevel@tonic-gate       a INTEGER,
1977c478bd9Sstevel@tonic-gate       b TEXT,
1987c478bd9Sstevel@tonic-gate       c WHATEVER,
1997c478bd9Sstevel@tonic-gate       d CLOB,
2007c478bd9Sstevel@tonic-gate       e BLOB,
2017c478bd9Sstevel@tonic-gate       f VARCHAR(123),
2027c478bd9Sstevel@tonic-gate       g nVaRcHaR(432)
2037c478bd9Sstevel@tonic-gate    );
2047c478bd9Sstevel@tonic-gate  }
2057c478bd9Sstevel@tonic-gate  sqlite_datatypes $::DB {SELECT * FROM t1}
2067c478bd9Sstevel@tonic-gate} {INTEGER TEXT WHATEVER CLOB BLOB VARCHAR(123) nVaRcHaR(432)}
2077c478bd9Sstevel@tonic-gatedo_test pragma-2.4 {
2087c478bd9Sstevel@tonic-gate  sqlite_datatypes $::DB {
2097c478bd9Sstevel@tonic-gate     SELECT 1, 'hello', NULL
2107c478bd9Sstevel@tonic-gate  }
2117c478bd9Sstevel@tonic-gate} {NUMERIC TEXT TEXT}
2127c478bd9Sstevel@tonic-gatedo_test pragma-2.5 {
2137c478bd9Sstevel@tonic-gate  sqlite_datatypes $::DB {
2147c478bd9Sstevel@tonic-gate     SELECT 1+2 AS X, 'hello' || 5 AS Y, NULL AS Z
2157c478bd9Sstevel@tonic-gate  }
2167c478bd9Sstevel@tonic-gate} {NUMERIC TEXT TEXT}
2177c478bd9Sstevel@tonic-gatedo_test pragma-2.6 {
2187c478bd9Sstevel@tonic-gate  execsql {
2197c478bd9Sstevel@tonic-gate    CREATE VIEW v1 AS SELECT a+b, b||c, * FROM t1;
2207c478bd9Sstevel@tonic-gate  }
2217c478bd9Sstevel@tonic-gate  sqlite_datatypes $::DB {SELECT * FROM v1}
2227c478bd9Sstevel@tonic-gate} {NUMERIC TEXT INTEGER TEXT WHATEVER CLOB BLOB VARCHAR(123) nVaRcHaR(432)}
2237c478bd9Sstevel@tonic-gatedo_test pragma-2.7 {
2247c478bd9Sstevel@tonic-gate  sqlite_datatypes $::DB {
2257c478bd9Sstevel@tonic-gate    SELECT d,e FROM t1 UNION SELECT a,c FROM t1
2267c478bd9Sstevel@tonic-gate  }
2277c478bd9Sstevel@tonic-gate} {INTEGER WHATEVER}
2287c478bd9Sstevel@tonic-gatedo_test pragma-2.8 {
2297c478bd9Sstevel@tonic-gate  sqlite_datatypes $::DB {
2307c478bd9Sstevel@tonic-gate    SELECT d,e FROM t1 EXCEPT SELECT c,e FROM t1
2317c478bd9Sstevel@tonic-gate  }
2327c478bd9Sstevel@tonic-gate} {WHATEVER BLOB}
2337c478bd9Sstevel@tonic-gatedo_test pragma-2.9 {
2347c478bd9Sstevel@tonic-gate  sqlite_datatypes $::DB {
2357c478bd9Sstevel@tonic-gate    SELECT d,e FROM t1 INTERSECT SELECT c,e FROM t1
2367c478bd9Sstevel@tonic-gate  }
2377c478bd9Sstevel@tonic-gate} {WHATEVER BLOB}
2387c478bd9Sstevel@tonic-gatedo_test pragma-2.10 {
2397c478bd9Sstevel@tonic-gate  sqlite_datatypes $::DB {
2407c478bd9Sstevel@tonic-gate    SELECT d,e FROM t1 INTERSECT SELECT c,e FROM v1
2417c478bd9Sstevel@tonic-gate  }
2427c478bd9Sstevel@tonic-gate} {WHATEVER BLOB}
2437c478bd9Sstevel@tonic-gate
2447c478bd9Sstevel@tonic-gate# Construct a corrupted index and make sure the integrity_check
2457c478bd9Sstevel@tonic-gate# pragma finds it.
2467c478bd9Sstevel@tonic-gate#
2477c478bd9Sstevel@tonic-gateif {![sqlite -has-codec]} {
2487c478bd9Sstevel@tonic-gatedo_test pragma-3.1 {
2497c478bd9Sstevel@tonic-gate  execsql {
2507c478bd9Sstevel@tonic-gate    BEGIN;
2517c478bd9Sstevel@tonic-gate    CREATE TABLE t2(a,b,c);
2527c478bd9Sstevel@tonic-gate    CREATE INDEX i2 ON t2(a);
2537c478bd9Sstevel@tonic-gate    INSERT INTO t2 VALUES(11,2,3);
2547c478bd9Sstevel@tonic-gate    INSERT INTO t2 VALUES(22,3,4);
2557c478bd9Sstevel@tonic-gate    COMMIT;
2567c478bd9Sstevel@tonic-gate    SELECT rowid, * from t2;
2577c478bd9Sstevel@tonic-gate  }
2587c478bd9Sstevel@tonic-gate} {1 11 2 3 2 22 3 4}
2597c478bd9Sstevel@tonic-gatedo_test pragma-3.2 {
2607c478bd9Sstevel@tonic-gate  set rootpage [execsql {SELECT rootpage FROM sqlite_master WHERE name='i2'}]
2617c478bd9Sstevel@tonic-gate  set db [btree_open test.db]
2627c478bd9Sstevel@tonic-gate  btree_begin_transaction $db
2637c478bd9Sstevel@tonic-gate  set c [btree_cursor $db $rootpage 1]
2647c478bd9Sstevel@tonic-gate  btree_first $c
2657c478bd9Sstevel@tonic-gate  btree_delete $c
2667c478bd9Sstevel@tonic-gate  btree_commit $db
2677c478bd9Sstevel@tonic-gate  btree_close $db
2687c478bd9Sstevel@tonic-gate  execsql {PRAGMA integrity_check}
2697c478bd9Sstevel@tonic-gate} {{rowid 1 missing from index i2} {wrong # of entries in index i2}}
2707c478bd9Sstevel@tonic-gate}; # endif has-codec
2717c478bd9Sstevel@tonic-gate
2727c478bd9Sstevel@tonic-gate# Test the temp_store and default_temp_store pragmas
2737c478bd9Sstevel@tonic-gate#
2747c478bd9Sstevel@tonic-gatedo_test pragma-4.2 {
2757c478bd9Sstevel@tonic-gate  execsql {
2767c478bd9Sstevel@tonic-gate    PRAGMA temp_store='default';
2777c478bd9Sstevel@tonic-gate    PRAGMA temp_store;
2787c478bd9Sstevel@tonic-gate  }
2797c478bd9Sstevel@tonic-gate} {0}
2807c478bd9Sstevel@tonic-gatedo_test pragma-4.3 {
2817c478bd9Sstevel@tonic-gate  execsql {
2827c478bd9Sstevel@tonic-gate    PRAGMA temp_store='file';
2837c478bd9Sstevel@tonic-gate    PRAGMA temp_store;
2847c478bd9Sstevel@tonic-gate  }
2857c478bd9Sstevel@tonic-gate} {1}
2867c478bd9Sstevel@tonic-gatedo_test pragma-4.4 {
2877c478bd9Sstevel@tonic-gate  execsql {
2887c478bd9Sstevel@tonic-gate    PRAGMA temp_store='memory';
2897c478bd9Sstevel@tonic-gate    PRAGMA temp_store;
2907c478bd9Sstevel@tonic-gate  }
2917c478bd9Sstevel@tonic-gate} {2}
2927c478bd9Sstevel@tonic-gatedo_test pragma-4.5 {
2937c478bd9Sstevel@tonic-gate  execsql {
2947c478bd9Sstevel@tonic-gate    PRAGMA default_temp_store='default';
2957c478bd9Sstevel@tonic-gate    PRAGMA default_temp_store;
2967c478bd9Sstevel@tonic-gate  }
2977c478bd9Sstevel@tonic-gate} {0}
2987c478bd9Sstevel@tonic-gatedo_test pragma-4.6 {
2997c478bd9Sstevel@tonic-gate  execsql {
3007c478bd9Sstevel@tonic-gate    PRAGMA temp_store;
3017c478bd9Sstevel@tonic-gate  }
3027c478bd9Sstevel@tonic-gate} {2}
3037c478bd9Sstevel@tonic-gatedo_test pragma-4.7 {
3047c478bd9Sstevel@tonic-gate  db close
3057c478bd9Sstevel@tonic-gate  sqlite db test.db
3067c478bd9Sstevel@tonic-gate  execsql {
3077c478bd9Sstevel@tonic-gate    PRAGMA temp_store;
3087c478bd9Sstevel@tonic-gate  }
3097c478bd9Sstevel@tonic-gate} {0}
3107c478bd9Sstevel@tonic-gatedo_test pragma-4.8 {
3117c478bd9Sstevel@tonic-gate  execsql {
3127c478bd9Sstevel@tonic-gate    PRAGMA default_temp_store;
3137c478bd9Sstevel@tonic-gate  }
3147c478bd9Sstevel@tonic-gate} {0}
3157c478bd9Sstevel@tonic-gatedo_test pragma-4.9 {
3167c478bd9Sstevel@tonic-gate  execsql {
3177c478bd9Sstevel@tonic-gate    PRAGMA default_temp_store='file';
3187c478bd9Sstevel@tonic-gate    PRAGMA default_temp_store;
3197c478bd9Sstevel@tonic-gate  }
3207c478bd9Sstevel@tonic-gate} {1}
3217c478bd9Sstevel@tonic-gatedo_test pragma-4.10 {
3227c478bd9Sstevel@tonic-gate  execsql {
3237c478bd9Sstevel@tonic-gate    PRAGMA temp_store;
3247c478bd9Sstevel@tonic-gate  }
3257c478bd9Sstevel@tonic-gate} {0}
3267c478bd9Sstevel@tonic-gatedo_test pragma-4.11 {
3277c478bd9Sstevel@tonic-gate  db close
3287c478bd9Sstevel@tonic-gate  sqlite db test.db
3297c478bd9Sstevel@tonic-gate  execsql {
3307c478bd9Sstevel@tonic-gate    PRAGMA temp_store;
3317c478bd9Sstevel@tonic-gate  }
3327c478bd9Sstevel@tonic-gate} {1}
3337c478bd9Sstevel@tonic-gatedo_test pragma-4.12 {
3347c478bd9Sstevel@tonic-gate  execsql {
3357c478bd9Sstevel@tonic-gate    PRAGMA default_temp_store;
3367c478bd9Sstevel@tonic-gate  }
3377c478bd9Sstevel@tonic-gate} {1}
3387c478bd9Sstevel@tonic-gatedo_test pragma-4.13 {
3397c478bd9Sstevel@tonic-gate  execsql {
3407c478bd9Sstevel@tonic-gate    PRAGMA default_temp_store='memory';
3417c478bd9Sstevel@tonic-gate    PRAGMA default_temp_store;
3427c478bd9Sstevel@tonic-gate  }
3437c478bd9Sstevel@tonic-gate} {2}
3447c478bd9Sstevel@tonic-gatedo_test pragma-4.14 {
3457c478bd9Sstevel@tonic-gate  execsql {
3467c478bd9Sstevel@tonic-gate    PRAGMA temp_store;
3477c478bd9Sstevel@tonic-gate  }
3487c478bd9Sstevel@tonic-gate} {1}
3497c478bd9Sstevel@tonic-gatedo_test pragma-4.15 {
3507c478bd9Sstevel@tonic-gate  db close
3517c478bd9Sstevel@tonic-gate  sqlite db test.db
3527c478bd9Sstevel@tonic-gate  execsql {
3537c478bd9Sstevel@tonic-gate    PRAGMA temp_store;
3547c478bd9Sstevel@tonic-gate  }
3557c478bd9Sstevel@tonic-gate} {2}
3567c478bd9Sstevel@tonic-gatedo_test pragma-4.16 {
3577c478bd9Sstevel@tonic-gate  execsql {
3587c478bd9Sstevel@tonic-gate    PRAGMA default_temp_store;
3597c478bd9Sstevel@tonic-gate  }
3607c478bd9Sstevel@tonic-gate} {2}
3617c478bd9Sstevel@tonic-gatedo_test pragma-4.17 {
3627c478bd9Sstevel@tonic-gate  execsql {
3637c478bd9Sstevel@tonic-gate    PRAGMA temp_store='file';
3647c478bd9Sstevel@tonic-gate    PRAGMA temp_store
3657c478bd9Sstevel@tonic-gate  }
3667c478bd9Sstevel@tonic-gate} {1}
3677c478bd9Sstevel@tonic-gatedo_test pragma-4.18 {
3687c478bd9Sstevel@tonic-gate  execsql {
3697c478bd9Sstevel@tonic-gate    PRAGMA default_temp_store
3707c478bd9Sstevel@tonic-gate  }
3717c478bd9Sstevel@tonic-gate} {2}
3727c478bd9Sstevel@tonic-gatedo_test pragma-4.19 {
3737c478bd9Sstevel@tonic-gate  db close
3747c478bd9Sstevel@tonic-gate  sqlite db test.db
3757c478bd9Sstevel@tonic-gate  execsql {
3767c478bd9Sstevel@tonic-gate    PRAGMA temp_store
3777c478bd9Sstevel@tonic-gate  }
3787c478bd9Sstevel@tonic-gate} {2}
3797c478bd9Sstevel@tonic-gate
3807c478bd9Sstevel@tonic-gate# Changing the TEMP_STORE deletes any existing temporary tables
3817c478bd9Sstevel@tonic-gate#
3827c478bd9Sstevel@tonic-gatedo_test pragma-4.20 {
3837c478bd9Sstevel@tonic-gate  execsql {SELECT name FROM sqlite_temp_master}
3847c478bd9Sstevel@tonic-gate} {}
3857c478bd9Sstevel@tonic-gatedo_test pragma-4.21 {
3867c478bd9Sstevel@tonic-gate  execsql {
3877c478bd9Sstevel@tonic-gate    CREATE TEMP TABLE test1(a,b,c);
3887c478bd9Sstevel@tonic-gate    SELECT name FROM sqlite_temp_master;
3897c478bd9Sstevel@tonic-gate  }
3907c478bd9Sstevel@tonic-gate} {test1}
3917c478bd9Sstevel@tonic-gatedo_test pragma-4.22 {
3927c478bd9Sstevel@tonic-gate  execsql {
3937c478bd9Sstevel@tonic-gate    PRAGMA temp_store='file';
3947c478bd9Sstevel@tonic-gate    SELECT name FROM sqlite_temp_master;
3957c478bd9Sstevel@tonic-gate  }
3967c478bd9Sstevel@tonic-gate} {}
3977c478bd9Sstevel@tonic-gatedo_test pragma-4.23 {
3987c478bd9Sstevel@tonic-gate  execsql {
3997c478bd9Sstevel@tonic-gate    CREATE TEMP TABLE test1(a,b,c);
4007c478bd9Sstevel@tonic-gate    SELECT name FROM sqlite_temp_master;
4017c478bd9Sstevel@tonic-gate  }
4027c478bd9Sstevel@tonic-gate} {test1}
4037c478bd9Sstevel@tonic-gatedo_test pragma-4.24 {
4047c478bd9Sstevel@tonic-gate  execsql {
4057c478bd9Sstevel@tonic-gate    PRAGMA temp_store='memory';
4067c478bd9Sstevel@tonic-gate    SELECT name FROM sqlite_temp_master;
4077c478bd9Sstevel@tonic-gate  }
4087c478bd9Sstevel@tonic-gate} {}
4097c478bd9Sstevel@tonic-gatedo_test pragma-4.25 {
4107c478bd9Sstevel@tonic-gate  catchsql {
4117c478bd9Sstevel@tonic-gate    BEGIN;
4127c478bd9Sstevel@tonic-gate    PRAGMA temp_store='default';
4137c478bd9Sstevel@tonic-gate    COMMIT;
4147c478bd9Sstevel@tonic-gate  }
4157c478bd9Sstevel@tonic-gate} {1 {temporary storage cannot be changed from within a transaction}}
4167c478bd9Sstevel@tonic-gatecatchsql {COMMIT}
4177c478bd9Sstevel@tonic-gate
4187c478bd9Sstevel@tonic-gatefinish_test
419