postgresql10改进说明(翻译)

来源:互联网 发布:莆田精仿鞋淘宝网店 编辑:程序博客网 时间:2024/06/07 13:29

原文:https://www.postgresql.org/docs/10/static/release-10.html

以上内容为机器翻译:

E.1.版本10

E.1.1.概述

E.1.2.迁移到版本10

E.1.3.变化

发行日期: 2017-10-05

E.1.1.概述

PostgreSQL 10的主要增强功能包括:

使用发布/订阅的逻辑复制

声明式表分区

改进并行查询

性能改进

基于SCRAM-SHA-256的更强大的密码认证

改进监控

E.1.2.迁移到版本10

对于希望从旧版本迁移数据的用户,需要使用pg_dumpall进行转储/恢复,或使用pg_upgrade .

版本10包含一些可能影响与以前版本的兼容性的更改.请注意以下不兼容性:

从旧PostgreSQL版本(Mithun Cy,Robert Haas,Amit Kapila),必须在pg_upgrade-ing之后重构散列索引.

主要散列索引改进需要这个要求.pg_upgrade将创建一个脚本来协助此操作.

将预写日志目录pg_xlog重命名为pg_wal,并将事务状态目录pg_clog重命名为pg_xact (Michael Paquier)

用户偶尔会认为这些目录只包含非必要的日志文件,并且手动删除预写日志文件或事务状态文件,导致不可恢复的数据丢失.这些名称更改旨在防止将来出现这种错误.

将引用"xlog"的SQL函数,工具和选项重命名为"wal" (Robert Haas)

例如,pg_switch_xlog()变为pg_switch_wal(),pg_receivexlog变为pg_receivewal,而--xlogdir变为--waldir .这是为了与pg_xlog目录名称的更改保持一致; 一般来说,"xlog"术语不再在任何面向用户的地方使用.

重命名与WAL相关的函数和视图以使用lsn而不是location (David Rowley)

以前,这两个术语之间的混合不一致.

更改查询的SELECT列表中出现的set-returned函数的实现(Andres Freund)

现在,在SELECT列表中对标量表达式进行评估之前,设置返回函数将被进行评估,就好像它们被放置在一个LATERAL FROM -clause项中.对于存在多个设置返回函数的情况,这允许更为清晰的语义.如果它们返回不同行数,则通过添加null来扩展较短的结果以匹配最长的结果.以前,结果循环,直到它们都同时终止,产生等于功能周期的最小公倍数的多行.此外,CASE和COALESCE结构中现在不允许设置返回函数.有关更多信息,请参见第37.4.8节 .

当ALTER TABLE ... ADD PRIMARY KEY标记列NOT NULL,该变化现在也传播到继承子表(Michael Paquier)

防止语句级触发器多次发出声明(Tom Lane)

涉及可写CTE的案件更新由含有陈述更新的同一表,或由另一可写CTE更新,BEFORE STATEMENT或AFTER STATEMENT触发一次以上触发.另外,如果受到外键执行操作(如ON DELETE CASCADE )影响的表上有语句级触发器,则它们可能会在外部SQL语句中触发多次.这与SQL标准相反,所以改变它.

将序列的元数据字段移动到新的pg_sequence系统目录(Peter Eisentraut)

序列关系现在只存储可以被nextval()修改的字段,即last_value,log_cnt和is_called .其他序列属性(如起始值和增量)保存在pg_sequence目录的相应行中.ALTER SEQUENCE更新现在完全事务性,这意味着该序列将被锁定,直到提交.nextval()和setval()函数保持非事务性.

这种变化引入的主要不兼容性是从序列关系中选择现在只返回上述三个字段.要获得序列的其他属性,应用程序必须查看pg_sequence .新的系统视图pg_sequences也可以用于此目的; 它提供了与现有代码更兼容的列名称.

序列中psql的\d命令的输出也被重新设计了.

使pg_basebackup流默认情况下恢复备份所需的WAL (Magnus Hagander)

这会将pg_basebackup的-X / - --xlog-method默认值更改为stream .已添加选项值none以再现旧行为.pg_basebackup选项-x已被删除(而是使用-X fetch ).

更改逻辑复制如何使用pg_hba.conf (Peter Eisentraut)

