Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
7c6baade
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,发现更多精彩内容 >>
提交
7c6baade
编写于
5月 07, 2004
作者:
N
Neil Conway
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactor CheckDropPermissions() to move some initialization code for
printing the proper error message out of the common path.
上级
d9050578
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
30 addition
and
12 deletion
+30
-12
src/backend/tcop/utility.c
src/backend/tcop/utility.c
+30
-12
未找到文件。
src/backend/tcop/utility.c
浏览文件 @
7c6baade
...
...
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/tcop/utility.c,v 1.21
4 2004/05/05 04:48:46 tgl
Exp $
* $PostgreSQL: pgsql/src/backend/tcop/utility.c,v 1.21
5 2004/05/07 19:12:26 neilc
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -99,8 +99,12 @@ static const struct msgstrings msgstringarray[] = {
};
/*
* Emit the right error message for a "DROP" command issued on a
* relation of the wrong type
*/
static
void
DropErrorMsg
(
char
*
relname
,
char
wrongkind
,
char
rightkind
)
DropErrorMsg
WrongType
(
char
*
relname
,
char
wrongkind
,
char
rightkind
)
{
const
struct
msgstrings
*
rentry
;
const
struct
msgstrings
*
wentry
;
...
...
@@ -121,24 +125,37 @@ DropErrorMsg(char *relname, char wrongkind, char rightkind)
(
wentry
->
kind
!=
'\0'
)
?
errhint
(
wentry
->
drophint_msg
)
:
0
));
}
/*
* Emit the right error message for a "DROP" command issued on a
* non-existent relation
*/
static
void
CheckDropPermissions
(
RangeVar
*
rel
,
char
rightkind
)
DropErrorMsgNonExistent
(
RangeVar
*
rel
,
char
rightkind
)
{
const
struct
msgstrings
*
rentry
;
Oid
relOid
;
HeapTuple
tuple
;
Form_pg_class
classform
;
for
(
rentry
=
msgstringarray
;
rentry
->
kind
!=
'\0'
;
rentry
++
)
{
if
(
rentry
->
kind
==
rightkind
)
break
;
Assert
(
rentry
->
kind
!=
'\0'
);
ereport
(
ERROR
,
(
errcode
(
rentry
->
nonexistent_code
),
errmsg
(
rentry
->
nonexistent_msg
,
rel
->
relname
)));
}
Assert
(
false
);
/* Should be impossible */
}
static
void
CheckDropPermissions
(
RangeVar
*
rel
,
char
rightkind
)
{
Oid
relOid
;
HeapTuple
tuple
;
Form_pg_class
classform
;
relOid
=
RangeVarGetRelid
(
rel
,
true
);
if
(
!
OidIsValid
(
relOid
))
ereport
(
ERROR
,
(
errcode
(
rentry
->
nonexistent_code
),
errmsg
(
rentry
->
nonexistent_msg
,
rel
->
relname
)));
DropErrorMsgNonExistent
(
rel
,
rightkind
);
tuple
=
SearchSysCache
(
RELOID
,
ObjectIdGetDatum
(
relOid
),
0
,
0
,
0
);
...
...
@@ -148,7 +165,8 @@ CheckDropPermissions(RangeVar *rel, char rightkind)
classform
=
(
Form_pg_class
)
GETSTRUCT
(
tuple
);
if
(
classform
->
relkind
!=
rightkind
)
DropErrorMsg
(
rel
->
relname
,
classform
->
relkind
,
rightkind
);
DropErrorMsgWrongType
(
rel
->
relname
,
classform
->
relkind
,
rightkind
);
/* Allow DROP to either table owner or schema owner */
if
(
!
pg_class_ownercheck
(
relOid
,
GetUserId
())
&&
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录