Re: INSERT ... ON CONFLICT {UPDATE | IGNORE} - Mailing list pgsql-hackers

From Peter Geoghegan
Subject Re: INSERT ... ON CONFLICT {UPDATE | IGNORE}
Date
Msg-id CAM3SWZRmqTe=aaaK=C1LdHWoWrVndCx0+-2zYcn8-Ay1t_3+=g@mail.gmail.com
Whole thread Raw
In response to Re: INSERT ... ON CONFLICT {UPDATE | IGNORE}  (Peter Geoghegan <pg@heroku.com>)
Responses Re: INSERT ... ON CONFLICT {UPDATE | IGNORE}
List pgsql-hackers
On Fri, Sep 26, 2014 at 3:25 PM, Peter Geoghegan <pg@heroku.com> wrote:
> On Fri, Sep 26, 2014 at 3:11 PM, Alvaro Herrera
> <alvherre@2ndquadrant.com> wrote:
>> FWIW there are 28 callers of HeapTupleHeaderGetXmin.

> Don't forget about direct callers to HeapTupleHeaderGetRawXmin(),
> though. There are plenty of those in tqual.c.

Which reminds me: commit 37484ad2 added the opportunistic freezing
stuff. To quote the commit message:

"""
Instead of changing the tuple xmin to FrozenTransactionId, the combination
of HEAP_XMIN_COMMITTED and HEAP_XMIN_INVALID, which were previously never
set together, is now defined as HEAP_XMIN_FROZEN.  A variety of previous
proposals to freeze tuples opportunistically before vacuum_freeze_min_age
is reached have foundered on the objection that replacing xmin by
FrozenTransactionId might hinder debugging efforts when things in this
area go awry; this patch is intended to solve that problem by keeping
the XID around (but largely ignoring the value to which it is set).

"""

Why wouldn't the same objection (the objection that the earlier
opportunistic freezing ideas stalled on) apply to directly setting
tuple xmin to InvalidTransactionId?

You get the idea, though: Making promise tuples possible to release
early (before transaction end) by setting tuple xmin to
InvalidTransactionId is certainly hard to get right, and seems
dangerous.

-- 
Peter Geoghegan



pgsql-hackers by date:

Previous
From: David Johnston
Date:
Subject: Re: proposal: rounding up time value less than its unit.
Next
From: Gregory Smith
Date:
Subject: Re: TODO : Allow parallel cores to be used by vacuumdb [ WIP ]