diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2014-08-22 14:27:00 -0400 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2014-08-22 14:27:00 -0400 |
commit | f41872d0c1239d36ab03393c39ec0b70e9ee2a3c (patch) | |
tree | 4c07e9f8a6b0a3d4c9d1e19ca5595c39e5f6e43a /src/backend/commands/matview.c | |
parent | 01d15a2677c738489e62295924298ef8a72528a8 (diff) | |
download | postgresql-f41872d0c1239d36ab03393c39ec0b70e9ee2a3c.tar.gz postgresql-f41872d0c1239d36ab03393c39ec0b70e9ee2a3c.zip |
Implement ALTER TABLE .. SET LOGGED / UNLOGGED
This enables changing permanent (logged) tables to unlogged and
vice-versa.
(Docs for ALTER TABLE / SET TABLESPACE got shuffled in an order that
hopefully makes more sense than the original.)
Author: Fabrízio de Royes Mello
Reviewed by: Christoph Berg, Andres Freund, Thom Brown
Some tweaking by Álvaro Herrera
Diffstat (limited to 'src/backend/commands/matview.c')
-rw-r--r-- | src/backend/commands/matview.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/backend/commands/matview.c b/src/backend/commands/matview.c index 5130d512a6a..a49e66f5da9 100644 --- a/src/backend/commands/matview.c +++ b/src/backend/commands/matview.c @@ -147,6 +147,7 @@ ExecRefreshMatView(RefreshMatViewStmt *stmt, const char *queryString, DestReceiver *dest; bool concurrent; LOCKMODE lockmode; + char relpersistence; /* Determine strength of lock needed. */ concurrent = stmt->concurrent; @@ -233,9 +234,15 @@ ExecRefreshMatView(RefreshMatViewStmt *stmt, const char *queryString, /* Concurrent refresh builds new data in temp tablespace, and does diff. */ if (concurrent) + { tableSpace = GetDefaultTablespace(RELPERSISTENCE_TEMP); + relpersistence = RELPERSISTENCE_TEMP; + } else + { tableSpace = matviewRel->rd_rel->reltablespace; + relpersistence = matviewRel->rd_rel->relpersistence; + } owner = matviewRel->rd_rel->relowner; @@ -244,7 +251,7 @@ ExecRefreshMatView(RefreshMatViewStmt *stmt, const char *queryString, * it against access by any other process until commit (by which time it * will be gone). */ - OIDNewHeap = make_new_heap(matviewOid, tableSpace, concurrent, + OIDNewHeap = make_new_heap(matviewOid, tableSpace, relpersistence, ExclusiveLock); LockRelationOid(OIDNewHeap, AccessExclusiveLock); dest = CreateTransientRelDestReceiver(OIDNewHeap); |