帕维尔·卢扎诺夫:PostgreSQL 19:第二部分或 2025年9月提交节

帕维尔·卢扎诺夫:PostgreSQL 19:第二部分或 2025年9月提交节

💡 原文英文,约1300词,阅读约需5分钟。
📝

内容提要

PostgreSQL 19 引入了多个新特性,包括支持 GROUP BY ALL 语法、窗口函数跳过空值、PL/Python 触发器、改进的错误信息以及支持 base64url 编码解码。此外,备份类型和锁信息的日志记录也得到了增强。

🎯

关键要点

  • PostgreSQL 19 引入了 GROUP BY ALL 语法,简化了查询。

  • GROUP BY ALL 自动包含所有不使用聚合函数的 SELECT 表达式。

  • 窗口函数支持跳过空值,可以使用 IGNORE NULLS 或 RESPECT NULLS 选项。

  • PL/Python 触发器功能被引入,可以在 DDL 操作完成时触发。

  • 改进的错误信息提供了更精确的函数参数错误提示。

  • 随机函数现在支持生成指定范围内的随机日期/时间。

  • 编码和解码函数支持 base64url 格式,适用于文件名和 URL。

  • 新增的 debug_print_raw_parse 参数显示原始解析树。

  • 默认启用锁信息日志记录,以解决长时间锁定的问题。

  • pg_stat_progress_basebackup 视图新增 backup_type 列,指示备份类型。

  • vacuumdb 工具现在支持对分区表收集统计信息。

  • 移除了维护空闲缓冲区列表,采用时钟扫描算法查找可用缓冲区。

  • 查询计划中的别名进行了优化,减少了奇怪的别名使用。

🔎

延伸解读

GROUP BY ALL 的实用性

PostgreSQL 19 引入的 GROUP BY ALL 语法可以显著简化查询,尤其是在处理多个 SELECT 表达式时。用户无需逐一列出所有表达式,减少了出错的可能性。然而,这一变更也引发了部分开发者的担忧,他们认为应保持对查询代码的完全控制。

窗口函数的灵活性

新版本中窗口函数支持跳过空值的功能,允许用户根据需求选择是否忽略空值。这一灵活性使得数据分析更加精准,尤其在处理不完整数据时,用户可以根据具体场景选择合适的选项。

PL/Python 触发器的引入

PL/Python 触发器的支持为 PostgreSQL 提供了更强大的扩展性,用户可以在 DDL 操作完成时执行自定义逻辑。这一特性适合需要复杂业务逻辑的场景,能够提升数据库操作的自动化程度。

改进的错误信息

PostgreSQL 19 对错误信息进行了改进,提供了更精确的提示,帮助开发者快速定位问题。这一变化不仅提高了开发效率,也减少了因错误信息模糊而导致的调试时间。

延伸问答

PostgreSQL 19 中引入了哪些新特性?

PostgreSQL 19 引入了 GROUP BY ALL 语法、窗口函数跳过空值、PL/Python 触发器、改进的错误信息、支持 base64url 编码解码等新特性。

GROUP BY ALL 语法有什么优势?

GROUP BY ALL 语法简化了查询,自动包含所有不使用聚合函数的 SELECT 表达式,减少了修改 GROUP BY 子句的需要。

窗口函数在 PostgreSQL 19 中有哪些改进?

窗口函数现在支持跳过空值,可以使用 IGNORE NULLS 或 RESPECT NULLS 选项来控制空值的处理。

PL/Python 触发器的功能是什么?

PL/Python 触发器可以在 DDL 操作完成时触发,允许用户执行自定义操作。

PostgreSQL 19 如何改进错误信息?

PostgreSQL 19 提供了更精确的错误信息,能够明确指出函数参数错误的具体原因,避免误导用户。

PostgreSQL 19 中的随机函数有什么新功能?

随机函数现在支持生成指定范围内的随机日期/时间,增强了其功能。

🏷️

标签

➡️

继续阅读