On Wed, 17 Sept 2025 at 22:13, Andrey Borodin <[email protected]> wrote:
> Occasionally (when dealing with corruption) I do stuff like
>
> begin;
> update public.tablename set description = description where ctid in (select 
> ('('||b.blkno::text||','||(x::text)||')')::tid from generate_series(1,300) x, 
> blocks b);
>
> in some forms they are actually joins. Also, pageinspecting things out is 
> always a join (CTAS a copy of table rows that have particular infomask bits). 
> But, fortunately, it's not that frequent case. It's always "plumbing", not a 
> "regular database usage".

Thanks for sharing that one.  If that UPDATE did do a Nested Loop join
with a TID Scan on the inner side, the optimisation I have in the
patch *wouldn't* be applied as a parameter is changing that genuinely
does need the TidList to be recalculated over again.

David


Reply via email to