Skip to content

Commit 3142a88

Browse files
committed
WAL-log the creation of the init fork of unlogged indexes.
We create a file, so we better WAL-log it. In practice, all the built-in index AMs and all extensions that I'm aware of write a metapage to the init fork, which is WAL-logged, and replay of the metapage implicitly creates the fork too. But if ambuildempty() didn't write any page, we would miss it. This can be seen with dummy_index_am. Set up replication, create a 'dummy_index_am' index on an unlogged table, and look at the files created in the replica: the init fork is not created on the replica. Dummy_index_am doesn't do anything with the relation files, however, so it doesn't lead to any user-visible errors. Backpatch to all supported versions. Reviewed-by: Robert Haas Discussion: https://www.postgresql.org/message-id/6e5bbc08-cdfc-b2b3-9e23-1a914b9850a9%40iki.fi
1 parent 69a674a commit 3142a88

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

src/backend/catalog/index.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
#include "catalog/pg_trigger.h"
5555
#include "catalog/pg_type.h"
5656
#include "catalog/storage.h"
57+
#include "catalog/storage_xlog.h"
5758
#include "commands/event_trigger.h"
5859
#include "commands/progress.h"
5960
#include "commands/tablecmds.h"
@@ -3044,6 +3045,7 @@ index_build(Relation heapRelation,
30443045
!smgrexists(RelationGetSmgr(indexRelation), INIT_FORKNUM))
30453046
{
30463047
smgrcreate(RelationGetSmgr(indexRelation), INIT_FORKNUM, false);
3048+
log_smgrcreate(&indexRelation->rd_locator, INIT_FORKNUM);
30473049
indexRelation->rd_indam->ambuildempty(indexRelation);
30483050
}
30493051

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy