On Fri, Nov 7, 2025 at 8:30 AM Zhijie Hou (Fujitsu) <[email protected]> wrote: > > On Friday, November 7, 2025 2:36 AM Masahiko Sawada <[email protected]> > wrote: > > On Thu, Nov 6, 2025 at 2:36 AM Amit Kapila <[email protected]> > > wrote: > > > > > > Good point. This can happen when the last slot is invalidated or dropped. > > > > After the last slot is invalidated or dropped, both slot_xmin and > > slot_catalog_xmin values are set InvalidTransactionId. Then in this > > case, these values are ignored when computing the oldest safe decoding > > XID in GetOldestSafeDecodingTransactionId(), no? Or do you mean that > > there is a case where slot_xmin and slot_catalog_xmin retreat to a > > valid XID? > > I think when replication_slot_xmin is invalid, > GetOldestSafeDecodingTransactionId would return nextXid, which can be greater > than the original snap.xmin if some transaction IDs have been assigned. >
Won't we have a problem that values of procArray->replication_slot_xmin and procArray->replication_slot_catalog_xmin won't be set to InvalidTransactionId after last slot removal due to a new check unless we do special treatment for drop/invalidation of a slot? And that would lead to accumulating dead rows even when not required. -- With Regards, Amit Kapila.