在以前的版本中,逻辑复制连接需要数据库列中的replication关键字.从此版本开始,逻辑复制与正常条目匹配数据库名称或关键字(如all .物理复制继续使用replication关键字.由于本版本中内置逻辑复制是新功能,因此此更改仅影响第三方逻辑复制插件的用户.

使所有pg_ctl操作默认完成(Peter Eisentraut)

以前,一些pg_ctl操作没有等待完成,需要使用-w来完成.

将log_directory服务器参数的默认值从pg_log为log (Andreas Karlsson)

添加配置选项ssl_dh_params_file以指定自定义OpenSSL DH参数的文件名(Heikki Linnakangas)

这将替换硬编码的,未记录的文件名dh1024.pem .请注意,默认情况下不再检查dh1024.pem 如果要使用自定义DH参数,则必须设置此选项.

将用于OpenSSL临时DH密码的默认DH参数的大小增加到2048位(Heikki Linnakangas)

编入DH参数的大小已经从1024增加到2048位,使得DH密钥交换更能抵抗暴力攻击.然而,一些旧的SSL实现,特别是Java Runtime Environment版本6的一些修订版将不接受超过1024位的DH参数,因此将无法通过SSL连接.如果需要支持这样的旧客户端,可以使用自定义的1024位DH参数,而不是编译的默认值.请参阅ssl_dh_params_file .

删除在服务器上存储未加密密码的能力(Heikki Linnakangas)

password_encryption服务器参数不再支持off或plain .CREATE/ALTER USER ... PASSSWORD不再支持UNENCRYPTED选项.同样,-- --unencrypted选项已从createuser中删除.从旧版本迁移的未加密密码将在此版本中加密存储.password_encryption的默认设置仍然是md5 .

添加min_parallel_table_scan_size和min_parallel_index_scan_size服务器参数来控制并行查询(Amit Kapila,Robert Haas)

这些代替了min_parallel_relation_size,这被发现太min_parallel_relation_size了.

不要在shared_preload_libraries和相关的服务器参数(QL卓)中,

这些设置是真正的文件名列表,但它们以前被视为具有不同解析规则的SQL标识符列表.

删除sql_inheritance服务器参数(Robert Haas)

从默认值更改此设置会导致引用父表的查询不包括子表.然而,SQL标准要求它们被包含在内,并且这是PostgreSQL 7.1之后的默认值.

允许将多维数组传递到PL / Python函数中,并返回为嵌套Python列表(Alexey Grishchenko,Dave Cramer,Heikki Linnakangas)

此功能需要在PL / Python中处理复合类型数组的向后不兼容的更改.以前,您可以通过写入返回一个复合值数组,例如[[col1,col2],[col1,col2]] ; 但现在被解释为二维数组.数组中的复合类型现在必须以Python元组(而不是列表)形式来解释歧义; 也就是写[(col1,col2),(col1,col2)] .

删除PL / Tcl的"模块"自动装载设备(汤姆巷)

此功能已被新的服务器参数pltcl.start_proc和pltclu.start_proc所替代,它们更易于使用,更类似于其他PL中可用的功能.

删除pg_dump / pg_dumpall支持从8.0之前的服务器(Tom Lane)

需要从8.0之前的服务器转储的用户需要使用PostgreSQL 9.6或更早版本的转储程序.结果输出应该仍然成功加载到较新的服务器.

删除对浮点时间戳和间隔的支持(Tom Lane)

这会删除configure的--disable-integer-datetimes选项.浮点时间戳具有很少的优势,并且自PostgreSQL 8.3起就不是默认的.

删除客户端/服务器协议版本1.0(Tom Lane)的服务器支持

该协议自PostgreSQL 6.3起就没有客户端支持.

删除contrib/tsearch2模块(Robert Haas)

该模块提供了与8.3之前PostgreSQL版本中发布的全文搜索版本的兼容性.

删除createlang和droplang命令行应用程序(Peter Eisentraut)

自PostgreSQL 9.1起,这些已被弃用.而是直接使用CREATE EXTENSION和DROP EXTENSION .

删除对版本0函数调用约定的支持(Andres Freund)

提供C编码功能的扩展必须符合版本1调用约定.版本0自2001年以来已被弃用.

E.1.3.变化

以下您将详细介绍PostgreSQL 10和以前的主要版本之间的变化.

E.1.3.1.服务器

E.1.3.1.1.并行查询

支持平行B树索引扫描(Rahila Syed,Amit Kapila,Robert Haas,Rafia Sabih)

此更改允许由单独的并行工作者搜索B树索引页.

支持并行位图堆扫描(Dilip Kumar)

这允许单个索引扫描来分派并行工作来处理堆的不同区域.

允许并行执行并行连接(Dilip Kumar)

允许不相关的子查询并行运行(Amit Kapila)

提高并行工作人员返回预分类数据的能力(Rushabh Lathia)

增加程序语言功能中的并行查询使用(Robert Haas,Rafia Sabih)

添加max_parallel_workers服务器参数以限制可用于查询并行性的工作进程数(Julien Rouhaud)

该参数可以设置为低于max_worker_processes,以将工作进程保留在并行查询以外的目的.

E.1.3.1.2.索引

向散列索引添加预写日志记录(Amit Kapila)

这使得哈希索引崩溃安全且可复制.前一条关于它们使用的警告消息被删除.

改善散列索引性能(Amit Kapila,Mithun Cy,Ashutosh Sharma)

为INET和CIDR数据类型添加SP-GiST索引支持(Emre Hasegeli)

添加选项允许BRIN索引摘要更积极地发生(ÁlvaroHerrera)

当创建新的页面范围时,新的CREATE INDEX选项可启用先前BRIN页面范围的自动汇总.

添加功能以删除并重新添加BRIN索引范围的BRIN摘要(ÁlvaroHerrera)

新的SQL函数brin_summarize_range()更新指定范围的BRIN索引摘要,而brin_desummarize_range()会将其删除.这有助于更新由于UPDATE和DELETE而更小的范围的汇总.

提高BRIN指数扫描是否有益的准确性(David Rowley,Emre Hasegeli)

通过更有效地重用索引空间,允许更快的GiST插入和更新(Andrey Borodin)

减少GIN指数抽真空时的页面锁定(Andrey Borodin)

E.1.3.1.3.锁定

减少更改表参数所需的锁定(Simon Riggs,FabrízioMello)

例如,现在可以使用更轻量级的锁来更改表的effective_io_concurrency设置.

允许调整谓词锁升级阈值(Dagfinn IlmariMannsåker)

现在可以通过两个新的服务器参数max_pred_locks_per_relation和max_pred_locks_per_page来控制锁定升级.

E.1.3.1.4.优化

添加多列优化器统计信息来计算相关比和不同值的数量(Tomas Vondra,David Rowley,ÁlvaroHerrera)

新命令是CREATE STATISTICS,更新ALTER STATISTICS和DROP STATISTICS .此功能有助于估计查询内存使用情况和组合来自各个列的统计信息.

提高受行级安全限制影响的查询的性能(Tom Lane)

优化器现在有更多的知识可以放置RLS滤波器条件,从而允许在安全地执行RLS条件的同时生成更好的计划.

E.1.3.1.5.一般表现

加速使用numeric类型算术计算运行总和的集合函数,包括SUM(),AVG()和STDDEV()一些变体(Heikki Linnakangas)

通过使用基数树提高字符编码转换的性能(Kyotaro Horiguchi,Heikki Linnakangas)

在查询执行期间减少表达式计算开销,以及计划节点调用开销(Andres Freund)

这对处理多行的查询特别有用.

允许散列聚合与分组集合(Andrew Gierth)一起使用

使用唯一性保证来优化某些连接类型(David Rowley)

提高macaddr数据类型的排序性能(Brandur Leach)

减少引用成千上万关系的会话中的统计跟踪开销(Aleksander Alekseev)

E.1.3.1.6.监控

允许显式控制EXPLAIN显示的计划和执行时间(Ashutosh Bapat)

默认情况下,计划和执行时间由EXPLAIN ANALYZE显示,在其他情况下不显示.新的EXPLAIN选项SUMMARY允许显式控制这一点.

添加默认监控角色(Dave Page)

新角色pg_monitor,pg_read_all_settings,pg_read_all_stats和pg_stat_scan_tables允许简化权限配置.

在"REFRESH MATERIALIZED VIEW (Jim Mlodgenski)中正确更新统计收集器

E.1.3.1.6.1.记录

将log_line_prefix的默认值更改为包括postmaster日志输出(Christoph Berg)每行中的当前时间戳(毫秒)和进程ID)

