Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Fix cache flush hazard in ExecRefreshMatView.
authorRobert Haas <rhaas@postgresql.org>
Mon, 22 Jul 2013 22:10:05 +0000 (18:10 -0400)
committerRobert Haas <rhaas@postgresql.org>
Mon, 22 Jul 2013 22:10:05 +0000 (18:10 -0400)
Andres Freund

src/backend/commands/matview.c

index 46149eed4f7c63517f6a4bb51825debb4cad87f6..09ea344256a49c3613856f45ad4e447aa0a1aa7f 100644 (file)
@@ -141,6 +141,7 @@ ExecRefreshMatView(RefreshMatViewStmt *stmt, const char *queryString,
    List       *actions;
    Query      *dataQuery;
    Oid         tableSpace;
+   Oid         owner;
    Oid         OIDNewHeap;
    DestReceiver *dest;
    bool        concurrent;
@@ -238,6 +239,8 @@ ExecRefreshMatView(RefreshMatViewStmt *stmt, const char *queryString,
    else
        tableSpace = matviewRel->rd_rel->reltablespace;
 
+   owner = matviewRel->rd_rel->relowner;
+
    heap_close(matviewRel, NoLock);
 
    /* Create the transient table that will receive the regenerated data. */
@@ -247,8 +250,7 @@ ExecRefreshMatView(RefreshMatViewStmt *stmt, const char *queryString,
 
    /* Generate the data, if wanted. */
    if (!stmt->skipData)
-       refresh_matview_datafill(dest, dataQuery, queryString,
-                                matviewRel->rd_rel->relowner);
+       refresh_matview_datafill(dest, dataQuery, queryString, owner);
 
    /* Make the matview match the newly generated data. */
    if (concurrent)