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_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 条目
已添加以下新条目
debug_deadlocks
get_current_ts_config()
numnode()
phraseto_tsquery()
plainto_tsquery()
querytree()
trace_lock_oidmin
trace_locks
trace_lock_table
trace_lwlocks
ts_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 的博客文章。
最后...
如果有什么遗漏,或者您有任何(建设性的)想法,请留下您的 反馈 和/或 买杯咖啡。
发表评论