Log the creation of an init fork unconditionally. Previously, it was thought that this only needed to be done for the benefit of possible standbys, so wal_level = minimal skipped it. But that's not safe, because during crash recovery we might replay XLOG_DBASE_CREATE or XLOG_TBLSPC_CREATE record which recursively removes the directory that contains the new init fork. So log it always.
The user-visible effect of this bug is that if you create a database or tablespace, then create an unlogged table, then crash without checkpointing, then restart, accessing the table will fail, because the it won't have been properly reset. This commit fixes that. Michael Paquier, per a report from Konstantin Knizhnik. Wording of the comments per a suggestion from me. Branch ------ REL9_6_STABLE Details ------- http://git.postgresql.org/pg/commitdiff/1ed3c6ff9ef411771d4a9fc9a82c3adea0d6ab3b Modified Files -------------- contrib/bloom/blinsert.c | 13 +++++++++---- src/backend/access/nbtree/nbtree.c | 13 +++++++++---- src/backend/access/spgist/spginsert.c | 23 +++++++++++++---------- src/backend/catalog/heap.c | 13 +++++++------ 4 files changed, 38 insertions(+), 24 deletions(-) -- Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-committers