Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
d05b4bd7
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d05b4bd7
编写于
5月 03, 2001
作者:
T
Tom Lane
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Permission checking wasn't quite right for insert/update/delete rules,
either :-(.
上级
c434ae35
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
12 addition
and
13 deletion
+12
-13
src/backend/rewrite/rewriteDefine.c
src/backend/rewrite/rewriteDefine.c
+12
-13
未找到文件。
src/backend/rewrite/rewriteDefine.c
浏览文件 @
d05b4bd7
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteDefine.c,v 1.6
1 2001/03/23 04:49:54 momjian
Exp $
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteDefine.c,v 1.6
2 2001/05/03 21:16:48 tgl
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -377,7 +377,7 @@ DefineQueryRewrite(RuleStmt *stmt)
* We want the rule's table references to be checked as though by the
* rule owner, not the user referencing the rule. Therefore, scan
* through the rule's rtables and set the checkAsUser field on all
* rtable entries
(except *OLD* and *NEW*)
.
* rtable entries.
*/
foreach
(
l
,
action
)
{
...
...
@@ -426,29 +426,28 @@ DefineQueryRewrite(RuleStmt *stmt)
/*
* setRuleCheckAsUser
* Recursively scan a query and set the checkAsUser field to the
* given userid in all rtable entries except *OLD* and *NEW*.
* given userid in all rtable entries.
*
* Note: for a view (ON SELECT rule), the checkAsUser field of the *OLD*
* RTE entry will be overridden when the view rule is expanded, and the
* checkAsUser field of the *NEW* entry is irrelevant because that entry's
* checkFor bits will never be set. However, for other types of rules it's
* important to set these fields to match the rule owner. So we just set
* them always.
*/
static
void
setRuleCheckAsUser
(
Query
*
qry
,
Oid
userid
)
{
List
*
l
;
/* Set all the RTEs in this query node
, except OLD and NEW
*/
/* Set all the RTEs in this query node */
foreach
(
l
,
qry
->
rtable
)
{
RangeTblEntry
*
rte
=
(
RangeTblEntry
*
)
lfirst
(
l
);
if
(
strcmp
(
rte
->
eref
->
relname
,
"*NEW*"
)
==
0
)
continue
;
if
(
strcmp
(
rte
->
eref
->
relname
,
"*OLD*"
)
==
0
)
continue
;
if
(
rte
->
subquery
)
{
/*
* Recurse into subquery in FROM
*/
/* Recurse into subquery in FROM */
setRuleCheckAsUser
(
rte
->
subquery
,
userid
);
}
else
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录