Permissions 重新移位授予验证有\u表\u权限失败

Permissions 重新移位授予验证有\u表\u权限失败,permissions,amazon-redshift,grant,Permissions,Amazon Redshift,Grant,我正在用组、模式和默认权限与Redshit授权进行斗争。 当我尝试使用HAS_TABLE_权限检查所有内容是否正确时 select tablename, HAS_TABLE_PRIVILEGE('analyst', tablename, 'select') as select, HAS_TABLE_PRIVILEGE('analyst', tablename, 'insert') as insert, HAS_TABLE_PRIVILEGE('analyst', tablen

我正在用组、模式和默认权限与Redshit授权进行斗争。 当我尝试使用HAS_TABLE_权限检查所有内容是否正确时

select tablename, 
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'select') as select,
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'insert') as insert,
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'update') as update,
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'delete') as delete, 
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'references') as references 
from pg_tables
where schemaname='datalab'
order by tablename
我明白了:

An error occurred when executing the SQL command:
select tablename, 
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'select') as select,
   HAS_TABLE_PRIVILEGE('analyst', tablena...

[Amazon](500310) Invalid operation: relation "dss__transaction" does not exist;

Execution time: 0.2s
1 statement failed.

这里到底发生了什么事?

我尝试了这个方法,但是对
pg\u表的第一个结果的查询失败了。在我的例子中,这是因为我需要显式地声明每个表所处的模式。这对我很有用:

WITH cte AS 
(
SELECT schemaname+'.'+tablename AS table_name
FROM pg_tables
WHERE schemaname = 'datalab'
)
SELECT table_name, 
   HAS_TABLE_PRIVILEGE('analyst', table_name, 'select') AS select,
   HAS_TABLE_PRIVILEGE('analyst', table_name, 'insert') AS insert,
   HAS_TABLE_PRIVILEGE('analyst', table_name, 'update') AS update,
   HAS_TABLE_PRIVILEGE('analyst', table_name, 'delete') AS delete, 
   HAS_TABLE_PRIVILEGE('analyst', table_name, 'references') AS references 
FROM cte
ORDER BY table_name ASC;