Adding a LogicalRepWorker type field

Поиск
Список
Период
Сортировка
От Peter Smith
Тема Adding a LogicalRepWorker type field
Дата
Msg-id CAHut+PttPSuP0yoZ=9zLDXKqTJ=d0bhxwKaEaNcaym1XqcvDEg@mail.gmail.com
обсуждение исходный текст
Ответы Re: Adding a LogicalRepWorker type field  (Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>)
Re: Adding a LogicalRepWorker type field  (Masahiko Sawada <sawada.mshk@gmail.com>)
Список pgsql-hackers
Hi hackers,

BACKGROUND:

The logical replication has different worker "types" (e.g. apply
leader, apply parallel, tablesync).

They all use a common structure called LogicalRepWorker, but at times
it is necessary to know what "type" of worker a given LogicalRepWorker
represents.

Once, there were just apply workers and tablesync workers - these were
easily distinguished because only tablesync workers had a valid
'relid' field. Next, parallel-apply workers were introduced - these
are distinguishable from the apply leaders by the value of
'leader_pid' field.


PROBLEM:

IMO, deducing the worker's type by examining multiple different field
values seems a dubious way to do it. This maybe was reasonable enough
when there were only 2 types, but as more get added it becomes
increasingly complicated.

SOLUTION:

AFAIK none of the complications is necessary anyway; the worker type
is already known at launch time, and it never changes during the life
of the process.

The attached Patch 0001 introduces a new enum 'type' field, which is
assigned during the launch.

~

This change not only simplifies the code, but it also permits other
code optimizations, because now we can switch on the worker enum type,
instead of using cascading if/else.  (see Patch 0002).

Thoughts?

------
Kind Regards,
Peter Smith.
Fujitsu Australia

Вложения

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

Предыдущее
От: Dianjin Wang
Дата:
Сообщение: Re: New PostgreSQL Contributors
Следующее
От: "Rui Zhao"
Дата:
Сообщение: 回复:pg_rewind fails with in-place tablespace