PostgreSQL 9.4
主要特性
- 添加了
ALTER SYSTEM命令 (commit 65d6e4cb) - 支持
逻辑解码(commit b89e1510) - 添加了
复制槽(initial commit 858ec118) - 后台工作进程 (background workers) 可以动态注册、启动和终止 (commit 7f7485a0)
- 添加了
jsonb数据类型 (initial commit d9134d0a)
后端更改
可加载模块
- 标记为
PG_FUNCTION_INFO_V1的函数不再需要函数原型 (commit e7128e8d)
内存管理
- 添加了 Linux huge TLB 页支持 (initial commit 1a3458b6)
性能
- 以下
ALTER TABLE命令不再需要ACCESS EXCLUSIVE锁 (commit e5550d5f)ALTER COLUMN [RE]SETattribute_optionALTER COLUMN SET STATISTICSCLUSTER ONSET WITHOUT CLUSTERVALIDATE CONSTRAINT
存储参数
- 添加了
user_catalog_table(commit 66abc260)
系统目录
- 允许修改
pg_catalogschema 中的用户定义表 (commit 8e18d04d)
触发器
视图
- 物化视图 (materialized views) 可以并发刷新 (commit cc1965a9)
- 添加了
check_option选项 (commit 4cbe3ac3) - 包含不可更新列的视图可以自动更新 (commit cab5dc5d)
- 安全屏障视图 (security barrier views) 可以更新 (commit 842faa71)
源配置
- 添加了
--enable-tap-tests选项 (commit 16381b2a) - 添加了
--with-extra-version选项 (commit 46328916) - 移除了
--with-krb5选项 (commit 98de86e4)
支持的平台变更
- 移除了 IRIX 支持 (commit ea91a6be)
SQL 更改
通用
- 添加了
WITH ORDINALITY语法 (commit c62736cc) - 聚合函数调用的
FILTER子句 (commit b560ec1b) - 支持有序集 (
WITHIN GROUP) 聚合 (commit 8d65da1f) - 支持 VARIADIC 聚合函数 (commit 0d3f4406)
- 多态聚合 (polymorphic aggregates) 可以拥有非多态状态数据类型 (commit f0fedfe8)
已修改
ALTER AGGREGATEALTER FOREIGN TABLE- 添加了启用/禁用触发器的支持 (commit 7cbe57c3)
ALTER INDEX- 添加了
ALTER INDEX ... ALL IN TABLESPACE ...语法 (initial commit fbe19ee3)
- 添加了
ALTER MATERIALIZED VIEW- 添加了
ALTER MATERIALIZED VIEW ALL IN TABLESPACE ... SET TABLESPACE ...语法 (commit d9b2bc45)
- 添加了
ALTER TABLECOPYCREATE AGGREGATECREATE TABLESPACE- 添加了
CREATE TABLESPACE ... WITH ( options )语法 (commit 5254958e)
- 添加了
CREATE VIEW- 添加了
WITH [ CASCADED | LOCAL ] CHECK OPTION语法 (commit 4cbe3ac3)
- 添加了
放弃- 添加了
DISCARD SEQUENCES语法 (commit d90ced8b)
- 添加了
DROP AGGREGATE- 支持 VARIADIC 聚合 (commit 0d3f4406)
EXPLAINREFRESH MATERIALIZED VIEW- 添加了
REFRESH MATERIALIZED VIEW CONCURRENTLY(commit cc1965a9)
- 添加了
SET- 当
SET LOCAL ...在事务块外部执行时,将发出WARNING(而不是ERROR)(commit a6542a4b)
- 当
SET CONSTRAINTS- 当在事务块外执行时,会发出
WARNING(而不是ERROR)(提交 a6542a4b)
- 当在事务块外执行时,会发出
SET TRANSACTION- 当在事务块外执行时,会发出
WARNING(而不是ERROR)(提交 a6542a4b)
- 当在事务块外执行时,会发出
WAL 变更
- 当切换到新的 WAL 段时,
pg_switch_xlog()现在用零填充段中剩余的未使用部分,从而消除了对pg_clearxlogtail等实用工具的需求 (commit 9a20a9b2)
数据类型
已添加
系统目录更改
表
已修改
pg_aggregate- 添加了以下列aggkind(commit 8d65da1f)aggnumdirectargs(commit 8d65da1f)aggmtransfn(commit a9d9acbf)aggminvtransfn(commit a9d9acbf)aggmfinalfn(commit a9d9acbf)aggfinalextra(commit f0fedfe8)aggmfinalextra(commit f0fedfe8)aggtransspace(commit 6cb86143)aggmtransspace(commit a9d9acbf)aggmtranstype(commit a9d9acbf)aggminitval(commit a9d9acbf)
pg_classpg_index- 添加了
indisreplident列 (commit 07cacba9)
- 添加了
pg_rewrite- 移除了
ev_attr列 (commit 277607d6)
- 移除了
视图
已添加
pg_replication_slots(commit 858ec118)pg_stat_archiver(commit 9132b189)
已修改
pg_stat_activitypg_stat_all_tables- 添加了
n_mod_since_analyze列;也适用于pg_stat_sys_tables和pg_stat_user_tables(commit c87ff71f)
- 添加了
pg_stat_replication
系统函数更改
已添加
cume_dist()(commit 8d65da1f)dense_rank()(commit 8d65da1f)json_array_elements_text()(commit 5264d915)json_build_array()(commit 10563990)json_build_object()(commit 10563990)json_object()(commit 10563990)json_object_agg()(commit 10563990)json_to_record()(commit 10563990)json_to_recordset()(commit 10563990)json_typeof()(commit 4d212bac)jsonb_array_elements()(commit d9134d0a)jsonb_array_elements_text()(commit d9134d0a)jsonb_array_length()(commit d9134d0a)jsonb_each()(commit d9134d0a)jsonb_each_text()(commit d9134d0a)jsonb_extract_path()(commit d9134d0a)jsonb_extract_path_text()(commit d9134d0a)jsonb_object_keys()(commit d9134d0a)jsonb_populate_record()(commit d9134d0a)jsonb_populate_recordset()(commit d9134d0a)jsonb_to_record()(commit f9c6d72c)jsonb_to_recordset()(commit f9c6d72c)jsonb_typeof()(commit d9134d0a)lo_from_bytea()(initial commit c50b7c09)lo_get()(commit c50b7c09)lo_put()(commit c50b7c09)make_date()(commit f901bb50)make_interval()(commit 84df54b2)make_time()(commit f901bb50)make_timestamp()(commit 84df54b2)make_timestamptz()(commit 84df54b2)mode()(commit 8d65da1f)percentile_cont()(commit 8d65da1f)percentile_disc()(commit 8d65da1f)percent_rank()(commit 8d65da1f)pg_create_logical_replication_slot()(commit b89e1510)pg_create_physical_replication_slot()(commit 858ec118)pg_drop_replication_slot()(commit 858ec118)pg_filenode_relation()(commit f01d1ae3)pg_last_xact_replay_timestamp()(commit 7ba6e4f0)pg_logical_slot_get_changes()(commit b89e1510)pg_logical_slot_get_binary_changes()(commit b89e1510)pg_logical_slot_peek_changes()(commit b89e1510)pg_logical_slot_peek_binary_changes()(commit b89e1510)pg_sleep_for()(commit 760c770f)pg_sleep_until()(commit 760c770f)rank()(commit 8d65da1f)to_regclass()(commit 0886fc6a)to_regoper()(commit 0886fc6a)to_regoperator()(commit dfc0219f)to_regproc()(commit 0886fc6a)to_regprocedure()(commit dfc0219f)
已修改
chr()- 现在仅接受符合 RFC 3629 的有效 UTF8 字符值(commit 7894ac50)
pg_create_restore_point()pg_current_xlog_location()pg_stat_reset_shared()- 添加了
archiver选项 (commit 9132b189)
- 添加了
pg_start_backup()pg_stop_backup()pg_switch_xlog()pg_xlogfile_name()pg_xlogfile_name_offset()pg_xlog_location_diff()random()- 随机种子得到改进 (commit 98c50656)
to_char()- 时区偏移格式说明符
OF被添加,用于输出时区的 UTC 偏移量 (commit 7408c5d2)
- 时区偏移格式说明符
unnest()- 添加了多参数形式 (commit 784e762e)
配置更改
已添加
autovacuum_multixact_freeze_max_age(commit 801c2dc7)autovacuum_work_mem(commit 8693559c)dynamic_shared_memory_type(commit 0ac5e5a7)huge_pages(initial commit 1a3458b6)max_replication_slots(commit 858ec118)max_worker_processes(commit 6bc8ef0b)session_preload_libraries(commit 070518dd)ssl_ecdh_curve(commit 31647214)ssl_prefer_server_ciphers(commit ef326752)wal_log_hints(commit 50e54709)
已修改
effective_cache_size- 默认值更改为
4GB(commit b910d7ea)
- 默认值更改为
log_connectionslog_line_prefix- 允许使用
printf风格的填充说明符 (commit 4334639f)
- 允许使用
log_lock_waits- 将在发出的日志消息中显示锁持有者和等待者的 PID(commit 588fb507)
maintenance_work_mem- 默认值从
16MB更改为64MB(commit 848ae330)
- 默认值从
wal_level- 添加了
logical设置 (commit e55704d8)
- 添加了
work_mem- 默认值从
1MB更改为4MB(commit 848ae330)
- 默认值从
索引更改
GIN
- 通过压缩
GIN词条列表,减小了索引大小 (commit 36a35c55) - 多键查找速度得到改进 (commits e2c070cb, 25b1dafa and 626a1206)
- 在一个项稀少而另一个项频繁的情况下,搜索速度得到改进 (commit dbc649fd)
认证更改
SSL
- 添加了对椭圆曲线密钥的支持 (commit 31647214)
- 新的配置选项
ssl_prefer_server_ciphers,用于优先服务器而不是客户端的密码顺序 (commit ef326752)
Kerberos
- 移除了原生的 Kerberos 支持 (commit 98de86e4)
复制更改
复制配置变更
已添加
recovery_min_apply_delay(commit 36da3cfb)recovery_target(commit 71c6a8e3)
libpq 更改
- 添加了函数
PQhostaddr()(commit 9f80f483) - 函数
PQconndefaults()现在会忽略无效的服务文件(commit 9e0a97f1) - 支持 TLS 协议版本超越
TLSv1(commit 820f08ca)
ECPG 更改
过程语言更改
PL/pgSQL
- 可以使用
GET DIAGNOSTICS来检索当前的PL/pgSQL调用堆栈(commit 83128325) - 用于显示违反
STRICT约束的查询所传入参数的print_strict_params选项(commit 689746c0) - 用于启用其他
PL/pgSQL警告和错误的配置参数plpgsql.extra_warnings和plpgsql.extra_errors(commit 7d8f1de1)
PL/Perl
- 添加了对事件触发器函数 (event trigger functions) 的支持(commit e5dc4cc2)
PL/Python
- PostgreSQL
numeric值现在转换为 Pythondecimal(commit 7919398b)
PL/Tcl
- 添加了对事件触发器函数 (event trigger functions) 的支持(commit a5036ca9)
外部数据包装器更改
信息模式
- 向视图
information_schema.parameters添加了parameter_default列(commit 85ed91ee) - 视图
information_schema.schemata现在显示所有可访问的 schema,而不仅仅是当前用户拥有的 schema(commit b34f8f40)
服务器实用程序
已修改
initdb- 现在会为不正确的 locale 设置抛出错误,而不是默默回退到默认设置(commit 31a26323)
pg_ctl- 如果指定的数据目录不可访问,现在会返回退出码
4(commit 11d205e2)
- 如果指定的数据目录不可访问,现在会返回退出码
pg_xlogdump- 添加了
--follow选项,可以报告实时日志流
- 添加了
核心实用程序
已添加
pg_recvlogical(initial commit 8bdd12bb)
已修改
createuser- 添加了
-g/--role选项 (commit 6bea96dd)
- 添加了
pg_basebackuppg_dump- 添加了选项
--if-exists(提交 9067310c)
- 添加了选项
pg_dumpall- 添加了选项
--if-exists(提交 9067310c)
- 添加了选项
pg_receivexlog- 添加了
-S/--slot选项 (commit 858ec118)
- 添加了
pg_restorevacuumdb- 添加了
--analyze-in-stages选项 (commit c92c3d50)
- 添加了
psql
Contrib模块
已添加
pg_prewarm(commit c32afe53)test_decoding(commit b89e1510)test_shm_mq(commit 4db3744f)
已修改
auto_explain- 添加了
auto_explain.log_trigger选项,用于记录触发器执行时间(commit e2a0fc53)
- 添加了
cube- 数据存储更紧凑(commit 08612f45)
file_fdw- 添加了
force_null选项 (commit 3b5e03dc)
- 添加了
hstore- 添加了以下函数
(commit d9134d0a)hstore_to_jsonb()hstore_to_jsonb_loose()
- 添加了以下函数
pgbenchpgcrypto- 添加了函数
gen_random_uuid()(commit e6170126)
- 添加了函数
pg_stat_statementspgstattuplepg_trgm- 改进了正则表达式索引搜索的启发式算法(commit 80a5cf64)
pg_upgradepg_xlogdump- 添加了
--follow选项,可以报告实时日志流(commit ce9bb92f)
- 添加了
postgres_fdw- 通过改进对与排序相关的决定的处理,将
VARCHAR列的下推扩展到更广的范围(commit 76f965ff)
- 通过改进对与排序相关的决定的处理,将
uuid-osspvacuumlo- 使用游标来限制客户端内存使用(commit 67ccbb08)
测试
预发布测试版本
标志着 PostgreSQL 9.4 开发开始的初始提交是 58ae1f45 (2013-06-14)。
