Re: pg_upgrade and extra_float_digits

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: pg_upgrade and extra_float_digits
Дата
Msg-id 201005180327.o4I3Rrl28097@momjian.us
обсуждение исходный текст
Ответ на Re: pg_upgrade and extra_float_digits  (Bruce Momjian <bruce@momjian.us>)
Список pgsql-hackers
Bruce Momjian wrote:
> Well, to do it on the fly, you need to:
>
>     use $libdir for regression .so files, not absolute paths
>     change CREATE OR REPLACE LANGUAGE to simple CREAtE for 8.4
>     run it twice to fix inheritance COPY column ordering
>     deal with extra_float_digits
>
> That sounds tricky.

I have added the attached file to CVS to explain the proper pg_upgrade
testing method.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com
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.  Such files contain most database features and are
specific to each major version of Postgres.

Here are the steps needed to create a regression database dump file:

1)  Create and populate the regression database in the old cluster
    This database can be created by running 'gmake installcheck' from
    src/test/regression.

2)  Use pg_dump to dump out the regression database
    Use the new cluster's pg_dump on the old database to minimize
    whitespace differences in the diff.

3)  Adjust the regression database dump file

    a)  Change CREATE FUNCTION shared object paths to use '$libdir'
        The old and new cluster will have different shared object paths.

    b)  Remove 'regex_flavor' (not supported in Postgres 9.0)

    c)  Change CREATE OR REPLACE LANGUAGE to CREATE LANGUAGE
        The former syntax is only supported in Postgres 9.0.

    d)  Perform the load/dump twice
        This fixes problems with the ordering of COPY columns for
        inherited tables.

    e)  Fix any wrapping format differences
        Commands like CREATE TRIGGER and ALTER TABLE sometimes have
        differences.

    f)  Adjust extra_float_digits
    Postgres 9.0 pg_dump uses extra_float_digits=-2 for pre-9.0
    databases, and extra_float_digits=-3 for >= 9.0 databases.
    It is necessary to modify 9.0 pg_dump to always use -3, and
    modify the pre-9.0 old server to accept extra_float_digits=-3.

Once the dump is created, it can be repeatedly loaded into the old
database, upgraded, and dumped out of the new database, and then
compared to the original version. To test the dump file, perform these
steps:

1)  Create the old and new clusters in different directories.

2)  Copy the regression shared object files into the appropriate /lib
    directory for old and new clusters.

3)  Create the regression database in the old server.

4)  Load the dump file created above into the regression database;
    check for errors while loading.

5)  Upgrade the old database to the new major version, as outlined in
    the pg_upgrade manual section.

6)  Use pg_dump to dump out the regression database in the new cluster.

7)  Diff the regression database dump file with the regression dump
    file loaded into the old server.





В списке pgsql-hackers по дате отправления:

Предыдущее
От: Greg Stark
Дата:
Сообщение: Re: including PID or backend ID in relpath of temp rels
Следующее
От: Simon Riggs
Дата:
Сообщение: Re: Stefan's bug (was: max_standby_delay considered harmful)