Andrew Dunstan <and...@dunslane.net> writes: > On 3/20/21 3:03 PM, Tom Lane wrote: >> I fixed up some issues in 0008/0009 (mostly cosmetic, except that >> you forgot a server version check in dumpToastCompression) and >> pushed that, so we can see if it makes crake happy.
> It's still produced a significant amount more difference between the > dumps. For now I've increased the fuzz factor a bit like this: > - if ( ($oversion ne $this_branch && $difflines < 2000) > + if ( ($oversion ne $this_branch && $difflines < 2700) > I'll try to come up with something better. Maybe just ignore lines like > SET default_toast_compression = 'pglz'; > when taking the diff. I see that some other buildfarm animals besides your own critters are still failing the xversion tests, presumably because they lack this hack :-(. On reflection, though, I wonder if we've made pg_dump do the right thing anyway. There is a strong case to be made for the idea that when dumping from a pre-14 server, it should emit SET default_toast_compression = 'pglz'; rather than omitting any mention of the variable, which is what I made it do in aa25d1089. If we changed that, I think all these diffs would go away. Am I right in thinking that what's being compared here is new pg_dump's dump from old server versus new pg_dump's dump from new server? The "strong case" goes like this: initdb a v14 cluster, change default_toast_compression to lz4 in its postgresql.conf, then try to pg_upgrade from an old server. If the dump script doesn't set default_toast_compression = 'pglz' then the upgrade will do the wrong thing because all the tables will be recreated with a different behavior than they had before. IIUC, this wouldn't result in broken data, but it still seems to me to be undesirable. dump/restore ought to do its best to preserve the old DB state, unless you explicitly tell it --no-toast-compression or the like. regards, tom lane