pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
发行日期:. 2017-08-31
本次发布包含对 9.3.18 的少量修复。 有关 9.3 大版本中新特性的信息,请参见 第 E.26 节。
在 information_schema.table_privileges 视图中显示外部表(Peter Eisentraut)
所有其他相关的 information_schema 视图都包含 外部表,只有这一个忽略了它们。
由于这个视图定义是由 initdb 安装的,仅升级 不会修复问题。如果需要在现有安装中修复,可以以超级用户身份在 psql 中执行以下操作:
SET search_path TO information_schema;
CREATE OR REPLACE VIEW table_privileges AS
SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor,
CAST(grantee.rolname 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(c.prtype AS character_data) AS privilege_type,
CAST(
CASE WHEN
-- object owner always has grant options
pg_has_role(grantee.oid, c.relowner, 'USAGE')
OR c.grantable
THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_grantable,
CAST(CASE WHEN c.prtype = 'SELECT' THEN 'YES' ELSE 'NO' END AS yes_or_no) AS with_hierarchy
FROM (
SELECT oid, relname, relnamespace, relkind, relowner,
(aclexplode(coalesce(relacl, acldefault('r', relowner))).*
FROM pg_class ) AS c (oid, relname, relnamespace, relkind, relowner, grantor, grantee, prtype, grantable),
pg_namespace nc, pg_authid u_grantor,
(
SELECT oid, rolname FROM pg_authid
UNION ALL
SELECT 0::oid, 'PUBLIC'
) AS grantee (oid, rolname)
WHERE c.relnamespace = nc.oid
AND c.relkind IN ('r', 'v', 'f')
AND c.grantee = grantee.oid
AND c.grantor = u_grantor.oid
AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER')
AND (pg_has_role(u_grantor.oid, 'USAGE')
OR pg_has_role(grantee.oid, 'USAGE')
OR grantee.rolname = 'PUBLIC');
这必须在每个要修复的数据库中重复,包括 template0。
清理尝试对失败事务执行 ROLLBACK 时发生致命退出 (例如因收到 SIGTERM)的处理 (Tom Lane)
这种情况可能导致断言失败。在生产构建中退出仍会发生,但会记录一条关于 “cannot drop active portal” 的意外消息。
移除致命退出期间可能触发的断言(Tom Lane)
正确识别范围类型或基于被搜索复合类型或域类型的域类型之上的列 (Tom Lane)
某些更改复合类型或域类型定义的 ALTER 命令本应在该 类型有存储值时失败,因为它们缺少更新或检查这类值所需的基础设施。 此前这些检查可能遗漏包裹在范围类型或子域中的相关值,可能允许数据 度变得不一致。
修复使用并行模式并使用列表文件选择要恢复条目子集时 pg_restore 的崩溃 (Fabr[iacute]zio de Royes Mello)
更改 ecpg 的解析器允许不带 C 变量的 RETURNING 子句(Michael Meskes)
这允许 ecpg 程序包含在内部使用 RETURNING(例如在 CTE 内)而不是用它定义返回给 客户端的值的 SQL 构造。
改进 Windows 上 PL/Perl 编译器标志的选择(Tom Lane)
此修复避免了因对 time_t 值宽度的假定不一致而可能的 PL/Perl 崩溃。扩展开发者可能看到的一个副作用是 _USE_32BIT_TIME_T 不再在 PostgreSQL Windows 构建中全局定义。这 预计不会引起问题,因为 time_t 类型没有用于任何 PostgreSQL API 定义。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。