Postgresql Postgres行级安全策略条件中的聚合/窗口函数限制
我已经成功地使用了一个稠密的排名超过订单。。。 哪一个AFAIK是postgres行级安全策略条件下的窗口函数 然而,美国 返回布尔值的任何SQL条件表达式。条件表达式不能包含任何聚合函数或窗口函数 重点是我的 有人能解释一下这个限制并举例说明它的适用范围吗Postgresql Postgres行级安全策略条件中的聚合/窗口函数限制,postgresql,window-functions,row-level-security,Postgresql,Window Functions,Row Level Security,我已经成功地使用了一个稠密的排名超过订单。。。 哪一个AFAIK是postgres行级安全策略条件下的窗口函数 然而,美国 返回布尔值的任何SQL条件表达式。条件表达式不能包含任何聚合函数或窗口函数 重点是我的 有人能解释一下这个限制并举例说明它的适用范围吗 谢谢。基本上,它告诉您每一行在行级安全性方面是独立的 考虑下表: +---------------------+----------------+ | field1 | field2 | +----
谢谢。基本上,它告诉您每一行在行级安全性方面是独立的 考虑下表:
+---------------------+----------------+
| field1 | field2 |
+---------------------+----------------+
| value1 | 1 |
| value1 | 2 |
| value1 | 3 |
| value2 | 4 |
+---------------------+----------------+
有几种许可政策:
字段1='value1'
字段1='value2'
SUMfield2>10禁止,但现在让我们想象一下,您可以定义它
您被授予了策略2和3,因此您只能查看和更新最后一条记录。
... 直到执行更新表集合值2=11
这在以下方面非常糟糕:
安全您可以以用户而不是管理员的身份授予自己对记录的访问权限。
维修记录会在这样的数据库中随机出现/消失。
表演这样的政策要评估的成本非常大。
有趣的是,您可以在从MyOtherTable中选择MyOtherField中将策略定义为MyField,在这种情况下,它完全依赖于您在MyOtherTable上定义的内容—它打算与FK/PK一起使用。这非常有意义。我对稠密_秩的使用在EXISTS中,因此我假设它是一个有效的用法。谢谢您的意思是在常规查询中的EXISTS中?在MyTable上创建策略。。。正在使用“从选择中选择1…”。。。密级超过。。。从表k计算出的\u rk,其中计算出的\u rk=1…有趣。。。这是一个复杂的问题。