mirror of
https://github.com/postgres/postgres.git
synced 2025-05-01 01:04:50 +03:00
Lock relation used to generate fresh data for RMV.
The relation should not be accessible to any other process, but it should be locked for consistency. Since this is not known to cause any bug, it will not be back-patch, at least for now. Per report from Andres Freund
This commit is contained in:
parent
6331de1d44
commit
2636ecf78b
@ -30,6 +30,7 @@
|
||||
#include "miscadmin.h"
|
||||
#include "parser/parse_relation.h"
|
||||
#include "rewrite/rewriteHandler.h"
|
||||
#include "storage/lmgr.h"
|
||||
#include "storage/smgr.h"
|
||||
#include "tcop/tcopprot.h"
|
||||
#include "utils/builtins.h"
|
||||
@ -240,9 +241,14 @@ ExecRefreshMatView(RefreshMatViewStmt *stmt, const char *queryString,
|
||||
|
||||
heap_close(matviewRel, NoLock);
|
||||
|
||||
/* Create the transient table that will receive the regenerated data. */
|
||||
/*
|
||||
* Create the transient table that will receive the regenerated data.
|
||||
* Lock it against access by any other process until commit (by which time
|
||||
* it will be gone).
|
||||
*/
|
||||
OIDNewHeap = make_new_heap(matviewOid, tableSpace, concurrent,
|
||||
ExclusiveLock);
|
||||
LockRelationOid(OIDNewHeap, AccessExclusiveLock);
|
||||
dest = CreateTransientRelDestReceiver(OIDNewHeap);
|
||||
|
||||
/* Generate the data, if wanted. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user