GRANT(用户定义的扩展)
语法
GRANT { privilege[,...] | ALL [ PRIVILEGES ] [ EXTEND ] }
ON {
UDx‑type [[database.]schema.]function( [arg‑list] )[,...]
| ALL FUNCTIONS IN SCHEMA schema[,...] }
TO grantee[,...]
[ WITH GRANT OPTION ]
参数
- privilege
- 以下权限对用户定义的扩展有效:
注意
用户只能调用他们对其具有 EXECUTE 权限和对其架构具有 USAGE 权限的 UDx 函数。 ALL [PRIVILEGES] [EXTEND]
- 授予同时属于授予者的所有函数权限。授予者不能授予其自身缺少的权限
您可以使用两个可选关键字限定
ALL
:-
PRIVILEGES
符合 SQL 标准。 -
EXTEND
扩展ALL
的语义以包括 ALTER 和 DROP 权限。未限定的ALL
会排除这两个权限。此选项可向后兼容 9.2.1 之前的 Vertica 版本中的GRANT ALL
用法。
-
-
ON UDx‑type
- 用户定义的扩展 (UDx) 的类型,为以下几项之一:
-
FUNCTION
(标量函数) -
AGGREGATE FUNCTION
-
ANALYTIC FUNCTION
-
TRANSFORM FUNCTION
-
FILTER
-
PARSER
-
SOURCE
-
-
[database.]schema
数据库和架构。默认架构为
public
。如果指定一个数据库,它必须是当前数据库。- function
- 要授予其权限的用户定义函数的名称。
-
ON ALL FUNCTIONS IN SCHEMAschema
- 授予对指定架构中所有函数的权限。
- arg-list
- 对所有多态函数都是必需的,是一个逗号分隔的函数实参列表,其中每个实参指定如下:
[ argname ] argtype
如果过程未定义实参,请提供一个空的实参列表。
- grantee
指定向谁授予权限,可以为以下值之一:
注意
被授予者必须对架构具有USAGE
权限。WITH GRANT OPTION
授予被授予者权限,以便将相同权限授予其他用户或角色的,也可以撤销它们。有关详细信息,请参阅授予权限。
非超级用户需要对架构的 USAGE 权限和以下权限之一:
-
所有者
-
权限被授予者可以选择 (
WITH GRANT OPTION
) 将权限授予其他用户或角色。
示例
将 myzeroifnull
SQL 函数的 EXECUTE
权限授予用户 Bob
和 Jules
以及角色 Operator
。该函数需要一个整数参数:
=> GRANT EXECUTE ON FUNCTION myzeroifnull (x INT) TO Bob, Jules, Operator;
将 zero-schema
架构中所有函数的 EXECUTE
权限授予用户 Bob
:
=> GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA zero-schema TO Bob;
将tokenize
转换函数的 EXECUTE
权限授予用户 Bob
和角色 Operator
:
=> GRANT EXECUTE ON TRANSFORM FUNCTION tokenize(VARCHAR) TO Bob, Operator;
将 ExampleSource()
源的 EXECUTE
权限授予用户 Alice
:
=> CREATE USER Alice;
=> GRANT USAGE ON SCHEMA hdfs TO Alice;
=> GRANT EXECUTE ON SOURCE ExampleSource() TO Alice;
将 ExampleSource()
源的所有权限授予用户 Alice
:
=> GRANT ALL ON SOURCE ExampleSource() TO Alice;
将多态函数 Pagerank
的所有权限授予 dbadmin 角色:
=> GRANT ALL ON TRANSFORM FUNCTION Pagerank(z varchar) to dbadmin;