| THE SHORT VERSION |
| ----------------- |
| |
| On non-Windows machines, you can execute the testing process |
| described below by running the following command in this directory: |
| |
| make check |
| |
| This will run the TAP tests to run pg_upgrade, performing an upgrade |
| from the version in this source tree to a new instance of the same |
| version. |
| |
| Testing an upgrade from a different PG version is also possible, and |
| provides a more thorough test that pg_upgrade does what it's meant for. |
| This requires both a source tree and an installed tree for the old |
| version, as well as a dump file to set up the instance to be upgraded. |
| The following environment variables must be set to enable this testing: |
| export olddump=...somewhere/dump.sql (old version's dump) |
| export oldinstall=...otherversion/ (old version's install base path) |
| See DETAILS below for more information about creation of the dump. |
| |
| You can also test the different transfer modes (--copy, --link, |
| --clone) by setting the environment variable PG_TEST_PG_UPGRADE_MODE |
| to the respective command-line option, like |
| |
| make check PG_TEST_PG_UPGRADE_MODE=--link |
| |
| The default is --copy. Note that the other modes are not supported on |
| all operating systems. |
| |
| DETAILS |
| ------- |
| |
| The most effective way to test pg_upgrade, aside from testing on user |
| data, is by upgrading the PostgreSQL regression database. |
| |
| This testing process first requires the creation of a valid regression |
| database dump that can then be used for $olddump. Such files contain |
| most database features and are specific to each major version of Postgres. |
| |
| Here are the steps needed to create a dump file: |
| |
| 1) Create and populate the regression database in the old cluster. |
| This database can be created by running 'make installcheck' from |
| src/test/regress in the old version's source code tree. |
| |
| If you like, you can also populate regression databases for one or |
| more contrib modules by running 'make installcheck USE_MODULE_DB=1' |
| in their directories. (USE_MODULE_DB is essential so that the |
| pg_upgrade test script will understand which database is which.) |
| |
| 2) Use pg_dumpall to dump out the contents of the instance, including the |
| regression database(s), into a SQL file. Use the *old* version's |
| pg_dumpall so that the dump created is compatible with that version. |
| |
| Once the dump file is created, it can be used repeatedly. Set $olddump |
| to point to the dump file and run 'make check' or 'make installcheck' |
| in the new version's src/bin/pg_upgrade directory. (If you included any |
| contrib databases in the old dump, you must use 'make installcheck' and |
| ensure that the corresponding contrib modules have been installed in |
| the new version's installation tree.) This will build a temporary cluster |
| using the old installation's executables, populate it from the dump file, |
| and then try to pg_upgrade it to the new version. Success is reported |
| if pg_dumpall output matches between the pre-upgrade and post-upgrade |
| databases. In case of trouble, manually comparing those dump files may |
| help to isolate the problem. |