gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/alterauth2.test (about)

     1  # 2018 October 6
     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  #
    12  
    13  set testdir [file dirname $argv0]
    14  
    15  source $testdir/tester.tcl
    16  
    17  # If SQLITE_OMIT_ALTERTABLE is defined, omit this file.
    18  ifcapable !altertable {
    19    finish_test
    20    return
    21  }
    22  set testprefix alterauth2
    23  
    24  set ::auth [list]
    25  proc xAuth {type args} {
    26    lappend ::auth [concat $type [lrange $args 0 3]]
    27    if {$type=="SQLITE_READ" && [lindex $args 0] == "t2"} breakpoint
    28    return SQLITE_OK
    29  }
    30  db auth xAuth
    31  
    32  proc do_auth_test {tn sql authcode} {
    33    set script "
    34      set ::auth \[list\]
    35      execsql {$sql}
    36      lsort -unique \[set ::auth\]
    37    "
    38  
    39    set normal [list {*}$authcode]
    40    uplevel [list do_test $tn $script $normal]
    41  }
    42  
    43  do_execsql_test 1.0 { 
    44    CREATE TABLE t1(a, b, c); 
    45    CREATE VIEW v1 AS SELECT * FROM t1;
    46    CREATE TRIGGER tr1 AFTER INSERT ON t1 BEGIN
    47      DELETE FROM t1 WHERE a<new.a;
    48    END;
    49  
    50    CREATE TEMP TRIGGER tr2 AFTER UPDATE OF a, b ON t1 BEGIN
    51      UPDATE t1 SET a=a+1 WHERE new.b<b;
    52    END;
    53  }
    54  
    55  do_auth_test 1.1 {
    56    ALTER TABLE t1 RENAME TO t2;
    57  } {
    58      {SQLITE_ALTER_TABLE main t1 {} {}} 
    59      {SQLITE_FUNCTION {} like {} {}} 
    60    {SQLITE_FUNCTION {} sqlite_rename_table {} {}} 
    61    {SQLITE_FUNCTION {} sqlite_rename_test {} {}} 
    62      {SQLITE_FUNCTION {} substr {} {}} 
    63      {SQLITE_READ sqlite_master name main {}} 
    64      {SQLITE_READ sqlite_master sql main {}} 
    65      {SQLITE_READ sqlite_master tbl_name main {}} 
    66      {SQLITE_READ sqlite_master type main {}} 
    67    {SQLITE_READ sqlite_temp_master name temp {}} 
    68    {SQLITE_READ sqlite_temp_master sql temp {}} 
    69    {SQLITE_READ sqlite_temp_master tbl_name temp {}} 
    70    {SQLITE_READ sqlite_temp_master type temp {}} 
    71    {SQLITE_SELECT {} {} {} {}} 
    72      {SQLITE_UPDATE sqlite_master name main {}} 
    73      {SQLITE_UPDATE sqlite_master sql main {}} 
    74      {SQLITE_UPDATE sqlite_master tbl_name main {}} 
    75    {SQLITE_UPDATE sqlite_temp_master sql temp {}} 
    76    {SQLITE_UPDATE sqlite_temp_master tbl_name temp {}}
    77  }
    78  
    79  do_auth_test 1.2 {
    80    ALTER TABLE t2 RENAME a TO aaa;
    81  } {
    82    {SQLITE_ALTER_TABLE main t2 {} {}} 
    83    {SQLITE_FUNCTION {} like {} {}} 
    84    {SQLITE_FUNCTION {} sqlite_rename_column {} {}} 
    85    {SQLITE_FUNCTION {} sqlite_rename_quotefix {} {}} 
    86    {SQLITE_FUNCTION {} sqlite_rename_test {} {}} 
    87    {SQLITE_READ sqlite_master name main {}} 
    88    {SQLITE_READ sqlite_master sql main {}} 
    89    {SQLITE_READ sqlite_master tbl_name main {}} 
    90    {SQLITE_READ sqlite_master type main {}} 
    91    {SQLITE_READ sqlite_temp_master name temp {}} 
    92    {SQLITE_READ sqlite_temp_master sql temp {}} 
    93    {SQLITE_READ sqlite_temp_master type temp {}} 
    94    {SQLITE_SELECT {} {} {} {}} 
    95    {SQLITE_UPDATE sqlite_master sql main {}} 
    96    {SQLITE_UPDATE sqlite_temp_master sql temp {}}
    97  }
    98  
    99  do_auth_test 1.3 {
   100    ALTER TABLE t2 DROP COLUMN c;
   101  } {
   102    {SQLITE_ALTER_TABLE main t2 c {}} 
   103    {SQLITE_FUNCTION {} like {} {}} 
   104    {SQLITE_FUNCTION {} sqlite_drop_column {} {}}
   105    {SQLITE_FUNCTION {} sqlite_rename_quotefix {} {}} 
   106    {SQLITE_FUNCTION {} sqlite_rename_test {} {}} 
   107    {SQLITE_READ sqlite_master name main {}} 
   108    {SQLITE_READ sqlite_master sql main {}} 
   109    {SQLITE_READ sqlite_master tbl_name main {}} 
   110    {SQLITE_READ sqlite_master type main {}} 
   111    {SQLITE_READ sqlite_temp_master name temp {}} 
   112    {SQLITE_READ sqlite_temp_master sql temp {}} 
   113    {SQLITE_READ sqlite_temp_master type temp {}} 
   114    {SQLITE_SELECT {} {} {} {}} 
   115    {SQLITE_UPDATE sqlite_master sql main {}}
   116    {SQLITE_UPDATE sqlite_temp_master sql temp {}}
   117  }
   118  
   119  finish_test