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 по дате отправления: