aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/tablecmds.c
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2012-05-11 09:46:42 -0400
committerRobert Haas <rhaas@postgresql.org>2012-05-11 09:48:54 -0400
commit2ca6bac892aa650154f591c730359a968bea726a (patch)
tree5bcd665a2dd97e486f6ed6789c23d90173c34ac2 /src/backend/commands/tablecmds.c
parentf93e45d4071af89cf1b37c76fbd5976d11d77347 (diff)
downloadpostgresql-2ca6bac892aa650154f591c730359a968bea726a.tar.gz
postgresql-2ca6bac892aa650154f591c730359a968bea726a.zip
Prevent loss of init fork when truncating an unlogged table.
Fixes bug #6635, reported by Akira Kurosawa.
Diffstat (limited to 'src/backend/commands/tablecmds.c')
-rw-r--r--src/backend/commands/tablecmds.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 8f569ed0bd6..11f57b2758d 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -1059,6 +1059,8 @@ ExecuteTruncate(TruncateStmt *stmt)
* deletion at commit.
*/
RelationSetNewRelfilenode(rel, RecentXmin);
+ if (rel->rd_rel->relpersistence == RELPERSISTENCE_UNLOGGED)
+ heap_create_init_fork(rel);
heap_relid = RelationGetRelid(rel);
toast_relid = rel->rd_rel->reltoastrelid;
@@ -1070,6 +1072,8 @@ ExecuteTruncate(TruncateStmt *stmt)
{
rel = relation_open(toast_relid, AccessExclusiveLock);
RelationSetNewRelfilenode(rel, RecentXmin);
+ if (rel->rd_rel->relpersistence == RELPERSISTENCE_UNLOGGED)
+ heap_create_init_fork(rel);
heap_close(rel, NoLock);
}