xref: /sqlite-3.40.0/test/alterauth2.test (revision 29a7bbff)
107052d55Sdan# 2018 October 6
207052d55Sdan#
307052d55Sdan# The author disclaims copyright to this source code.  In place of
407052d55Sdan# a legal notice, here is a blessing:
507052d55Sdan#
607052d55Sdan#    May you do good and not evil.
707052d55Sdan#    May you find forgiveness for yourself and forgive others.
807052d55Sdan#    May you share freely, never taking more than you give.
907052d55Sdan#
1007052d55Sdan#*************************************************************************
1107052d55Sdan#
1207052d55Sdan
1307052d55Sdanset testdir [file dirname $argv0]
1407052d55Sdan
1507052d55Sdansource $testdir/tester.tcl
1607052d55Sdan
1707052d55Sdan# If SQLITE_OMIT_ALTERTABLE is defined, omit this file.
1807052d55Sdanifcapable !altertable {
1907052d55Sdan  finish_test
2007052d55Sdan  return
2107052d55Sdan}
2207052d55Sdanset testprefix alterauth2
2307052d55Sdan
2407052d55Sdanset ::auth [list]
2507052d55Sdanproc xAuth {type args} {
2607052d55Sdan  lappend ::auth [concat $type [lrange $args 0 3]]
2707052d55Sdan  if {$type=="SQLITE_READ" && [lindex $args 0] == "t2"} breakpoint
2807052d55Sdan  return SQLITE_OK
2907052d55Sdan}
3007052d55Sdandb auth xAuth
3107052d55Sdan
3207052d55Sdanproc do_auth_test {tn sql authcode} {
3307052d55Sdan  set script "
3407052d55Sdan    set ::auth \[list\]
3507052d55Sdan    execsql {$sql}
3607052d55Sdan    lsort -unique \[set ::auth\]
3707052d55Sdan  "
3807052d55Sdan
3907052d55Sdan  set normal [list {*}$authcode]
4007052d55Sdan  uplevel [list do_test $tn $script $normal]
4107052d55Sdan}
4207052d55Sdan
4307052d55Sdando_execsql_test 1.0 {
4407052d55Sdan  CREATE TABLE t1(a, b, c);
4507052d55Sdan  CREATE VIEW v1 AS SELECT * FROM t1;
4607052d55Sdan  CREATE TRIGGER tr1 AFTER INSERT ON t1 BEGIN
4707052d55Sdan    DELETE FROM t1 WHERE a<new.a;
4807052d55Sdan  END;
4907052d55Sdan
5007052d55Sdan  CREATE TEMP TRIGGER tr2 AFTER UPDATE OF a, b ON t1 BEGIN
5107052d55Sdan    UPDATE t1 SET a=a+1 WHERE new.b<b;
5207052d55Sdan  END;
5307052d55Sdan}
5407052d55Sdan
5507052d55Sdando_auth_test 1.1 {
5607052d55Sdan  ALTER TABLE t1 RENAME TO t2;
5707052d55Sdan} {
5807052d55Sdan    {SQLITE_ALTER_TABLE main t1 {} {}}
5907052d55Sdan    {SQLITE_FUNCTION {} like {} {}}
6007052d55Sdan  {SQLITE_FUNCTION {} sqlite_rename_table {} {}}
6107052d55Sdan  {SQLITE_FUNCTION {} sqlite_rename_test {} {}}
6207052d55Sdan    {SQLITE_FUNCTION {} substr {} {}}
6307052d55Sdan    {SQLITE_READ sqlite_master name main {}}
6407052d55Sdan    {SQLITE_READ sqlite_master sql main {}}
6507052d55Sdan    {SQLITE_READ sqlite_master tbl_name main {}}
6607052d55Sdan    {SQLITE_READ sqlite_master type main {}}
6707052d55Sdan  {SQLITE_READ sqlite_temp_master name temp {}}
6807052d55Sdan  {SQLITE_READ sqlite_temp_master sql temp {}}
6907052d55Sdan  {SQLITE_READ sqlite_temp_master tbl_name temp {}}
7007052d55Sdan  {SQLITE_READ sqlite_temp_master type temp {}}
7107052d55Sdan  {SQLITE_SELECT {} {} {} {}}
7207052d55Sdan    {SQLITE_UPDATE sqlite_master name main {}}
7307052d55Sdan    {SQLITE_UPDATE sqlite_master sql main {}}
7407052d55Sdan    {SQLITE_UPDATE sqlite_master tbl_name main {}}
7507052d55Sdan  {SQLITE_UPDATE sqlite_temp_master sql temp {}}
7607052d55Sdan  {SQLITE_UPDATE sqlite_temp_master tbl_name temp {}}
7707052d55Sdan}
7807052d55Sdan
7907052d55Sdando_auth_test 1.2 {
8007052d55Sdan  ALTER TABLE t2 RENAME a TO aaa;
8107052d55Sdan} {
8207052d55Sdan  {SQLITE_ALTER_TABLE main t2 {} {}}
8307052d55Sdan  {SQLITE_FUNCTION {} like {} {}}
8407052d55Sdan  {SQLITE_FUNCTION {} sqlite_rename_column {} {}}
852ad080aaSdan  {SQLITE_FUNCTION {} sqlite_rename_quotefix {} {}}
8607052d55Sdan  {SQLITE_FUNCTION {} sqlite_rename_test {} {}}
8707052d55Sdan  {SQLITE_READ sqlite_master name main {}}
8807052d55Sdan  {SQLITE_READ sqlite_master sql main {}}
8907052d55Sdan  {SQLITE_READ sqlite_master tbl_name main {}}
9007052d55Sdan  {SQLITE_READ sqlite_master type main {}}
9107052d55Sdan  {SQLITE_READ sqlite_temp_master name temp {}}
9207052d55Sdan  {SQLITE_READ sqlite_temp_master sql temp {}}
9307052d55Sdan  {SQLITE_READ sqlite_temp_master type temp {}}
9407052d55Sdan  {SQLITE_SELECT {} {} {} {}}
9507052d55Sdan  {SQLITE_UPDATE sqlite_master sql main {}}
9607052d55Sdan  {SQLITE_UPDATE sqlite_temp_master sql temp {}}
9707052d55Sdan}
9807052d55Sdan
99678f3b33Sdando_auth_test 1.3 {
100678f3b33Sdan  ALTER TABLE t2 DROP COLUMN c;
101678f3b33Sdan} {
102*29a7bbffSdrh  {SQLITE_ALTER_TABLE main t2 c {}}
103678f3b33Sdan  {SQLITE_FUNCTION {} like {} {}}
104678f3b33Sdan  {SQLITE_FUNCTION {} sqlite_drop_column {} {}}
1052ad080aaSdan  {SQLITE_FUNCTION {} sqlite_rename_quotefix {} {}}
106678f3b33Sdan  {SQLITE_FUNCTION {} sqlite_rename_test {} {}}
107678f3b33Sdan  {SQLITE_READ sqlite_master name main {}}
108678f3b33Sdan  {SQLITE_READ sqlite_master sql main {}}
109678f3b33Sdan  {SQLITE_READ sqlite_master tbl_name main {}}
110678f3b33Sdan  {SQLITE_READ sqlite_master type main {}}
111678f3b33Sdan  {SQLITE_READ sqlite_temp_master name temp {}}
112678f3b33Sdan  {SQLITE_READ sqlite_temp_master sql temp {}}
113678f3b33Sdan  {SQLITE_READ sqlite_temp_master type temp {}}
114678f3b33Sdan  {SQLITE_SELECT {} {} {} {}}
115678f3b33Sdan  {SQLITE_UPDATE sqlite_master sql main {}}
1162ad080aaSdan  {SQLITE_UPDATE sqlite_temp_master sql temp {}}
117678f3b33Sdan}
118678f3b33Sdan
11907052d55Sdanfinish_test
120