Re: Introduce XID age and inactive timeout based replication slot invalidation
От | Amit Kapila |
---|---|
Тема | Re: Introduce XID age and inactive timeout based replication slot invalidation |
Дата | |
Msg-id | CAA4eK1Kup3+xdh1EMeNE3T6o2PiG6z=V8a1HPvY_qG2dnEb8Ng@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Introduce XID age and inactive timeout based replication slot invalidation (vignesh C <vignesh21@gmail.com>) |
Список | pgsql-hackers |
On Mon, Feb 10, 2025 at 11:33 AM Peter Smith <smithpb2250@gmail.com> wrote: > > Some review comments for v72-0001. > > ====== > GENERAL > > My preference was to just keep the enum as per v70 for the *actual* > cause, and introduce a separate set of bit flags for *possible* causes > to be checked. This creates a clear code separation between the actual > and possible. It also eliminates the need to jump through hoops just > to map a cause to its name. > > You wrote: > > > OTOH, keeping the enums as they are in v70, and defining new macros > for the very similar purpose could add unnecessary complexity to code > management. > > Since both the enum and the bit flags would be defined in slot.h > adjacent to each other I don't foresee much complexity. I concede, a > dev might write code and accidentally muddle the enum instead of the > flag or vice versa but that's an example of sloppiness, not > complexity. Certainly there would be fewer necessary changes than what > are in the v72 patch due to all the cause/causename mappings. For > example, > > slot.h - Now, introduces a NEW typedef SlotInvalidationCauseMap > slot.h - Now, need extern for NEW function GetSlotInvalidationCauseName > > slot.c - Now, needed minor rewrite of GetSlotInvalidationCause instead > of leaving it as-is > slot.c - Now, needs a whole NEW looping function > GetSlotInvalidationCauseName instead of direct array index. > > Several place now must call to the GetSlotInvalidationCauseName where > previously a simple direct array lookup was done > slot.c - NEW call in ReplicationSlotAcquire > slotfuncs.c - NEW call in pg_get_replication_slots > > ~ > > FWIW, I've attached a topup patch using my idea just to see what it > might look like. The result was 20 lines less code. > I don't like the idea of maintaining the same information in two different ways (as enum and bit flags). We already have a few cases of defining bit flags as part of enums like ScanOptions and relopt_kind, so I feel following that model would be a better approach. -- With Regards, Amit Kapila.
В списке pgsql-hackers по дате отправления: