PgPedia 周报,2024-01-07
Commitfest 46 正在如火如荼地进行中;以下是为方便您阅读而汇总的用户可见的更改摘要。
- 用于 生成列 的
表达式现在可以 就地修改。 pg_replication_slots已添加一个 名为conflict_reason的列,用于跟踪(逻辑)槽无效的原因。PL/pgSQL的%TYPE和%ROWTYPE占位符变量 现在可以创建为数组。
一如既往,值得关注的提交列表 如下。
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_removedwal_level_insufficientwal_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 条目
已添加以下新条目
debug_deadlocksget_current_ts_config()numnode()phraseto_tsquery()plainto_tsquery()querytree()trace_lock_oidmintrace_lockstrace_lock_tabletrace_lwlocksts_headline()tsquery_phrase()
更新
以下文章已更新,增加了额外信息或更正
pg_replication_slots- 注意:
PostgreSQL 16中添加了conflicting列。
- 注意:
PostgreSQL 8.3- 注意:添加了
get_current_ts_config()。 - 注意:添加了
numnode()。 - 注意:添加了
querytree()。 - 注意:添加了
ts_rewrite()。
- 注意:添加了
PostgreSQL 9.6
- 注意:添加了
phraseto_tsquery()。 - 注意:添加了
tsquery_phrase()。
- 注意:添加了
外部链接
已添加了指向外部文章的链接
websearch_to_tsquery()
- PostgreSQL:使用“websearch”语法的全文搜索 - 2024 年 1 月 Adam Johnson 的博客文章。
最后...
如果有什么遗漏,或者您有任何(建设性的)想法,请留下您的 反馈 和/或 买杯咖啡。
发表评论
