PgPedia 周刊,2024-01-07
提交节 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 错误地省略限定子句的问题
- 43b46aae (2024-01-05):
清理 plpgsql 的 %TYPE 解析中的一些边缘情况。
- 9cd0d77d (2024-01-05):
修复临时关系扩展期间本地缓冲区状态损坏
- 9391f715 (2024-01-04):
教 estimate_array_length() 在可用时使用统计信息。
- 14dd0f27 (2024-01-04):
添加用于循环遍历 List 而无需 ListCell 的宏。
- 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):
在新添加的 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”语法的全文搜索 - Adam Johnson 2024 年 1 月的博客文章
最后...
如果缺少任何内容,或者您有一些(建设性的)想法,请留下一些 反馈 和/或 买杯咖啡。
发表评论