GRANT(用户定义的扩展)

用户定义的扩展 (UDx) 的权限授予用户角色

语法

GRANT { privilege[,...] | ALL [ PRIVILEGES ] [ EXTEND ] }
   ON {
       UDx‑type [[database.]schema.]function( [arg‑list] )[,...]
       | ALL FUNCTIONS IN SCHEMA schema[,...] }
   TO grantee[,...]
   [ WITH GRANT OPTION ]

参数

privilege
以下权限对用户定义的扩展有效:
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

指定向谁授予权限,可以为以下值之一:

WITH GRANT OPTION

授予被授予者权限,以便将相同权限授予其他用户或角色的,也可以撤销它们。有关详细信息,请参阅授予权限

非超级用户需要对架构的 USAGE 权限和以下权限之一:

  • 所有者

  • 权限被授予者可以选择 (WITH GRANT OPTION) 将权限授予其他用户或角色。

示例

myzeroifnullSQL 函数的 EXECUTE 权限授予用户 BobJules 以及角色 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;

另请参阅