以前的默认是空的前缀.

添加功能返回日志和WAL目录内容(Dave Page)

新功能是pg_ls_logdir()和pg_ls_waldir(),可以由具有适当权限的非超级用户执行.

添加函数pg_current_logfile()来读取日志收集器的当前stderr和csvlog输出文件名(Gilles Darold)

在Postmaster启动期间(Tom Lane)报告服务器日志中每个监听套接字的地址和端口号

此外,当记录未绑定侦听套接字时,请包括我们尝试绑定的特定地址.

减少启动和停止启动子子进程(Tom Lane)的日志聊天

这些现在是DEBUG1级的消息.

减少由log_min_messages控制的较低编号调试级别的消息冗长(Robert Haas)

这也改变了client_min_messages调试级别的详细程度.

E.1.3.1.6.2.pg_stat_activity

添加pg_stat_activity报告的低级别等待状态(Michael Paquier,Robert Haas,Rushabh Lathia)

此更改可以报告许多低级别等待条件,包括锁定等待,文件读取/写入/ fsync,客户端读取/写入和同步复制.

在pg_stat_activity显示辅助过程,后台工作人员和walsender进程(Kuntal Ghosh,Michael Paquier)

这样可以简化监控.一个新的column backend_type标识进程类型.

允许pg_stat_activity显示由并行工作人员执行的SQL查询(Rafia Sabih)

重命名pg_stat_activity .wait_event_type值LWLockTranche和LWLockNamed为LWLock (Robert Haas)

这使输出更加一致.

E.1.3.1.7.认证

添加SCRAM-SHA-256密码协商和存储支持(Michael Paquier,Heikki Linnakangas)

这提供比现有的md5协商和存储方法更好的安全性.

将password_encryption服务器参数从boolean更改为enum (Michael Paquier)

这是必要的,以支持额外的密码散列选项.

添加视图pg_hba_file_rules以显示pg_hba.conf (Haribabu Kommi)的内容

这显示文件内容,而不是当前激活的设置.

支持多台RADIUS服务器(Magnus Hagander)

所有RADIUS相关参数现在是复数,并支持逗号分隔的服务器列表.

E.1.3.1.8.服务器配置

允许在配置重新加载期间更新SSL配置(Andreas Karlsson,Tom Lane)

这样可以通过使用pg_ctl reload,SELECT pg_reload_conf()或发送SIGHUP信号来重新配置SSL,而无需重新启动服务器.但是,如果服务器的SSL密钥需要密码,则重新加载SSL配置不起作用,因为无法重新提示输入密码.在这种情况下,原始配置将适用于postmaster的生活.

使bgwriter_lru_maxpages的最大值有效地无限制(Jim Nasby)

E.1.3.1.9.可靠性

创建或取消链接文件后,在父目录(Michael Paquier)上执行fsync,

这可以降低掉电后数据丢失的风险.

E.1.3.1.9.1.预写日志 ( WAL )

防止不必要的检查点和其他空闲系统的WAL归档(Michael Paquier)

添加wal_consistency_checking服务器参数以将详细信息添加到可在备用服务器上进行健全检查的WAL (Kuntal Ghosh,Robert Haas)

任何理智检查失败都会在备用系统上产生致命错误.

将最大可配置的WAL段大小增加到一千兆字节(Beena Emerson)

更大的WAL段大小允许更少的archive_command调用和较少的WAL文件进行管理.

E.1.3.2.复制和恢复

添加逻辑复制表到备用服务器的能力(Petr Jelinek)

逻辑复制允许比物理复制更多的灵活性,包括不同主要版本的PostgreSQL和选择性复制之间的复制.

允许等待来自备用服务器的提交确认,而不管它们在synchronize_standby_names中显示的顺序(Masahiko Sawada)

以前,服务器总是等待在synchronous_standby_names首先出现的主动standbys.新的synchronous_standby_names关键字ANY允许等待任意数量的待机,不管它们的顺序如何.这被称为仲裁提交.

减少执行流式备份和复制所需的配置更改(Magnus Hagander,Dang Minh Huong)

具体来说,wal_level,max_wal_senders,max_replication_slots和hot_standby的默认值已更改,使其适用于开箱即用的这些用途.

默认情况下,在pg_hba.conf (Michael Paquier)中启用本地连接的复制

以前,pg_hba.conf的复制连接行默认注释掉.这对于pg_basebackup特别有用.

将列添加到pg_stat_replication以报告复制延迟时间(Thomas Munro)

新列是write_lag,flush_lag和replay_lag .

允许在recovery.conf (Michael Paquier)中通过日志序列号( LSN )指定恢复停止点

以前只能通过时间戳或XID来选择停止点.

允许用户禁用pg_stop_backup()等待所有WAL被归档(David Steele)

pg_stop_backup()的可选第二个参数控制该行为.

允许创建临时复制槽 (Petr Jelinek)

临时插槽在会话退出或错误时自动删除.

通过更好地跟踪Access Exclusive锁(Simon Riggs,David Rowley),提高热备份重播的性能

加快两阶段提交恢复性能(Stas Kelvich,Nikhil Sontakke,Michael Paquier)

E.1.3.3.查询

添加XMLTABLE函数,将XML格式化数据转换为行集(Pavel Stehule,ÁlvaroHerrera)

在UPDATE ... SET ( column_list ) = row_constructor (Tom Lane)中允许标准行构造函数语法

row_constructor现在可以从关键字ROW开始; 以前必须省略.此外,row_constructor的table_name .*的row_constructor现在扩展为多个列,如row_constructor的其他用法.

修正大字符代码的正则表达式字符类处理,尤其是U+7FF (Tom Lane)以上的Unicode字符

以前,这些角色从来不被认为属于依赖于区域设置的字符类,例如[[:alpha:]] .

E.1.3.4.实用程序命令

添加表分区语法,自动创建分区约束并处理元组插入和更新的路由(Amit Langote)

语法支持范围和列表分区.

添加AFTER触发转换表以记录更改的行(Kevin Grittner,Thomas Munro)

可以使用以服务器端语言编写的触发器访问转换表.

允许限制性行级安全策略 (Stephen Frost)

以前所有安全策略都是宽容的,这意味着任何匹配的策略都允许访问.限制性政策必须符合获得授权的权限.这些策略类型可以组合.

创建外键约束时,请仅对引用的表(Tom Lane)检查REFERENCES权限,

还需要以前对引用表的REFERENCES权限.这似乎源于对SQL标准的误读.由于创建外键(或任何其他类型的)约束需要对受约束的所有权权限,另外要求REFERENCES权限似乎没有意义.

允许对模式的默认权限 (Matheus Oliveira)

这是使用ALTER DEFAULT PRIVILEGES命令完成的.

添加CREATE SEQUENCE AS命令创建一个匹配整数数据类型的序列(Peter Eisentraut)

这简化了与基列范围匹配的序列的创建.

允许使用INSTEAD INSERT触发器(Haribabu Kommi)在COPY view FROM source视图

触发器被馈送由COPY读取的数据行.

允许在DDL命令中指定一个没有参数的函数名,如果它是唯一的(Peter Eisentraut)

例如,如果只有一个具有该名称的函数,则允许在函数名称上没有参数的DROP FUNCTION .此行为是SQL标准所必需的.

允许使用单个DROP命令删除多个函数,运算符和聚合(Peter Eisentraut)

支持在CREATE SERVER,CREATE USER MAPPING和CREATE COLLATION (Anastasia Lubennikova,Peter Eisentraut)中不存在

让VACUUM VERBOSE报告跳过的冻结页面数量和最早的xmin(Masahiko Sawada,Simon Riggs)

此信息也包含在log_autovacuum_min_duration输出中.

提高VACUUM删除尾随空堆页面的速度(Claudio Freire,ÁlvaroHerrera)

E.1.3.5.数据类型

为JSON和JSONB添加全文搜索支持(Dmitry JSONB )

现在可以在这些数据类型上使用函数ts_headline()和to_tsvector() .

添加对EUI-64 MAC地址的支持,作为新的数据类型macaddr8 (Haribabu Kommi)

这补充了对EUI-48 MAC地址的现有支持(类型为macaddr ).

添加用于将数值分配给插入列(Peter Eisentraut)的列的标识列

这些类似于SERIAL列,但符合SQL标准.

允许ENUM值重命名(Dagfinn IlmariMannsåker)

这使用语法ALTER TYPE ... RENAME VALUE .

适当地将数组假类( anyarray )视为to_json()和to_jsonb() (Andrew Dunstan)中的数组,

以前声明为anyarray列(特别是pg_stats视图中的pg_stats )被转换为JSON字符串而不是数组.

添加运算符乘以和除以money值与int8值(Peter Eisentraut)

以前,这种情况会导致将int8值转换为float8,然后使用money -and- float8运算符.新的行为避免了可能的精度损失.但是请注意,int8分割现在会截断商,就像其他整数分割的情况一样,而前面的行为会被舍弃.

检查money类型的输入函数溢出(Peter Eisentraut)

E.1.3.6.功能

添加简化的regexp_match()函数(Emre Hasegeli)

这与regexp_matches()类似,但它只返回第一个匹配的结果,因此不需要返回一个集合,从而更容易用于简单的情况.

添加一个jsonb的删除操作符的版本,jsonb 操作符将要删除的数组(Magnus Hagander)

使json_populate_record()和相关函数递归地处理JSON数组和对象(Nikita Glukhov)

通过此更改,目标SQL类型中的数组类型字段从JSON数组正确转换,复合类型字段可以从JSON对象正确转换.以前,这种情况会失败,因为JSON值的文本表示将被提供给record_in()或record_in(),并且其语法与这些输入函数所期望的不符.

添加函数txid_current_ifassigned()返回当前事务ID,如果未指定事务ID,则返回NULL (Craig Ringer)

这与txid_current()不同,txid_current()总是返回一个事务ID,如有必要,分配一个事务ID.与该功能不同,该功能可以在备用服务器上运行.

添加函数txid_status()以检查事务是否已提交(Craig Ringer)

这对于在突然断开连接后检查是否有效,无论您以前的事务是否提交,您是否没有收到确认.

允许make_date()将BC作为负年份make_date() )

Make to_timestamp()和to_date()拒绝超出范围的输入字段(Artur Zakirov)

例如,以前的to_date('2009-06-40','YYYY-MM-DD')被接受并返回2009-07-10 .现在会产生错误.

E.1.3.7.服务器端语言

允许将PL / Python的cursor()和execute()函数调用为其计划对象参数的方法(Peter Eisentraut)

这允许更加面向对象的编程风格.

允许PL / pgSQL的GET DIAGNOSTICS语句来检索值到数组元素(Tom Lane)

以前,语法限制阻止了目标变量成为数组元素.

E.1.3.7.1.PL / Tcl的

允许PL / Tcl函数返回复合类型和集合(Karl Lehenbauer)

向PL / Tcl(Victor Wagner)添加子事务处理命令

这使得PL / Tcl查询失败而不中止整个功能.

添加服务器参数pltcl.start_proc和pltclu.start_proc,以允许在PL / Tcl启动(Tom Lane)上调用初始化函数

E.1.3.8.客户端接口

允许在libpq连接字符串和URI中指定多个主机名或地址 (Robert Haas,Heikki Linnakangas)

libpq将连接到列表中的第一个响应服务器.

允许libpq连接字符串和URI请求读/写主机,即主服务器而不是备用服务器(Victor Wagner,Mithun Cy)

当指定了多个主机名时,这很有用.它由libpq连接参数target_session_attrs .

允许将密码文件名指定为libpq连接参数(Julian Markwort)

以前只能通过环境变量指定.

添加功能PQencryptPasswordConn()以允许在客户端创建更多类型的加密密码(Michael Paquier,Heikki Linnakangas)

以前只能使用PQencryptPassword()创建MD5加密的密码.这个新功能也可以创建SCRAM-SHA-256加密的密码.

将ecpg预处理器版本从4.12更改为10(Tom Lane)

此后ecpg版本将匹配PostgreSQL发行版本号.

E.1.3.9.客户应用程序

E.1.3.9.1.PSQL

向psql添加条件分支支持(Corey Huinker)

此功能添加了psql元命令\if,\elif,\else和\endif .这主要有助于脚本.

添加psql \gx元命令以扩展模式( \x )(Christoph Berg)执行( \g )查询

在反向执行的字符串(Tom Lane)中展开psql变量引用

这在新的psql条件分支命令中特别有用.

防止将psql的特殊变量设置为无效值(DanielVérité,Tom Lane)

以前,将psql的一个特殊变量静默地设置为无效值会导致默认行为.如果提议的新值无效,则\set on a special variable将失败.作为一个特殊的例外,在一个布尔值特殊变量上,\set具有一个空的或省略的新值,仍然具有将变量设置为on的效果; 但是现在它实际上是获取该值而不是一个空字符串.在特殊变量上,\unset显式地将变量设置为其默认值,这也是启动时获取的值.总之,控件变量现在总是具有可反映的值,反映了psql实际在做什么.

添加显示服务器版本和psql版本的变量(Fabien Coelho)

改进psql的\d (显示关系)和\dD (显示域)命令以显示分离列中的排序规则,可空和默认属性(Peter Eisentraut)

之前,它们显示在单个"修饰符"列中.

使各种\d命令更一致地处理不匹配对象的情况(Daniel Gustafsson)

他们现在都将关于该消息的消息打印到stderr,而不是stdout,并且消息语句更加一致.

