From: | Peter Smith <smithpb2250(at)gmail(dot)com> |
---|---|
To: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Adding a LogicalRepWorker type field |
Date: | 2023-07-31 01:46:24 |
Message-ID: | CAHut+PttPSuP0yoZ=9zLDXKqTJ=d0bhxwKaEaNcaym1XqcvDEg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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
Attachment | Content-Type | Size |
---|---|---|
v1-0001-Add-LogicalRepWorkerType-enum.patch | application/octet-stream | 2.3 KB |
v1-0002-Switch-on-worker-type.patch | application/octet-stream | 3.6 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Rui Zhao | 2023-07-31 02:07:44 | 回复:pg_rewind fails with in-place tablespace |
Previous Message | Dianjin Wang | 2023-07-31 01:34:10 | Re: New PostgreSQL Contributors |