当我运行以下查询时,
select * from stl_query q
join pg_user u on q.userid = u.usesysid
where u.usename = 'admin';
我收到以下错误:
SQL Error [500310] [0A000]: [Amazon](500310) Invalid operation: Specified types or functions (one per INFO message) not supported on Redshift tables.;
查询在领导节点上运行。我做错了什么?
答案 0 :(得分:2)
pg_user是Leader Node-Only功能,不能与非Leader Node-only的功能混合使用。
来自文档:
只有领导者才支持某些Amazon Redshift SQL功能 节点,计算节点不支持。使用a的查询 leader-node函数必须专门在leader节点上执行,而不是 在计算节点上,否则它将返回错误。
每个仅限节点的节点功能的文档包括一个注释 声明函数会在引用时返回错误 用户定义的表或Amazon Redshift系统表。
来源:http://docs.aws.amazon.com/redshift/latest/dg/c_SQL_functions_leader_node_only.html
作为场景中的解决方法,您可以使用所需的pg_user数据子集生成临时表,然后加入该临时表。
select usesysid
into temp table tmp_user
from pg_user
where usename = 'admin';
select * from stl_query q
inner join tmp_user u on q.userid = u.usesysid;