Probably misleading comments or lack of tests in autoHeld portals management

From: Alexey Kondratov <a(dot)kondratov(at)postgrespro(dot)ru>
To: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Cc: Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>
Subject: Probably misleading comments or lack of tests in autoHeld portals management
Date: 2019-02-26 13:17:11
Message-ID: 2cd5d2e3-272d-2951-8f74-716ae1a0b607@postgrespro.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi hackers,

I am trying to figure out current cursors/portals management and life
cycle in Postgres. There are two if conditions for autoHeld portals:

- 'if (portal->autoHeld)' inside AtAbort_Portals at portalmem.c:802;
- '|| portal->autoHeld' inside AtCleanup_Portals at portalmem.c:871.

Their removal does not seem to affect anything, make check-world is
passed. I have tried configure --with-perl/--with-python, which should
be a case for autoHeld portals, but nothing changed.

For me it seems to be expectable, since autoHeld flag is always set
along with createSubid=InvalidSubTransactionId inside HoldPinnedPortals,
so the only one check 'createSubid == InvalidSubTransactionId' should be
enough. However, comment sections are rather misleading:

(1) portal.h:126 confirms my guess 'If the portal is held over from a
previous transaction, both subxids are InvalidSubTransactionId';

(2) while portalmem.c:797 states 'This is similar to the case of a
cursor from a previous transaction, but it could also be that the cursor
was auto-held in this transaction, so it wants to live on'.

I have tried, but could not build an example of valid query for the case
described in (2), and it is definitely absent in regression tests.

Am I missing something?

Added Peter to cc, since he is a commiter of 056a5a3, where autoHeld has
been introduced. Maybe it will be easier for him to recall the context.
Anyway, sorry for disturb if this question is actually trivial.

Regards

--
Alexey Kondratov

Postgres Professional https://www.postgrespro.com
Russian Postgres Company

Attachment Content-Type Size
portalmem.c-if-autoHeld-checks.diff text/x-patch 874 bytes

Browse pgsql-hackers by date

  From Date Subject
Next Message Dagfinn Ilmari Mannsåker 2019-02-26 14:02:39 Re: pgbench MAX_ARGS
Previous Message Simon Riggs 2019-02-26 13:15:55 Re: COPY FREEZE and setting PD_ALL_VISIBLE/visibility map bits