Re: [BUG] failed assertion in EnsurePortalSnapshotExists()

Ranier Vilela <ranier.vf@gmail.com>

From: Ranier Vilela <ranier.vf@gmail.com>
To: "Drouvot, Bertrand" <bdrouvot@amazon.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Alvaro Herrera <alvherre@2ndquadrant.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-09-29T11:23:22Z
Lists: pgsql-hackers
Em qua., 29 de set. de 2021 às 08:12, Drouvot, Bertrand <bdrouvot@amazon.com>
escreveu:

> Hi,
> On 9/29/21 12:59 PM, Ranier Vilela wrote:
>
>
> Em qua., 29 de set. de 2021 às 06:55, Drouvot, Bertrand <
> bdrouvot@amazon.com> escreveu:
>
>> I'm also inclined to #1.
>>
> I have a stupid question, why duplicate PushActiveSnapshot?
> Wouldn't one function be better?
>
> PushActiveSnapshot(Snapshot snap, int as_level);
>
> Sample calls:
> PushActiveSnapshot(GetTransactionSnapshot(),
> GetCurrentTransactionNestLevel());
> PushActiveSnapshot(queryDesc->snapshot, GetCurrentTransactionNestLevel());
> PushActiveSnapshot(GetTransactionSnapshot(), portal->createSubid);
>
> I would say because that could "break" existing extensions for example.
>
> Adding a new function prevents "updating" existing extensions making use
> of PushActiveSnapshot().
>
Valid argument of course.
But the extensions should also fit the core code.
Duplicating functions is very bad for maintenance and bloats the code
unnecessarily, IMHO.

regards,
Ranier Vilela

Commits

  1. Fix Portal snapshot tracking to handle subtransactions properly.