xref: /sqlite-3.40.0/test/altermalloc2.test (revision 7b57aa3d)
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