Re: pg_upgrade test for binary compatibility of core data types
Justin Pryzby <pryzby@telsasoft.com>
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
On Fri, Jul 16, 2021 at 06:02:18PM +0000, Jacob Champion wrote: > On Fri, 2021-04-30 at 13:33 -0500, Justin Pryzby wrote: > > On Sat, Mar 06, 2021 at 03:01:43PM -0500, Tom Lane wrote: > > > 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). > > > > I started this. I don't know if it's compatible with the buildfarm client, but > > I think any issues maybe can be avoided by using "IF EXISTS". > > Here are the differences I see on a first pass (without putting too > much thought into how significant the differences are). Buildfarm code > I'm comparing against is at [1]. > > - Both versions drop @#@ and array_cat_accum, but the buildfarm > additionally replaces them with a new operator and aggregate, > respectively. > > - The buildfarm's dropping of table OIDs is probably more resilient, > since it loops over pg_class looking for relhasoids. These are all "translated" from test.sh, so follow its logic. Maybe it should be improved, but that's separate from this patch - which is already doing a few unrelated things. > - The buildfarm adjusts pg_proc for the location of regress.so; I see > there's a commented placeholder for this at the end of the psql script > but it's not yet implemented. I didn't understand why this was done here, but it turns out it has to be done *after* calling pg_dump. So it has to stay where it is. > - Some version ranges are different between the two. For example, > abstime_/reltime_/tinterval_tbl are dropped by the buildfarm if the old > version is < 9.3, while the psql script drops them for old versions <= > 10. This was an error. Thanks. > - The buildfarm drops the public.=> operator for much older versions of > Postgres. I assume we don't need that here. > As an aside, I think the "fromv10" naming scheme for the "old version > <= 10" condition is unintuitive. If the old version is e.g. 9.6, we're > not upgrading "from 10". I renamed the version vars - feel free to suggest something better. I'll solicit suggestions what else to do to progresss these. @Andrew: did you have any comment on this part ? |Subject: buildfarm xversion diff |Forking https://www.postgresql.org/message-id/20210328231433.GI15100@telsasoft.com | |I gave suggestion how to reduce the "lines of diff" metric almost to nothing, |allowing a very small "fudge factor", and which I think makes this a pretty |good metric rather than a passable one. -- Justin