| Index: third_party/sqlite/src/test/pragma.test
|
| diff --git a/third_party/sqlite/src/test/pragma.test b/third_party/sqlite/src/test/pragma.test
|
| index 4b4418299cb4c6874912032fe290d8c490c38908..539d867366bbae1bbfa0ac1e0ed0e329947f733d 100644
|
| --- a/third_party/sqlite/src/test/pragma.test
|
| +++ b/third_party/sqlite/src/test/pragma.test
|
| @@ -16,6 +16,7 @@
|
|
|
| set testdir [file dirname $argv0]
|
| source $testdir/tester.tcl
|
| +set testprefix pragma
|
|
|
| # Do not use a codec for tests in this file, as the database file is
|
| # manipulated directly using tcl scripts (using the [hexio_write] command).
|
| @@ -40,6 +41,9 @@ do_not_use_codec
|
| # pragma-15.*: Test that the value set using the cache_size pragma is not
|
| # reset when the schema is reloaded.
|
| # pragma-16.*: Test proxy locking
|
| +# pragma-20.*: Test data_store_directory.
|
| +# pragma-22.*: Test that "PRAGMA [db].integrity_check" respects the "db"
|
| +# directive - if it is present.
|
| #
|
|
|
| ifcapable !pragma {
|
| @@ -51,8 +55,8 @@ ifcapable !pragma {
|
| # that the "all.test" script does.
|
| #
|
| db close
|
| -file delete test.db test.db-journal
|
| -file delete test3.db test3.db-journal
|
| +delete_file test.db test.db-journal
|
| +delete_file test3.db test3.db-journal
|
| sqlite3 db test.db; set DB [sqlite3_connection_pointer db]
|
|
|
|
|
| @@ -99,7 +103,7 @@ do_test pragma-1.5 {
|
| PRAGMA default_cache_size;
|
| PRAGMA synchronous;
|
| }
|
| -} [list 4321 $DFLT_CACHE_SZ 0]
|
| +} [list -4321 $DFLT_CACHE_SZ 0]
|
| do_test pragma-1.6 {
|
| execsql {
|
| PRAGMA synchronous=ON;
|
| @@ -107,7 +111,7 @@ do_test pragma-1.6 {
|
| PRAGMA default_cache_size;
|
| PRAGMA synchronous;
|
| }
|
| -} [list 4321 $DFLT_CACHE_SZ 1]
|
| +} [list -4321 $DFLT_CACHE_SZ 1]
|
| do_test pragma-1.7 {
|
| db close
|
| sqlite3 db test.db
|
| @@ -221,8 +225,8 @@ do_test pragma-1.18 {
|
| # Test modifying the safety_level of an attached database.
|
| ifcapable pager_pragmas&&attach {
|
| do_test pragma-2.1 {
|
| - file delete -force test2.db
|
| - file delete -force test2.db-journal
|
| + forcedelete test2.db
|
| + forcedelete test2.db-journal
|
| execsql {
|
| ATTACH 'test2.db' AS aux;
|
| }
|
| @@ -255,7 +259,7 @@ ifcapable pager_pragmas&&attach {
|
| #
|
| do_test pragma-3.1 {
|
| db close
|
| - file delete -force test.db test.db-journal
|
| + forcedelete test.db test.db-journal
|
| sqlite3 db test.db
|
| execsql {
|
| PRAGMA auto_vacuum=OFF;
|
| @@ -281,38 +285,38 @@ ifcapable attach {
|
| db close
|
| sqlite3 db test.db
|
| execsql {PRAGMA integrity_check}
|
| - } {{rowid 1 missing from index i2} {rowid 2 missing from index i2} {wrong # of entries in index i2}}
|
| + } {{row 1 missing from index i2} {row 2 missing from index i2} {wrong # of entries in index i2}}
|
| do_test pragma-3.3 {
|
| execsql {PRAGMA integrity_check=1}
|
| - } {{rowid 1 missing from index i2}}
|
| + } {{row 1 missing from index i2}}
|
| do_test pragma-3.4 {
|
| execsql {
|
| ATTACH DATABASE 'test.db' AS t2;
|
| PRAGMA integrity_check
|
| }
|
| - } {{rowid 1 missing from index i2} {rowid 2 missing from index i2} {wrong # of entries in index i2} {rowid 1 missing from index i2} {rowid 2 missing from index i2} {wrong # of entries in index i2}}
|
| + } {{row 1 missing from index i2} {row 2 missing from index i2} {wrong # of entries in index i2} {row 1 missing from index i2} {row 2 missing from index i2} {wrong # of entries in index i2}}
|
| do_test pragma-3.5 {
|
| execsql {
|
| PRAGMA integrity_check=4
|
| }
|
| - } {{rowid 1 missing from index i2} {rowid 2 missing from index i2} {wrong # of entries in index i2} {rowid 1 missing from index i2}}
|
| + } {{row 1 missing from index i2} {row 2 missing from index i2} {wrong # of entries in index i2} {row 1 missing from index i2}}
|
| do_test pragma-3.6 {
|
| execsql {
|
| PRAGMA integrity_check=xyz
|
| }
|
| - } {{rowid 1 missing from index i2} {rowid 2 missing from index i2} {wrong # of entries in index i2} {rowid 1 missing from index i2} {rowid 2 missing from index i2} {wrong # of entries in index i2}}
|
| + } {{row 1 missing from index i2} {row 2 missing from index i2} {wrong # of entries in index i2} {row 1 missing from index i2} {row 2 missing from index i2} {wrong # of entries in index i2}}
|
| do_test pragma-3.7 {
|
| execsql {
|
| PRAGMA integrity_check=0
|
| }
|
| - } {{rowid 1 missing from index i2} {rowid 2 missing from index i2} {wrong # of entries in index i2} {rowid 1 missing from index i2} {rowid 2 missing from index i2} {wrong # of entries in index i2}}
|
| + } {{row 1 missing from index i2} {row 2 missing from index i2} {wrong # of entries in index i2} {row 1 missing from index i2} {row 2 missing from index i2} {wrong # of entries in index i2}}
|
|
|
| # Add additional corruption by appending unused pages to the end of
|
| # the database file testerr.db
|
| #
|
| do_test pragma-3.8 {
|
| execsql {DETACH t2}
|
| - file delete -force testerr.db testerr.db-journal
|
| + forcedelete testerr.db testerr.db-journal
|
| set out [open testerr.db w]
|
| fconfigure $out -translation binary
|
| set in [open test.db r]
|
| @@ -329,6 +333,9 @@ ifcapable attach {
|
| do_test pragma-3.8.1 {
|
| execsql {PRAGMA quick_check}
|
| } {ok}
|
| + do_test pragma-3.8.2 {
|
| + execsql {PRAGMA QUICK_CHECK}
|
| + } {ok}
|
| do_test pragma-3.9 {
|
| execsql {
|
| ATTACH 'testerr.db' AS t2;
|
| @@ -337,7 +344,7 @@ ifcapable attach {
|
| } {{*** in database t2 ***
|
| Page 4 is never used
|
| Page 5 is never used
|
| -Page 6 is never used} {rowid 1 missing from index i2} {rowid 2 missing from index i2} {wrong # of entries in index i2}}
|
| +Page 6 is never used} {row 1 missing from index i2} {row 2 missing from index i2} {wrong # of entries in index i2}}
|
| do_test pragma-3.10 {
|
| execsql {
|
| PRAGMA integrity_check=1
|
| @@ -351,7 +358,7 @@ Page 4 is never used}}
|
| } {{*** in database t2 ***
|
| Page 4 is never used
|
| Page 5 is never used
|
| -Page 6 is never used} {rowid 1 missing from index i2} {rowid 2 missing from index i2}}
|
| +Page 6 is never used} {row 1 missing from index i2} {row 2 missing from index i2}}
|
| do_test pragma-3.12 {
|
| execsql {
|
| PRAGMA integrity_check=4
|
| @@ -359,7 +366,7 @@ Page 6 is never used} {rowid 1 missing from index i2} {rowid 2 missing from inde
|
| } {{*** in database t2 ***
|
| Page 4 is never used
|
| Page 5 is never used
|
| -Page 6 is never used} {rowid 1 missing from index i2}}
|
| +Page 6 is never used} {row 1 missing from index i2}}
|
| do_test pragma-3.13 {
|
| execsql {
|
| PRAGMA integrity_check=3
|
| @@ -383,10 +390,10 @@ Page 5 is never used}}
|
| } {{*** in database t2 ***
|
| Page 4 is never used
|
| Page 5 is never used
|
| -Page 6 is never used} {rowid 1 missing from index i2} {rowid 2 missing from index i2} {wrong # of entries in index i2} {*** in database t3 ***
|
| +Page 6 is never used} {row 1 missing from index i2} {row 2 missing from index i2} {wrong # of entries in index i2} {*** in database t3 ***
|
| Page 4 is never used
|
| Page 5 is never used
|
| -Page 6 is never used} {rowid 1 missing from index i2} {rowid 2 missing from index i2} {wrong # of entries in index i2}}
|
| +Page 6 is never used} {row 1 missing from index i2} {row 2 missing from index i2} {wrong # of entries in index i2}}
|
| do_test pragma-3.16 {
|
| execsql {
|
| PRAGMA integrity_check(10)
|
| @@ -394,10 +401,10 @@ Page 6 is never used} {rowid 1 missing from index i2} {rowid 2 missing from inde
|
| } {{*** in database t2 ***
|
| Page 4 is never used
|
| Page 5 is never used
|
| -Page 6 is never used} {rowid 1 missing from index i2} {rowid 2 missing from index i2} {wrong # of entries in index i2} {*** in database t3 ***
|
| +Page 6 is never used} {row 1 missing from index i2} {row 2 missing from index i2} {wrong # of entries in index i2} {*** in database t3 ***
|
| Page 4 is never used
|
| Page 5 is never used
|
| -Page 6 is never used} {rowid 1 missing from index i2}}
|
| +Page 6 is never used} {row 1 missing from index i2}}
|
| do_test pragma-3.17 {
|
| execsql {
|
| PRAGMA integrity_check=8
|
| @@ -405,7 +412,7 @@ Page 6 is never used} {rowid 1 missing from index i2}}
|
| } {{*** in database t2 ***
|
| Page 4 is never used
|
| Page 5 is never used
|
| -Page 6 is never used} {rowid 1 missing from index i2} {rowid 2 missing from index i2} {wrong # of entries in index i2} {*** in database t3 ***
|
| +Page 6 is never used} {row 1 missing from index i2} {row 2 missing from index i2} {wrong # of entries in index i2} {*** in database t3 ***
|
| Page 4 is never used
|
| Page 5 is never used}}
|
| do_test pragma-3.18 {
|
| @@ -415,16 +422,41 @@ Page 5 is never used}}
|
| } {{*** in database t2 ***
|
| Page 4 is never used
|
| Page 5 is never used
|
| -Page 6 is never used} {rowid 1 missing from index i2}}
|
| +Page 6 is never used} {row 1 missing from index i2}}
|
| }
|
| do_test pragma-3.19 {
|
| catch {db close}
|
| - file delete -force test.db test.db-journal
|
| + forcedelete test.db test.db-journal
|
| sqlite3 db test.db
|
| db eval {PRAGMA integrity_check}
|
| } {ok}
|
| }
|
| -#exit
|
| +
|
| +# Verify that PRAGMA integrity_check catches UNIQUE and NOT NULL
|
| +# constraint violations.
|
| +#
|
| +do_execsql_test pragma-3.20 {
|
| + CREATE TABLE t1(a,b);
|
| + CREATE INDEX t1a ON t1(a);
|
| + INSERT INTO t1 VALUES(1,1),(2,2),(3,3),(2,4),(NULL,5),(NULL,6);
|
| + PRAGMA writable_schema=ON;
|
| + UPDATE sqlite_master SET sql='CREATE UNIQUE INDEX t1a ON t1(a)'
|
| + WHERE name='t1a';
|
| + UPDATE sqlite_master SET sql='CREATE TABLE t1(a NOT NULL,b)'
|
| + WHERE name='t1';
|
| + PRAGMA writable_schema=OFF;
|
| + ALTER TABLE t1 RENAME TO t1x;
|
| + PRAGMA integrity_check;
|
| +} {{non-unique entry in index t1a} {NULL value in t1x.a} {non-unique entry in index t1a} {NULL value in t1x.a}}
|
| +do_execsql_test pragma-3.21 {
|
| + PRAGMA integrity_check(3);
|
| +} {{non-unique entry in index t1a} {NULL value in t1x.a} {non-unique entry in index t1a}}
|
| +do_execsql_test pragma-3.22 {
|
| + PRAGMA integrity_check(2);
|
| +} {{non-unique entry in index t1a} {NULL value in t1x.a}}
|
| +do_execsql_test pragma-3.21 {
|
| + PRAGMA integrity_check(1);
|
| +} {{non-unique entry in index t1a}}
|
|
|
| # Test modifying the cache_size of an attached database.
|
| ifcapable pager_pragmas&&attach {
|
| @@ -527,12 +559,20 @@ do_test pragma-6.2.2 {
|
| b DEFAULT (5+3),
|
| c TEXT,
|
| d INTEGER DEFAULT NULL,
|
| - e TEXT DEFAULT ''
|
| + e TEXT DEFAULT '',
|
| + UNIQUE(b,c,d),
|
| + PRIMARY KEY(e,b,c)
|
| );
|
| PRAGMA table_info(t5);
|
| }
|
| -} {0 a TEXT 0 CURRENT_TIMESTAMP 0 1 b {} 0 5+3 0 2 c TEXT 0 <<NULL>> 0 3 d INTEGER 0 NULL 0 4 e TEXT 0 '' 0}
|
| +} {0 a TEXT 0 CURRENT_TIMESTAMP 0 1 b {} 0 5+3 2 2 c TEXT 0 <<NULL>> 3 3 d INTEGER 0 NULL 0 4 e TEXT 0 '' 1}
|
| db nullvalue {}
|
| +do_test pragma-6.2.3 {
|
| + execsql {
|
| + CREATE TABLE t2_3(a,b INTEGER PRIMARY KEY,c);
|
| + pragma table_info(t2_3)
|
| + }
|
| +} {0 a {} 0 {} 0 1 b INTEGER 0 {} 1 2 c {} 0 {} 0}
|
| ifcapable {foreignkey} {
|
| do_test pragma-6.3.1 {
|
| execsql {
|
| @@ -741,8 +781,8 @@ do_test pragma-8.1.10 {
|
| } SQLITE_SCHEMA
|
|
|
| # Make sure the schema-version can be manipulated in an attached database.
|
| -file delete -force test2.db
|
| -file delete -force test2.db-journal
|
| +forcedelete test2.db
|
| +forcedelete test2.db-journal
|
| ifcapable attach {
|
| do_test pragma-8.1.11 {
|
| execsql {
|
| @@ -921,6 +961,16 @@ proc check_temp_store {} {
|
| return "unknown"
|
| }
|
|
|
| +# Application_ID
|
| +#
|
| +do_test pragma-8.3.1 {
|
| + execsql {
|
| + PRAGMA application_id;
|
| + }
|
| +} {0}
|
| +do_test pragma-8.3.2 {
|
| + execsql {PRAGMA Application_ID(12345); PRAGMA application_id;}
|
| +} {12345}
|
|
|
| # Test temp_store and temp_store_directory pragmas
|
| #
|
| @@ -987,7 +1037,7 @@ do_test pragma-9.4 {
|
| } {}
|
| ifcapable wsd {
|
| do_test pragma-9.5 {
|
| - set pwd [string map {' ''} [file nativename [pwd]]]
|
| + set pwd [string map {' ''} [file nativename [get_pwd]]]
|
| execsql "
|
| PRAGMA temp_store_directory='$pwd';
|
| "
|
| @@ -996,7 +1046,7 @@ ifcapable wsd {
|
| execsql {
|
| PRAGMA temp_store_directory;
|
| }
|
| - } [list [file nativename [pwd]]]
|
| + } [list [file nativename [get_pwd]]]
|
| do_test pragma-9.7 {
|
| catchsql {
|
| PRAGMA temp_store_directory='/NON/EXISTENT/PATH/FOOBAR';
|
| @@ -1205,7 +1255,7 @@ do_test pragma-13.1 {
|
|
|
| ifcapable pager_pragmas {
|
| db close
|
| - file delete -force test.db
|
| + forcedelete test.db
|
| sqlite3 db test.db
|
|
|
| do_test pragma-14.1 {
|
| @@ -1219,6 +1269,9 @@ ifcapable pager_pragmas {
|
| PRAGMA page_count;
|
| }
|
| } {2}
|
| + do_test pragma-14.2uc {
|
| + execsql {pragma PAGE_COUNT}
|
| + } {2}
|
|
|
| do_test pragma-14.3 {
|
| execsql {
|
| @@ -1227,6 +1280,9 @@ ifcapable pager_pragmas {
|
| PRAGMA page_count;
|
| }
|
| } {3}
|
| + do_test pragma-14.3uc {
|
| + execsql {pragma PAGE_COUNT}
|
| + } {3}
|
|
|
| do_test pragma-14.4 {
|
| set page_size [db one {pragma page_size}]
|
| @@ -1241,7 +1297,7 @@ ifcapable pager_pragmas {
|
| } {2}
|
|
|
| do_test pragma-14.6 {
|
| - file delete -force test2.db
|
| + forcedelete test2.db
|
| sqlite3 db2 test2.db
|
| execsql {
|
| PRAGMA auto_vacuum = 0;
|
| @@ -1256,6 +1312,9 @@ ifcapable pager_pragmas {
|
| PRAGMA aux.page_count;
|
| }
|
| } {5}
|
| + do_test pragma-14.6uc {
|
| + execsql {pragma AUX.PAGE_COUNT}
|
| + } {5}
|
| }
|
|
|
| # Test that the value set using the cache_size pragma is not reset when the
|
| @@ -1477,4 +1536,181 @@ foreach {temp_setting val} {
|
| } $val
|
| }
|
|
|
| +# The SQLITE_FCNTL_PRAGMA logic, with error handling.
|
| +#
|
| +db close
|
| +testvfs tvfs
|
| +sqlite3 db test.db -vfs tvfs
|
| +do_test pragma-19.1 {
|
| + catchsql {PRAGMA error}
|
| +} {1 {SQL logic error or missing database}}
|
| +do_test pragma-19.2 {
|
| + catchsql {PRAGMA error='This is the error message'}
|
| +} {1 {This is the error message}}
|
| +do_test pragma-19.3 {
|
| + catchsql {PRAGMA error='7 This is the error message'}
|
| +} {1 {This is the error message}}
|
| +do_test pragma-19.4 {
|
| + catchsql {PRAGMA error=7}
|
| +} {1 {out of memory}}
|
| +do_test pragma-19.5 {
|
| + file tail [lindex [execsql {PRAGMA filename}] 0]
|
| +} {test.db}
|
| +
|
| +if {$tcl_platform(platform)=="windows"} {
|
| +# Test data_store_directory pragma
|
| +#
|
| +db close
|
| +sqlite3 db test.db
|
| +file mkdir data_dir
|
| +do_test pragma-20.1 {
|
| + catchsql {PRAGMA data_store_directory}
|
| +} {0 {}}
|
| +do_test pragma-20.2 {
|
| + set pwd [string map {' ''} [file nativename [get_pwd]]]
|
| + catchsql "PRAGMA data_store_directory='$pwd';"
|
| +} {0 {}}
|
| +do_test pragma-20.3 {
|
| + catchsql {PRAGMA data_store_directory}
|
| +} [list 0 [list [file nativename [get_pwd]]]]
|
| +do_test pragma-20.4 {
|
| + set pwd [string map {' ''} [file nativename \
|
| + [file join [get_pwd] data_dir]]]
|
| + catchsql "PRAGMA data_store_directory='$pwd';"
|
| +} {0 {}}
|
| +do_test pragma-20.5 {
|
| + sqlite3 db2 test2.db
|
| + catchsql "PRAGMA database_list;" db2
|
| +} [list 0 [list 0 main [file nativename \
|
| + [file join [get_pwd] data_dir test2.db]]]]
|
| +catch {db2 close}
|
| +do_test pragma-20.6 {
|
| + sqlite3 db2 [file join [get_pwd] test2.db]
|
| + catchsql "PRAGMA database_list;" db2
|
| +} [list 0 [list 0 main [file nativename \
|
| + [file join [get_pwd] test2.db]]]]
|
| +catch {db2 close}
|
| +do_test pragma-20.7 {
|
| + catchsql "PRAGMA data_store_directory='';"
|
| +} {0 {}}
|
| +do_test pragma-20.8 {
|
| + catchsql {PRAGMA data_store_directory}
|
| +} {0 {}}
|
| +
|
| +forcedelete data_dir
|
| +} ;# endif windows
|
| +
|
| +database_may_be_corrupt
|
| +
|
| +do_test 21.1 {
|
| + # Create a corrupt database in testerr.db. And a non-corrupt at test.db.
|
| + #
|
| + db close
|
| + forcedelete test.db
|
| + sqlite3 db test.db
|
| + execsql {
|
| + PRAGMA page_size = 1024;
|
| + PRAGMA auto_vacuum = 0;
|
| + CREATE TABLE t1(a PRIMARY KEY, b);
|
| + INSERT INTO t1 VALUES(1, 1);
|
| + }
|
| + for {set i 0} {$i < 10} {incr i} {
|
| + execsql { INSERT INTO t1 SELECT a + (1 << $i), b + (1 << $i) FROM t1 }
|
| + }
|
| + db close
|
| + forcecopy test.db testerr.db
|
| + hexio_write testerr.db 15000 [string repeat 55 100]
|
| +} {100}
|
| +
|
| +set mainerr {*** in database main ***
|
| +Multiple uses for byte 672 of page 15}
|
| +set auxerr {*** in database aux ***
|
| +Multiple uses for byte 672 of page 15}
|
| +
|
| +set mainerr {/{\*\*\* in database main \*\*\*
|
| +Multiple uses for byte 672 of page 15}.*/}
|
| +set auxerr {/{\*\*\* in database aux \*\*\*
|
| +Multiple uses for byte 672 of page 15}.*/}
|
| +
|
| +do_test 22.2 {
|
| + catch { db close }
|
| + sqlite3 db testerr.db
|
| + execsql { PRAGMA integrity_check }
|
| +} $mainerr
|
| +
|
| +do_test 22.3.1 {
|
| + catch { db close }
|
| + sqlite3 db test.db
|
| + execsql {
|
| + ATTACH 'testerr.db' AS 'aux';
|
| + PRAGMA integrity_check;
|
| + }
|
| +} $auxerr
|
| +do_test 22.3.2 {
|
| + execsql { PRAGMA main.integrity_check; }
|
| +} {ok}
|
| +do_test 22.3.3 {
|
| + execsql { PRAGMA aux.integrity_check; }
|
| +} $auxerr
|
| +
|
| +do_test 22.4.1 {
|
| + catch { db close }
|
| + sqlite3 db testerr.db
|
| + execsql {
|
| + ATTACH 'test.db' AS 'aux';
|
| + PRAGMA integrity_check;
|
| + }
|
| +} $mainerr
|
| +do_test 22.4.2 {
|
| + execsql { PRAGMA main.integrity_check; }
|
| +} $mainerr
|
| +do_test 22.4.3 {
|
| + execsql { PRAGMA aux.integrity_check; }
|
| +} {ok}
|
| +
|
| +db close
|
| +forcedelete test.db test.db-wal test.db-journal
|
| +sqlite3 db test.db
|
| +sqlite3 db2 test.db
|
| +do_test 23.1 {
|
| + db eval {
|
| + CREATE TABLE t1(a INTEGER PRIMARY KEY,b,c,d);
|
| + CREATE INDEX i1 ON t1(b,c);
|
| + CREATE INDEX i2 ON t1(c,d);
|
| + CREATE TABLE t2(x INTEGER REFERENCES t1);
|
| + }
|
| + db2 eval {SELECT name FROM sqlite_master}
|
| +} {t1 i1 i2 t2}
|
| +do_test 23.2 {
|
| + db eval {
|
| + DROP INDEX i2;
|
| + CREATE INDEX i2 ON t1(c,d,b);
|
| + }
|
| + db2 eval {PRAGMA index_info(i2)}
|
| +} {0 2 c 1 3 d 2 1 b}
|
| +do_test 23.3 {
|
| + db eval {
|
| + CREATE INDEX i3 ON t1(d,b,c);
|
| + }
|
| + db2 eval {PRAGMA index_list(t1)}
|
| +} {0 i3 0 1 i2 0 2 i1 0}
|
| +do_test 23.4 {
|
| + db eval {
|
| + ALTER TABLE t1 ADD COLUMN e;
|
| + }
|
| + db2 eval {
|
| + PRAGMA table_info(t1);
|
| + }
|
| +} {/4 e {} 0 {} 0/}
|
| +do_test 23.5 {
|
| + db eval {
|
| + DROP TABLE t2;
|
| + CREATE TABLE t2(x, y INTEGER REFERENCES t1);
|
| + }
|
| + db2 eval {
|
| + PRAGMA foreign_key_list(t2);
|
| + }
|
| +} {0 0 t1 y {} {NO ACTION} {NO ACTION} NONE}
|
| +
|
| +database_never_corrupt
|
| finish_test
|
|
|