blob: 068386eb31e12eb50eb2ec4e5cf1163fce05ec85 [file] [log] [blame]
danielk1977a298e902006-06-22 09:53:48 +00001# 2006 June 10
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#
drh5a3032b2007-09-03 16:12:09 +000012# $Id: vtab_err.test,v 1.8 2007/09/03 16:12:10 drh Exp $
danielk1977a298e902006-06-22 09:53:48 +000013
14set testdir [file dirname $argv0]
15source $testdir/tester.tcl
16
17ifcapable !vtab {
18 finish_test
19 return
20}
21
drh5a3032b2007-09-03 16:12:09 +000022
23
drh73bdf072006-08-15 14:21:16 +000024unset -nocomplain echo_module_begin_fail
danielk1977a298e902006-06-22 09:53:48 +000025do_ioerr_test vtab_err-1 -tclprep {
26 register_echo_module [sqlite3_connection_pointer db]
27} -sqlbody {
28 BEGIN;
29 CREATE TABLE r(a PRIMARY KEY, b, c);
30 CREATE VIRTUAL TABLE e USING echo(r);
31 INSERT INTO e VALUES(1, 2, 3);
32 INSERT INTO e VALUES('a', 'b', 'c');
33 UPDATE e SET c = 10;
34 DELETE FROM e WHERE a = 'a';
35 COMMIT;
36 BEGIN;
37 CREATE TABLE r2(a, b, c);
38 INSERT INTO r2 SELECT * FROM e;
39 INSERT INTO e SELECT a||'x', b, c FROM r2;
40 COMMIT;
41}
42
drh5a3032b2007-09-03 16:12:09 +000043ifcapable !memdebug {
44 puts "Skipping vtab_err-2 tests: not compiled with -DSQLITE_MEMDEBUG..."
45 finish_test
46 return
47}
48source $testdir/malloc_common.tcl
49
50
danielk1977a1644fd2007-08-29 12:31:25 +000051do_malloc_test vtab_err-2 -tclprep {
danielk1977be718892006-06-23 08:05:19 +000052 register_echo_module [sqlite3_connection_pointer db]
53} -sqlbody {
54 BEGIN;
55 CREATE TABLE r(a PRIMARY KEY, b, c);
56 CREATE VIRTUAL TABLE e USING echo(r);
57 INSERT INTO e VALUES(1, 2, 3);
58 INSERT INTO e VALUES('a', 'b', 'c');
59 UPDATE e SET c = 10;
60 DELETE FROM e WHERE a = 'a';
61 COMMIT;
62 BEGIN;
63 CREATE TABLE r2(a, b, c);
64 INSERT INTO r2 SELECT * FROM e;
65 INSERT INTO e SELECT a||'x', b, c FROM r2;
66 COMMIT;
67}
68
danielk1977a1644fd2007-08-29 12:31:25 +000069sqlite3_memdebug_fail -1
danielk1977222a7572007-08-25 13:37:48 +000070
danielk1977a298e902006-06-22 09:53:48 +000071finish_test