Hi Michael,
> However, if
> one knows his business, even using pg_resetwal on a data folder with a
> backup_label file around can prove incredibly useful when salvaging
> data from a corrupted instance.

That still works with the patch. The only change is that backup_label
has to be removed before pg_resetwal and not after. Today it has to go
anyway. After pg_resetwal -f the server stops with "could not locate
required checkpoint record" until the file is removed. Both orders give
the same data directory on master, pg_control and the new WAL segment
included.

Does that change your view? If not, I can let -f override the check.
Then the patch is only a clearer error without -f, plus the doc
paragraph.

> One thing that may be interesting to me is something much different
> than what you are sending: an option to overwrite DBState in
> ControlFileData to something else than DB_SHUTDOWNED.

0003 in the attached v2 is a first try for that. It adds
--cluster-state, which takes shut-down, shut-down-in-recovery,
shutting-down, in-crash-recovery, in-archive-recovery or in-production.
DB_STARTUP is left out because the server refuses to start with it.

With any value other than shut-down, the next start goes through crash
recovery. One visible effect is that unlogged tables are emptied. Today
they keep what was on disk after a crash and pg_resetwal -f.

Thanks,
Shihao

Attachment: v2-0001-pg_resetwal-Refuse-to-run-when-backup_label-exist.patch
Description: Binary data

Attachment: v2-0003-pg_resetwal-Add-cluster-state-option.patch
Description: Binary data

Attachment: v2-0004-Test-pg_resetwal-cluster-state.patch
Description: Binary data

Attachment: v2-0002-Test-pg_resetwal-backup_label-check.patch
Description: Binary data

Reply via email to