Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

在领导节点上支持的 SQL 函数

一些 Amazon Redshift 查询是在计算节点上分发和执行的,而另一些查询是在领导节点上以独占方式执行的。

每当查询引用用户创建的表或系统表(具有 STL 或 STV 前缀的表和具有 SVL 或 SVV 前缀的系统视图)时,领导节点就会将 SQL 分发到计算节点。仅引用目录表(驻留在领导节点上的、具有 PG 前缀的表,如 PG_TABLE_DEF)或不引用任何表的查询在领导节点上以独占方式运行。

部分 Amazon Redshift SQL 函数仅在领导节点上受支持,在计算节点上不受支持。使用领导节点函数的查询必须在领导节点上而不是计算节点上以独占方式执行,否则它将返回错误。

必须在领导节点上以独占方式运行的每个函数的文档包含一个注释,指示该函数将在引用用户定义的表或 Amazon Redshift 系统表时返回错误。有关在领导节点上以独占方式运行的函数的列表,请参阅仅领导节点函数

示例

CURRENT_SCHEMA 函数是仅适用于领导节点的函数。在此示例中,查询不会引用表,因此它将在领导节点上以独占方式运行。

Copy
select current_schema();

结果如下所示。

Copy
current_schema --------------- public (1 row)

在下一个示例中,查询引用系统目录表,因此它将在领导节点上以独占方式运行。

Copy
select * from pg_table_def where schemaname = current_schema() limit 1; schemaname | tablename | column | type | encoding | distkey | sortkey | notnull ------------+-----------+--------+----------+----------+---------+---------+--------- public | category | catid | smallint | none | t | 1 | t (1 row)

在下一个示例中,查询引用驻留在计算节点上的 Amazon Redshift 系统表,因此它将返回错误。

Copy
select current_schema(), userid from users; INFO: Function "current_schema()" not supported. ERROR: Specified types or functions (one per INFO message) not supported on Amazon Redshift tables.

本页内容: