⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 auth2.test

📁 最新的sqlite3.6.2源代码
💻 TEST
字号:
# 2006 Aug 24## 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.##***********************************************************************# This file implements regression tests for SQLite library.  The# focus of this script is testing the sqlite3_set_authorizer() API# and related functionality.## $Id: auth2.test,v 1.3 2008/07/02 13:13:53 danielk1977 Exp $#set testdir [file dirname $argv0]source $testdir/tester.tcl# disable this test if the SQLITE_OMIT_AUTHORIZATION macro is# defined during compilation.if {[catch {db auth {}} msg]} {  finish_test  return}do_test auth2-1.1 {  execsql {    CREATE TABLE t1(a,b,c);    INSERT INTO t1 VALUES(1,2,3);  }  set ::flist {}  proc auth {code arg1 arg2 arg3 arg4} {    if {$code=="SQLITE_FUNCTION"} {      lappend ::flist $arg2      if {$arg2=="max"} {        return SQLITE_DENY      } elseif {$arg2=="min"} {        return SQLITE_IGNORE      } else {        return SQLITE_OK      }    }    return SQLITE_OK  }  db authorizer ::auth  catchsql {SELECT max(a,b,c) FROM t1}} {1 {not authorized to use function: max}}do_test auth2-1.2 {  set ::flist} maxdo_test auth2-1.3 {  set ::flist {}  catchsql {SELECT min(a,b,c) FROM t1}} {0 {{}}}do_test auth2-1.4 {  set ::flist} mindo_test auth2-1.5 {  set ::flist {}  catchsql {SELECT coalesce(min(a,b,c),999) FROM t1}} {0 999}do_test auth2-1.6 {  set ::flist} {coalesce min}do_test auth2-1.7 {  set ::flist {}  catchsql {SELECT coalesce(a,b,c) FROM t1}} {0 1}do_test auth2-1.8 {  set ::flist} coalesce# Make sure the authorizer is not called when parsing the schema# and when computing the result set of a view.#db closesqlite3 db test.dbsqlite3 db2 test.dbproc auth {args} {  global authargs  append authargs $args\n  return SQLITE_OK}db auth authdo_test auth2-2.1 {  set ::authargs {}  db eval {    CREATE TABLE t2(x,y,z);  }  set ::authargs} {SQLITE_INSERT sqlite_master {} main {}SQLITE_CREATE_TABLE t2 {} main {}SQLITE_UPDATE sqlite_master type main {}SQLITE_UPDATE sqlite_master name main {}SQLITE_UPDATE sqlite_master tbl_name main {}SQLITE_UPDATE sqlite_master rootpage main {}SQLITE_UPDATE sqlite_master sql main {}SQLITE_READ sqlite_master ROWID main {}SQLITE_READ sqlite_master name main {}SQLITE_READ sqlite_master rootpage main {}SQLITE_READ sqlite_master sql main {}SQLITE_READ sqlite_master tbl_name main {}}do_test auth2-2.2 {  set ::authargs {}  db eval {    CREATE VIEW v2 AS SELECT x+y AS a, y+z AS b from t2;  }  set ::authargs} {SQLITE_INSERT sqlite_master {} main {}SQLITE_CREATE_VIEW v2 {} main {}SQLITE_UPDATE sqlite_master type main {}SQLITE_UPDATE sqlite_master name main {}SQLITE_UPDATE sqlite_master tbl_name main {}SQLITE_UPDATE sqlite_master rootpage main {}SQLITE_UPDATE sqlite_master sql main {}SQLITE_READ sqlite_master ROWID main {}SQLITE_READ sqlite_master name main {}SQLITE_READ sqlite_master rootpage main {}SQLITE_READ sqlite_master sql main {}SQLITE_READ sqlite_master tbl_name main {}}do_test auth2-2.3 {  set ::authargs {}  db eval {    SELECT a, b FROM v2;  }  set ::authargs} {SQLITE_SELECT {} {} {} {}SQLITE_READ v2 a main {}SQLITE_READ v2 b main {}SQLITE_READ t2 x main v2SQLITE_READ t2 y main v2SQLITE_READ t2 y main v2SQLITE_READ t2 z main v2SQLITE_SELECT {} {} {} v2}do_test auth2-2.4 {  db2 eval {    CREATE TABLE t3(p,q,r);  }  set ::authargs {}  db eval {    SELECT b, a FROM v2;  }  set ::authargs} {SQLITE_SELECT {} {} {} {}SQLITE_READ v2 b main {}SQLITE_READ v2 a main {}SQLITE_READ t2 x main v2SQLITE_READ t2 y main v2SQLITE_READ t2 y main v2SQLITE_READ t2 z main v2SQLITE_SELECT {} {} {} v2SQLITE_SELECT {} {} {} {}SQLITE_READ v2 b main {}SQLITE_READ v2 a main {}SQLITE_READ t2 x main v2SQLITE_READ t2 y main v2SQLITE_READ t2 y main v2SQLITE_READ t2 z main v2SQLITE_SELECT {} {} {} v2}db2 closefinish_test

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -