
前言
简短的消息发布,可以直接参考:2024.9.26 PG17版本正式发布。 https://www.postgresql.org/about/news/postgresql-17-released-2936/
下边是完整的PG17的Release Notes,以供参考。
PG 17 Release Notes
E.1.1. Overview[1] E.1.2. Migration to Version 17[2] E.1.3. Changes[3] E.1.4. Acknowledgments[4]
1.1 简介
PostgreSQL 17包含了许多新的特性和增强,包括:
新的Vacuum内存管理系统,减少内存消耗,可以提高整体Vacuum性能。
新的SQL/JSON功能,包括构造函数、标识函数和JSON_TABLE()函数,该函数将JSON数据转换为表表示。
各种查询性能改进,包括使用流I/O的顺序读取、高并发性下的写吞吐量以及在b树索引中对多个值进行搜索。
逻辑复制增强,包括:
故障转移控制 pg_createssubscriber,一个从物理备用服务器创建逻辑副本的实用程序 Pg_upgrade现在可以同时保留发布者和订阅者上的复制槽 新的客户端连接选项支持sslnegotiation=direct,它执行直接TLS握手以避免往返协商。
pg_basebackup现在支持增量备份。
COPY添加了一个新选项ON_ERROR ignore,它允许在发生错误时继续复制操作。
上述各项内容和PostgreSQL 17的其他新特性将在下面的章节中更详细地解释。
1.2 迁移到PG17
对于那些希望从以前的任何版本迁移数据的人来说,需要使用pg_dumpall或使用pg_upgrade或逻辑复制进行转储/恢复。有关迁移到新的主要版本的一般信息,请参阅第18.6节[5]。
版本17包含许多可能影响与以前版本兼容性的更改。请注意以下不兼容的地方:
修改函数以在维护操作中使用安全的search_path (Jeff Davis)§[6]这可以防止维护操作(ANALYZE、CLUSTER、REFRESH MATERIALIZED VIEW、REINDEX或VACUUM)执行不安全访问。需要引用非默认模式的表达式索引和物化视图所使用的函数必须在函数创建期间指定搜索路径。
限制ago只出现在interval间隔值的末尾(Joseph Koshakow[7])
另外,要防止空的interval单位多次出现。
删除服务器变量old_snapshot_threshold (Thomas Munro[8])§
该变量允许vacuum删除可能对正在运行的事务仍然可见的行,从而在以后访问时导致“快照太旧”错误。如果以后能找到一个改进的实现,这个特性可能会被重新添加到PostgreSQL中。
改变了 SET SESSION AUTHORIZATION对初始会话用户的超级用户状态的处理(Joseph Koshakow)[9]新的行为基于会话用户在发出SET session AUTHORIZATION命令时的超级用户状态,而不是他们在连接时的超级用户状态。
删除模拟每个数据库用户的功能(Nathan Bossart)§[10]db_user_namespace这个特性很少被使用。
删除Windows上的wal_sync_method值fsync_writethrough (Thomas Munro) §[11]该值与Windows上的fsync相同。
更改两个WAL文件名函数(Kyotaro Horiguchi, Andres Freund, Bruce Momjian[12])的文件边界处理 函数pg_walfile_name()和pg_walfile_name_offset()用于报告LSN位于文件段边界时的前一个LSN段号; 它现在返回当前LSN段。
删除服务器变量trace_recovery_messages,因为它不再需要(Bharath Rupireddy[13])§
删除信息模式列element_types。domain_default (Peter Eisentraut[14])
修改pgrowlocks锁模式输出标签(Bruce Momjian[15])
从pg_stat_bgwriter (Bharath Rupireddy)§[16]中删除buffers_backend和buffers_backend_fsync 对于pg_stat_io中的类似列,这些字段被认为是冗余的。
重命名pg_stat_statements 的I/O块读/写定时统计列(Nazir Bilal Yavuz)§[17]将blk_read_time重命名为shared_blk_read_time,将blk_write_time重命名为shared_blk_write_time。
改变pg_attribute.attstattarget和pg_statistic_ext.stxstattarget,表示默认统计目标为NULL (Peter Eisentraut)[18]
重命名pg_collation.colliculocale为colllocale,pg_database.daticulocale更名为datlocale (Jeff Davis) §[19]
将pg_stat_progress_vacuum列max_dead_tuples重命名为max_dead_tuple_bytes,将num_dead_tuples重命名为num_dead_item_ids,并添加dead_tuple_bytes (Masahiko Sawada)§§[20]
重命名系统视图中的SLRU列pg_stat_slru (Alvaro Herrera)§[21]pg_stat_reset_slru()接受的列名也会随之改变。
1.3 变更
下面是关于PostgreSQL 17和上一个主要版本之间变化的详细说明。
1.3.1 服务器
1、优化器
允许优化器通过考虑以前的行输出子句(Jian Guo, Richard Guo, Tom Lane)[22]中引用的列的统计信息和排序顺序来改进CTE计划
改进IS NOT NULL和IS NULL查询限制的优化(David Rowley, Richard Guo, Andy Fan[23]) 删除对非空列查询的IS NOT NULL限制,如果指定IS NULL,则取消对非空列的扫描。
允许在IS [NOT] UNKNOWN条件下对布尔列进行分区修剪(David Rowley[24])
当使用包含运算符<@和@>时,改进对范围值的优化(Kim Johan Andersson, Jian He)§[25]
允许将相关的IN子查询转换为连接(Andy Fan, Tom Lane)§[26]
改进了对分区表、继承父类和UNION ALL查询的LIMIT子句的优化(Andy Fan, David Rowley)[27]
允许查询节点在更多情况下并行运行(Tom Lane)§[28]
允许GROUP BY列在内部排序以匹配ORDER BY (Andrei Lepikhov, Teodor Sigaev)§[29]这可以使用服务器变量enable_group_by_reordering禁用。
允许UNION(没有ALL)使用MergeAppend (David Rowley)§[30]
修正了MergeAppend计划更准确地计算需要排序的行数(Alexander Kuzmenkov)§[31]
允许GiST和SP-GiST索引成为增量排序的一部分(Miroslav Bendik)[32]这对于ORDER BY子句特别有用,其中第一列具有GiST和SP-GiST索引,而其他列没有。
在pg_stats中添加列来报告范围类型的直方图信息(Egor Rogov, Soumyadeep Chakraborty)[33]
2、索引
允许b树索引更有效地找到一组值,例如使用常量的IN子句提供的值(Peter Geoghegan, Matthias van de menent)§[34]
允许使用并行工作者创建BRIN索引(Tomas Vondra, Matthias van de menent)§[35]
3、通用性能
允许Vacuum更有效地去除和冻结元组(Melanie Plageman, Heikki Linnakangas[36]) 真空引起的WAL流量也更加紧凑。
允许Vacuum更有效地存储元组引用(Masahiko Sawada, John Naylor[37]), https://postgr.es/c/30e144287,https://postgr.es/c/667e65aac, https://postgr.es/c/6dbb49026 此外,当maintenance_work_mem或autovacuum_work_mem较高时,vacuum不再隐式地限制为1gb内存。
优化没有索引的关系的vacuum (Melanie Plageman[38])
增加默认的vacuum_buffer_usage_limit到2MB (Thomas Munro[39])
当检查多个成员的角色时提高性能 (Nathan Bossart) §[40]
提高高竞争WAL写的性能(Bharath Rupireddy) §[41]
提高传输大数据块到客户端的性能(Melih Mutlu)[42]
允许用新的系统变量io_combine_limit对文件系统读取进行分组(Thomas Munro, Andres Freund, Melanie Plageman, Nazir Bilal Yavuz) §[43] §[44] §[45]
4、监控
创建系统视图pg_stat_checkpointer (Bharath Rupireddy, Anton A. Melnikov, Alexander Korotkov)§[46] §[47] §[48]相关的列已经从pg_stat_bgwriter中删除,并添加到这个新的系统视图中。
改善对重置统计数据的控制(Atsushi Torikoshi, Bharath Rupireddy)§[49] §[50] §[51]允许pg_stat_reset_shared()(不带参数)和pg_stat_reset_shared(NULL)重置所有共享统计信息。允许pg_stat_reset_shared('slru')和pg_stat_reset_slru()(不带参数)重置slru统计数据,这已经可以通过pg_stat_reset_slru(NULL)来实现。
添加与备份中WAL恢复相关的日志消息(Andres Freund)§[52]
为信任连接增加log_connections日志行(Jacob Champion)§[53]
添加日志消息来报告walsender获取和释放复制槽(Bharath Rupireddy)§[54]这是由服务器变量log_replication_commands启用的。
增加系统视图pg_wait_events,用于报告等待事件类型(Bertrand Drouvot)https://postgr.es/c/1e68e43d3 这对于为pg_stat_activity中报告的等待事件添加描述非常有用。
为检查点延迟添加等待事件(Thomas Munro)§[55]
允许真空报告索引处理的进度(Sami Imseih)§[56]这出现在系统视图pg_stat_progress_vacuum列indexes_total和indexes_processed中。
5、权限
允许授予执行维护操作的权利(Nathan Bossart)https://postgr.es/c/ecb0fd337 可以使用maintenance特权在每个表的基础上授予权限,也可以通过pg_maintenance预定义角色在每个角色的基础上授予权限。允许的操作有:VACUUM, ANALYZE, REINDEX, REFRESH MATERIALIZED VIEW, CLUSTER, LOCK TABLE。
允许具有pg_monitor成员的角色执行pg_current_logfile() (Pavlo Golub, Nathan Bossart)§[57]
6、服务器配置
添加系统变量allow_alter_system来禁止ALTER system (Jelte Fennema-Nio, Gabriele Bartolini)§[58]
允许ALTER SYSTEM设置不可识别的自定义服务器变量(Tom Lane)§[59]使用GRANT ON PARAMETER也可以实现这一点。
添加服务器变量transaction_timeout来限制事务的持续时间(Andrey Borodin, Japin Li, Junwang Zhao, Alexander Korotkov)§[60] §[61] §[62]
添加一个内置的与平台无关的排序提供程序(Jeff Davis)§[63] §[64] §[65] §[66]它支持C和C. utf -8排序。
添加服务器变量huge_pages_status来报告Postgres使用的大页面(Justin Pryzby)§[67]当将huge_pages设置为try时,这很有用。
添加服务器变量来禁用事件触发器(Daniel Gustafsson)§[68]设置event_triggers允许临时禁用事件触发器以进行调试。
允许配置SLRU缓存大小(Andrey Borodin, Dilip Kumar, Alvaro Herrera)§[69]新的服务器变量是commit_timestamp_buffers、multixact_member_buffers、multixact_offset_buffers、notify_buffers、serializable_buffers、subtransaction_buffers和transaction_buffers。Commit_timestamp_buffers、transaction_buffers和subtransaction_buffers可以通过shared_buffers自动扩展。
7、流复制与恢复
增加对增量文件系统备份的支持(Robert Haas, Jakub Wartak, Tomas Vondra)§[70] §[71]增量备份可以使用pg_basebackup的新选项——Incremental来创建。新的应用程序pg_combinebackup允许操作基本和增量文件系统备份。
允许创建WAL摘要文件(Robert Haas, Nathan Bossart, Hubert Depesz Lubaczewski) §[72] §[73] §[74] §[75]这些文件记录了在LSN范围内发生更改的块号,对于增量文件系统备份非常有用。这是由服务器变量summarize_wal和wal_summary_keep_time控制的,并通过pg_available_wal_summaries()、pg_wal_summary_contents()和pg_get_wal_summarizer_state()进行自省。
将系统标识添加到文件系统备份清单文件[76](Amul Sul)§§[77]这有助于检测无效的WAL使用。
当pg_basebackup将连接信息写入postgresql.auto.conf时,允许写入连接字符串值dbname (Vignesh C, hayto Kuroda)https://postgr.es/c/a145f424d
添加列pg_replication_slots.invalidation_reason报告无效插槽的原因(Shveta Malik, Bharath Rupireddy) §[78] §[79]
添加列pg_replication_slots.inactive_since报告槽不活动持续时间(Bharath Rupireddy)§[80] §[81] §[82]
增加函数pg_sync_replication_slots()来同步逻辑复制槽(Hou Zhijie, Shveta Malik, Ajin Cherian, Peter Eisentraut)§[83] §[84]
在复制协议中添加故障转移属性(侯志杰,Shveta Malik)§[85]
8、逻辑复制
添加应用程序pg_createssubscriber从物理备用服务器(Euler Taveira)§[86]创建逻辑副本
pg_upgrade支持迁移有效的逻辑槽位和订阅(Hayato Kuroda, Hou Zhijie, Vignesh C, Julien Rouhaud, Shlok Kyal)§[87] §[88]这允许逻辑复制在升级后快速继续。这只适用于版本为17或更高的旧PostgreSQL集群。
启用逻辑槽故障切换(侯志杰,Shveta Malik, Ajin Cherian)https://postgr.es/c/c393308b6 这由pg_create_logical_replication_slot()的第五个可选参数控制。
添加服务器变量sync_replication_slots以启用故障切换逻辑槽同步(Shveta Malik, Hou Zhijie, Peter Smith)§[89] §[90]
为CREATE/ALTER SUBSCRIPTION (Shveta Malik, Hou Zhijie, Ajin Cherian) §[91] §[92]添加逻辑复制故障转移控制
允许逻辑复制更改的应用程序在订阅者(hayto Kuroda)§[93]上使用哈希索引 以前,只有b树索引可以用于此目的。
在有许多子事务的情况下提高逻辑解码性能(Masahiko Sawada)§[94]
如果订阅所有者的超级用户权限被撤销,重新启动应用程序(Vignesh C)§[95]这将强制重新身份验证。
添加flush选项到pg_logical_emit_message() (Michael Paquier)§[96]这使得消息持久。
允许对物理备节点进行规范,这些备节点必须在对用户可见之前进行同步(Hou Zhijie, Shveta Malik)§[97] §[98]
新的服务器变量是synchronized_standby_slots。
添加工作者类型列到pg_stat_subscription (Peter Smith)§[99]
1.3.2 工具命令
添加新的COPY选项ON_ERROR ignore来丢弃错误行(Damir Belyalov, Atsushi Torikoshi, Alex Shulgin, Jian He, Yugo Nagata)§[100] §[101] §[102] §[103]默认行为是ON_ERROR stop。
添加新的COPY选项LOG_VERBOSITY,报告COPY FROM忽略错误行(Bharath Rupireddy)§§[104]
允许COPY FROM报告处理过程中跳过的行数(Atsushi Torikoshi)§[105]这出现在系统视图列pg_stat_progress_copy.tuples_skip中。
在COPY FROM中,允许简单地指定所有列都应该强制为空或不为空(Zhang Mingli) §[106]
允许分区表有标识列 (Ashutosh Bapat) §[107]
在分区表上允许排除约束[108](Paul A. Jungwirth)§[109]只要排除约束比较分区键列是否相等,其他列就可以使用特定于排除约束的比较。
添加了更清晰的ALTER TABLE方法来将列设置为默认统计目标(Peter Eisentraut)§[110]新语法是ALTER TABLE…默认设置统计信息;仍然支持使用SET STATISTICS -1。
允许ALTER TABLE修改一个列的生成表达式(Amul Sul) §[111]语法是``ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION
.允许在分区表上指定表访问方法(Justin Pryzby, Soumyadeep Chakraborty, Michael Paquier)§[112] §[113]
添加默认设置给:
ALTER TABLE .. SET ACCESS METHOD
(Michael Paquier) §[114]增加了对在连接时事件触发器[115]的支持(Konstantin Knizhnik, Mikhail Gribkov)§[116]
增加REINDEX[117]事件触发器支持(Garrett Thornburg, Jian He) §[118]
如果没有指定表名,允许CLUSTER选项的括号语法(Nathan Bossart) §[119]
1、EXPLAIN
允许EXPLAIN报告优化器内存使用情况(Ashutosh Bapat)§[120]这个选项叫做MEMORY。
添加EXPLAIN选项SERIALIZE来报告为网络传输转换数据的成本(Stepan Rutz, Matthias van de menent)§[121]
添加本地I/O块读/写时序统计到EXPLAIN的BUFFERS输出(Nazir Bilal Yavuz)§[122]
改进EXPLAIN对SubPlan节点和输出参数的显示(Tom Lane, Dean Rasheed)§[123]
添加JIT deform_counter细节到EXPLAIN (Dmitry Dolgov)§[124]
1.3.3 数据类型
允许interval数据类型支持+/-∞值(Joseph Koshakow, Jian He, Ashutosh Bapat)§[125]
允许使用通过ALTER TYPE添加的ENUM,如果该类型是在同一个事务中创建的(Tom Lane)§[126]这在以前是不允许的。
1.3.4 MERGE
允许MERGE修改可更新视图(Dean Rasheed)§[127]
让MERGE支持:WHEN NOT MATCHED BY SOURCE`(Dean Rasheed) §[128]https://postgr.es/c/0294df2f1) 在目标行上已经支持WHEN NOT MATCHED。
允许MERGE使用return子句(Dean Rasheed)§[129]新的RETURNING函数merge_action()报告生成该行的DML。
1.3.5 函数
添加函数JSON_TABLE()将JSON数据转换为表表示(Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit langgote, Jian He) §[130] §[131]这个函数可以在SELECT查询的FROM子句中用作元组源。
添加SQL/JSON构造函数JSON(), JSON_SCALAR()和JSON_SERIALIZE() (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote)§[132]
增加SQL/JSON查询函数JSON_EXISTS(), JSON_QUERY()和JSON_VALUE() (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit langgote, Peter Eisentraut, Jian He)§[133] §[134] §[135] §[136] §[137]
添加jsonpath方法将JSON值转换为其他JSON数据类型(Jeevan Chalke)§[138]jsonpath方法有.bigint()、.boolean()、.date()、.decimal([precision [, scale]])、.integer()、.number()、.string()、.time()、.time_tz()、.timestamp()和.timestamp_tz()。
添加to_timestamp()时区格式说明符(Tom Lane)§[139]TZ接受时区缩写或数字偏移量,而OF只接受数字偏移量。
允许会话时区由AS LOCAL (Vik fears)§[140]指定 当从时间戳值转换添加和删除时区,而不是指定文字会话时区时,这很有用。
增加函数uuid_extract_timestamp()和uuid_extract_version()返回UUID信息(Andrey Borodin)§[141]
添加函数来生成指定范围内的随机数(Dean Rasheed)§[142]这些函数是随机的(min, max),它们接受integer, bigint和numeric类型的值。
添加将整数转换为二进制和八进制字符串的函数(Eric Radman, Nathan Bossart)§[143]函数是to_bin()和to_oct()。
添加Unicode信息函数(Jeff Davis)§[144]函数unicode_version()返回Unicode版本,icu_unicode_version()返回ICU版本,unicode_assigned()返回是否为字符分配了Unicode码点。
添加函数xmltext()将文本转换为单个XML文本节点(Jim Jones)§[145]
添加to_regtypemod()函数来返回类型规范的类型修饰符(David Wheeler, Erik Wienhold)§[146]
添加pg_basetype()函数返回域的基本类型(Steve Chavez)§[147]
添加函数pg_column_toast_chunk_id()返回一个值的TOAST标识符(Yugo Nagata)§[148]如果值没有存储在TOAST中,则返回NULL。
1.3.6 PL/PgSQL
允许plpgsql %TYPE和%ROWTYPE规范表示非数组类型的数组(Quan Zongliang, Pavel Stehule)§[149]
允许plpgsql %TYPE规范引用复合列(Tom Lane)§[150]
1.3.7 Libpq
添加libpq函数来修改角色密码(Joe Conway)§[151]新函数PQchangePassword()在将新密码发送到服务器之前对其进行散列处理。
添加libpq函数来关闭门户和准备好的语句(Jelte Fennema-Nio)§[152]函数是PQclosePrepared()、PQclosePortal()、PQsendClosePrepared()和PQsendClosePortal()。
添加libpq API,允许阻塞和非阻塞取消请求,如果已经在使用,则加密(Jelte Fennema-Nio)§[153]以前只支持阻塞的、未加密的取消请求。
添加libpq函数PQsocketPoll()来允许对网络套接字(Tristan Partin, Tom Lane)进行轮询§[154] §[155]
增加libpq函数PQsendPipelineSync()发送一个管道同步点(Anton Kirilov)§[156]这类似于PQpipelineSync(),但它不会刷新到服务器,除非达到输出缓冲区的大小阈值。
添加libpq函数PQsetChunkedRowsMode(),以允许在块中检索结果 (Daniel Vérité) §[157]
允许TLS连接,而不需要网络往返协商(Greg Stark, Heikki Linnakangas, Peter Eisentraut, Michael Paquier, Daniel Gustafsson) §[158] §[159] §[160] §[161] §[162] §[163] §[164] §[165]这是通过客户端选项sslnegotiation=direct来启用的,需要ALPN,并且只在PostgreSQL 17和更高版本的服务器上工作。
1.3.8 Psql
改进了默认和空权限的psql显示(Erik Wienhold, Laurenz Albe)§[166]命令\dp现在显示(无)为空的特权; 默认值仍然显示为空。
有反斜杠命令荣誉\pset null (Erik Wienhold, Laurenz Albe)§[167]先前\pset null被忽略。
允许psql的\watch在返回最小行数后停止(Greg Sabino Mullane)§[168]参数为min_rows。
允许psql连接尝试取消与control-C (Tristan Partin)§[169]
允许psql对非select查询执行FETCH_COUNT(Daniel Vérité) §[170]
改进psql的tab自动填充功能(Dagfinn Ilmari manns<s:1> ker, Gilles Darold, Christoph Heiss, Steve Chavez, Vignesh C, Pavel Borisov, Jian He)§[171] §[172] §[173] §[174] §[175] §[176]
1.3.9 服务器应用程序
添加应用程序pg_walsummary来转储WAL摘要文件(Robert Haas)[§[177]](https://postgr.es/c/8e278b657)
允许pg_dump的大对象批量恢复(Tom Lane)§[178]这允许恢复许多大型对象,以避免事务限制并并行恢复。
添加pg_dump选项——exclude-extension (Ayush Vatsa)§[179]
允许pg_dump, pg_dumpall和pg_restore在文件中指定包括/排除对象(Pavel Stehule, Daniel Gustafsson) §[180]这个选项叫做——filter。
向几个客户端应用程序(Justin Pryzby, Nathan Bossart)添加——sync-method参数§[181]应用程序是initdb、pg_basebackup、pg_checksum、pg_dump、pg_rewind和pg_upgrade。
添加pg_restore选项——transaction-size以允许在事务批次中恢复对象§[182]这样可以获得事务批处理的性能优势,而不会出现过大事务块的问题。
修改pgbench调试模式选项从-d到——debug (Greg Sabino Mullane)§[183]选项-d现在用于数据库名称,还可以使用新的——dbname选项。
添加pgbench选项——exit-on-abort以在任何客户端终止后退出(Yugo Nagata)§[184]
添加pgbench命令\syncpipeline以允许发送同步消息(Anthonin Bonnefoy)§[185]
允许pg_archiivecleanup删除备份历史文件(Atsushi Torikoshi)§[186]选项是——clean-backup-history。
添加一些长选项pg_archiivecleanup (Atsushi Torikoshi)§[187]长选项是——debug、——dry-run和——strip-extension。
允许pg_basebackup和pg_receive在它们的连接规范中使用dbname (Jelte Fennema-Nio)§[188]这对于对数据库名称敏感的连接池程序很有用。
添加pg_upgrade选项——copy-file-range (Thomas Munro)§[189]这在Linux和FreeBSD上是支持的。
允许reindexdb——index并行处理来自不同表的索引(Maxim Orlov, Svetlana Derevyanko, Alexander Korotkov)§[190]
允许reindexdb, vacuumdb和clusterdb处理所有数据库中匹配模式的对象(Nathan Bossart)§[191] §[192] §[193]新选项——all控制此行为。
1.3.10 源码
删除对OpenSSL 1.0.1 (Michael Paquier)的支持§[194]
允许测试在OpenSSL FIPS模式下通过(Peter Eisentraut)§[195] §[196]
使用CPU AVX-512指令进行位计数(Paul Amonson, Nathan Bossart, Ants Aasma) §[197] §[198]
需要LLVM版本10或更高版本(Thomas Munro)§[199]
在64位LoongArch cpu上使用本机CRC指令(xuddong Yang)§[200]
删除AIX支持(Heikki Linnakangas)§[201]
删除Microsoft Visual studio特定的PostgreSQL构建选项(Michael Paquier)§[202]Meson现在是Visual Studio构建中唯一可用的方法。
删除configure选项——disable-thread-safety (Thomas Munro, Heikki Linnakangas)§[203] §[204]我们现在假设所有支持的平台都有足够的线程支持。
删除配置选项——with-CC (Heikki Linnakangas)§[205]设置CC环境变量现在是指定编译器的唯一受支持的方法。
用户定义的数据类型接收函数将不再接收以null结尾的数据(David Rowley)§[206]
添加增量JSON解析器,用于巨大的JSON文档(Andrew Dunstan)§[207]
将顶级README文件转换为Markdown (Nathan Bossart)§[208]
删除不再需要的顶级安装文件(Tom Lane)§[209]
删除make的distprep选项(Peter Eisentraut)§[210]
添加make对Android共享库的支持(Peter Eisentraut§[211]
添加对注入点的后端支持(Michael Paquier)§[212] §[213] §[214] §[215]这用于服务器调试,并且必须在服务器编译时启用它们。
添加动态共享内存注册表(Nathan Bossart)§[216]这允许在启动时未初始化的共享库来协调动态共享内存访问。
修复了emit_log_hook对相同查询使用与其他日志记录相同的时间值的问题(Kambam Vinay, Michael Paquier)§[217]
改进使用json路径进行谓词检查的文档(David Wheeler)§[218]
1.3.11 附加模块
允许具有非连接资格的连接下推到外部服务器和自定义扫描(Richard Guo, Etsuro Fujita)§[219]需要修改外部数据包装器和自定义扫描来处理这些情况。
允许下推EXISTS和IN子查询到postgres_fdw外部服务器(Alexander Pyhalov)§[220]
增加默认的外部数据包装元组成本(David Rowley, Umair Shahid)§[221] §[222]此值由优化器使用。
允许dblink数据库操作被中断(Noah Misch)§[223]
允许在ltree列上创建哈希索引(Tommy Pavlicek)§[224]这还支持ltree列上的散列连接和散列聚合。
允许非重音字符翻译规则包含空格和引号(Michael Paquier)§[225]rules文件的语法已更改。
允许amcheck检查唯一约束违反使用新的选项——checkunique (Anastasia Lubennikova, Pavel Borisov, Maxim Orlov)§[226]
允许在OpenSSL FIPS模式下通过citext测试(Peter Eisentraut)§[227]
允许pgcrypto测试通过OpenSSL FIPS模式(Peter Eisentraut)§[228]
删除一些未使用的SPI宏(Bharath Rupireddy)§[229]
删除adminpack贡献扩展(Daniel Gustafsson)§[230]它被现在已经寿终正寝的pgAdmin III所使用。
允许ALTER OPERATOR设置更多的优化属性 (Tommy Pavlicek) §[231]这对扩展很有用。
允许扩展定义自定义等待事件(Masahiro Ikeda)§[232] §[233] §[234] §[235]自定义等待事件已添加到postgres_fdw和dblink。
添加pg_buffercache函数pg_buffercache_evict(),以允许共享缓冲区驱逐(Palak Chaturvedi, Thomas Munro)§[236]这对测试很有用。
1、pg_stat_statements
用占位符替换pg_stat_statements中的CALL参数(Sami Imseih)§[237]
用占位符替换存储在pg_stat_statements中的点位符名称(Greg Sabino Mullane)§[238]这大大减少了记录SAVEPOINT、RELEASE SAVEPOINT和ROLLBACK to SAVEPOINT命令所需的条目数量。
用占位符替换存储在pg_stat_statements中的两阶段提交gid(Michael Paquier) §[239]这大大减少了记录PREPARE TRANSACTION、COMMIT PREPARED和ROLLBACK PREPARED所需的条目数。
跟踪pg_stat_statements中的DEALLOCATE语句 (Dagfinn Ilmari Mannsåker, Michael Paquier) §[240]DEALLOCATE名称作为占位符存储在pg_stat_statements中。
增加pg_stat_statements 的本地I/O块读/写定时统计列 (Nazir Bilal Yavuz) §[241] §[242]新列是local_blk_read_time和local_blk_write_time。
添加JIT deform_counter细节到pg_stat_statements (Dmitry Dolgov) §[243]
添加可选的第四个参数(minmax_only)到pg_stat_statements_reset(),以允许只重置最小/最大统计数据(Andrei Zubkov)§[244]此参数默认为false。
添加pg_stat_statements列stats_since和minmax_stats_since来跟踪表项创建时间和最后最小/最大重置时间(Andrei Zubkov)§[245]
1.4 致谢
以下个人(按字母顺序排列)以补丁作者、提交者、审阅者、测试人员或问题报告者的身份对该版本做出了贡献。
| Abhijit Menon-Sen |
|---|
| Adnan Dautovic |
| Aidar Imamov |
| Ajin Cherian |
| Akash Shankaran |
| Akshat Jaimini |
| Alaa Attya |
| Aleksander Alekseev |
| Aleksej Orlov |
| Alena Rybakina |
| Alex Hsieh |
| Alex Malek |
| Alex Shulgin |
| Alex Work |
| Alexander Korotkov |
| Alexander Kozhemyakin |
| Alexander Kuzmenkov |
| Alexander Lakhin |
| Alexander Pyhalov |
| Alexey Palazhchenko |
| Alfons Kemper |
| Álvaro Herrera |
| Amadeo Gallardo |
| Amit Kapila |
| Amit Langote |
| Amul Sul |
| Anastasia Lubennikova |
| Anatoly Zaretsky |
| Andreas Karlsson |
| Andreas Ulbrich |
| Andrei Lepikhov |
| Andrei Zubkov |
| Andres Freund |
| Andrew Alsup |
| Andrew Atkinson |
| Andrew Bille |
| Andrew Dunstan |
| Andrew Kane |
| Andrey Borodin |
| Andrey Rachitskiy |
| Andrey Sokolov |
| Andy Fan |
| Anthonin Bonnefoy |
| Anthony Hsu |
| Anton Kirilov |
| Anton Melnikov |
| Anton Voloshin |
| Antonin Houska |
| Ants Aasma |
| Antti Lampinen |
| Aramaki Zyake |
| Artem Anisimov |
| Artur Zakirov |
| Ashutosh Bapat |
| Ashutosh Sharma |
| Atsushi Torikoshi |
| Attila Gulyás |
| Ayush Tiwari |
| Ayush Vatsa |
| Bartosz Chrol |
| Benoît Ryder |
| Bernd Helmle |
| Bertrand Drouvot |
| Bharath Rupireddy |
| Bo Andreson |
| Boshomi Phenix |
| Bowen Shi |
| Boyu Yang |
| Bruce Momjian |
| Cameron Vogt |
| Cary Huang |
| Cédric Villemain |
| Changhong Fei |
| Chantal Keller |
| Chapman Flack |
| Chengxi Sun |
| Chris Travers |
| Christian Maurer |
| Christian Stork |
| Christoph Berg |
| Christoph Heiss |
| Christophe Courtois |
| Christopher Kline |
| Claudio Freire |
| Colin Caine |
| Corey Huinker |
| Curt Kolovson |
| Dag Lem |
| Dagfinn Ilmari Mannsåker |
| Damir Belyalov |
| Daniel Fredouille |
| Daniel Gustafsson |
| Daniel Shelepanov |
| Daniel Vérité |
| Daniel Westermann |
| Darren Rush |
| Dave Cramer |
| Dave Page |
| David Christensen |
| David Cook |
| David G. Johnston |
| David Geier |
| David Hillman |
| David Perez |
| David Rowley |
| David Steele |
| David Wheeler |
| David Zhang |
| Dean Rasheed |
| Denis Erokhin |
| Denis Laxalde |
| Devrim Gündüz |
| Dilip Kumar |
| Dimitrios Apostolou |
| Dmitry Dolgov |
| Dmitry Koval |
| Dmitry Vasiliev |
| Dominique Devienne |
| Dong Wook Lee |
| Donghang Lin |
| Dongming Liu |
| Drew Callahan |
| Drew Kimball |
| Dzmitry Jachnik |
| Egor Chindyaskin |
| Egor Rogov |
| Ekaterina Kiryanova |
| Elena Indrupskaya |
| Elizabeth Christensen |
| Emre Hasegeli |
| Eric Cyr |
| Eric Mutta |
| Eric Radman |
| Eric Ridge |
| Erik Rijkers |
| Erik Wienhold |
| Erki Eessaar |
| Ethan Mertz |
| Etsuro Fujita |
| Eugen Konkov |
| Euler Taveira |
| Evan Macbeth |
| Evgeny Morozov |
| Fabien Coelho |
| Fabrízio de Royes Mello |
| Farias de Oliveira |
| Feliphe Pozzer |
| Fire Emerald |
| Flavien Guedez |
| Floris Van Nee |
| Francesco Degrassi |
| Frank Streitzig |
| Gabriele Bartolini |
| Garrett Thornburg |
| Gavin Flower |
| Gavin Panella |
| Gilles Darold |
| Gilles Parc |
| Grant Gryczan |
| Greg Nancarrow |
| Greg Sabino Mullane |
| Greg Stark |
| Gurjeet Singh |
| Haiying Tang |
| Hajime Matsunaga |
| Hal Takahara |
| Hanefi Onaldi |
| Hannu Krosing |
| Hans Buschmann |
| Hao Wu |
| Hao Zhang |
| Hayato Kuroda |
| Heikki Linnakangas |
| Hemanth Sandrana |
| Himanshu Upadhyaya |
| Hironobu Suzuki |
| Holger Reise |
| Hongxu Ma |
| Hongyu Song |
| Horst Reiterer |
| Hubert Lubaczewski |
| Hywel Carver |
| Ian Barwick |
| Ian Ilyasov |
| Ilya Nenashev |
| Isaac Morland |
| Israel Barth Rubio |
| Ivan Kartyshov |
| Ivan Kolombet |
| Ivan Lazarev |
| Ivan Panchenko |
| Ivan Trofimov |
| Jacob Champion |
| Jacob Speidel |
| Jacques Combrink |
| Jaime Casanova |
| Jakub Wartak |
| James Coleman |
| James Pang |
| Jani Rahkola |
| Japin Li |
| Jeevan Chalke |
| Jeff Davis |
| Jeff Janes |
| Jelte Fennema-Nio |
| Jeremy Schneider |
| Jian Guo |
| Jian He |
| Jim Jones |
| Jim Keener |
| Jim Nasby |
| Jingtang Zhang |
| Jingxian Li |
| Jingzhou Fu |
| Joe Conway |
| Joel Jacobson |
| John Ekins |
| John Hsu |
| John Morris |
| John Naylor |
| John Russell |
| Jonathan Katz |
| Jordi Gutiérrez |
| Joseph Koshakow |
| Josh Kupershmidt |
| Joshua D. Drake |
| Joshua Uyehara |
| Jubilee Young |
| Julien Rouhaud |
| Junwang Zhao |
| Justin Pryzby |
| Kaido Vaikla |
| Kambam Vinay |
| Karen Talarico |
| Karina Litskevich |
| Karl O. Pinc |
| Kashif Zeeshan |
| Kim Johan Andersson |
| Kirill Reshke |
| Kirk Parker |
| Kirk Wolak |
| Kisoon Kwon |
| Koen De Groote |
| Kohei KaiGai |
| Kong Man |
| Konstantin Knizhnik |
| Kouhei Sutou |
| Krishnakumar R |
| Kuntal Ghosh |
| Kurt Roeckx |
| Kyotaro Horiguchi |
| Lang Liu |
| Lars Kanis |
| Laurenz Albe |
| Lauri Laanmets |
| Legs Mansion |
| Lukas Fittl |
| Magnus Hagander |
| Mahendrakar Srinivasarao |
| Maiquel Grassi |
| Manos Emmanouilidis |
| Marcel Hofstetter |
| Marcos Pegoraro |
| Marian Krucina |
| Marina Polyakova |
| Mark Dilger |
| Mark Guertin |
| Mark Sloan |
| Markus Winand |
| Marlene Reiterer |
| Martín Marqués |
| Martin Nash |
| Martin Schlossarek |
| Masahiko Sawada |
| Masahiro Ikeda |
| Masaki Kuwamura |
| Masao Fujii |
| Mason Sharp |
| Matheus Alcantara |
| Mats Kindahl |
| Matthias Kuhn |
| Matthias van de Meent |
| Maxim Boguk |
| Maxim Orlov |
| Maxim Yablokov |
| Maxime Boyer |
| Melanie Plageman |
| Melih Mutlu |
| Merlin Moncure |
| Micah Gate |
| Michael Banck |
| Michael Bondarenko |
| Michael Paquier |
| Michael Wang |
| Michael Zhilin |
| Michail Nikolaev |
| Michal Bartak |
| Michal Kleczek |
| Mikhail Gribkov |
| Mingli Zhang |
| Miroslav Bendik |
| Mitsuru Hinata |
| Moaaz Assali |
| Muralikrishna Bandaru |
| Nathan Bossart |
| Nazir Bilal Yavuz |
| Neil Tiffin |
| Ngigi Waithaka |
| Nikhil Benesch |
| Nikhil Raj |
| Nikita Glukhov |
| Nikita Kalinin |
| Nikita Malakhov |
| Nikolay Samokhvalov |
| Nikolay Shaplov |
| Nisha Moond |
| Nishant Sharma |
| Nitin Jadhav |
| Noah Misch |
| Noriyoshi Shinoda |
| Ole Peder Brandtzæg |
| Oleg Bartunov |
| Oleg Sibiryakov |
| Oleg Tselebrovskiy |
| Olleg Samoylov |
| Onder Kalaci |
| Ondrej Navratil |
| Pablo Kharo |
| Palak Chaturvedi |
| Pantelis Theodosiou |
| Paul Amonson |
| Paul Jungwirth |
| Pavel Borisov |
| Pavel Kulakov |
| Pavel Luzanov |
| Pavel Stehule |
| Pavlo Golub |
| Pedro Gallegos |
| Pete Storer |
| Peter Eisentraut |
| Peter Geoghegan |
| Peter Smith |
| Philip Warner |
| Philipp Salvisberg |
| Pierre Ducroquet |
| Pierre Fortin |
| Przemyslaw Sztoch |
| Quynh Tran |
| Raghuveer Devulapalli |
| Ranier Vilela |
| Reid Thompson |
| Rian McGuire |
| Richard Guo |
| Richard Vesely |
| Ridvan Korkmaz |
| Robert Haas |
| Robert Scott |
| Robert Treat |
| Roberto Mello |
| Robins Tharakan |
| Roman Lozko |
| Ronan Dunklau |
| Rui Zhao |
| Ryo Matsumura |
| Ryoga Yoshida |
| Sameer Kumar |
| Sami Imseih |
| Samuel Dussault |
| Sanjay Minni |
| Satoru Koizumi |
| Sebastian Skalacki |
| Sergei Glukhov |
| Sergei Kornilov |
| Sergey Prokhorenko |
| Sergey Sargsyan |
| Sergey Shinderuk |
| Shaozhong Shi |
| Shaun Thomas |
| Shay Rojansky |
| Shihao Zhong |
| Shinya Kato |
| Shlok Kyal |
| Shruthi Gowda |
| Shubham Khanna |
| Shulin Zhou |
| Shveta Malik |
| Simon Riggs |
| Soumyadeep Chakraborty |
| Sravan Velagandula |
| Stan Hu |
| Stepan Neretin |
| Stepan Rutz |
| Stéphane Schildknecht |
| Stephane Tachoires |
| Stephen Frost |
| Steve Atkins |
| Steve Chavez |
| Suraj Khamkar |
| Suraj Kharage |
| Svante Richter |
| Svetlana Derevyanko |
| Sylvain Frandaz |
| Takayuki Tsunakawa |
| Tatsuo Ishii |
| Tatsuro Yamada |
| Tender Wang |
| Teodor Sigaev |
| Thom Brown |
| Thomas Munro |
| Tim Carey-Smith |
| Tim Needham |
| Tim Palmer |
| Tobias Bussmann |
| Tom Lane |
| Tomas Vondra |
| Tommy Pavlicek |
| Tomonari Katsumata |
| Tristan Partin |
| Tristen Raab |
| Tung Nguyen |
| Umair Shahid |
| Uwe Binder |
| Valerie Woolard |
| Vallimaharajan G |
| Vasya Boytsov |
| Victor Wagner |
| Victor Yegorov |
| Victoria Shepard |
| Vidushi Gupta |
| Vignesh C |
| Vik Fearing |
| Viktor Leis |
| Vinayak Pokale |
| Vitaly Burovoy |
| Vojtech Benes |
| Wei Sun |
| Wei Wang |
| Wenjiang Zhang |
| Will Mortensen |
| Willi Mann |
| Wolfgang Walther |
| Xiang Liu |
| Xiaoran Wang |
| Xing Guo |
| Xudong Yang |
| Yahor Yuzefovich |
| Yajun Hu |
| Yaroslav Saburov |
| Yong Li |
| Yongtao Huang |
| Yugo Nagata |
| Yuhang Qiu |
| Yuki Seino |
| Yura Sokolov |
| Yurii Rashkovskii |
| Yuuki Fujii |
| Yuya Watari |
| Yves Colin |
| Zhihong Yu |
| Zhijie Hou |
| Zongliang Quan |
| Zubeyr Eryilmaz |
| Zuming Jiang |
1.5 提交更正
如果您在文档中看到任何不正确的内容,与您对特定功能的体验不匹配或需要进一步澄清,请使用此表单报告文档问题[246]。
文档参考:
https://www.postgresql.org/docs/17/release-17.html
https://www.postgresql.org/about/news/postgresql-17-released-2936/
参考资料
E.1.1. Overview: https://www.postgresql.org/docs/17/release-17.html#RELEASE-17-HIGHLIGHTS
[2]E.1.2. Migration to Version 17: https://www.postgresql.org/docs/17/release-17.html#RELEASE-17-MIGRATION
[3]E.1.3. Changes: https://www.postgresql.org/docs/17/release-17.html#RELEASE-17-CHANGES
[4]E.1.4. Acknowledgments: https://www.postgresql.org/docs/17/release-17.html#RELEASE-17-ACKNOWLEDGEMENTS
[5]18.6节: https://www.postgresql.org/docs/17/upgrading.html
[6](Jeff Davis)§: https://postgr.es/c/2af07e2f7
[7]Joseph Koshakow: https://postgr.es/c/165d581f1
[8]Thomas Munro: https://postgr.es/c/f691f5b80
[9](Joseph Koshakow): https://postgr.es/c/a0363ab7a
[10](Nathan Bossart)§: https://postgr.es/c/884eee5bf
[11](Thomas Munro) §: https://postgr.es/c/d0c28601e
[12]Kyotaro Horiguchi, Andres Freund, Bruce Momjian: https://postgr.es/c/344afc776
[13]Bharath Rupireddy: https://postgr.es/c/c7a3e6b46
[14]Peter Eisentraut: https://postgr.es/c/78806a950
[15]Bruce Momjian: https://postgr.es/c/15d5d7405
[16](Bharath Rupireddy)§: https://postgr.es/c/74604a37f
[17](Nazir Bilal Yavuz)§: https://postgr.es/c/13d00729d
[18](Peter Eisentraut): https://postgr.es/c/4f622503d
[19](Jeff Davis) §: https://postgr.es/c/f696c0cd5
[20](Masahiko Sawada)§§: https://postgr.es/c/667e65aac
[21](Alvaro Herrera)§: https://postgr.es/c/bcdfa5f2e
[22](Jian Guo, Richard Guo, Tom Lane): https://postgr.es/c/f7816aec2
[23]David Rowley, Richard Guo, Andy Fan: https://postgr.es/c/b262ad440
[24]NOT] UNKNOWN条件下对布尔列进行分区修剪([David Rowley: https://postgr.es/c/07c36c133
[25](Kim Johan Andersson, Jian He)§: https://postgr.es/c/075df6b20
[26](Andy Fan, Tom Lane)§: https://postgr.es/c/9f1337639
[27](Andy Fan, David Rowley): https://postgr.es/c/a8a968a82
[28](Tom Lane)§: https://postgr.es/c/e08d74ca1
[29](Andrei Lepikhov, Teodor Sigaev)§: https://postgr.es/c/0452b461b
[30](David Rowley)§: https://postgr.es/c/66c0185a3
[31](Alexander Kuzmenkov)§: https://postgr.es/c/9d1a5354f
[32](Miroslav Bendik): https://postgr.es/c/625d5b3ca
[33](Egor Rogov, Soumyadeep Chakraborty): https://postgr.es/c/bc3c8db8a
[34](Peter Geoghegan, Matthias van de menent)§: https://postgr.es/c/5bf748b86
[35](Tomas Vondra, Matthias van de menent)§: https://postgr.es/c/b43757171
[36]Melanie Plageman, Heikki Linnakangas: https://postgr.es/c/6dbb49026
[37]Masahiko Sawada, John Naylor: https://postgr.es/c/ee1b30f12
[38]Melanie Plageman: https://postgr.es/c/c120550ed
[39]Thomas Munro: https://postgr.es/c/98f320eb2
[40](Nathan Bossart) §: https://postgr.es/c/d365ae705
[41]§: https://postgr.es/c/71e4cc6b8
[42](Melih Mutlu): https://postgr.es/c/c4ab7da60
[43]§: https://postgr.es/c/210622c60
[44]§: https://postgr.es/c/b7b0f3f27
[45]§: https://postgr.es/c/041b96802
[46]§: https://postgr.es/c/96f052613
[47]§: https://postgr.es/c/12915a58e
[48]§: https://postgr.es/c/e820db5b5
[49]§: https://postgr.es/c/23c8c0c8f
[50]§: https://postgr.es/c/2e8a0edc2
[51]§: https://postgr.es/c/e5cca6288
[52]§: https://postgr.es/c/1d35f705e
[53]§: https://postgr.es/c/e48b19c5d
[54]§: https://postgr.es/c/7c3fb505b
[55]§: https://postgr.es/c/0013ba290
[56]§: https://postgr.es/c/46ebdfe16
[57]§: https://postgr.es/c/8d8afd48d
[58]§: https://postgr.es/c/d3ae2a24f
[59]§: https://postgr.es/c/2d870b4ae
[60]§: https://postgr.es/c/51efe38cb
[61]§: https://postgr.es/c/bf82f4379
[62]§: https://postgr.es/c/28e858c0f
[63]§: https://postgr.es/c/2d819a08a
[64]§: https://postgr.es/c/846311051
[65]§: https://postgr.es/c/f69319f2f
[66]§: https://postgr.es/c/9acae56ce
[67]§: https://postgr.es/c/a14354cac
[68]§: https://postgr.es/c/7750fefdb
[69]§: https://postgr.es/c/53c2a97a9
[70]§: https://postgr.es/c/dc2123400
[71]§: https://postgr.es/c/f8ce4ed78
[72]§: https://postgr.es/c/174c48050
[73]§: https://postgr.es/c/d97ef756a
[74]§: https://postgr.es/c/f896057e4
[75]§: https://postgr.es/c/d9ef650fc
[76]系统备份清单文件: https://www.postgresql.org/docs/17/backup-manifest-format.html
[77]§: https://postgr.es/c/2041bc427
[78]§: https://postgr.es/c/007693f2a
[79]§: https://postgr.es/c/6ae701b43
[80]§: https://postgr.es/c/a11f330b5
[81]§: https://postgr.es/c/6d49c8d4b
[82]§: https://postgr.es/c/6f132ed69
[83]§: https://postgr.es/c/ddd5f4f54
[84]§: https://postgr.es/c/7a424ece4
[85]§: https://postgr.es/c/732924043
[86]§: https://postgr.es/c/d44032d01
[87]§: https://postgr.es/c/29d0a77fa
[88]§: https://postgr.es/c/9a17be1e2
[89]§: https://postgr.es/c/93db6cbda
[90]§: https://postgr.es/c/60c07820d
[91]§: https://postgr.es/c/776621a5e
[92]§: https://postgr.es/c/22f7e61a6
[93]§: https://postgr.es/c/edca34243
[94]§: https://postgr.es/c/5bec1d6bc
[95]§: https://postgr.es/c/79243de13
[96]§: https://postgr.es/c/173b56f1e
[97]§: https://postgr.es/c/bf279ddd1
[98]§: https://postgr.es/c/0f934b073
[99]§: https://postgr.es/c/13aeaf079
[100]§: https://postgr.es/c/9e2d87011
[101]§: https://postgr.es/c/b725b7eec
[102]§: https://postgr.es/c/40bbc8cf0
[103]§: https://postgr.es/c/a6d0fa5ef
[104]§: https://postgr.es/c/f5a227895
[105]§: https://postgr.es/c/729439607
[106]§: https://postgr.es/c/f6d4c9cf1
[107]§: https://postgr.es/c/699586315
[108]允许排除约束: https://www.postgresql.org/docs/17/ddl-constraints.html#DDL-CONSTRAINTS-EXCLUSION
[109]§: https://postgr.es/c/8c852ba9a
[110]§: https://postgr.es/c/4f622503d
[111]§: https://postgr.es/c/5d06e99a3
[112]§: https://postgr.es/c/374c7a229
[113]§: https://postgr.es/c/e2395cdbe
[114]§: https://postgr.es/c/d61a6cad6
[115]事件触发器: https://www.postgresql.org/docs/17/sql-createeventtrigger.html
[116]§: https://postgr.es/c/e83d1b0c4
[117]REINDEX: https://www.postgresql.org/docs/17/sql-reindex.html
[118]§: https://postgr.es/c/f21848de2
[119]§: https://postgr.es/c/cdaedfc96
[120]§: https://postgr.es/c/5de890e36
[121]§: https://postgr.es/c/06286709e
[122]§: https://postgr.es/c/295c36c0c
[123]§: https://postgr.es/c/fd0398fcb
[124]§: https://postgr.es/c/5a3423ad8
[125]§: https://postgr.es/c/519fc1bd9
[126]§: https://postgr.es/c/af1d39584
[127]§: https://postgr.es/c/5f2e179bd
[128]§: https://postgr.es/c/0294df2f1
[129]§: https://postgr.es/c/c649fa24a
[130]§: https://postgr.es/c/de3600452
[131]§: https://postgr.es/c/bb766cde6
[132]§: https://postgr.es/c/03734a7fe
[133]§: https://postgr.es/c/aaaf9449e
[134]§: https://postgr.es/c/1edb3b491
[135]§: https://postgr.es/c/6185c9737
[136]§: https://postgr.es/c/c0fc07518
[137]§: https://postgr.es/c/ef744ebb7
[138]§: https://postgr.es/c/66ea94e8e
[139]§: https://postgr.es/c/8ba6fdf90
[140]§: https://postgr.es/c/97957fdba
[141]§: https://postgr.es/c/794f10f6b
[142]§: https://postgr.es/c/e6341323a
[143]§: https://postgr.es/c/260a1f18d
[144]§: https://postgr.es/c/a02b37fc0
[145]§: https://postgr.es/c/526fe0d79
[146]§: https://postgr.es/c/1218ca995
[147]§: https://postgr.es/c/b154d8a6d
[148]§: https://postgr.es/c/d1162cfda
[149]§: https://postgr.es/c/5e8674dc8
[150]§: https://postgr.es/c/43b46aae1
[151]§: https://postgr.es/c/a7be2a6c2
[152]§: https://postgr.es/c/28b572656
[153]§: https://postgr.es/c/61461a300
[154]§: https://postgr.es/c/f5e4dedfa
[155]§: https://postgr.es/c/105024a47
[156]§: https://postgr.es/c/4794c2d31
[157]§: https://postgr.es/c/4643a2b26
[158]§: https://postgr.es/c/d39a49c1e
[159]§: https://postgr.es/c/91044ae4b
[160]§: https://postgr.es/c/44e27f0a6
[161]§: https://postgr.es/c/d80f2ce29
[162]§: https://postgr.es/c/03a0e0d4b
[163]§: https://postgr.es/c/17a834a04
[164]§: https://postgr.es/c/407e0b023
[165]§: https://postgr.es/c/fb5718f35
[166]§: https://postgr.es/c/d1379ebf4
[167]§: https://postgr.es/c/d1379ebf4
[168]§: https://postgr.es/c/f347ec76e
[169]§: https://postgr.es/c/cafe10565
[170]§: https://postgr.es/c/90f517821
[171]§: https://postgr.es/c/cd3424748
[172]§: https://postgr.es/c/816f10564
[173]§: https://postgr.es/c/927332b95
[174]§: https://postgr.es/c/f1bb9284f
[175]§: https://postgr.es/c/304b6b1a6
[176]§: https://postgr.es/c/2800fbb2b
[177][§: https://postgr.es/c/ee1bfd168
[178]§: https://postgr.es/c/a45c78e32
[179]§: https://postgr.es/c/522ed12f7
[180]§: https://postgr.es/c/a5cf808be
[181]§: https://postgr.es/c/8c16ad3b4
[182]§: https://postgr.es/c/959b38d77
[183]§: https://postgr.es/c/3ff01b2b6
[184]§: https://postgr.es/c/3c662643c
[185]§: https://postgr.es/c/94edfe250
[186]§: https://postgr.es/c/3f8c98d0b
[187]§: https://postgr.es/c/dd7c60f19
[188]§: https://postgr.es/c/cca97ce6a
[189]§: https://postgr.es/c/d93627bcb
[190]§: https://postgr.es/c/47f99a407
[191]§: https://postgr.es/c/24c928ad9
[192]§: https://postgr.es/c/648928c79
[193]§: https://postgr.es/c/1b49d56d3
[194]§: https://postgr.es/c/8e278b657
[195]§: https://postgr.es/c/284cbaea7
[196]§: https://postgr.es/c/3c44e7d8d
[197]§: https://postgr.es/c/792752af4
[198]§: https://postgr.es/c/41c51f0c6
[199]§: https://postgr.es/c/820b5af73
[200]§: https://postgr.es/c/4d14ccd6a
[201]§: https://postgr.es/c/0b16bb877
[202]§: https://postgr.es/c/1301c80b2
[203]§: https://postgr.es/c/68a4b58ec
[204]§: https://postgr.es/c/ce0b0fa3e
[205]§: https://postgr.es/c/1c1eec0f2
[206]§: https://postgr.es/c/f0efa5aec
[207]§: https://postgr.es/c/3311ea86e
[208]§: https://postgr.es/c/363eb0599
[209]§: https://postgr.es/c/e2b73f4a4
[210]§: https://postgr.es/c/721856ff2
[211]§: https://postgr.es/c/79b03dbb3
[212]§: https://postgr.es/c/d86d20f0b
[213]§: https://postgr.es/c/37b369dc6
[214]§: https://postgr.es/c/f587338de
[215]§: https://postgr.es/c/bb93640a6
[216]§: https://postgr.es/c/8b2bcf3f2
[217]§: https://postgr.es/c/2a217c371
[218]§: https://postgr.es/c/7014c9a4b
[219]§: https://postgr.es/c/9e9931d2b
[220]§: https://postgr.es/c/824dbea3e
[221]§: https://postgr.es/c/cac169d68
[222]§: https://postgr.es/c/f7f694b21
[223]§: https://postgr.es/c/d3c5f37dd
[224]§: https://postgr.es/c/485f0aa85
[225]§: https://postgr.es/c/59f47fb98
[226]§: https://postgr.es/c/5ae208720
[227]§: https://postgr.es/c/3c551ebed
[228]§: https://postgr.es/c/795592865
[229]§: https://postgr.es/c/75680c3d8
[230]§: https://postgr.es/c/cc09e6549
[231]§: https://postgr.es/c/2b5154bea
[232]§: https://postgr.es/c/c9af05465
[233]§: https://postgr.es/c/c8e318b1b
[234]§: https://postgr.es/c/d61f2538a
[235]§: https://postgr.es/c/c789f0f6c
[236]§: https://postgr.es/c/13453eedd
[237]§: https://postgr.es/c/11c34b342
[238]§: https://postgr.es/c/31de7e60d
[239]§: https://postgr.es/c/638d42a3c
[240]§: https://postgr.es/c/bb45156f3
[241]§: https://postgr.es/c/295c36c0c
[242]§: https://postgr.es/c/5147ab1dd
[243]§: https://postgr.es/c/5a3423ad8
[244]§: https://postgr.es/c/dc9f8a798
[245]§: https://postgr.es/c/dc9f8a798
[246]此表单报告文档问题: https://www.postgresql.org/account/comments/new/17/release-17.html/
个人微信:_iihero
CSDN: iihero
墨天轮:https://www.modb.pro/u/16258 (Sean)
pgfans: iihero

往期导读:
1. PostgreSQL中配置单双向SSL连接详解
2. 提升PSQL使用技巧:PostgreSQL中PSQL使用技巧汇集(1)
3. 提升PSQL使用技巧:PostgreSQL中PSQL使用技巧汇集(2)
4. PostgreSQL SQL的基础使用及技巧
5. PostgreSQL开发技术基础:过程与函数
6. PostgreSQL中vacuum 物理文件truncate发生的条件
7. PostgreSQL中表的年龄与Vacuum的实验探索:Vacuum有大用
8. PostgreSQL利用分区表来弥补AutoVacuum的不足
9. 也聊聊PostgreSQL中的空间膨胀与AutoVacuum
10. 正确理解SAP BTP中hyperscaler PG中的IOPS (AWS篇)