改进psql的标签完成(Jeff Janes,Ian Barwick,Andreas Karlsson,Sehrope Sarkuni,Thomas Munro,Kevin Grittner,Dagfinn IlmariMannsåker)

E.1.3.9.2.pgbench

添加pgbench选项--log-prefix来控制日志文件前缀(Masahiko Sawada)

允许pgbench的元命令跨越多行(Fabien Coelho)

现在可以通过写入反斜杠返回到下一行的元命令.

删除相对于其他命令行选项(Tom Lane)的-M选项的放置限制

E.1.3.10.服务器应用

添加pg_receivewal选项-Z / --compress来指定压缩(Michael Paquier)

添加pg_recvlogical选项--endpos以指定结束位置(Craig Ringer)

这补充了现有的--startpos选项.

重命名initdb选项--noclean和--nosync要拼写--no-clean和--no-sync (Vik Fearing,Peter Eisentraut)

旧的拼写仍然支持.

E.1.3.10.1.pg_dump,pg_dumpall,pg_restore

允许pg_restore排除模式(Michael Banck)

这将添加一个新的-N / --exclude-schema选项.

添加--no-blobs选项到pg_dump (Guillaume Lelarge)

这样可以抑制倾倒大物体.

添加pg_dumpall选项--no-role-passwords以省略角色密码(Robins Tharakan,Simon Riggs)

这允许非超级用户使用pg_dumpall ; 没有这个选项,它失败,因为无法读取密码.

使用来自备用服务器卸载时同步快照的支持(彼得·杰琳克)

问题fsync()上所产生的输出文件的pg_dump和pg_dumpall(迈克尔Paquier宾馆)

这提供了输出在程序退出之前安全地存储在磁盘上更安全.这可以用新的禁用--no-sync选项.

E.1.3.10.2.pg_basebackup

允许pg_basebackup到流预写日志焦油模式(马格努斯·哈根德)

该WAL将存储从基础备份一个单独的tar文件.

请pg_basebackup使用临时复制插槽(马格努斯·哈根德)

临时复制插槽时默认使用pg_basebackup使用WAL流使用默认选项.

更注意在所有需要的地方fsync'ing pg_basebackup和pg_receivewal(迈克尔Paquier宾馆)

添加pg_basebackup选项--no-sync来禁用FSYNC(迈克尔Paquier宾馆)

提高pg_basebackup的处理,其中目录跳过(戴维·斯蒂尔)

E.1.3.10.3.pg_ctl

添加等待选项pg_ctl的推进操作(彼得·艾森特劳特)

添加长选项pg_ctl等待(--wait)和无等待(--no-wait)(维克·费林)

添加长选项pg_ctl服务器选项(--options)(彼得·艾森特劳特)

请pg_ctl start --wait检测服务器准备通过观看postmaster.pid,而不是试图连接(汤姆·洛讷)

邮政局长已更改为报告在其准备就绪的连接状态postmaster.pid,并且pg_ctl现在检查该文件,以检测是否启动完成.这比旧方法更高效,更可靠,它消除了有关启动期间拒绝连接尝试邮政局长日志条目.

减少pg_ctl等待邮政局长时的反应时间启动/停止(汤姆·洛讷)

pg_ctl等待邮政局长状态改变的时候,而不是每秒一次,现在探测每秒10次.

确保pg_ctl与非零状态退出时,如果被等待的操作的超时时间内未完成(彼得·艾森特劳特)

在start和promote操作现在返回退出状态1,不为0,在这种情况下.该stop操作一直这样做的.

E.1.3.11.源代码

更改为两部分的发行版本编号(彼得·艾森特劳特,汤姆·洛讷)

版本号现在有两个部分(例如,10.1)而不是三个(例如9.6.3).主要版本现在将增加仅仅是第一号和次要版本将增加只是第二个数字.发布分支将由单一的数字(例如,被称为10而非9.6).这一变化是为了减少关于什么是的主要或次要版本用户混淆的PostgreSQL.

改善的行为pgindent(皮厄特勒·斯特凡尼亚克,汤姆·洛讷)

我们已经切换到新版本的pg_bsd_indent基于FreeBSD项目所做的最新改进.这解决了许多小错误,导致奇怪的C代码格式化的决定.最值得注意的是,在括号内线(如在多线函数调用)现在均匀地缩进以匹配开口括号,即使这将导致延伸过去右边距代码.

允许ICU库任选地用于印刷支持(彼得·艾森特劳特)

