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
v2-0001-pg_resetwal-Refuse-to-run-when-backup_label-exist.patch
Description: Binary data
v2-0003-pg_resetwal-Add-cluster-state-option.patch
Description: Binary data
v2-0004-Test-pg_resetwal-cluster-state.patch
Description: Binary data
v2-0002-Test-pg_resetwal-backup_label-check.patch
Description: Binary data
