Re: Avoid retaining conflict-related data when no tables are subscribed

Поиск
Список
Период
Сортировка
От Dilip Kumar
Тема Re: Avoid retaining conflict-related data when no tables are subscribed
Дата
Msg-id CAFiTN-uSQZFNRO1z2dymv_UwgzwnsmAAnqfma2nnHCYqy7MgJg@mail.gmail.com
обсуждение исходный текст
Ответ на Avoid retaining conflict-related data when no tables are subscribed  ("Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>)
Список pgsql-hackers
On Thu, Aug 28, 2025 at 7:54 AM Zhijie Hou (Fujitsu)
<houzj.fnst@fujitsu.com> wrote:
>
> Hi,
>
> My colleague Nisha reported an issue to me off-list: dead tuples can't
> be removed when retain_dead_tuples is enabled for a subscription with no tables.
>
> This appears to stem from the inability to advance the non-removable transaction
> ID when AllTablesyncsReady() returns false. Since this function returns false
> when no tables are present, which leads to unnecessary data retention until a
> table is added to the subscription.
>
> Since dead tuples don't need to be retained when no tables are subscribed, here
> is a patch to fix it, modifying AllTablesyncsReady() to allows no tables to be
> treated as a ready state when explicitly requested.

+ /* If there are no tables, decide readiness based on the parameter */
+ if (!has_subrels)
+ return ready_if_no_tables;
+
  /*
  * Return false when there are no tables in subscription or not all tables
  * are in ready state; true otherwise.
  */
- return has_subrels && (table_states_not_ready == NIL);
+ return table_states_not_ready == NIL;

The first part of the comment "Return false when there are no tables
in subscription" is outdated now with your fix.  Otherwise it looks
fine.


--
Regards,
Dilip Kumar
Google



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