diff --git a/src/gausskernel/optimizer/commands/matview.cpp b/src/gausskernel/optimizer/commands/matview.cpp index 6439a08fc1656e46634d1d040cda26ef81cbe761..b5e91db3aed890b27ad56f179cd00fe99163c968 100755 --- a/src/gausskernel/optimizer/commands/matview.cpp +++ b/src/gausskernel/optimizer/commands/matview.cpp @@ -3078,8 +3078,8 @@ static void MlogClearLogByTime(Oid mlogID, Timestamp ts) ScanKeyInit(&entry[0], MlogAttributeTime, - BTLessStrategyNumber, - F_TIMESTAMP_LT, + BTLessEqualStrategyNumber, + F_TIMESTAMP_LE, TimestampGetDatum(ts)); Relation rel = heap_open(mlogID, RowExclusiveLock); //TODO: high lock diff --git a/src/test/regress/expected/matview_single.out b/src/test/regress/expected/matview_single.out index aa77c92fbd5b757c92a1f53f6b0788fc04d6cc54..988b9d8b90f352d739bef4d850fb42d4d1500547 100644 --- a/src/test/regress/expected/matview_single.out +++ b/src/test/regress/expected/matview_single.out @@ -463,3 +463,42 @@ select * from imv_ind_v; drop table imv_ind_t cascade; NOTICE: drop cascades to materialized view imv_ind_v +-- clear mlog +create table clear_t(c1 int); +create incremental materialized view clear_v as select * from clear_t; +insert into clear_t values(1); +create table clear_mlog_record(c1 int); +declare + oid int := (select oid from pg_class where relname = 'clear_t'); + table_name varchar(20) := 'mlog_' || oid; + stmt text := 'insert into clear_mlog_record select count(*) from ' || table_name; +begin + execute stmt; + commit; +END; +/ +select * from clear_mlog_record; + c1 +---- + 1 +(1 row) + +truncate table clear_mlog_record; +refresh incremental materialized view clear_v; +declare + oid int := (select oid from pg_class where relname = 'clear_t'); + table_name varchar(20) := 'mlog_' || oid; + stmt text := 'insert into clear_mlog_record select count(*) from ' || table_name; +begin + execute stmt; + commit; +END; +/ +select * from clear_mlog_record; + c1 +---- + 0 +(1 row) + +drop materialized view clear_v; +drop table clear_t, clear_mlog_record; diff --git a/src/test/regress/sql/matview_single.sql b/src/test/regress/sql/matview_single.sql index 2f3578f0e10d6023b397010a21dd4411cb4a6804..a5f7eb8f03f6f8aaf95a15bbeb0d28838a1a5966 100644 --- a/src/test/regress/sql/matview_single.sql +++ b/src/test/regress/sql/matview_single.sql @@ -270,3 +270,35 @@ copy imv_ind_t from stdin; refresh incremental materialized view imv_ind_v; select * from imv_ind_v; drop table imv_ind_t cascade; + +-- clear mlog +create table clear_t(c1 int); +create incremental materialized view clear_v as select * from clear_t; +insert into clear_t values(1); +create table clear_mlog_record(c1 int); +declare + oid int := (select oid from pg_class where relname = 'clear_t'); + table_name varchar(20) := 'mlog_' || oid; + stmt text := 'insert into clear_mlog_record select count(*) from ' || table_name; +begin + execute stmt; + commit; +END; +/ +select * from clear_mlog_record; +truncate table clear_mlog_record; + +refresh incremental materialized view clear_v; + +declare + oid int := (select oid from pg_class where relname = 'clear_t'); + table_name varchar(20) := 'mlog_' || oid; + stmt text := 'insert into clear_mlog_record select count(*) from ' || table_name; +begin + execute stmt; + commit; +END; +/ +select * from clear_mlog_record; +drop materialized view clear_v; +drop table clear_t, clear_mlog_record;