Re: WAL replay of truncate fails if the table was dropped - Mailing list pgsql-bugs

From Tom Lane
Subject Re: WAL replay of truncate fails if the table was dropped
Date
Msg-id 7075.1184944339@sss.pgh.pa.us
Whole thread Raw
In response to WAL replay of truncate fails if the table was dropped  (Heikki Linnakangas <heikki@enterprisedb.com>)
Responses Re: WAL replay of truncate fails if the table was dropped  (Heikki Linnakangas <heikki@enterprisedb.com>)
List pgsql-bugs
Heikki Linnakangas <heikki@enterprisedb.com> writes:
> mdtruncate throws an error if the relation file doesn't exist.

Interesting corner case.  The proposed fix seems not very consistent
with the way we handle comparable cases elsewhere, though.  In general,
md.c will cut some slack when InRecovery if a relation is shorter than
expected, but not if it's not there at all.  (This is, indeed, what
justifies mdtruncate's response to file-too-short...)  We handle
dropped files during recovery by forced smgrcreate() in places like
XLogOpenRelation.  I'm inclined to think smgr_redo should force
smgrcreate() before trying to truncate.

            regards, tom lane

pgsql-bugs by date:

Previous
From: Heikki Linnakangas
Date:
Subject: WAL replay of truncate fails if the table was dropped
Next
From: Heikki Linnakangas
Date:
Subject: Re: WAL replay of truncate fails if the table was dropped