已关闭
[Bug]: VACUUM DELTAMERGE 回收delta表的冗余存储空间,但需要满足阈值DELTAROW_THRESHOLD,资料需要补充说明清晰 #8405
liuzhen001创建于  8月18日关闭于  8月27日
liuzhen001
liuzhen001成员
8月18日 创建

测试类型

SQL功能

测试版本

7.0.0LTS

问题描述

操作系统和硬件信息

2403 arm

测试环境

企业版主备

被测功能

image.png

预置条件

操作步骤

- ============================================================================
-- Case0024  【新增】主表 CU 与 delta 并存时查询正确
-- Case Name : 超阈值直入主表 + 未超进delta,查询为二者之和;未超阈值 DELTAMERGE 不迁入;再合入超阈值后迁入且结果仍正确
-- ============================================================================
-- gs_guc reload -N all -I all -c "autovacuum=off"

DROP TABLE IF EXISTS t_delta_table_0024 CASCADE;
CREATE TABLE t_delta_table_0024(id int, val int)
    WITH (orientation = column, deltarow_threshold = 1000);

SELECT a.oid, 'cstore.' || b.relname AS delta_name
FROM pg_class a JOIN pg_class b ON a.reldeltarelid = b.oid
WHERE a.relname = 't_delta_table_0024';

-- 用 FROM generate_series 保证 id=val,避免 SELECT 列表双 SRF 导致求和偏差
INSERT INTO t_delta_table_0024 SELECT gs, gs FROM generate_series(1, 1005) AS gs;     -- >=阈值,直入主表
INSERT INTO t_delta_table_0024 SELECT gs, gs FROM generate_series(1006, 1105) AS gs;  -- 100 <阈值,进 delta
SELECT count(*) FROM t_delta_table_0024;                          -- 期望 1105
SELECT count(*) FROM cstore.pg_delta_<oid>;                       -- 期望 100
SELECT sum(val) FROM t_delta_table_0024;                          -- 期望 1+...+1105 = 610915
SELECT count(*) FROM t_delta_table_0024 WHERE id > 1000;          -- 期望 105
SELECT val FROM t_delta_table_0024 WHERE id = 1;                  -- 期望 1(主表 CU)
SELECT val FROM t_delta_table_0024 WHERE id = 1105;               -- 期望 1105(delta)

VACUUM DELTAMERGE t_delta_table_0024;
SELECT count(*) FROM cstore.pg_delta_<oid>;                       -- 期望 100(100 < 1000,单次 DELTAMERGE 不迁入)
SELECT count(*) FROM t_delta_table_0024;                          -- 期望 1105
SELECT sum(val) FROM t_delta_table_0024;                          -- 期望 610915(查询结果不变)
SELECT count(*) FROM t_delta_table_0024 WHERE id > 1000;          -- 期望 105

-- 再合入 900 行(单次 < 阈值,进 delta),累计 1000 >= 阈值
INSERT INTO t_delta_table_0024 SELECT gs, gs FROM generate_series(1106, 2005) AS gs;
SELECT count(*) FROM t_delta_table_0024;                          -- 期望 2005
SELECT count(*) FROM cstore.pg_delta_<oid>;                       -- 期望 1000
SELECT sum(val) FROM t_delta_table_0024;                          -- 期望 1+...+2005 = 2011015
VACUUM DELTAMERGE t_delta_table_0024;
SELECT count(*) FROM cstore.pg_delta_<oid>;                       -- 期望 0(累计超阈值,迁入主表)
SELECT count(*) FROM t_delta_table_0024;                          -- 期望 2005
SELECT sum(val) FROM t_delta_table_0024;                          -- 期望 2011015
SELECT val FROM t_delta_table_0024 WHERE id = 1;                  -- 期望 1
SELECT val FROM t_delta_table_0024 WHERE id = 2005;               -- 期望 2005

DROP TABLE IF EXISTS t_delta_table_0024 CASCADE;
-- gs_guc reload -N all -I all -c "autovacuum=on"

预期输出

实际输出

image.png

日志信息

image.png

提单组织

测试团队

测试代码

likedislike
liuzhen001liuzhen001成员
8月18日 添加了label:bug
opengauss_bot
opengauss_bot成员
8月18日 评论:

This issue requires an assignee. Since you haven't specified one, we've assigned TestManager as the default assignee for this issue.

likedislike
opengauss_botopengauss_bot成员
8月18日 将 TestManager 设为负责人
opengauss_botopengauss_bot成员
8月18日 添加了label:sig/StorageEngine,sig/AI,sig/CM,sig/CloudNative,sig/SecurityTechnology,sig/SQLEngine
opengauss_bot
opengauss_bot成员
8月18日 评论:

Welcome To openGauss Community

Hey @liuzhen001 , thanks for your contribution to the community.

Bot Usage Manual

I'm the Bot here serving you. You can find the instructions on how to interact with me at Here . That means you can comment below every pull request or issue to trigger Bot Commands.

Contact Guide

If you have any questions, please contact the SIG: StorageEngine, AI, CM, CloudNative, SecurityTechnology, SQLEngine ,
and any of the maintainers: @CarrotGo, @chendong76, @chenxiaobin19, @congzhou2603, @dodders, @hwworkholic, @jemappellehc, @muyulinzhong, @quemingjian, @shenzheng4, @shirley_zhengx, @superlchf, @totaj, @wlff234, @wofanzheng, @ywzq1161327784 ,
and any of the committers: @Igali, @bihua111, @cailei19, @h_ray, @levy53071, @libiao2024, @lihaixiao, @mrzack, @wangfeihuo, @wuyuechuan, @xiong_xjun, @zhangfengzhi123, @zhangxubo, @zhangzq131, @zjh_hw .

likedislike
liuzhen001liuzhen001成员
8月18日 将 xudabiao2024 设为负责人,移除负责人 TestManager
liuzhen001liuzhen001成员
8月18日 关联了看板:openGauss 7.0.0-LTS
liuzhen001liuzhen001成员
8月18日 修改了issue 的描述
xudabiao2024xudabiao2024成员
8月19日 关联了pull request:docs: clarify VACUUM DELTAMERGE batch behavior
xudabiao2024
xudabiao2024成员
8月25日 评论:

验证结果:image.png
image.png

likedislike
xudabiao2024xudabiao2024成员
8月26日 issue状态由 待办的 改变为 待回归
liuzhen001
liuzhen001成员
8月27日 评论:

回归版本:7.0.0LTS B020
回归结论:回归通过
回归过程:
image.png

likedislike
liuzhen001liuzhen001成员
8月27日 issue状态由 待回归 改变为 已验收
liuzhen001liuzhen001成员
8月27日 关闭了 issue