| Index: third_party/sqlite/sqlite-src-3100200/test/crashM.test
|
| diff --git a/third_party/sqlite/sqlite-src-3100200/test/crashM.test b/third_party/sqlite/sqlite-src-3100200/test/crashM.test
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..de10c4589a5bf6eeb1b64234430b583ce49c5599
|
| --- /dev/null
|
| +++ b/third_party/sqlite/sqlite-src-3100200/test/crashM.test
|
| @@ -0,0 +1,80 @@
|
| +# 2015 Mar 13
|
| +#
|
| +# The author disclaims copyright to this source code. In place of
|
| +# a legal notice, here is a blessing:
|
| +#
|
| +# May you do good and not evil.
|
| +# May you find forgiveness for yourself and forgive others.
|
| +# May you share freely, never taking more than you give.
|
| +#
|
| +#***********************************************************************
|
| +#
|
| +# Crash tests for the multiplex module with 8.3 filenames enabled.
|
| +#
|
| +
|
| +set testdir [file dirname $argv0]
|
| +source $testdir/tester.tcl
|
| +set testprefix crashM
|
| +
|
| +ifcapable !crashtest||!8_3_names {
|
| + finish_test
|
| + return
|
| +}
|
| +
|
| +db close
|
| +sqlite3_shutdown
|
| +sqlite3_config_uri 1
|
| +
|
| +foreach f [glob -nocomplain test1.* test2.*] { forcedelete $f }
|
| +sqlite3_multiplex_initialize "" 1
|
| +sqlite3 db file:test1.db?8_3_names=1
|
| +sqlite3_multiplex_control db main chunk_size [expr 64*1024]
|
| +
|
| +do_execsql_test 1.0 {
|
| + ATTACH 'file:test2.db?8_3_names=1' AS aux;
|
| +
|
| + CREATE TABLE t1(x, y);
|
| + CREATE INDEX t1x ON t1(x);
|
| + CREATE INDEX t1y ON t1(y);
|
| +
|
| + CREATE TABLE aux.t2(x, y);
|
| + CREATE INDEX aux.t2x ON t2(x);
|
| + CREATE INDEX aux.t2y ON t2(y);
|
| +
|
| + WITH s(a) AS (
|
| + SELECT 1 UNION ALL SELECT a+1 FROM s WHERE a<1000
|
| + )
|
| + INSERT INTO t1 SELECT a, randomblob(500) FROM s;
|
| +
|
| + WITH s(a) AS (
|
| + SELECT 1 UNION ALL SELECT a+1 FROM s WHERE a<1000
|
| + )
|
| + INSERT INTO t2 SELECT a, randomblob(500) FROM s;
|
| +} {}
|
| +
|
| +for {set i 0} {$i < 20} {incr i} {
|
| + do_test 2.$i.1 {
|
| + crashsql -delay 1 -file test1.db -opendb {
|
| + sqlite3_shutdown
|
| + sqlite3_config_uri 1
|
| + sqlite3_multiplex_initialize crash 1
|
| + sqlite3 db file:test1.db?8_3_names=1
|
| + sqlite3_multiplex_control db main chunk_size [expr 64*1024]
|
| + } {
|
| + ATTACH 'file:test2.db?8_3_names=1' AS aux;
|
| + BEGIN;
|
| + UPDATE t1 SET y = randomblob(500) WHERE (x%10)==0;
|
| + UPDATE t2 SET y = randomblob(500) WHERE (x%10)==0;
|
| + COMMIT;
|
| + }
|
| + } {1 {child process exited abnormally}}
|
| +
|
| + do_execsql_test 2.$i.2 {
|
| + PRAGMA main.integrity_check;
|
| + PRAGMA aux.integrity_check;
|
| + } {ok ok}
|
| +}
|
| +
|
| +catch { db close }
|
| +sqlite3_multiplex_shutdown
|
| +finish_test
|
|
|