已合并
只有mlog没有mview同样维护mlog #7965
TinyBag创建于 2025年6月23日
只有mlog没有mview同样维护mlog #7965
已合并
TinyBag创建于 2025年6月23日
5 个文件变更+4-32
Msrc/common/backend/utils/cache/relcache.cpp+1-6
@@ -2549,12 +2549,7 @@ static Relation RelationBuildDescExtended(Oid targetRelId, bool insertIt, bool b
2549 * mlog oid2549 * mlog oid
2550 */2550 */
2551 if (!IsCatalogRelation(relation)) {2551 if (!IsCatalogRelation(relation)) {
2552- /* if do not have incremental matview, no need to insert into mlog */2552+ relation->rd_mlogoid = find_matview_mlog_table(relid);
2553- if (is_table_in_incre_matview(relid)) {
2554- relation->rd_mlogoid = find_matview_mlog_table(relid);
2555- } else {
2556- relation->rd_mlogoid = InvalidOid;
2557- }
2558 }2553 }
2559 2554 
2560 /*2555 /*
Msrc/gausskernel/optimizer/commands/matview.cpp+0-22
@@ -2268,28 +2268,6 @@ Oid find_matview_mlog_table(Oid relid)
2268 return mlogid;2268 return mlogid;
2269}2269}
2270 2270 
2271-bool is_table_in_incre_matview(Oid relid)
2272-{
2273- Relation rel = NULL;
2274- TableScanDesc scan;
2275- ScanKeyData scanKey;
2276- bool result = false;
2277- 
2278- ScanKeyInit(&scanKey,
2279- Anum_gs_matview_dep_relid,
2280- BTEqualStrategyNumber,
2281- F_OIDEQ,
2282- ObjectIdGetDatum(relid));
2283- rel = heap_open(MatviewDependencyId, AccessShareLock);
2284- scan = tableam_scan_begin(rel, SnapshotNow, 1, &scanKey);
2285- if (tableam_scan_getnexttuple(scan, ForwardScanDirection) != NULL) {
2286- result = true;
2287- }
2288- tableam_scan_end(scan);
2289- heap_close(rel, NoLock);
2290- return result;
2291-}
2292- 
2293void insert_into_mlog_table(Relation rel, Oid mlogid, HeapTuple tuple, ItemPointer tid, TransactionId xid, char action)2271void insert_into_mlog_table(Relation rel, Oid mlogid, HeapTuple tuple, ItemPointer tid, TransactionId xid, char action)
2294{2272{
2295 int i;2273 int i;
Msrc/include/commands/matview.h+0-1
@@ -67,7 +67,6 @@ extern Oid create_matview_map(Oid intoRelationId);
67extern void insert_into_matview_map(Oid mapid, Oid matid, ItemPointer matcitd,67extern void insert_into_matview_map(Oid mapid, Oid matid, ItemPointer matcitd,
68 Oid relid, ItemPointer relctid, TransactionId xid);68 Oid relid, ItemPointer relctid, TransactionId xid);
69extern Oid find_matview_mlog_table(Oid relid);69extern Oid find_matview_mlog_table(Oid relid);
70-extern bool is_table_in_incre_matview(Oid relid);
71extern void insert_into_mlog_table(Relation rel, Oid mlogid, HeapTuple tuple,70extern void insert_into_mlog_table(Relation rel, Oid mlogid, HeapTuple tuple,
72 ItemPointer tid, TransactionId xid, char action);71 ItemPointer tid, TransactionId xid, char action);
73extern void create_matview_meta(Query *query, RangeVar *rel, bool incremental);72extern void create_matview_meta(Query *query, RangeVar *rel, bool incremental);
Msrc/test/regress/expected/matview_single.out+2-2
@@ -391,7 +391,7 @@ create materialized view log on cov_t2;
391create materialized view log on cov_t2;391create materialized view log on cov_t2;
392ERROR: materialized view log for table "cov_t2" already exists.392ERROR: materialized view log for table "cov_t2" already exists.
393drop table cov_t1,cov_t2 cascade;393drop table cov_t1,cov_t2 cascade;
394--- 只有mlog没有incre matview,维护mlog394+-- 只有mlog没有incre matview,维护mlog
395create table only_mlog_t1(c1 int);395create table only_mlog_t1(c1 int);
396create materialized view log on only_mlog_t1;396create materialized view log on only_mlog_t1;
397insert into only_mlog_t1 values (1);397insert into only_mlog_t1 values (1);
@@ -408,7 +408,7 @@ END;
408select * from only_mlog_record;408select * from only_mlog_record;
409 c1 409 c1
410----410----
411- 0411+ 1
412(1 row)412(1 row)
413 413 
414drop table only_mlog_t1, only_mlog_record;414drop table only_mlog_t1, only_mlog_record;
Msrc/test/regress/sql/matview_single.sql+1-1
@@ -228,7 +228,7 @@ create materialized view log on cov_t2;
228create materialized view log on cov_t2;228create materialized view log on cov_t2;
229drop table cov_t1,cov_t2 cascade;229drop table cov_t1,cov_t2 cascade;
230 230 
231--- 只有mlog没有incre matview,维护mlog231+-- 只有mlog没有incre matview,维护mlog
232create table only_mlog_t1(c1 int);232create table only_mlog_t1(c1 int);
233create materialized view log on only_mlog_t1;233create materialized view log on only_mlog_t1;
234insert into only_mlog_t1 values (1);234insert into only_mlog_t1 values (1);