CoolFace
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
alterauth2.test171 linesDownload Raw Back to test
1# 2018 October 62#3# The author disclaims copyright to this source code.  In place of4# 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 13set testdir [file dirname $argv0]14 15source $testdir/tester.tcl16 17# If SQLITE_OMIT_ALTERTABLE is defined, omit this file.18ifcapable !altertable {19  finish_test20  return21}22set testprefix alterauth223 24set ::auth [list]25proc xAuth {type args} {26  lappend ::auth [concat $type [lrange $args 0 3]]27  if {$type=="SQLITE_READ" && [lindex $args 0] == "t2"} breakpoint28  return SQLITE_OK29}30db auth xAuth31 32proc 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 43do_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 BEGIN47    DELETE FROM t1 WHERE a<new.a;48  END;49 50  CREATE TEMP TRIGGER tr2 AFTER UPDATE OF a, b ON t1 BEGIN51    UPDATE t1 SET a=a+1 WHERE new.b<b;52  END;53}54 55do_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 79do_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 99do_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 119do_auth_test 1.4 {120  ALTER TABLE t2 ALTER COLUMN b SET NOT NULL;121} {122  {SQLITE_ALTER_TABLE main t2 b {}} 123  {SQLITE_FUNCTION {} sqlite_add_constraint {} {}} 124  {SQLITE_FUNCTION {} sqlite_drop_constraint {} {}} 125  {SQLITE_FUNCTION {} sqlite_fail {} {}} 126  {SQLITE_READ sqlite_master sql main {}} 127  {SQLITE_READ sqlite_master tbl_name main {}} 128  {SQLITE_READ sqlite_master type main {}} 129  {SQLITE_READ t2 b main {}} 130  {SQLITE_SELECT {} {} {} {}} 131  {SQLITE_UPDATE sqlite_master sql main {}}132}133do_auth_test 1.5 {134  ALTER TABLE t2 ALTER COLUMN 'b' DROP NOT NULL;135} {136  {SQLITE_ALTER_TABLE main t2 b {}} 137  {SQLITE_FUNCTION {} sqlite_drop_constraint {} {}} 138  {SQLITE_READ sqlite_master sql main {}} 139  {SQLITE_READ sqlite_master tbl_name main {}} 140  {SQLITE_READ sqlite_master type main {}} 141  {SQLITE_UPDATE sqlite_master sql main {}}142}143 144do_auth_test 1.6 {145  ALTER TABLE t2 ADD CONSTRAINT abc CHECK (aaa>b)146} {147  {SQLITE_ALTER_TABLE main t2 {} {}} 148  {SQLITE_FUNCTION {} sqlite_add_constraint {} {}} 149  {SQLITE_FUNCTION {} sqlite_fail {} {}} 150  {SQLITE_FUNCTION {} sqlite_find_constraint {} {}} 151  {SQLITE_READ sqlite_master sql main {}} 152  {SQLITE_READ sqlite_master tbl_name main {}} 153  {SQLITE_READ sqlite_master type main {}} 154  {SQLITE_READ t2 aaa main {}} 155  {SQLITE_READ t2 b main {}} 156  {SQLITE_SELECT {} {} {} {}} 157  {SQLITE_UPDATE sqlite_master sql main {}}158}159do_auth_test 1.7 {160  ALTER TABLE t2 DROP CONSTRAINT abc;161} {162  {SQLITE_ALTER_TABLE main t2 {} {}} 163  {SQLITE_FUNCTION {} sqlite_drop_constraint {} {}} 164  {SQLITE_READ sqlite_master sql main {}} 165  {SQLITE_READ sqlite_master tbl_name main {}} 166  {SQLITE_READ sqlite_master type main {}} 167  {SQLITE_UPDATE sqlite_master sql main {}}168}169 170finish_test171