diff --git a/src/test/regress/input/mysql_function.source b/src/test/regress/input/mysql_function.source index 4c5011cba..8ce20c189 100644 --- a/src/test/regress/input/mysql_function.source +++ b/src/test/regress/input/mysql_function.source @@ -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; \ No newline at end of file diff --git a/src/test/regress/input/mysql_function_2.source b/src/test/regress/input/mysql_function_2.source new file mode 100644 index 000000000..eb7b8e87d --- /dev/null +++ b/src/test/regress/input/mysql_function_2.source @@ -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()" \ No newline at end of file diff --git a/src/test/regress/input/mysql_function_clearup.source b/src/test/regress/input/mysql_function_clearup.source new file mode 100644 index 000000000..8abfc4fd1 --- /dev/null +++ b/src/test/regress/input/mysql_function_clearup.source @@ -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; diff --git a/src/test/regress/input/mysql_function_prepare.source b/src/test/regress/input/mysql_function_prepare.source new file mode 100644 index 000000000..fcb8bf523 --- /dev/null +++ b/src/test/regress/input/mysql_function_prepare.source @@ -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'; diff --git a/src/test/regress/output/mysql_function.source b/src/test/regress/output/mysql_function.source index f2b81daa7..e53abd07e 100755 --- a/src/test/regress/output/mysql_function.source +++ b/src/test/regress/output/mysql_function.source @@ -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; diff --git a/src/test/regress/output/mysql_function_2.source b/src/test/regress/output/mysql_function_2.source new file mode 100644 index 000000000..291d85a0a --- /dev/null +++ b/src/test/regress/output/mysql_function_2.source @@ -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) + diff --git a/src/test/regress/output/mysql_function_clearup.source b/src/test/regress/output/mysql_function_clearup.source new file mode 100644 index 000000000..8abfc4fd1 --- /dev/null +++ b/src/test/regress/output/mysql_function_clearup.source @@ -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; diff --git a/src/test/regress/output/mysql_function_prepare.source b/src/test/regress/output/mysql_function_prepare.source new file mode 100644 index 000000000..12ce0b83c --- /dev/null +++ b/src/test/regress/output/mysql_function_prepare.source @@ -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'; diff --git a/src/test/regress/parallel_schedule0 b/src/test/regress/parallel_schedule0 index 2d6888637..d6477cc44 100644 --- a/src/test/regress/parallel_schedule0 +++ b/src/test/regress/parallel_schedule0 @@ -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