Thread: pgsql: Use FullTransactionId for the transaction stack.

pgsql: Use FullTransactionId for the transaction stack.

From
Thomas Munro
Date:
Use FullTransactionId for the transaction stack.

Provide GetTopFullTransactionId() and GetCurrentFullTransactionId().
The intended users of these interfaces are access methods that use
xids for visibility checks but don't want to have to go back and
"freeze" existing references some time later before the 32 bit xid
counter wraps around.

Use a new struct to serialize the transaction state for parallel
query, because FullTransactionId doesn't fit into the previous
serialization scheme very well.

Author: Thomas Munro
Reviewed-by: Heikki Linnakangas
Discussion: https://postgr.es/m/CAA4eK1%2BMv%2Bmb0HFfWM9Srtc6MVe160WFurXV68iAFMcagRZ0dQ%40mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/ad308058cc8666c50b43179e64d6bb7aeb3ba169

Modified Files
--------------
src/backend/access/transam/varsup.c |  13 +-
src/backend/access/transam/xact.c   | 229 ++++++++++++++++++++++++------------
src/include/access/transam.h        |   3 +-
src/include/access/xact.h           |   5 +
src/tools/pgindent/typedefs.list    |   1 +
5 files changed, 170 insertions(+), 81 deletions(-)


Re: pgsql: Use FullTransactionId for the transaction stack.

From
Masahiko Sawada
Date:
On Thu, Mar 28, 2019 at 2:27 PM Thomas Munro <tmunro@postgresql.org> wrote:
>
> Use FullTransactionId for the transaction stack.
>
> Provide GetTopFullTransactionId() and GetCurrentFullTransactionId().
> The intended users of these interfaces are access methods that use
> xids for visibility checks but don't want to have to go back and
> "freeze" existing references some time later before the 32 bit xid
> counter wraps around.
>
> Use a new struct to serialize the transaction state for parallel
> query, because FullTransactionId doesn't fit into the previous
> serialization scheme very well.
>
> Author: Thomas Munro
> Reviewed-by: Heikki Linnakangas
> Discussion: https://postgr.es/m/CAA4eK1%2BMv%2Bmb0HFfWM9Srtc6MVe160WFurXV68iAFMcagRZ0dQ%40mail.gmail.com
>
> Branch
> ------
> master
>
> Details
> -------
> https://git.postgresql.org/pg/commitdiff/ad308058cc8666c50b43179e64d6bb7aeb3ba169
>
> Modified Files
> --------------
> src/backend/access/transam/varsup.c |  13 +-
> src/backend/access/transam/xact.c   | 229 ++++++++++++++++++++++++------------
> src/include/access/transam.h        |   3 +-
> src/include/access/xact.h           |   5 +
> src/tools/pgindent/typedefs.list    |   1 +
> 5 files changed, 170 insertions(+), 81 deletions(-)
>

 /*
+ * Serialized representation used to transmit transaction state to parallel
+ * workers though shared memory.

The second line of the above comment must be "workers *through* shared
memory"? Attached the patch.

Regards,

--
Masahiko Sawada
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center

Attachment

Re: pgsql: Use FullTransactionId for the transaction stack.

From
Thomas Munro
Date:
On Thu, Mar 28, 2019 at 11:55 PM Masahiko Sawada <sawada.mshk@gmail.com> wrote:
>  /*
> + * Serialized representation used to transmit transaction state to parallel
> + * workers though shared memory.
>
> The second line of the above comment must be "workers *through* shared
> memory"? Attached the patch.

Right, thanks.  Pushed.

-- 
Thomas Munro
https://enterprisedb.com