]> granicus.if.org Git - postgresql/commitdiff
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)