Re: pg_dump versus ancient server versions
Tom Lane <tgl@sss.pgh.pa.us>
[ mostly for the archives' sake ]
I wrote:
> I ran a new set of experiments concerning building back branches
> on modern platforms, this time trying Fedora 35 (gcc 11.2.1)
> on x86_64. I widened the scope of the testing a bit by adding
> "--enable-nls --with-perl" and running check-world not just the
> core tests. Salient results:
> * 9.1 fails with "conflicting types for 'base_yylex'", much as
> I saw on macOS except it's a hard error on this compiler.
I poked a little harder at what might be needed to get 9.1 compiled
on modern platforms. It looks like the base_yylex issue is down
to newer versions of flex doing things differently. We fixed
that in the v10 era via 72b1e3a21 (Build backend/parser/scan.l and
interfaces/ecpg/preproc/pgc.l standalone) and 92fb64983 (Use "%option
prefix" to set API names in ecpg's lexer), which were later back-patched
as far down as 9.2. It might not be out of the question to back-patch
those further, but the 9.2 patches don't apply cleanly to 9.1, so some
effort would be needed.
Worrisomely, I also noted warnings like
parse_coerce.c:791:67: warning: array subscript 1 is above array bounds of 'Oid[1]' {aka 'unsigned int[1]'} [-Warray-bounds]
791 | Assert(nargs < 2 || procstruct->proargtypes.values[1] == INT4OID);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
which remind me that 9.1 lacks 8137f2c32 (Hide most variable-length fields
from Form_pg_* structs). We did stick -fno-aggressive-loop-optimizations
into 9.1 and older branches back in 2015, but I don't have a lot of
confidence that that'd be sufficient to prevent misoptimizations in
current-vintage compilers. Back-patching 8137f2c32 and all the follow-on
work is very clearly not something to consider, so dialing down the -O
level might be necessary if you were interested in making this go.
In short then, there is a really large gap between 9.1 and 9.2 in terms
of how hard they are to build on current toolchains. It's kind of
fortunate that Peter proposed 9.2 rather than some earlier cutoff.
In any case, I've completely lost interest in trying to move the
keep-it-buildable cutoff to any earlier than 9.2; it doesn't look
like the effort-to-benefit ratio would be attractive at all.
regards, tom lane
Commits
-
Remove psql support for server versions preceding 9.2.
- cf0cab868aa4 15.0 landed
-
Clean up some more freshly-dead code in pg_dump and pg_upgrade.
- c49d926833fa 15.0 landed
-
Remove pg_dump's --no-synchronized-snapshots switch.
- 2a712066d058 15.0 landed
-
Remove pg_upgrade support for upgrading from pre-9.2 servers.
- e469f0aaf3c5 15.0 landed
-
Remove pg_dump/pg_dumpall support for dumping from pre-9.2 servers.
- 30e7c175b81d 15.0 landed
-
Suppress -Warray-bounds warning in 9.2's xlog.c.
- 985c8de212fa 9.2 (unreleased) landed
-
Suppress -Wformat-overflow warnings in 9.2's xml.c.
- 3f9700acb238 9.2 (unreleased) landed
-
Disable -Wsometimes-uninitialized warnings in the 9.2 branch.
- cea316881f1f 9.2 (unreleased) landed
-
Fix function return type confusion
- 468773837bed 9.2 (unreleased) landed
-
Fix compiler warning
- 98274e8fe7a0 9.2 (unreleased) landed
- fcf1f27fe89b 9.3 (unreleased) landed
-
Silence another gcc 11 warning.
- 265b96a96af2 9.2 (unreleased) landed
- a1fe82d98745 9.3 (unreleased) landed
- 0af208402d0a 9.4 (unreleased) landed
-
Suppress uninitialized-variable warning in guc.c.
- 60ca4eec8dc7 9.5 (unreleased) landed
-
Suppress -Warray-parameter warnings in pgcrypto/sha2.c.
- d754ccc1ec9f 9.2 (unreleased) landed
- 6eb7efdf0f74 9.3 (unreleased) landed
- 25c8e5ef077e 9.4 (unreleased) landed
- 0d9b02b33919 9.5 (unreleased) landed
- 116a509e09ac 9.6 (unreleased) landed
-
Reformat imath.c macro to remove -Wmisleading-indentation warnings.
- a86312362da4 9.2 (unreleased) landed
- 9610c7158409 9.3 (unreleased) landed
- 5eb73fc9347d 9.4 (unreleased) landed
- 4cb389a048eb 9.5 (unreleased) landed
- f420f24c0a5d 9.6 (unreleased) landed
- bbbf22cf3351 11.15 landed
- 9d73dac127d8 10.20 landed
-
Clean up compilation warnings coming from PL/Perl with clang-12~
- ebd952f3f453 9.2 (unreleased) landed
- 580261836c11 9.3 (unreleased) landed
- 3fff9b6c1856 9.4 (unreleased) landed
- e51e8fb9f433 9.5 (unreleased) landed
- c16a78147ca1 9.6 (unreleased) landed
-
Make ecpg's rjulmdy() and rmdyjul() agree with their declarations.
- 87671beecf53 9.2 (unreleased) landed
- b30e23fe588b 9.3 (unreleased) landed
- 9ae132dfe373 9.4 (unreleased) landed
-
Use -Wno-format-truncation and -Wno-stringop-truncation, if available.
- 276c017f12fe 9.2 (unreleased) landed
-
Make pg_upgrade's test.sh less chatty.
- a4061eeaf34a 9.2 (unreleased) landed
- 119b9d060e8f 9.3 (unreleased) landed
-
Add checks for valid multibyte character length in UtfToLocal, LocalToUtf.
- 70c64135d0a1 9.2 (unreleased) landed
- 404d987646e3 9.3 (unreleased) landed
-
Use return instead of exit() in configure
- fed9cf2cb9ef 9.2 (unreleased) landed
- f24374bce687 9.3 (unreleased) landed
- 47fca011b88a 9.4 (unreleased) landed
- 1c0cf52b39ca 10.0 cited
-
Add support for Visual Studio 2019 in build scripts
- 2b1394fc2b52 13.0 cited