mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-06 18:46:54 +02:00
Acquire appropriate locks when rewriting during RMV.
Since the query has not been freshly parsed when executing REFRESH MATERIALIZED VIEW, locks must be explicitly taken before rewrite. Backpatch to 9.3. Andres Freund
This commit is contained in:
parent
b2cd72cbbd
commit
b21aed3964
@ -242,9 +242,12 @@ refresh_matview_datafill(DestReceiver *dest, Query *query,
|
||||
List *rewritten;
|
||||
PlannedStmt *plan;
|
||||
QueryDesc *queryDesc;
|
||||
Query *copied_query;
|
||||
|
||||
/* Rewrite, copying the given Query to make sure it's not changed */
|
||||
rewritten = QueryRewrite((Query *) copyObject(query));
|
||||
/* Lock and rewrite, using a copy to preserve the original query. */
|
||||
copied_query = copyObject(query);
|
||||
AcquireRewriteLocks(copied_query, false);
|
||||
rewritten = QueryRewrite(copied_query);
|
||||
|
||||
/* SELECT should never rewrite to more or less than one SELECT query */
|
||||
if (list_length(rewritten) != 1)
|
||||
|
Loading…
Reference in New Issue
Block a user