1b013738bSdan# 2018 August 20 2b013738bSdan# 3b013738bSdan# The author disclaims copyright to this source code. In place of 4b013738bSdan# a legal notice, here is a blessing: 5b013738bSdan# 6b013738bSdan# May you do good and not evil. 7b013738bSdan# May you find forgiveness for yourself and forgive others. 8b013738bSdan# May you share freely, never taking more than you give. 9b013738bSdan# 10b013738bSdan#************************************************************************* 11b013738bSdan# 12b013738bSdan 13b013738bSdanset testdir [file dirname $argv0] 14b013738bSdansource $testdir/tester.tcl 15b013738bSdansource $testdir/malloc_common.tcl 16b013738bSdanset testprefix altermalloc2 17b013738bSdan 18b013738bSdan# If SQLITE_OMIT_ALTERTABLE is defined, omit this file. 19b013738bSdanifcapable !altertable { 20b013738bSdan finish_test 21b013738bSdan return 22b013738bSdan} 23b013738bSdan 24b013738bSdando_execsql_test 1.0 { 25b013738bSdan CREATE TABLE t1(abcd, efgh); 26b013738bSdan} 27b013738bSdanfaultsim_save_and_close 28b013738bSdan 29*7b57aa3dSdanset ::TMPDBERROR [list 1 \ 30*7b57aa3dSdan {unable to open a temporary database file for storing temporary tables} 31*7b57aa3dSdan] 32*7b57aa3dSdan 33*7b57aa3dSdan 34b013738bSdando_faultsim_test 1 -prep { 35b013738bSdan faultsim_restore_and_reopen 36b013738bSdan} -body { 37b013738bSdan execsql { 38b013738bSdan ALTER TABLE t1 RENAME abcd TO dcba 39b013738bSdan } 40b013738bSdan} -test { 41*7b57aa3dSdan faultsim_test_result {0 {}} $::TMPDBERROR 42b013738bSdan} 43b013738bSdan 44b013738bSdancatch {db close} 45b013738bSdanforcedelete test.db 46b013738bSdansqlite3 db test.db 47b013738bSdando_execsql_test 2.0 { 48b013738bSdan PRAGMA encoding = 'utf-16'; 49b013738bSdan CREATE TABLE t1(abcd, efgh); 50b013738bSdan} 51b013738bSdanfaultsim_save_and_close 52b013738bSdan 53b013738bSdando_faultsim_test 2 -prep { 54b013738bSdan faultsim_restore_and_reopen 55b013738bSdan} -body { 56b013738bSdan execsql { 57b013738bSdan ALTER TABLE t1 RENAME abcd TO dcba 58b013738bSdan } 59b013738bSdan} -test { 60*7b57aa3dSdan faultsim_test_result {0 {}} $::TMPDBERROR 61b013738bSdan} 62b013738bSdan 63b013738bSdan 64b013738bSdanreset_db 65b013738bSdando_execsql_test 3.0 { 66b013738bSdan CREATE TABLE t1(abcd, efgh); 67b013738bSdan CREATE VIEW v1 AS SELECT * FROM t1 WHERE abcd>efgh; 68b013738bSdan} 69b013738bSdanfaultsim_save_and_close 70b013738bSdan 71b013738bSdando_faultsim_test 3 -prep { 72b013738bSdan faultsim_restore_and_reopen 73b013738bSdan} -body { 74b013738bSdan execsql { 75b013738bSdan ALTER TABLE t1 RENAME abcd TO dcba 76b013738bSdan } 77b013738bSdan} -test { 78*7b57aa3dSdan faultsim_test_result {0 {}} $::TMPDBERROR 79b013738bSdan} 8034566c44Sdan 8134566c44Sdanreset_db 8234566c44Sdando_execsql_test 4.0 { 8334566c44Sdan CREATE TABLE rr(a, b); 8434566c44Sdan CREATE VIEW vv AS SELECT * FROM rr; 8534566c44Sdan 8634566c44Sdan CREATE TRIGGER vv1 INSTEAD OF INSERT ON vv BEGIN 8734566c44Sdan SELECT 1, 2, 3; 8834566c44Sdan END; 8934566c44Sdan CREATE TRIGGER tr1 AFTER INSERT ON rr BEGIN 9034566c44Sdan INSERT INTO vv VALUES(new.a, new.b); 9134566c44Sdan END; 9234566c44Sdan} {} 9334566c44Sdan 9434566c44Sdanfaultsim_save_and_close 9534566c44Sdando_faultsim_test 4 -faults oom-* -prep { 9634566c44Sdan faultsim_restore_and_reopen 9734566c44Sdan execsql { SELECT * FROM sqlite_master } 9834566c44Sdan} -body { 9934566c44Sdan execsql { 10034566c44Sdan ALTER TABLE rr RENAME a TO c; 10134566c44Sdan } 10234566c44Sdan} -test { 103*7b57aa3dSdan faultsim_test_result {0 {}} $::TMPDBERROR 10434566c44Sdan} 10534566c44Sdan 106d03d3a9bSdanreset_db 107d03d3a9bSdando_execsql_test 5.0 { 108d03d3a9bSdan CREATE TABLE rr(a, b); 109d03d3a9bSdan CREATE VIEW vv AS SELECT * FROM ( 110d03d3a9bSdan WITH abc(d, e) AS (SELECT * FROM rr) 111d03d3a9bSdan SELECT * FROM abc 112d03d3a9bSdan ); 113d03d3a9bSdan} {} 114d03d3a9bSdan 115d03d3a9bSdanfaultsim_save_and_close 116d03d3a9bSdando_faultsim_test 5 -faults oom-* -prep { 117d03d3a9bSdan faultsim_restore_and_reopen 118d03d3a9bSdan execsql { SELECT * FROM sqlite_master } 119d03d3a9bSdan} -body { 120d03d3a9bSdan execsql { 121d03d3a9bSdan ALTER TABLE rr RENAME TO c; 122d03d3a9bSdan } 123d03d3a9bSdan} -test { 124*7b57aa3dSdan faultsim_test_result {0 {}} $::TMPDBERROR 125d03d3a9bSdan} 126d03d3a9bSdan 127b013738bSdanfinish_test 128