PgPedia 周报,2024-01-07

Commitfest 46 正在如火如荼地进行中;以下是为方便您阅读而汇总的用户可见的更改摘要。

一如既往,值得关注的提交列表 如下。

ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION AS

通过提交 5d06e99a,现在可以更改 生成列 的表达式。

postgres=# CREATE TABLE multiply (
             original_value   INT NOT NULL,
             multiplied_value INT NOT NULL GENERATED ALWAYS AS (original_value * 2) STORED
           );
CREATE TABLE

postgres=# INSERT INTO multiply VALUES (generate_series(1,5));
INSERT 0 5

postgres=# SELECT * FROM multiply;
 original_value | multiplied_value 
----------------+------------------
              1 |                2
              2 |                4
              3 |                6
              4 |                8
              5 |               10
(5 rows)

postgres=# ALTER TABLE multiply ALTER COLUMN multiplied_value SET EXPRESSION AS (original_value * 3);
ALTER TABLE

postgres=# SELECT * FROM multiply;
 original_value | multiplied_value 
----------------+------------------
              1 |                3
              2 |                6
              3 |                9
              4 |               12
              5 |               15
(5 rows)

pg_replication_slots 中的列 "conflict_reason"

conflict_reason 取代了布尔列 conflicting(在 PostgreSQL 16 中添加),使用一个枚举,包含以下三个值之一:

  • rows_removed
  • wal_level_insufficient
  • wal_removed

这提供了关于逻辑复制槽为何失效的更多上下文信息。

对于未失效的逻辑复制槽以及物理复制槽,conflict_reason 始终为 NULL

PL/pgSQL:%TYPE 和 %ROWTYPE 后可跟数组修饰符

通过提交 5e8674dc,变量现在可以定义为 %TYPE%ROWTYPE 的数组。

postgres=# DO $$
           DECLARE
             v1 INT;
             v2 varchar;
             a1 v1%TYPE[];
             a2 v2%TYPE[];
           BEGIN
             v1 := 94;
             v2 := 'Hello';
             a1 := ARRAY[v1,v1];
             a2 := ARRAY[v2,v2];
             RAISE NOTICE '% %', a1, a2;
           END;
           $$;
NOTICE:  {94,94} {Hello,Hello}
DO

PostgreSQL 提交的值得关注的变更

  • 9034a2d5 (2024-01-07): 修复 intarray 的 g_int_decompress() 中的整数溢出问题。
  • 2a67b5a6 (2024-01-07): 修复并行哈希连接中的内存分配过大的问题。
  • 5ef34a8f (2024-01-06): 修复 SJE 错误地省略 qual 子句的问题。
  • 43b46aae (2024-01-05): 清理 plpgsql 的 %TYPE 解析中的一些边缘情况。
  • 9cd0d77d (2024-01-05): 修复临时关系扩展期间本地缓冲区状态的损坏。
  • 9391f715 (2024-01-04): 使 estimate_array_length() 在可用时使用统计信息。
  • 14dd0f27 (2024-01-04): 添加宏以在没有 ListCell 的情况下遍历 List。
  • 5e8674dc (2024-01-04): 在 plpgsql 中,允许 %TYPE 和 %ROWTYPE 后跟数组修饰符。
  • 5d06e99a (2024-01-04): ALTER TABLE 命令用于更改生成表达式。
  • ae69c4fc (2024-01-04): 修复 DISTINCT 聚合中错误使用 TupleTableSlot 的问题。 已回溯至 ~16
  • 007693f2 (2024-01-04): pg_replication_slots 中跟踪 conflict_reason。
  • aaf09c59 (2024-01-03): 避免在 auth.c 中掩盖 EOF(未提供密码)条件。 已回溯至 ~12
  • 59fd390d (2024-01-03): 第二次尝试组织 jsonpath 运算符和方法。
  • 0958f8f6 (2024-01-03): 撤销 "Reorganise jsonpath operators and methods"。
  • dffde5bf (2024-01-03): 修复 PrepareForIncrementalBackup 中的缺陷。
  • 8ce5aef2 (2024-01-03): 在新的 TAP 测试中使 Perl 警告变为致命错误。
  • 283a95da (2024-01-03): 重新组织 jsonpath 运算符和方法。
  • c1b9e1e5 (2024-01-03): 添加 numeric_int8_opt_error() 以选择性地抑制错误。
  • d4e66a39 (2024-01-03): 重构:将查找依赖于列的所有对象的函数分离出来。
  • 4b66d7b4 (2024-01-03): 从 TAP 测试中删除不必要的 PGDATABASE 设置。
  • ae6bc393 (2024-01-02): 对搜索路径缓存代码进行一些小修复。
  • a7928a57 (2024-01-02): 在 SJE 中替换一些缺失字段的 relid。
  • 9a17be1e (2024-01-01): 允许升级保留订阅的完整状态。
  • cea89c93 (2024-01-01): 将 AT_PASS_* 宏转换为枚举。

请注意,提交按其在提交日志中的出现顺序显示,这可能不反映单个提交的创建日期。

请参阅 PostgreSQL GIT 提交日志 查看完整的提交列表。

新 PgPedia 条目

已添加以下新条目

更新

以下文章已更新,增加了额外信息或更正

已添加了指向外部文章的链接

  • websearch_to_tsquery()
    • PostgreSQL:使用“websearch”语法的全文搜索 - 2024 年 1 月 Adam Johnson 的博客文章。

最后...

如果有什么遗漏,或者您有任何(建设性的)想法,请留下您的 反馈 和/或 买杯咖啡


发表评论
姓名
*
电子邮件
地址不会显示
主页
评论