aboutsummaryrefslogtreecommitdiff
path: root/testdata/tcl/alterauth2.test
diff options
context:
space:
mode:
authorJan Mercl <0xjnml@gmail.com>2020-07-26 22:36:18 +0200
committerJan Mercl <0xjnml@gmail.com>2020-07-26 22:36:18 +0200
commitb406626c64313ae348996c243a0a05d3f6ed2c3c (patch)
tree0eaae4fa6348b150568725e6f2ec0b4c4203b5f8 /testdata/tcl/alterauth2.test
parentd8d9f40ce80062793349c0ea47520b6878312f4a (diff)
release v1.4.0-beta1v1.4.0-beta1
Diffstat (limited to 'testdata/tcl/alterauth2.test')
-rw-r--r--testdata/tcl/alterauth2.test98
1 files changed, 98 insertions, 0 deletions
diff --git a/testdata/tcl/alterauth2.test b/testdata/tcl/alterauth2.test
new file mode 100644
index 0000000..bd589cd
--- /dev/null
+++ b/testdata/tcl/alterauth2.test
@@ -0,0 +1,98 @@
+# 2018 October 6
+#
+# 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.
+#
+#*************************************************************************
+#
+
+set testdir [file dirname $argv0]
+
+source $testdir/tester.tcl
+
+# If SQLITE_OMIT_ALTERTABLE is defined, omit this file.
+ifcapable !altertable {
+ finish_test
+ return
+}
+set testprefix alterauth2
+
+set ::auth [list]
+proc xAuth {type args} {
+ lappend ::auth [concat $type [lrange $args 0 3]]
+ if {$type=="SQLITE_READ" && [lindex $args 0] == "t2"} breakpoint
+ return SQLITE_OK
+}
+db auth xAuth
+
+proc do_auth_test {tn sql authcode} {
+ set script "
+ set ::auth \[list\]
+ execsql {$sql}
+ lsort -unique \[set ::auth\]
+ "
+
+ set normal [list {*}$authcode]
+ uplevel [list do_test $tn $script $normal]
+}
+
+do_execsql_test 1.0 {
+ CREATE TABLE t1(a, b, c);
+ CREATE VIEW v1 AS SELECT * FROM t1;
+ CREATE TRIGGER tr1 AFTER INSERT ON t1 BEGIN
+ DELETE FROM t1 WHERE a<new.a;
+ END;
+
+ CREATE TEMP TRIGGER tr2 AFTER UPDATE OF a, b ON t1 BEGIN
+ UPDATE t1 SET a=a+1 WHERE new.b<b;
+ END;
+}
+
+do_auth_test 1.1 {
+ ALTER TABLE t1 RENAME TO t2;
+} {
+ {SQLITE_ALTER_TABLE main t1 {} {}}
+ {SQLITE_FUNCTION {} like {} {}}
+ {SQLITE_FUNCTION {} sqlite_rename_table {} {}}
+ {SQLITE_FUNCTION {} sqlite_rename_test {} {}}
+ {SQLITE_FUNCTION {} substr {} {}}
+ {SQLITE_READ sqlite_master name main {}}
+ {SQLITE_READ sqlite_master sql main {}}
+ {SQLITE_READ sqlite_master tbl_name main {}}
+ {SQLITE_READ sqlite_master type main {}}
+ {SQLITE_READ sqlite_temp_master name temp {}}
+ {SQLITE_READ sqlite_temp_master sql temp {}}
+ {SQLITE_READ sqlite_temp_master tbl_name temp {}}
+ {SQLITE_READ sqlite_temp_master type temp {}}
+ {SQLITE_SELECT {} {} {} {}}
+ {SQLITE_UPDATE sqlite_master name main {}}
+ {SQLITE_UPDATE sqlite_master sql main {}}
+ {SQLITE_UPDATE sqlite_master tbl_name main {}}
+ {SQLITE_UPDATE sqlite_temp_master sql temp {}}
+ {SQLITE_UPDATE sqlite_temp_master tbl_name temp {}}
+}
+
+do_auth_test 1.2 {
+ ALTER TABLE t2 RENAME a TO aaa;
+} {
+ {SQLITE_ALTER_TABLE main t2 {} {}}
+ {SQLITE_FUNCTION {} like {} {}}
+ {SQLITE_FUNCTION {} sqlite_rename_column {} {}}
+ {SQLITE_FUNCTION {} sqlite_rename_test {} {}}
+ {SQLITE_READ sqlite_master name main {}}
+ {SQLITE_READ sqlite_master sql main {}}
+ {SQLITE_READ sqlite_master tbl_name main {}}
+ {SQLITE_READ sqlite_master type main {}}
+ {SQLITE_READ sqlite_temp_master name temp {}}
+ {SQLITE_READ sqlite_temp_master sql temp {}}
+ {SQLITE_READ sqlite_temp_master type temp {}}
+ {SQLITE_SELECT {} {} {} {}}
+ {SQLITE_UPDATE sqlite_master sql main {}}
+ {SQLITE_UPDATE sqlite_temp_master sql temp {}}
+}
+
+finish_test