split mysql_function usecase
This commit is contained in:
@ -1,9 +1,4 @@
|
|||||||
--test create function/procedure definer=user
|
--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
|
--grammar test
|
||||||
\c mysqltest
|
\c mysqltest
|
||||||
create schema mysqlschema;
|
create schema mysqlschema;
|
||||||
@ -69,131 +64,8 @@ select usename from pg_user where usesysid = (select proowner from pg_proc wher
|
|||||||
-- dump function
|
-- dump function
|
||||||
\! @abs_bindir@/gs_dump mysqltest -p @portstring@ -f @abs_bindir@/mysql_function_back.sql
|
\! @abs_bindir@/gs_dump mysqltest -p @portstring@ -f @abs_bindir@/mysql_function_back.sql
|
||||||
|
|
||||||
CREATE DATABASE mysqltestbak DBCOMPATIBILITY 'B';
|
|
||||||
-- restore data
|
-- restore data
|
||||||
\! @abs_bindir@/gsql -p @portstring@ -d mysqltestbak -f @abs_bindir@/mysql_function_back.sql
|
\! @abs_bindir@/gsql -p @portstring@ -d mysqltestbak -f @abs_bindir@/mysql_function_back.sql
|
||||||
|
|
||||||
\c mysqltestbak
|
\c mysqltestbak
|
||||||
\sf proc_definer1
|
\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
|
--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
|
--grammar test
|
||||||
\c mysqltest
|
\c mysqltest
|
||||||
create schema mysqlschema;
|
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
|
-- restore data
|
||||||
\! @abs_bindir@/gsql -p @portstring@ -d mysqltestbak -f @abs_bindir@/mysql_function_back.sql
|
\! @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.';
|
raise info 'create definer procedure.';
|
||||||
END;
|
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: fdw_audit
|
||||||
test: gs_global_config_audit
|
test: gs_global_config_audit
|
||||||
test: detail declare_multiple_variable
|
test: detail declare_multiple_variable
|
||||||
test: gs_dump_encrypt substr
|
# mysql_function_prepare must precede mysql_function/mysql_function_2, and mysql_function_clearup must follow mysql_function/mysql_function_2
|
||||||
test: composite_datum_record mysql_function b_comments mysql_syntax mysql_condition mysql_delimiter mysql_delimiter_fix mysql_indexhint mysql_trigger
|
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: 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: 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: pg_ls_dir
|
||||||
test: cost_model
|
test: mysql_function_clearup cost_model
|
||||||
test: base_update
|
test: base_update
|
||||||
test: seqscan_fusion
|
test: seqscan_fusion
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user