split mysql_function usecase
This commit is contained in:
@ -1,9 +1,4 @@
|
||||
--test create function/procedure definer=user
|
||||
drop database if exists mysqltest;
|
||||
CREATE DATABASE mysqltest DBCOMPATIBILITY 'B';
|
||||
create schema mysqlschema;
|
||||
create user usr1 password '12345@abc';
|
||||
create user usr2 password '12345@abc';
|
||||
--grammar test
|
||||
\c mysqltest
|
||||
create schema mysqlschema;
|
||||
@ -69,131 +64,8 @@ select usename from pg_user where usesysid = (select proowner from pg_proc wher
|
||||
-- dump function
|
||||
\! @abs_bindir@/gs_dump mysqltest -p @portstring@ -f @abs_bindir@/mysql_function_back.sql
|
||||
|
||||
CREATE DATABASE mysqltestbak DBCOMPATIBILITY 'B';
|
||||
-- restore data
|
||||
\! @abs_bindir@/gsql -p @portstring@ -d mysqltestbak -f @abs_bindir@/mysql_function_back.sql
|
||||
|
||||
\c mysqltestbak
|
||||
\sf proc_definer1
|
||||
|
||||
--test security--general user create definer function
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -f @abs_srcdir@/sql/mysql_function_test.sql
|
||||
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--revoke execute from public
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "revoke EXECUTE on procedure mysqlschema.definer() from public;revoke EXECUTE on procedure mysqlschema.invoker() from public; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--revoke execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "revoke EXECUTE on procedure mysqlschema.definer() from usr1;revoke EXECUTE on procedure mysqlschema.invoker() from usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--revoke execute from usr2
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "revoke EXECUTE on procedure mysqlschema.definer() from usr2;revoke EXECUTE on procedure mysqlschema.invoker() from usr2; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--grant execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "grant EXECUTE on procedure mysqlschema.definer() to usr1;grant EXECUTE on procedure mysqlschema.invoker() to usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--grant execute from usr2
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "grant EXECUTE on procedure mysqlschema.definer() to usr2;grant EXECUTE on procedure mysqlschema.invoker() to usr2; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--revoke execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "revoke EXECUTE on procedure mysqlschema.definer() from usr1;revoke EXECUTE on procedure mysqlschema.invoker() from usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
|
||||
|
||||
--test security--super user create definer function
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -f @abs_srcdir@/sql/mysql_function_test.sql
|
||||
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--revoke execute from public
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "revoke EXECUTE on procedure mysqlschema.definer() from public;revoke EXECUTE on procedure mysqlschema.invoker() from public; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--revoke execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "revoke EXECUTE on procedure mysqlschema.definer() from usr1;revoke EXECUTE on procedure mysqlschema.invoker() from usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--revoke execute from usr2
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "revoke EXECUTE on procedure mysqlschema.definer() from usr2;revoke EXECUTE on procedure mysqlschema.invoker() from usr2; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--grant execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "grant EXECUTE on procedure mysqlschema.definer() to usr1;grant EXECUTE on procedure mysqlschema.invoker() to usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--grant execute from usr2
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "grant EXECUTE on procedure mysqlschema.definer() to usr2;grant EXECUTE on procedure mysqlschema.invoker() to usr2; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--revoke execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "revoke EXECUTE on procedure mysqlschema.definer() from usr1;revoke EXECUTE on procedure mysqlschema.invoker() from usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
\c regression
|
||||
drop database IF EXISTS mysqltest;
|
||||
drop database IF EXISTS mysqltestbak;
|
122
src/test/regress/input/mysql_function_2.source
Normal file
122
src/test/regress/input/mysql_function_2.source
Normal file
@ -0,0 +1,122 @@
|
||||
\c mysqlfunction
|
||||
create schema mysqlschema;
|
||||
grant ALL on SCHEMA mysqlschema to PUBLIC;
|
||||
create user usr1 password '12345@abc';
|
||||
create user usr2 password '12345@abc';
|
||||
--test security--general user create definer function
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -f @abs_srcdir@/sql/mysql_function_test.sql
|
||||
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--revoke execute from public
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "revoke EXECUTE on procedure mysqlschema.definer() from public;revoke EXECUTE on procedure mysqlschema.invoker() from public; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--revoke execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "revoke EXECUTE on procedure mysqlschema.definer() from usr1;revoke EXECUTE on procedure mysqlschema.invoker() from usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--revoke execute from usr2
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "revoke EXECUTE on procedure mysqlschema.definer() from usr2;revoke EXECUTE on procedure mysqlschema.invoker() from usr2; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--grant execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "grant EXECUTE on procedure mysqlschema.definer() to usr1;grant EXECUTE on procedure mysqlschema.invoker() to usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--grant execute from usr2
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "grant EXECUTE on procedure mysqlschema.definer() to usr2;grant EXECUTE on procedure mysqlschema.invoker() to usr2; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--revoke execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "revoke EXECUTE on procedure mysqlschema.definer() from usr1;revoke EXECUTE on procedure mysqlschema.invoker() from usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
|
||||
|
||||
--test security--super user create definer function
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -f @abs_srcdir@/sql/mysql_function_test.sql
|
||||
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--revoke execute from public
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "revoke EXECUTE on procedure mysqlschema.definer() from public;revoke EXECUTE on procedure mysqlschema.invoker() from public; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--revoke execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "revoke EXECUTE on procedure mysqlschema.definer() from usr1;revoke EXECUTE on procedure mysqlschema.invoker() from usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--revoke execute from usr2
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "revoke EXECUTE on procedure mysqlschema.definer() from usr2;revoke EXECUTE on procedure mysqlschema.invoker() from usr2; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--grant execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "grant EXECUTE on procedure mysqlschema.definer() to usr1;grant EXECUTE on procedure mysqlschema.invoker() to usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--grant execute from usr2
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "grant EXECUTE on procedure mysqlschema.definer() to usr2;grant EXECUTE on procedure mysqlschema.invoker() to usr2; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
|
||||
--revoke execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "revoke EXECUTE on procedure mysqlschema.definer() from usr1;revoke EXECUTE on procedure mysqlschema.invoker() from usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
4
src/test/regress/input/mysql_function_clearup.source
Normal file
4
src/test/regress/input/mysql_function_clearup.source
Normal file
@ -0,0 +1,4 @@
|
||||
-- drop database used in mysql_function\mysql_function_2
|
||||
drop database if exists mysqltest;
|
||||
drop database if exists mysqltestbak;
|
||||
drop database if exists mysqlfunction;
|
7
src/test/regress/input/mysql_function_prepare.source
Normal file
7
src/test/regress/input/mysql_function_prepare.source
Normal file
@ -0,0 +1,7 @@
|
||||
-- create database for mysql_function\mysql_function_2
|
||||
drop database if exists mysqltest;
|
||||
drop database if exists mysqltestbak;
|
||||
drop database if exists mysqlfunction;
|
||||
CREATE DATABASE mysqltest DBCOMPATIBILITY 'B';
|
||||
CREATE DATABASE mysqltestbak DBCOMPATIBILITY 'B';
|
||||
CREATE DATABASE mysqlfunction DBCOMPATIBILITY 'B';
|
@ -1,9 +1,4 @@
|
||||
--test create function/procedure definer=user
|
||||
drop database if exists mysqltest;
|
||||
CREATE DATABASE mysqltest DBCOMPATIBILITY 'B';
|
||||
create schema mysqlschema;
|
||||
create user usr1 password '12345@abc';
|
||||
create user usr2 password '12345@abc';
|
||||
--grammar test
|
||||
\c mysqltest
|
||||
create schema mysqlschema;
|
||||
@ -90,7 +85,6 @@ select usename from pg_user where usesysid = (select proowner from pg_proc wher
|
||||
--? .*
|
||||
--? .*
|
||||
--? .*
|
||||
CREATE DATABASE mysqltestbak DBCOMPATIBILITY 'B';
|
||||
-- restore data
|
||||
\! @abs_bindir@/gsql -p @portstring@ -d mysqltestbak -f @abs_bindir@/mysql_function_back.sql
|
||||
--? .*
|
||||
@ -126,634 +120,3 @@ AS DECLARE BEGIN
|
||||
raise info 'create definer procedure.';
|
||||
END;
|
||||
/
|
||||
--test security--general user create definer function
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -f @abs_srcdir@/sql/mysql_function_test.sql
|
||||
gsql:@abs_srcdir@/sql/mysql_function_test.sql:2: NOTICE: function mysqlschema.definer() does not exist, skipping
|
||||
DROP PROCEDURE
|
||||
gsql:@abs_srcdir@/sql/mysql_function_test.sql:3: NOTICE: function mysqlschema.invoker() does not exist, skipping
|
||||
DROP PROCEDURE
|
||||
CREATE PROCEDURE
|
||||
CREATE PROCEDURE
|
||||
--? .*
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--revoke execute from public
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "revoke EXECUTE on procedure mysqlschema.definer() from public;revoke EXECUTE on procedure mysqlschema.invoker() from public; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
REVOKE
|
||||
REVOKE
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--revoke execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "revoke EXECUTE on procedure mysqlschema.definer() from usr1;revoke EXECUTE on procedure mysqlschema.invoker() from usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
REVOKE
|
||||
REVOKE
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--revoke execute from usr2
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "revoke EXECUTE on procedure mysqlschema.definer() from usr2;revoke EXECUTE on procedure mysqlschema.invoker() from usr2; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
REVOKE
|
||||
REVOKE
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
--grant execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "grant EXECUTE on procedure mysqlschema.definer() to usr1;grant EXECUTE on procedure mysqlschema.invoker() to usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
GRANT
|
||||
GRANT
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
--grant execute from usr2
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "grant EXECUTE on procedure mysqlschema.definer() to usr2;grant EXECUTE on procedure mysqlschema.invoker() to usr2; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
GRANT
|
||||
GRANT
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--revoke execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "revoke EXECUTE on procedure mysqlschema.definer() from usr1;revoke EXECUTE on procedure mysqlschema.invoker() from usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
REVOKE
|
||||
REVOKE
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--test security--super user create definer function
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -f @abs_srcdir@/sql/mysql_function_test.sql
|
||||
DROP PROCEDURE
|
||||
DROP PROCEDURE
|
||||
CREATE PROCEDURE
|
||||
CREATE PROCEDURE
|
||||
--? .*
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--revoke execute from public
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "revoke EXECUTE on procedure mysqlschema.definer() from public;revoke EXECUTE on procedure mysqlschema.invoker() from public; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
REVOKE
|
||||
REVOKE
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--revoke execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "revoke EXECUTE on procedure mysqlschema.definer() from usr1;revoke EXECUTE on procedure mysqlschema.invoker() from usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
REVOKE
|
||||
REVOKE
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--revoke execute from usr2
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "revoke EXECUTE on procedure mysqlschema.definer() from usr2;revoke EXECUTE on procedure mysqlschema.invoker() from usr2; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
REVOKE
|
||||
REVOKE
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
--grant execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "grant EXECUTE on procedure mysqlschema.definer() to usr1;grant EXECUTE on procedure mysqlschema.invoker() to usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
GRANT
|
||||
GRANT
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
--grant execute from usr2
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "grant EXECUTE on procedure mysqlschema.definer() to usr2;grant EXECUTE on procedure mysqlschema.invoker() to usr2; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
GRANT
|
||||
GRANT
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--revoke execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -c "revoke EXECUTE on procedure mysqlschema.definer() from usr1;revoke EXECUTE on procedure mysqlschema.invoker() from usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
REVOKE
|
||||
REVOKE
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqltest -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
\c regression
|
||||
drop database IF EXISTS mysqltest;
|
||||
drop database IF EXISTS mysqltestbak;
|
||||
|
633
src/test/regress/output/mysql_function_2.source
Normal file
633
src/test/regress/output/mysql_function_2.source
Normal file
@ -0,0 +1,633 @@
|
||||
\c mysqlfunction
|
||||
create schema mysqlschema;
|
||||
grant ALL on SCHEMA mysqlschema to PUBLIC;
|
||||
create user usr1 password '12345@abc';
|
||||
create user usr2 password '12345@abc';
|
||||
--test security--general user create definer function
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -f @abs_srcdir@/sql/mysql_function_test.sql
|
||||
gsql:@abs_srcdir@/sql/mysql_function_test.sql:2: NOTICE: function mysqlschema.definer() does not exist, skipping
|
||||
DROP PROCEDURE
|
||||
gsql:@abs_srcdir@/sql/mysql_function_test.sql:3: NOTICE: function mysqlschema.invoker() does not exist, skipping
|
||||
DROP PROCEDURE
|
||||
CREATE PROCEDURE
|
||||
CREATE PROCEDURE
|
||||
--? .*
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--revoke execute from public
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "revoke EXECUTE on procedure mysqlschema.definer() from public;revoke EXECUTE on procedure mysqlschema.invoker() from public; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
REVOKE
|
||||
REVOKE
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--revoke execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "revoke EXECUTE on procedure mysqlschema.definer() from usr1;revoke EXECUTE on procedure mysqlschema.invoker() from usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
REVOKE
|
||||
REVOKE
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--revoke execute from usr2
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "revoke EXECUTE on procedure mysqlschema.definer() from usr2;revoke EXECUTE on procedure mysqlschema.invoker() from usr2; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
REVOKE
|
||||
REVOKE
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
--grant execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "grant EXECUTE on procedure mysqlschema.definer() to usr1;grant EXECUTE on procedure mysqlschema.invoker() to usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
GRANT
|
||||
GRANT
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
--grant execute from usr2
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "grant EXECUTE on procedure mysqlschema.definer() to usr2;grant EXECUTE on procedure mysqlschema.invoker() to usr2; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
GRANT
|
||||
GRANT
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--revoke execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "revoke EXECUTE on procedure mysqlschema.definer() from usr1;revoke EXECUTE on procedure mysqlschema.invoker() from usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
REVOKE
|
||||
REVOKE
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--test security--super user create definer function
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -f @abs_srcdir@/sql/mysql_function_test.sql
|
||||
DROP PROCEDURE
|
||||
DROP PROCEDURE
|
||||
CREATE PROCEDURE
|
||||
CREATE PROCEDURE
|
||||
--? .*
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--revoke execute from public
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "revoke EXECUTE on procedure mysqlschema.definer() from public;revoke EXECUTE on procedure mysqlschema.invoker() from public; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
REVOKE
|
||||
REVOKE
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--revoke execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "revoke EXECUTE on procedure mysqlschema.definer() from usr1;revoke EXECUTE on procedure mysqlschema.invoker() from usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
REVOKE
|
||||
REVOKE
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--revoke execute from usr2
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "revoke EXECUTE on procedure mysqlschema.definer() from usr2;revoke EXECUTE on procedure mysqlschema.invoker() from usr2; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
REVOKE
|
||||
REVOKE
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
--grant execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "grant EXECUTE on procedure mysqlschema.definer() to usr1;grant EXECUTE on procedure mysqlschema.invoker() to usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
GRANT
|
||||
GRANT
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
ERROR: permission denied for function definer
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: definer
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
--grant execute from usr2
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "grant EXECUTE on procedure mysqlschema.definer() to usr2;grant EXECUTE on procedure mysqlschema.invoker() to usr2; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
GRANT
|
||||
GRANT
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
--revoke execute from usr1
|
||||
--super user opengauss execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -c "revoke EXECUTE on procedure mysqlschema.definer() from usr1;revoke EXECUTE on procedure mysqlschema.invoker() from usr1; select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
REVOKE
|
||||
REVOKE
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- usr1 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr1 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
ERROR: permission denied for function invoker
|
||||
DETAIL: N/A
|
||||
CONTEXT: referenced column: invoker
|
||||
-- usr2 execute
|
||||
\! @abs_bindir@/gsql -r -p @portstring@ -d mysqlfunction -U usr2 -W '12345@abc' -c "select mysqlschema.definer(); select mysqlschema.invoker()"
|
||||
INFO: create definer procedure.
|
||||
CONTEXT: referenced column: definer
|
||||
definer
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
||||
INFO: create invoker procedure.
|
||||
CONTEXT: referenced column: invoker
|
||||
invoker
|
||||
---------
|
||||
|
||||
(1 row)
|
||||
|
4
src/test/regress/output/mysql_function_clearup.source
Normal file
4
src/test/regress/output/mysql_function_clearup.source
Normal file
@ -0,0 +1,4 @@
|
||||
-- drop database used in mysql_function\mysql_function_2
|
||||
drop database if exists mysqltest;
|
||||
drop database if exists mysqltestbak;
|
||||
drop database if exists mysqlfunction;
|
9
src/test/regress/output/mysql_function_prepare.source
Normal file
9
src/test/regress/output/mysql_function_prepare.source
Normal file
@ -0,0 +1,9 @@
|
||||
-- create database for mysql_function\mysql_function_2
|
||||
drop database if exists mysqltest;
|
||||
drop database if exists mysqltestbak;
|
||||
NOTICE: database "mysqltestbak" does not exist, skipping
|
||||
drop database if exists mysqlfunction;
|
||||
NOTICE: database "mysqlfunction" does not exist, skipping
|
||||
CREATE DATABASE mysqltest DBCOMPATIBILITY 'B';
|
||||
CREATE DATABASE mysqltestbak DBCOMPATIBILITY 'B';
|
||||
CREATE DATABASE mysqlfunction DBCOMPATIBILITY 'B';
|
@ -1022,14 +1022,15 @@ test: subscription
|
||||
test: fdw_audit
|
||||
test: gs_global_config_audit
|
||||
test: detail declare_multiple_variable
|
||||
test: gs_dump_encrypt substr
|
||||
test: composite_datum_record mysql_function b_comments mysql_syntax mysql_condition mysql_delimiter mysql_delimiter_fix mysql_indexhint mysql_trigger
|
||||
# mysql_function_prepare must precede mysql_function/mysql_function_2, and mysql_function_clearup must follow mysql_function/mysql_function_2
|
||||
test: gs_dump_encrypt substr mysql_function_prepare
|
||||
test: composite_datum_record mysql_function mysql_function_2 b_comments mysql_syntax mysql_condition mysql_delimiter mysql_delimiter_fix mysql_indexhint mysql_trigger
|
||||
|
||||
test: join_test_alias alter_ctable_compress
|
||||
test: ignore/ignore_type_transform ignore/ignore_not_null_constraints ignore/ignore_unique_constraints ignore/ignore_no_matched_partition ignore/ignore_invalid_input
|
||||
|
||||
test: pg_ls_dir
|
||||
test: cost_model
|
||||
test: mysql_function_clearup cost_model
|
||||
test: base_update
|
||||
test: seqscan_fusion
|
||||
|
||||
|
Reference in New Issue
Block a user