pgsql: Fill tuple before HeapSatisfiesHOTAndKeyUpdate

Started by Alvaro Herreraover 13 years ago3 messagescomitters
Jump to latest
#1Alvaro Herrera
alvherre@2ndquadrant.com

Fill tuple before HeapSatisfiesHOTAndKeyUpdate

Failing to do this results in almost all updates to system catalogs
being non-HOT updates, because the OID column would differ (not having
been set for the new tuple), which is an indexed column.

While at it, make sure to set the tableoid early in both old and new
tuples as well. This isn't of much consequence, since that column is
seldom (never?) indexed.

Report and patch from Andres Freund.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/9ee00ef4c7de991b9371f614ce9c03ff436ce383

Modified Files
--------------
src/backend/access/heap/heapam.c | 39 +++++++++++++++++++++++--------------
1 files changed, 24 insertions(+), 15 deletions(-)

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#2Bruce Momjian
bruce@momjian.us
In reply to: Alvaro Herrera (#1)
Re: pgsql: Fill tuple before HeapSatisfiesHOTAndKeyUpdate

On Fri, Feb 1, 2013 at 01:50:02PM +0000, �lvaro Herrera wrote:

Fill tuple before HeapSatisfiesHOTAndKeyUpdate

Failing to do this results in almost all updates to system catalogs
being non-HOT updates, because the OID column would differ (not having
been set for the new tuple), which is an indexed column.

While at it, make sure to set the tableoid early in both old and new
tuples as well. This isn't of much consequence, since that column is
seldom (never?) indexed.

Report and patch from Andres Freund.

Was this a new bug in 9.3?

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ It's impossible for everything to be true. +

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#3Andres Freund
andres@anarazel.de
In reply to: Bruce Momjian (#2)
Re: pgsql: Fill tuple before HeapSatisfiesHOTAndKeyUpdate

On 2013-02-01 12:25:04 -0500, Bruce Momjian wrote:

On Fri, Feb 1, 2013 at 01:50:02PM +0000, Álvaro Herrera wrote:

Fill tuple before HeapSatisfiesHOTAndKeyUpdate

Failing to do this results in almost all updates to system catalogs
being non-HOT updates, because the OID column would differ (not having
been set for the new tuple), which is an indexed column.

While at it, make sure to set the tableoid early in both old and new
tuples as well. This isn't of much consequence, since that column is
seldom (never?) indexed.

Report and patch from Andres Freund.

Was this a new bug in 9.3?

Yes, it got introduced in the fklocks patch. The 'tableoid' part is
present before that, but I can't see a usecase in indexing that column,
so I think not backpatching it is ok.

Greetings,

Andres Freund

--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers