Re: pg_upgrade test for binary compatibility of core data types
Tom Lane <tgl@sss.pgh.pa.us>
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
Peter Eisentraut <peter.eisentraut@enterprisedb.com> writes: > On 2021-01-12 22:44, Andrew Dunstan wrote: >> Cross version pg_upgrade is tested regularly in the buildfarm, but not >> using test.sh. Instead it uses the saved data repository from a previous >> run of the buildfarm client for the source branch, and tries to upgrade >> that to the target branch. > Does it maintain a set of fixups similar to what is in test.sh? Are > those two sets the same? Responding to Peter: the first answer is yes, the second is I didn't check, but certainly Justin's patch makes them closer. I spent some time poking through this set of patches. I agree that there's problem(s) here that we need to solve, but it feels like this isn't a great way to solve them. What I see in the patchset is: v4-0001 mostly teaches test.sh about specific changes that have to be made to historic versions of the regression database to allow them to be reloaded into current servers. As already discussed, this is really duplicative of knowledge that's been embedded into the buildfarm client over time. It'd be better if we could refactor that so that the buildfarm shares a common database of these actions with test.sh. And said database ought to be in our git tree, so committers could fix problems without having to get Andrew involved every time. I think this could be represented as a psql script, at least in versions that have psql \if (but that came in in v10, so maybe we're there already). (Taking a step back, maybe the regression database isn't an ideal testbed for this in the first place. But it does have the advantage of not being a narrow-minded test that is going to miss things we haven't explicitly thought of.) v4-0002 is a bunch of random changes that mostly seem to revert hacky adjustments previously made to improve test coverage. I don't really agree with any of these, nor see why they're necessary. If they are necessary then we need to restore the coverage somewhere else. Admittedly, the previous changes were a bit hacky, but deleting them (without even bothering to adjust the relevant comments) isn't the answer. v4-0003 is really the heart of the matter: it adds a table with some previously-not-covered datatypes plus a query that purports to make sure that we are covering all types of interest. But I'm not sure I believe that query. It's got hard-wired assumptions about which typtype values need to be covered. Why is it okay to exclude range and multirange? Are we sure that all composites are okay to exclude? Likewise, the restriction to pg_catalog and information_schema schemas seems likely to bite us someday. There are some very random exclusions based on name patterns, which seem unsafe (let's list the specific type OIDs), and again the nearby comments don't match the code. But the biggest issue is that this can only cover core datatypes, not any contrib stuff. I don't know what we could do about contrib types. Maybe we should figure that covering core types is already a step forward, and be happy with getting that done. regards, tom lane