From cc1965a99bf87005f431804bbda0f723887a04d6 Mon Sep 17 00:00:00 2001 From: Kevin Grittner Date: Tue, 16 Jul 2013 12:55:44 -0500 Subject: Add support for REFRESH MATERIALIZED VIEW CONCURRENTLY. This allows reads to continue without any blocking while a REFRESH runs. The new data appears atomically as part of transaction commit. Review questioned the Assert that a matview was not a system relation. This will be addressed separately. Reviewed by Hitoshi Harada, Robert Haas, Andres Freund. Merged after review with security patch f3ab5d4. --- src/backend/commands/tablecmds.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/backend/commands/tablecmds.c') diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index f56ef28e229..bd0a21987c8 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -3541,7 +3541,8 @@ ATRewriteTables(List **wqueue, LOCKMODE lockmode) heap_close(OldHeap, NoLock); /* Create transient table that will receive the modified data */ - OIDNewHeap = make_new_heap(tab->relid, NewTableSpace); + OIDNewHeap = make_new_heap(tab->relid, NewTableSpace, false, + AccessExclusiveLock); /* * Copy the heap data into the new table with the desired -- cgit v1.2.3