Re: Damage control for planner's get_actual_variable_endpoint() runaway

From: Andres Freund <andres(at)anarazel(dot)de>
To: Jakub Wartak <jakub(dot)wartak(at)enterprisedb(dot)com>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Simon Riggs <simon(dot)riggs(at)enterprisedb(dot)com>, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Damage control for planner's get_actual_variable_endpoint() runaway
Date: 2022-11-21 17:30:48
Message-ID: 20221121173048.zqklejzpbeadnmsq@awork3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On 2022-11-21 17:06:16 +0100, Jakub Wartak wrote:
> @@ -6213,14 +6216,26 @@ get_actual_variable_endpoint(Relation heapRel,
> /* Fetch first/next tuple in specified direction */
> while ((tid = index_getnext_tid(index_scan, indexscandir)) != NULL)
> {
> + BlockNumber block = ItemPointerGetBlockNumber(tid);
> if (!VM_ALL_VISIBLE(heapRel,
> - ItemPointerGetBlockNumber(tid),
> + block,
> &vmbuffer))
> {
> /* Rats, we have to visit the heap to check visibility */
> if (!index_fetch_heap(index_scan, tableslot))
> continue; /* no visible tuple, try next index entry */
>
> + {
> + CHECK_FOR_INTERRUPTS();
> + if (block != last_block)
> + visited_pages++;
> +#define VISITED_PAGES_LIMIT 100
> + if (visited_pages > VISITED_PAGES_LIMIT)
> + break;
> + else
> + continue; /* no visible tuple, try next index entry */
> + }
> +
> /* We don't actually need the heap tuple for anything */
> ExecClearTuple(tableslot);
>
> --
> 2.30.2

This can't quite be right - isn't this only applying the limit if we found a
visible tuple?

Greetings,

Andres Freund

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Justin Pryzby 2022-11-21 17:34:31 Re: Damage control for planner's get_actual_variable_endpoint() runaway
Previous Message Tom Lane 2022-11-21 17:24:17 Re: pgsql: Prevent instability in contrib/pageinspect's regression test.