Re: [GENERAL] pg_migrator not setting values of sequences?

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: [GENERAL] pg_migrator not setting values of sequences?
Дата
Msg-id 200907141349.n6EDnxi16734@momjian.us
обсуждение исходный текст
Ответы Re: [GENERAL] pg_migrator not setting values of sequences?  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: [GENERAL] pg_migrator not setting values of sequences?  (Alvaro Herrera <alvherre@commandprompt.com>)
Список pgsql-hackers
bruce wrote:
> Tom Lane wrote:
> > Bruce Momjian <bruce@momjian.us> writes:
> > > Tilmann Singer wrote:
> > >> However, all of the sequences were at the initial values and not
> > >> bumped up to the last used value as I would have expected. The first
> > >> nextval call on any sequence in the migrated 8.4 database always
> > >> returned 1.
> > 
> > > Wow, that is also surprising.  I am going to have to run some tests to
> > > find the cause, but it certainly is not intended.
> > 
> > Looks like pg_migrator neglects to include relkind 'S' in the set of
> > tables that it needs to physically migrate.
> 
> Thanks, I have fixed pg_migrator with the attached patch.  Once we find
> the cause of the lovacuum problem, I will make a new pg_migrator release.

The patch I posted definately fixes a bug.  Not sure how I missed the
regression changes caused by not migrating sequences;  I thought it was
an issue with cached sequence values, not an actual bug.

However, I with the patch, I am now seeing another difference;  a
database with:
SELECT pg_catalog.setval('clstr_tst_a_seq', 33, true);

becomes:SELECT pg_catalog.setval('clstr_tst_a_seq', 33, false);

and the is_called column of the migrated sequences is NULL:
regression=> \d check_seq          Sequence "public.check_seq"    Column     |  Type   |
Value---------------+---------+---------------------sequence_name | name    | check_seq last_value    | bigint  | 1
start_value  | bigint  | 1 increment_by  | bigint  | 9223372036854775807 max_value     | bigint  | 1 min_value     |
bigint | 1 cache_value   | bigint  | 1 log_cnt       | bigint  | 25387551686656 is_cycled     | boolean | f is_called
 | boolean |
 
regression=> select * from check_seq where is_called is null; sequence_name | last_value | start_value |
increment_by    |max_value | min_value | cache_value |    log_cnt     | is_cycled
|is_called---------------+------------+-------------+---------------------+-----------+-----------+-------------+----------------+-----------+-----------
check_seq    |          1 |           1 | 9223372036854775807 |        1 |         1 |           1 | 25387551686656 | f
       |(1 row)
 

Something is certainly wrong.  Did we change sequence table format from
8.3 to 8.4?

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


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

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: [PATCH] "could not reattach to shared memory" on Windows
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [GENERAL] pg_migrator not setting values of sequences?