Re: pg_upgrade test for binary compatibility of core data types
Michael Paquier <michael@paquier.xyz>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Move into separate file all the SQL queries used in pg_upgrade tests
- 1924d508c335 10.20 landed
- 0e603b75c434 11.15 landed
- b6e525648d72 12.10 landed
- fae5f08e1719 13.6 landed
- b6dac98b0561 14.2 landed
- 0df9641d3905 15.0 landed
-
Add table to regression tests for binary-compatibility checks in pg_upgrade
- a9993416f80f 12.10 landed
- 755f04c72ef1 13.6 landed
- cf3d79aa31f2 14.2 landed
- 835bcba8b8d7 15.0 landed
-
Fix tests of pg_upgrade across different major versions
- afa09e4a9af6 12.9 landed
- 2a8dee6a67cc 13.5 landed
- f4e1c8892b9e 14.1 landed
- fa66b6dee084 15.0 landed
-
Multirange datatypes
- 6df7a9698bb0 14.0 cited
-
Work around cross-version-upgrade issues created by commit 9e38c2bb5.
- 97f73a978fc1 14.0 cited
-
Declare assorted array functions using anycompatible not anyelement.
- 9e38c2bb5093 14.0 cited
-
Remove factorial operators, leaving only the factorial() function.
- 76f412ab3105 14.0 cited
-
Create by default sql/ and expected/ for output directory in pg_regress
- e78900afd217 14.0 cited
-
Add missing include to pg_upgrade/version.c
- bc3a94dc0005 9.4.25 landed
- 984aa0ede1d2 9.5.20 landed
- e09ab32a2205 9.6.16 landed
-
Improve the check for pg_catalog.line data type in pg_upgrade
- 235a52ca0f26 9.4.25 landed
- f57b01dd75ee 9.5.20 landed
- 0a643de08715 9.6.16 landed
- 2218fdca496b 10.11 landed
- a970b6cdebd1 11.6 landed
- ebb4caa9120d 12.1 landed
- 8d48e6a7240c 13.0 landed
-
Improve the check for pg_catalog.unknown data type in pg_upgrade
- e86ece22114d 10.11 landed
- d071a2539ff4 11.6 landed
- a8e49ae0c381 12.1 landed
- a524f50d0fc6 13.0 landed
-
Check for tables with sql_identifier during pg_upgrade
- eaf900e842ab 12.1 landed
- 0ccfc2822366 13.0 landed
-
pg_upgrade: clarify the database names in error files
- 1634d361577a 13.0 cited
-
In the pg_upgrade test suite, don't write to src/test/regress.
- 40b132c1afbb 12.0 cited
-
Allow group access on PGDATA
- c37b3d08ca68 11.0 cited
-
Refactor dir/file permissions
- da9b580d8990 11.0 cited
-
Remove unused functions in regress.c.
- db3af9feb19f 11.0 cited
-
Make WAL segment size configurable at initdb time.
- fc49e24fa69a 11.0 cited
-
Fix bit-rot in pg_upgrade's test.sh, and improve documentation.
- 5bab1985dfc2 10.0 cited
Attachments
- v7-0001-pg_upgrade-test-to-exercise-binary-compatibility.patch (text/x-diff) patch v7-0001
On Sun, Nov 07, 2021 at 01:22:00PM -0600, Justin Pryzby wrote: > That may be good enough for test.sh, but if the kludges were moved to a .sql > script which was also run by the buildfarm (in stead of its hardcoded kludges), then > it might be necessary to handle the additional stuff my patch did, like: > > + DROP TRANSFORM FOR integer LANGUAGE sql CASCADE;" > + DROP FUNCTION boxarea(box);" > + DROP FUNCTION funny_dup17();" These apply for an old version <= v10. > + DROP TABLE abstime_tbl;" > + DROP TABLE reltime_tbl;" > + DROP TABLE tinterval_tbl;" old version <= 9.3. > + DROP AGGREGATE first_el_agg_any(anyelement);" Not sure about this one. > + DROP AGGREGATE array_cat_accum(anyarray);" > + DROP OPERATOR @#@(NONE,bigint);" These are on 9.4. It is worth noting that TestUpgradeXversion.pm recreates those objects. I'd agree to close the gap completely rather than just moving what test.sh does to wipe out a maximum client code for the buildfarm. > Or, maybe it's guaranteed that the animals all run latest version of old > branches, in which case I think some of the BF's existing logic could be > dropped, which would help to reconcile these two scripts: That seems like a worthy goal to reduce the amount of duplication with the buildfarm code, while allowing tests from upgrades with older versions (the WAL segment size and group permission issue in test.sh had better be addressed in a better way, perhaps once the pg_upgrade tests are moved to TAP). There are also things specific to contrib/ modules with older versions, but that may be too specific for this exercise. +\if :oldpgversion_le84 +DROP FUNCTION public.myfunc(integer); +\endif The oldest version tested by the buildfarm is 9.2, so we could ignore this part I guess? Andrew, what do you think about this part? Based on my read of this thread, there is an agreement that this approach makes the buildfarm code more manageable so as committers would not need to patch the buildfarm code if their test fail. I agree with this conclusion, but I wanted to double-check with you first. This would need a backpatch down to 10 so as we could clean up a maximum of code in TestUpgradeXversion.pm without waiting for an extra 5 years. Please note that I am fine to send a patch for the buildfarm client. > We wouldn't miss new core types, because of the 2nd part of type_sanity which > tests that each core type was included in the "manytypes" table. Thanks, I see your point now after a closer read. There is still a pending question for contrib modules, but I think that we need to think larger here with a better integration of contrib/ modules in the upgrade testing process. Making that cheap would require running the set of regression tests on the instance to-be-upgraded first. I think that one step in this direction would be to have unique databases for each contrib/ modules, so as there is no overlap with objects dropped? Having some checks with code types looks fine as a first step, so let's do that. I have reviewed 0001, rewrote a couple of comments. All the comments from upthread seem to be covered with that. So I'd like to get that applied on HEAD. We could as well be less conservative and backpatch that down to 12 to follow on 7c15cef so we would be more careful with 15~ already (a backpatch down to 14 would be enough for this purpose, actually thanks to the 14->15 upgrade path). -- Michael