dan | 226744d | 2017-08-05 16:15:33 +0000 | [diff] [blame] | 1 | # 2017-07-15 |
| 2 | # |
| 3 | # The author disclaims copyright to this source code. In place of |
| 4 | # a legal notice, here is a blessing: |
| 5 | # |
| 6 | # May you do good and not evil. |
| 7 | # May you find forgiveness for yourself and forgive others. |
| 8 | # May you share freely, never taking more than you give. |
| 9 | # |
| 10 | #*********************************************************************** |
| 11 | # This file implements regression tests for SQLite library. The |
| 12 | # focus of this file is error handling in the swarmvtab extension. |
| 13 | # |
| 14 | |
| 15 | set testdir [file dirname $argv0] |
| 16 | source $testdir/tester.tcl |
| 17 | set testprefix swarmvtabfault |
| 18 | |
| 19 | ifcapable !vtab { |
| 20 | finish_test |
| 21 | return |
| 22 | } |
| 23 | |
| 24 | proc fetch_db {file} { |
| 25 | forcedelete $file |
| 26 | sqlite3 dbX $file |
mistachkin | 0295774 | 2017-10-23 20:17:19 +0000 | [diff] [blame] | 27 | set rc [catch { |
| 28 | dbX eval { CREATE TABLE t1(a INTEGER PRIMARY KEY, b) } |
| 29 | } res] |
dan | 226744d | 2017-08-05 16:15:33 +0000 | [diff] [blame] | 30 | dbX close |
mistachkin | 0295774 | 2017-10-23 20:17:19 +0000 | [diff] [blame] | 31 | if {$rc!=0} {error $res} |
dan | 226744d | 2017-08-05 16:15:33 +0000 | [diff] [blame] | 32 | } |
| 33 | |
| 34 | forcedelete test.db1 |
mistachkin | 15dd780 | 2017-10-23 17:36:52 +0000 | [diff] [blame] | 35 | forcedelete test.db2 |
| 36 | |
dan | 226744d | 2017-08-05 16:15:33 +0000 | [diff] [blame] | 37 | do_execsql_test 1.0 { |
| 38 | ATTACH 'test.db1' AS aux; |
| 39 | CREATE TABLE aux.t1(a INTEGER PRIMARY KEY, b); |
| 40 | INSERT INTO aux.t1 VALUES(1, NULL); |
| 41 | INSERT INTO aux.t1 VALUES(2, NULL); |
| 42 | INSERT INTO aux.t1 VALUES(9, NULL); |
| 43 | DETACH aux; |
| 44 | } {} |
| 45 | |
| 46 | faultsim_save_and_close |
| 47 | do_faultsim_test 1.1 -faults oom* -prep { |
| 48 | faultsim_restore_and_reopen |
| 49 | db func fetch_db fetch_db |
| 50 | load_static_extension db unionvtab |
| 51 | db eval { |
| 52 | CREATE VIRTUAL TABLE temp.xyz USING swarmvtab( |
| 53 | 'VALUES |
| 54 | ("test.db1", "t1", 1, 10), |
| 55 | ("test.db2", "t1", 11, 20) |
| 56 | ', 'fetch_db' |
| 57 | ); |
| 58 | } |
| 59 | } -body { |
| 60 | execsql { SELECT a FROM xyz } |
| 61 | } -test { |
| 62 | faultsim_test_result {0 {1 2 9}} {1 {sql error: out of memory}} |
| 63 | } |
| 64 | |
| 65 | finish_test |