From 459be3ac29124ef7a25169254ccfe43a2ee8316a Mon Sep 17 00:00:00 2001 From: sqyyeah <948885883@qq.com> Date: Sat, 29 Aug 2020 18:33:15 +0800 Subject: [PATCH] update refreshmatviews --- src/gausskernel/optimizer/commands/matview.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gausskernel/optimizer/commands/matview.cpp b/src/gausskernel/optimizer/commands/matview.cpp index 19fcb0be2..1cd6b07c3 100644 --- a/src/gausskernel/optimizer/commands/matview.cpp +++ b/src/gausskernel/optimizer/commands/matview.cpp @@ -166,10 +166,9 @@ void ExecRefreshMatView(const RefreshMatViewStmt* stmt, const char* queryString, tableSpace = matviewRel->rd_rel->reltablespace; - heap_close(matviewRel, NoLock); - /* Create the transient table that will receive the regenerated data. */ OIDNewHeap = make_new_heap(matviewOid, tableSpace, ExclusiveLock); + LockRelationOid(OIDNewHeap, AccessExclusiveLock); dest = CreateTransientRelDestReceiver(OIDNewHeap); /* * Now lock down security-restricted operations. @@ -183,9 +182,12 @@ void ExecRefreshMatView(const RefreshMatViewStmt* stmt, const char* queryString, t_thrd.storage_cxt.EnlargeDeadlockTimeout = true; LockRelationOid(matviewOid, AccessExclusiveLock); refresh_by_heap_swap(matviewOid, OIDNewHeap); + if (!stmt->skipData) pgstat_count_heap_insert(matviewRel, processed); + heap_close(matviewRel, NoLock); + /* Roll back any GUC changes */ AtEOXact_GUC(false, save_nestlevel);