Re: Adding REPACK [concurrently]
От | Antonin Houska |
---|---|
Тема | Re: Adding REPACK [concurrently] |
Дата | |
Msg-id | 51329.1756740618@localhost обсуждение исходный текст |
Ответ на | Re: Adding REPACK [concurrently] (Mihail Nikalayeu <mihailnikalayeu@gmail.com>) |
Ответы |
Re: Adding REPACK [concurrently]
|
Список | pgsql-hackers |
Mihail Nikalayeu <mihailnikalayeu@gmail.com> wrote: > Antonin Houska <ah@cybertec.at>: > > Are you sure the test is complete? I see no occurrence of the REPACK command > > in it. > Oops, send invalid file. The correct one in attachment. Thanks! The problem was that when removing the original "preserve visibility patch" v12-0005 [1] from the series, I forgot to change the value of 'need_full_snapshot' argument of CreateInitDecodingContext(). v12 and earlier treated the repacked table like system catalog, so it was o.k. to pass need_full_snapshot=false. However, it must be true now, otherwise the snapshot created for the initial copy does not see commits of transactions that do not change regular catalogs. The fix is as simple as diff --git a/src/backend/replication/logical/snapbuild.c b/src/backend/replication/logical/snapbuild.c index f481a3cec6d..7866ac01278 100644 --- a/src/backend/replication/logical/snapbuild.c +++ b/src/backend/replication/logical/snapbuild.c @@ -502,6 +502,7 @@ SnapBuildInitialSnapshotForRepack(SnapBuild *builder) StringInfo buf = makeStringInfo(); Assert(builder->state == SNAPBUILD_CONSISTENT); + Assert(builder->building_full_snapshot); snap = SnapBuildBuildSnapshot(builder); I'll apply it to the next version of the "Add CONCURRENTLY option to REPACK command" patch. [1] https://www.postgresql.org/message-id/flat/CAFj8pRDK89FtY_yyGw7-MW-zTaHOCY4m6qfLRittdoPocz+dMQ@mail.gmail.com -- Antonin Houska Web: https://www.cybertec-postgresql.com
В списке pgsql-hackers по дате отправления: