pgsql: Evade extra table_tuple_fetch_row_version() in ExecUpdate()/Exec

From: Alexander Korotkov <akorotkov(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Evade extra table_tuple_fetch_row_version() in ExecUpdate()/Exec
Date: 2023-03-22 21:27:25
Message-ID: E1pf5zQ-004tAj-Sp@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Evade extra table_tuple_fetch_row_version() in ExecUpdate()/ExecDelete()

When we lock tuple using table_tuple_lock() then we at the same time fetch
the locked tuple to the slot. In this case we can skip extra
table_tuple_fetch_row_version() thank to we've already fetched the 'old' tuple
and nobody can change it concurrently since it's locked.

Discussion: https://postgr.es/m/CAPpHfdua-YFw3XTprfutzGp28xXLigFtzNbuFY8yPhqeq6X5kg%40mail.gmail.com
Reviewed-by: Aleksander Alekseev, Pavel Borisov, Vignesh C, Mason Sharp
Reviewed-by: Andres Freund, Chris Travers

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/764da7710bf68eebb2c0facb2f871bc3c7a705b6

Modified Files
--------------
src/backend/executor/nodeModifyTable.c | 48 +++++++++++++++++++++++++---------
1 file changed, 35 insertions(+), 13 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Thomas Munro 2023-03-23 00:17:04 pgsql: Improve the naming of Parallel Hash Join phases.
Previous Message Tom Lane 2023-03-22 21:14:24 pgsql: Fix new test case to work on (some?) big-endian architectures.