Hi,

On 2019-04-11 18:15:41 +0000, Daniel Gustafsson wrote:
> On Thursday, April 11, 2019 6:58 PM, Andres Freund <and...@anarazel.de> wrote:
> 
> > On 2019-04-09 23:11:03 -0400, Bruce Momjian wrote:
> >
> > > Enabling checksums by default will require anyone using pg_upgrade to
> > > run initdb to disable checksums before running pg_upgrade, for one
> > > release. We could add checksums for non-link pg_upgrade runs, but we
> > > don't have code to do that yet, and most people use link anyway.
> >
> > Hm. We could just have pg_ugprade run pg_checksums --enable/disable,
> > based on the old cluster, and print a warning on mismatches. Not sure if
> > that's worth it, but ...
> 
> That would be for link mode, for copy-mode you'd have to initdb with checksums
> turned off and run pg_checksums on the new cluster, else the non-destructive
> nature of copy mode would be lost.

I don't think so? But I think we might just have misunderstood each
other. What I was suggesting is that we could take the burden of having
to match the old cluster's checksum enabled/disabled setting when
initdb'ing the new cluster, by changing the new cluster instead of
erroring out with:
        if (oldctrl->data_checksum_version == 0 &&
                newctrl->data_checksum_version != 0)
                pg_fatal("old cluster does not use data checksums but the new 
one does\n");
        else if (oldctrl->data_checksum_version != 0 &&
                         newctrl->data_checksum_version == 0)
                pg_fatal("old cluster uses data checksums but the new one does 
not\n");
        else if (oldctrl->data_checksum_version != 
newctrl->data_checksum_version)
                pg_fatal("old and new cluster pg_controldata checksum versions 
do not match\n");


As the new cluster at that time isn't yet related to the old cluster, I
don't see why that'd influence the non-destructive nature?

Greetings,

Andres Freund


Reply via email to