Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
4355d4fb
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,发现更多精彩内容 >>
提交
4355d4fb
编写于
6月 29, 2003
作者:
P
Peter Eisentraut
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Information schema views for group privileges, some corrections on column
privileges.
上级
ae20518c
变更
2
展开全部
显示空白变更内容
内联
并排
Showing
2 changed file
with
734 addition
and
43 deletion
+734
-43
doc/src/sgml/information_schema.sgml
doc/src/sgml/information_schema.sgml
+536
-17
src/backend/catalog/information_schema.sql
src/backend/catalog/information_schema.sql
+198
-26
未找到文件。
doc/src/sgml/information_schema.sgml
浏览文件 @
4355d4fb
此差异已折叠。
点击以展开。
src/backend/catalog/information_schema.sql
浏览文件 @
4355d4fb
...
...
@@ -4,7 +4,7 @@
*
* Copyright 2003, PostgreSQL Global Development Group
*
* $Id: information_schema.sql,v 1.1
1 2003/06/29 10:18:26
petere Exp $
* $Id: information_schema.sql,v 1.1
2 2003/06/29 15:14:41
petere Exp $
*/
/*
...
...
@@ -75,6 +75,24 @@ CREATE DOMAIN time_stamp AS timestamp(2)
DEFAULT
current_timestamp
(
2
);
/*
* 20.9
* APPLICABLE_ROLES view
*/
CREATE
VIEW
applicable_roles
AS
SELECT
CAST
(
current_user
AS
sql_identifier
)
AS
grantee
,
CAST
(
g
.
groname
AS
sql_identifier
)
AS
role_name
,
CAST
(
'NO'
AS
character_data
)
AS
is_grantable
FROM
pg_group
g
,
pg_user
u
WHERE
u
.
usesysid
=
ANY
(
g
.
grolist
)
AND
u
.
usename
=
current_user
;
GRANT
SELECT
ON
applicable_roles
TO
PUBLIC
;
/*
* 20.13
* CHECK_CONSTRAINTS view
...
...
@@ -137,7 +155,7 @@ GRANT SELECT ON column_domain_usage TO PUBLIC;
CREATE
VIEW
column_privileges
AS
SELECT
CAST
(
u_grantor
.
usename
AS
sql_identifier
)
AS
grantor
,
CAST
(
u_grantee
.
use
name
AS
sql_identifier
)
AS
grantee
,
CAST
(
grantee
.
name
AS
sql_identifier
)
AS
grantee
,
CAST
(
current_database
()
AS
sql_identifier
)
AS
table_catalog
,
CAST
(
nc
.
nspname
AS
sql_identifier
)
AS
table_schema
,
CAST
(
c
.
relname
AS
sql_identifier
)
AS
table_name
,
...
...
@@ -145,16 +163,21 @@ CREATE VIEW column_privileges AS
CAST
(
pr
.
type
AS
character_data
)
AS
privilege_type
,
CAST
(
CASE
WHEN
aclcontains
(
c
.
relacl
,
makeaclitem
(
u_grantee
.
usesysid
,
0
,
u_grantor
.
usesysid
,
pr
.
type
,
true
))
makeaclitem
(
grantee
.
usesysid
,
grantee
.
grosysid
,
u_grantor
.
usesysid
,
pr
.
type
,
true
))
THEN
'YES'
ELSE
'NO'
END
AS
character_data
)
AS
is_grantable
FROM
pg_attribute
a
,
pg_class
c
,
pg_namespace
nc
,
pg_user
u_grantor
,
(
SELECT
usesysid
,
usename
FROM
pg_user
UNION
SELECT
0
,
'PUBLIC'
)
AS
u_grantee
,
(
SELECT
'SELECT'
UNION
SELECT
'DELETE'
UNION
SELECT
'INSERT'
UNION
SELECT
'UPDATE'
UNION
SELECT
'REFERENCES'
UNION
SELECT
'TRIGGER'
)
AS
pr
(
type
)
(
SELECT
usesysid
,
0
,
usename
FROM
pg_user
UNION
SELECT
0
,
grosysid
,
groname
FROM
pg_group
UNION
SELECT
0
,
0
,
'PUBLIC'
)
AS
grantee
(
usesysid
,
grosysid
,
name
),
(
SELECT
'SELECT'
UNION
SELECT
'INSERT'
UNION
SELECT
'UPDATE'
UNION
SELECT
'REFERENCES'
)
AS
pr
(
type
)
WHERE
a
.
attrelid
=
c
.
oid
AND
c
.
relnamespace
=
nc
.
oid
...
...
@@ -162,10 +185,10 @@ CREATE VIEW column_privileges AS
AND
NOT
a
.
attisdropped
AND
c
.
relkind
IN
(
'r'
,
'v'
)
AND
aclcontains
(
c
.
relacl
,
makeaclitem
(
u_grantee
.
usesysid
,
0
,
u_grantor
.
usesysid
,
pr
.
type
,
false
))
makeaclitem
(
grantee
.
usesysid
,
grantee
.
grosysid
,
u_grantor
.
usesysid
,
pr
.
type
,
false
))
AND
(
u_grantor
.
usename
=
current_user
OR
u_grantee
.
use
name
=
current_user
OR
u_grantee
.
use
name
=
'PUBLIC'
);
OR
grantee
.
name
=
current_user
OR
grantee
.
name
=
'PUBLIC'
);
GRANT
SELECT
ON
column_privileges
TO
PUBLIC
;
...
...
@@ -355,10 +378,7 @@ CREATE VIEW columns AS
OR
has_table_privilege
(
c
.
oid
,
'SELECT'
)
OR
has_table_privilege
(
c
.
oid
,
'INSERT'
)
OR
has_table_privilege
(
c
.
oid
,
'UPDATE'
)
OR
has_table_privilege
(
c
.
oid
,
'DELETE'
)
OR
has_table_privilege
(
c
.
oid
,
'RULE'
)
OR
has_table_privilege
(
c
.
oid
,
'RERERENCES'
)
OR
has_table_privilege
(
c
.
oid
,
'TRIGGER'
)
);
OR
has_table_privilege
(
c
.
oid
,
'RERERENCES'
)
);
GRANT
SELECT
ON
columns
TO
PUBLIC
;
...
...
@@ -609,6 +629,20 @@ GRANT SELECT ON domains TO PUBLIC;
-- 20.27 ELEMENT_TYPES view appears later.
/*
* 20.28
* ENABLED_ROLES view
*/
CREATE
VIEW
enabled_roles
AS
SELECT
CAST
(
g
.
groname
AS
sql_identifier
)
AS
role_name
FROM
pg_group
g
,
pg_user
u
WHERE
u
.
usesysid
=
ANY
(
g
.
grolist
)
AND
u
.
usename
=
current_user
;
GRANT
SELECT
ON
enabled_roles
TO
PUBLIC
;
/*
* 20.30
* KEY_COLUMN_USAGE view
...
...
@@ -761,6 +795,132 @@ CREATE VIEW referential_constraints AS
GRANT
SELECT
ON
referential_constraints
TO
PUBLIC
;
/*
* 20.36
* ROLE_COLUMN_GRANTS view
*/
CREATE
VIEW
role_column_grants
AS
SELECT
CAST
(
u_grantor
.
usename
AS
sql_identifier
)
AS
grantor
,
CAST
(
g_grantee
.
groname
AS
sql_identifier
)
AS
grantee
,
CAST
(
current_database
()
AS
sql_identifier
)
AS
table_catalog
,
CAST
(
nc
.
nspname
AS
sql_identifier
)
AS
table_schema
,
CAST
(
c
.
relname
AS
sql_identifier
)
AS
table_name
,
CAST
(
a
.
attname
AS
sql_identifier
)
AS
column_name
,
CAST
(
pr
.
type
AS
character_data
)
AS
privilege_type
,
CAST
(
CASE
WHEN
aclcontains
(
c
.
relacl
,
makeaclitem
(
0
,
g_grantee
.
grosysid
,
u_grantor
.
usesysid
,
pr
.
type
,
true
))
THEN
'YES'
ELSE
'NO'
END
AS
character_data
)
AS
is_grantable
FROM
pg_attribute
a
,
pg_class
c
,
pg_namespace
nc
,
pg_user
u_grantor
,
pg_group
g_grantee
,
(
SELECT
'SELECT'
UNION
SELECT
'INSERT'
UNION
SELECT
'UPDATE'
UNION
SELECT
'REFERENCES'
)
AS
pr
(
type
)
WHERE
a
.
attrelid
=
c
.
oid
AND
c
.
relnamespace
=
nc
.
oid
AND
a
.
attnum
>
0
AND
NOT
a
.
attisdropped
AND
c
.
relkind
IN
(
'r'
,
'v'
)
AND
aclcontains
(
c
.
relacl
,
makeaclitem
(
0
,
g_grantee
.
grosysid
,
u_grantor
.
usesysid
,
pr
.
type
,
false
))
AND
g_grantee
.
groname
IN
(
SELECT
role_name
FROM
enabled_roles
);
GRANT
SELECT
ON
role_column_grants
TO
PUBLIC
;
/*
* 20.37
* ROLE_ROUTINE_GRANTS view
*/
CREATE
VIEW
role_routine_grants
AS
SELECT
CAST
(
u_grantor
.
usename
AS
sql_identifier
)
AS
grantor
,
CAST
(
g_grantee
.
groname
AS
sql_identifier
)
AS
grantee
,
CAST
(
current_database
()
AS
sql_identifier
)
AS
specific_catalog
,
CAST
(
n
.
nspname
AS
sql_identifier
)
AS
specific_schema
,
CAST
(
p
.
proname
||
'_'
||
CAST
(
p
.
oid
AS
text
)
AS
sql_identifier
)
AS
specific_name
,
CAST
(
current_database
()
AS
sql_identifier
)
AS
routine_catalog
,
CAST
(
n
.
nspname
AS
sql_identifier
)
AS
routine_schema
,
CAST
(
p
.
proname
AS
sql_identifier
)
AS
routine_name
,
CAST
(
'EXECUTE'
AS
character_data
)
AS
privilege_type
,
CAST
(
CASE
WHEN
aclcontains
(
p
.
proacl
,
makeaclitem
(
0
,
g_grantee
.
grosysid
,
u_grantor
.
usesysid
,
'EXECUTE'
,
true
))
THEN
'YES'
ELSE
'NO'
END
AS
character_data
)
AS
is_grantable
FROM
pg_proc
p
,
pg_namespace
n
,
pg_user
u_grantor
,
pg_group
g_grantee
WHERE
p
.
pronamespace
=
n
.
oid
AND
aclcontains
(
p
.
proacl
,
makeaclitem
(
0
,
g_grantee
.
grosysid
,
u_grantor
.
usesysid
,
'EXECUTE'
,
false
))
AND
g_grantee
.
groname
IN
(
SELECT
role_name
FROM
enabled_roles
);
GRANT
SELECT
ON
role_routine_grants
TO
PUBLIC
;
/*
* 20.38
* ROLE_TABLE_GRANTS view
*/
CREATE
VIEW
role_table_grants
AS
SELECT
CAST
(
u_grantor
.
usename
AS
sql_identifier
)
AS
grantor
,
CAST
(
g_grantee
.
groname
AS
sql_identifier
)
AS
grantee
,
CAST
(
current_database
()
AS
sql_identifier
)
AS
table_catalog
,
CAST
(
nc
.
nspname
AS
sql_identifier
)
AS
table_schema
,
CAST
(
c
.
relname
AS
sql_identifier
)
AS
table_name
,
CAST
(
pr
.
type
AS
character_data
)
AS
privilege_type
,
CAST
(
CASE
WHEN
aclcontains
(
c
.
relacl
,
makeaclitem
(
0
,
g_grantee
.
grosysid
,
u_grantor
.
usesysid
,
pr
.
type
,
true
))
THEN
'YES'
ELSE
'NO'
END
AS
character_data
)
AS
is_grantable
,
CAST
(
'NO'
AS
character_data
)
AS
with_hierarchy
FROM
pg_class
c
,
pg_namespace
nc
,
pg_user
u_grantor
,
pg_group
g_grantee
,
(
SELECT
'SELECT'
UNION
SELECT
'DELETE'
UNION
SELECT
'INSERT'
UNION
SELECT
'UPDATE'
UNION
SELECT
'REFERENCES'
UNION
SELECT
'RULE'
UNION
SELECT
'TRIGGER'
)
AS
pr
(
type
)
WHERE
c
.
relnamespace
=
nc
.
oid
AND
c
.
relkind
IN
(
'r'
,
'v'
)
AND
aclcontains
(
c
.
relacl
,
makeaclitem
(
0
,
g_grantee
.
grosysid
,
u_grantor
.
usesysid
,
pr
.
type
,
false
))
AND
g_grantee
.
groname
IN
(
SELECT
role_name
FROM
enabled_roles
);
GRANT
SELECT
ON
role_table_grants
TO
PUBLIC
;
/*
* 20.40
* ROLE_USAGE_GRANTS view
*/
-- See USAGE_PRIVILEGES.
CREATE
VIEW
role_usage_grants
AS
SELECT
CAST
(
null
AS
sql_identifier
)
AS
grantor
,
CAST
(
null
AS
sql_identifier
)
AS
grantee
,
CAST
(
current_database
()
AS
sql_identifier
)
AS
object_catalog
,
CAST
(
null
AS
sql_identifier
)
AS
object_schema
,
CAST
(
null
AS
sql_identifier
)
AS
object_name
,
CAST
(
null
AS
character_data
)
AS
object_type
,
CAST
(
'USAGE'
AS
character_data
)
AS
privilege_type
,
CAST
(
null
AS
character_data
)
AS
is_grantable
WHERE
false
;
GRANT
SELECT
ON
role_usage_grants
TO
PUBLIC
;
/*
* 20.43
* ROUTINE_PRIVILEGES view
...
...
@@ -768,7 +928,7 @@ GRANT SELECT ON referential_constraints TO PUBLIC;
CREATE
VIEW
routine_privileges
AS
SELECT
CAST
(
u_grantor
.
usename
AS
sql_identifier
)
AS
grantor
,
CAST
(
u_grantee
.
use
name
AS
sql_identifier
)
AS
grantee
,
CAST
(
grantee
.
name
AS
sql_identifier
)
AS
grantee
,
CAST
(
current_database
()
AS
sql_identifier
)
AS
specific_catalog
,
CAST
(
n
.
nspname
AS
sql_identifier
)
AS
specific_schema
,
CAST
(
p
.
proname
||
'_'
||
CAST
(
p
.
oid
AS
text
)
AS
sql_identifier
)
AS
specific_name
,
...
...
@@ -778,20 +938,26 @@ CREATE VIEW routine_privileges AS
CAST
(
'EXECUTE'
AS
character_data
)
AS
privilege_type
,
CAST
(
CASE
WHEN
aclcontains
(
p
.
proacl
,
makeaclitem
(
u_grantee
.
usesysid
,
0
,
u_grantor
.
usesysid
,
'EXECUTE'
,
true
))
makeaclitem
(
grantee
.
usesysid
,
grantee
.
grosysid
,
u_grantor
.
usesysid
,
'EXECUTE'
,
true
))
THEN
'YES'
ELSE
'NO'
END
AS
character_data
)
AS
is_grantable
FROM
pg_proc
p
,
pg_namespace
n
,
pg_user
u_grantor
,
(
SELECT
usesysid
,
usename
FROM
pg_user
UNION
SELECT
0
,
'PUBLIC'
)
AS
u_grantee
(
SELECT
usesysid
,
0
,
usename
FROM
pg_user
UNION
SELECT
0
,
grosysid
,
groname
FROM
pg_group
UNION
SELECT
0
,
0
,
'PUBLIC'
)
AS
grantee
(
usesysid
,
grosysid
,
name
)
WHERE
p
.
pronamespace
=
n
.
oid
AND
aclcontains
(
p
.
proacl
,
makeaclitem
(
u_grantee
.
usesysid
,
0
,
u_grantor
.
usesysid
,
'EXECUTE'
,
false
))
makeaclitem
(
grantee
.
usesysid
,
grantee
.
grosysid
,
u_grantor
.
usesysid
,
'EXECUTE'
,
false
))
AND
(
u_grantor
.
usename
=
current_user
OR
u_grantee
.
use
name
=
current_user
OR
u_grantee
.
use
name
=
'PUBLIC'
);
OR
grantee
.
name
=
current_user
OR
grantee
.
name
=
'PUBLIC'
);
GRANT
SELECT
ON
routine_privileges
TO
PUBLIC
;
...
...
@@ -1110,31 +1276,37 @@ GRANT SELECT ON table_constraints TO PUBLIC;
CREATE
VIEW
table_privileges
AS
SELECT
CAST
(
u_grantor
.
usename
AS
sql_identifier
)
AS
grantor
,
CAST
(
u_grantee
.
use
name
AS
sql_identifier
)
AS
grantee
,
CAST
(
grantee
.
name
AS
sql_identifier
)
AS
grantee
,
CAST
(
current_database
()
AS
sql_identifier
)
AS
table_catalog
,
CAST
(
nc
.
nspname
AS
sql_identifier
)
AS
table_schema
,
CAST
(
c
.
relname
AS
sql_identifier
)
AS
table_name
,
CAST
(
pr
.
type
AS
character_data
)
AS
privilege_type
,
CAST
(
CASE
WHEN
aclcontains
(
c
.
relacl
,
makeaclitem
(
u_grantee
.
usesysid
,
0
,
u_grantor
.
usesysid
,
pr
.
type
,
true
))
makeaclitem
(
grantee
.
usesysid
,
grantee
.
grosysid
,
u_grantor
.
usesysid
,
pr
.
type
,
true
))
THEN
'YES'
ELSE
'NO'
END
AS
character_data
)
AS
is_grantable
,
CAST
(
'NO'
AS
character_data
)
AS
with_hierarchy
FROM
pg_class
c
,
pg_namespace
nc
,
pg_user
u_grantor
,
(
SELECT
usesysid
,
usename
FROM
pg_user
UNION
SELECT
0
,
'PUBLIC'
)
AS
u_grantee
,
(
SELECT
usesysid
,
0
,
usename
FROM
pg_user
UNION
SELECT
0
,
grosysid
,
groname
FROM
pg_group
UNION
SELECT
0
,
0
,
'PUBLIC'
)
AS
grantee
(
usesysid
,
grosysid
,
name
),
(
SELECT
'SELECT'
UNION
SELECT
'DELETE'
UNION
SELECT
'INSERT'
UNION
SELECT
'UPDATE'
UNION
SELECT
'REFERENCES'
UNION
SELECT
'TRIGGER'
)
AS
pr
(
type
)
UNION
SELECT
'REFERENCES'
UNION
SELECT
'
RULE'
UNION
SELECT
'
TRIGGER'
)
AS
pr
(
type
)
WHERE
c
.
relnamespace
=
nc
.
oid
AND
c
.
relkind
IN
(
'r'
,
'v'
)
AND
aclcontains
(
c
.
relacl
,
makeaclitem
(
u_grantee
.
usesysid
,
0
,
u_grantor
.
usesysid
,
pr
.
type
,
false
))
makeaclitem
(
grantee
.
usesysid
,
grantee
.
grosysid
,
u_grantor
.
usesysid
,
pr
.
type
,
false
))
AND
(
u_grantor
.
usename
=
current_user
OR
u_grantee
.
use
name
=
current_user
OR
u_grantee
.
use
name
=
'PUBLIC'
);
OR
grantee
.
name
=
current_user
OR
grantee
.
name
=
'PUBLIC'
);
GRANT
SELECT
ON
table_privileges
TO
PUBLIC
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录