PgPedia 周报,2024年1月7日
Commitfest 46 正在进行中;以下是为方便您总结的用户可见更改
- 用于生成列的
表达式现在可以就地修改
pg_replication_slots
获得了一个列conflict_reason
,用于跟踪(逻辑)槽失效的原因PL/pgSQL
的%TYPE
和%ROWTYPE
占位符变量现在可以创建为数组
如下所示,始终列出感兴趣的提交。
ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION AS
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):
回滚“重新组织 jsonpath 运算符和方法”
- dffde5bf (2024-01-03):
修复 PrepareForIncrementalBackup 中的缺陷。
- 8ce5aef2 (2024-01-03):
使 Perl 警告在新添加的 TAP 测试中变为致命错误
- 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”语法的全文搜索 - Adam Johnson 于 2024 年 1 月撰写的博客文章
最后…
如果缺少任何内容,或者您有一些(建设性的)想法,请留下一些反馈和/或买杯咖啡。
发表评论