PostgreSQL 9.3
主要特性
- 数据页校验和(初始提交 96ef3b8f)
- 增加了物化视图(初始提交 3bf3ab8c)
- 增加了可更新视图(提交 a99c42f2)
- 增加了事件触发器(初始提交 3855968f)
- 增加了可更新的外部数据包装器支持(初始提交 dc3eb563)
- 添加了
postgres_fdw(初始提交 d0d75c40)
性能更改
- 改进了
CREATE TEMPORARY TABLE ... ON COMMIT DELETE ROW的性能(提交 c9d7dbac)
SQL 更改
通用
- 添加了
LATERAL子查询语法(提交 5ebaaa49)
已添加
ALTER EVENT TRIGGER(提交 3855968f)ALTER MATERIALIZED VIEW(提交 3bf3ab8c)CREATE EVENT TRIGGER(提交 3855968f)CREATE MATERIALIZED VIEW(提交 3bf3ab8c)DROP EVENT TRIGGER(提交 3855968f)DROP MATERIALIZED VIEW(提交 3bf3ab8c)
已修改
ALTER EXTENSIONALTER FOREIGN TABLE- 添加了
ALTER FOREIGN TABLE ... ALTER COLUMN ... SET DEFAULT ... / DROP DEFAULT语法(提交 a0c6dfee)
- 添加了
ALTER RULE- 添加(提交 c61e26ee)
ALTER TYPECOMMENT ONCOPYCREATE FOREIGN TABLECREATE SCHEMA- 添加了
CREATE SCHEMA IF NOT EXISTS语法(提交 fb34e94d)
- 添加了
CREATE TABLE- 更新了
ON UPDATE SET { NULL | DEFAULT }参照操作的行为(提交 c75be2ad)
- 更新了
CREATE VIEW- 添加了
CREATE [ RECURSIVE ] VIEW ...语法(提交 58390526)
- 添加了
DROP TABLE- 如果指定了不存在的模式,
DROP TABLE IF EXISTS ...不再因ERROR而失败(提交 7e2322df)
- 如果指定了不存在的模式,
后端更改
通用
- 添加了
后台工作进程基础设施支持(提交 da07a1e8) - 添加了
libpgcommon以在后端和前端实用工具之间共享公共代码(提交 8396447c) - 内存排序现在可以使用由
work_mem指定的全部内存分配(提交 8ae35e91)
锁定
- 添加了额外的元组节点锁
FOR KEY SHARE和FOR NO KEY UPDATE(提交 0ac5ad51)
优化器
- 现在收集并使用范围类型的下界和上界直方图(提交 918eee0c)
postmaster
- 增加了对多个 Unix 域套接字的支持(提交 c9b0cbe9)
系统目录更改
表
已添加
pg_event_trigger(提交 3855968f)
已修改
pg_database- 添加了列
datminmxid(提交 0ac5ad51)
- 添加了列
pg_index- 添加了列
indislive(提交 3c840464)
- 添加了列
视图
已添加
pg_matviews(提交 3bf3ab8c)
系统函数
已添加
array_remove()(提交 84a42560)array_replace()(提交 84a42560)json_agg()(提交 38fb4d97)json_each()(提交 a570c98d)json_each_text()(提交 a570c98d)json_extract_path()(提交 a570c98d)json_extract_path_text()(提交 a570c98d)json_object_keys()(提交 a570c98d)json_populate_record()(提交 a570c98d)json_populate_recordset()(提交 a570c98d)pg_backup_start_time()(提交 68de499b)pg_get_multixact_members()(提交 0ac5ad51)pg_identify_object()(提交 f8348ea3)pg_is_in_backup()(提交 68de499b)to_json()(提交 38fb4d97)
已修改
pg_get_constraintdef()pg_get_indexdef()pg_get_viewdef()- 输出始终缩进 (commit 62e66640)
配置更改
已添加
data_checksums(提交 96ef3b8f)ignore_checksum_failure(提交 96ef3b8f)- 指令
include_dir(提交 2a0c81a1) lock_timeout(提交 d43837d0)unix_socket_directories(提交 c9b0cbe9)wal_receiver_timeout(提交 6f60fdd7)wal_sender_timeout(从replication_timeout重命名;提交 6f60fdd7)
已修改
移除
replication_timeout(重命名为wal_sender_timeout;提交 6f60fdd7)unix_socket_directory(被unix_socket_directories替换;提交 c9b0cbe9)
索引更改
GiST
哈希
- 并发性改进(提交 76837c15)
SP-GiST
过程语言更改
PL/pgSQL
- 支持使用
RETURN配合复合类型表达式(提交 31a89185) - 现在可以将约束冲突详细信息作为单独的字段访问(提交 c21bb48d)
- 现在可以访问
COPY处理的行数(提交 7ae18159) - 未经保留的关键字现在可以在任何地方用作标识符(提交 bac95fd4)
PL/Python
- 添加了结果对象字符串处理器(提交 330ed4ac)
- OID 值现在被转换为合适的 Python 数值类型(提交 db0af74a)
- SPIErrors 直接引发,并像内部生成的 SPIError 一样处理(提交 316186f2)
- 支持在 OS X 上针对自定义 Python 安装进行构建(提交 fc874507)
复制更改
- 添加了“快速”提升(提交 fd4ced52)
libpq
- 添加了函数
PQconninfo()(提交 65c3bf19)
外部数据包装器更改
服务器实用程序
已修改
核心实用程序
已添加
pg_isready(提交 ac2e9673)
已修改
pg_basebackup- 添加了选项
--write-recovery-conf,它会创建一个基本的recovery.conf 文件(提交 915a29a1) - 选项
--xlog-method能够处理流式时间线切换(提交 0b632913) - 添加了选项
-d/--dbname以接受 conninfo 字符串(提交 aa05c37e)
- 添加了选项
pg_dumppg_dumpallpg_receivexlogpg_restore、clusterdb、reindexdb和vacuumdb- 选项
-t/--table可以提供多次 (提交 f3af5344)
- 选项
psql 更改
Contrib模块
已添加
pg_xlogdump(提交 639ed4e8)postgres_fdw(初始提交 d0d75c40)worker_spi(提交 da07a1e8)
已修改
dblink- 修改为使用外部数据包装器功能(提交 8255566f)
hstore- 添加了以下函数(提交 38fb4d97)
hstore_to_json()hstore_to_json_loose()
- 添加了以下函数(提交 38fb4d97)
oid2name- 现在设置
fallback_application_name(提交 17676c78)
- 现在设置
pgbenchpgrowlocks- 对
pgrowlocks()的结果列进行了以下更改(提交 0ac5ad51)
- 删除了列
lock_type - 添加了列
mode
- 删除了列
- 对
pgstattuple- 添加了函数
pgstatginindex()(提交 357cbaae)
- 添加了函数
pg_test_timing- 输出改进(提交 0f3351aa)
pg_upgradesepgsql- 强制执行
db_procedure:{execute}权限(提交 f8a54e93) - 强制执行
db_schema:search权限(提交 e965e634) - 允许
sepgsql标签依赖于对象名称(提交 0f05840b) - 支持
object_access_hook的新OAT_POST_ALTER类型(提交 1cea9bbb)
- 强制执行
test_fsync- 添加了微秒/操作显示(提交 82e42979)
vacuumlo- 现在设置
fallback_application_name(提交 17676c78)
- 现在设置
文档
- 可以创建 EPUB 格式的文档(提交 ff64fd49)
预发布测试版本
PostgreSQL 9.3 开发的初始提交是 bed88fce (2012-06-13)。