在ICU库有版本,它允许不同版本之间归类更改检测.它是通过配置选项启用--with-icu.默认仍然使用操作系统的本机整理库.

自动标记所有PG_FUNCTION_INFO_V1功能DLLEXPORT-ed上的Windows(劳伦茨·阿尔贝)

如果第三方代码使用的extern函数声明,他们还应该添加DLLEXPORT标记这些声明.

除去SPI功能SPI_push(),SPI_pop(),SPI_push_conditional(),SPI_pop_conditional(),和SPI_restore_connection()作为不需要(汤姆·洛讷)

他们的功能现在自动发生.现在有这些名字无操作宏,以便外部模块并不需要立即更新,但最终这样的电话应该被删除.

这种变化的一个副作用是,SPI_palloc()和相关函数现在需要有效SPI连接; 他们不退化为简单的palloc(),如果是没有的.以前的行为是不是非常有用,并带来意想不到的内存泄漏的风险.

允许共享内存动态分配(托马斯·门若,罗伯特·阿斯)

添加平板状内存分配器用于有效固定大小的分配(托马斯·沃德拉)

使用POSIX信号量,而不是SysV的信号量的Linux和FreeBSD的(汤姆·洛讷)

这避免了对SysV的信号量使用特定于平台的限制.

提高对64位原子公司支持(安德烈什·弗雷德)

上启用64位原子操作ARM64(罗曼·沙波肖尼克)

切换到使用clock_gettime(),如果有的话,对于持续时间测量(汤姆·洛讷)

gettimeofday()仍然使用,如果clock_gettime()是不可用的.

添加更强大的随机数生成用于加密安全使用(马格努斯Hagander,迈克尔Paquier宾馆,海基Linnakangas)

如果无法找到强大的随机数生成器,配置,除非将无法--disable-strong-random选择使用.然而,与此选项,pgcrypto需要一个强大的随机数生成器功能将被禁用.

让WaitLatchOrSocket()等待在Windows套接字连接(安德烈什·弗雷德)

tupconvert.c 功能不再转换的元组只是为了嵌入在他们不同的复合型OID(阿什托什·巴帕特,汤姆·洛讷)

大部分来电者不关心的复合型OID的; 但如果结果元组用作复合基准,应采取措施,以确保正确的OID插入它.

删除SCO和UnixWare的端口(汤姆·洛讷)

大修文档生成过程(亚历山大Lakhin)

使用XSLT打造PostgreSQL的文档(彼得·艾森特劳特)

此前玉,DSSSL和JadeTeX能使用.

建立HTML使用文档XSLT默认样式表(彼得·艾森特劳特)

E.1.3.12.附加模块

允许file_fdw来自程序输出以及文件(科里·哈克,亚当·戈马)读

在postgres_fdw,推聚集函数到远程服务器,在可能的情况(杰文Chalke,阿什托什·巴帕特)

这减少了必须从远程服务器传递的数据量,并分担了请求服务器聚合计算.

在postgres_fdw,推动加入到在更多的情况下(戴维·罗利,阿什托什·巴帕特,茨罗·富士塔)的远程服务器

正确地支持OID在列postgres_fdw表(茨罗·富士塔)

此前OID列始终返回零.

允许btree_gist和btree_gin索引枚举类型(安德鲁·邓斯坦)

这使得在排除限制使用枚举.

添加索引支持btree_gist的UUID数据类型(保罗·晶斯)

添加amcheck它可以检查B树索引的有效性(彼得·乔根)

显示忽略的常量,$N而不是?在pg_stat_statements(卢卡斯Fittl)

提高立方体零维立方体的处理(汤姆·洛讷)

这也提高了处理infinite和NaN值.

允许pg_buffercache以更少的锁运行(伊万Kartyshov)

这使得破坏性更小的时候在生产系统中运行.

添加pgstattuple等功能pgstathashindex()来查看哈希索引统计信息(阿什托什·沙玛)

使用GRANT权限来控制pgstattuple等功能的使用(斯蒂芬·佛洛斯特)

这允许DBA允许非超级用户运行这些功能.

减少锁定时pgstattuple等检查哈希索引(阿米特卡皮拉)

添加pageinspect功能page_checksum()显示页面的校验和(托马斯·沃德拉)

添加pageinspect功能bt_page_items()打印从页面图像页面项目(托马斯·沃德拉)

添加哈希索引支持pageinspect(杰斯珀·彼得森,阿什托什·沙玛)

原创粉丝点击