Re: [PATCH] Transaction traceability - txid_status(bigint)

Petr Jelinek <petr@2ndquadrant.com>

From: Petr Jelinek <petr@2ndquadrant.com>
To: Craig Ringer <craig@2ndquadrant.com>, Simon Riggs <simon@2ndquadrant.com>
Cc: PostgreSQL Hackers <pgsql-hackers@postgresql.org>, Andres Freund <andres@anarazel.de>, Jim Nasby <Jim.Nasby@bluetreble.com>, Robert Haas <robertmhaas@gmail.com>
Date: 2016-09-02T15:29:34Z
Lists: pgsql-hackers
On 02/09/16 15:46, Craig Ringer wrote:
> On 2 September 2016 at 21:01, Craig Ringer <craig@2ndquadrant.com> wrote:
>> On 2 September 2016 at 20:38, Craig Ringer <craig@2ndquadrant.com> wrote:
>>> On 2 Sep. 2016 8:30 pm, "Simon Riggs" <simon@2ndquadrant.com> wrote:
>>>>
>>>> On 2 September 2016 at 13:16, Craig Ringer <craig@2ndquadrant.com> wrote:
>>>>
>>>>> So I've moved it to xlog.c...
>>>>
>>>> I'm pretty sure it shouldn't live in xlog.c, but there may be some
>>>> good reason I can't see yet.
>>>
>>> Ugh. Yes. transam.c would be rather saner.
>>>
>>> Only for the helper to determine if an xid is recent though; txid_ status
>>> stays in adt/xact.c where it belongs along with txid_current() etc.
>>
>> Fixed, moved to transam.c.
>
> Missed that this causes an undefined reference to GetNextXidAndEpoch()
> which is in xlog.c. I knew there was a reason I put it there. So most
> recent patch is wrong, use the prior one.
>
> GetNextXidAndEpoch() needs to be in xlog.c because it uses XLogCtl's
> shmem copy of checkPoint.nextXidEpoch. So either transam.c needs to
> #include xlog.h (which seems a bit backwards) or
> TransactionIdInRecentPast() should go in xlog.c.
>
> I don't like either really. Opinion? I'm sure we'll want this
> functionality in other places as part of dealing with the problems
> discussed upthread with 'xid' exposed to users.
>

You could put it to txid.c where all the other txid stuff is in?

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


Commits

  1. Add a txid_status function.

  2. Track the oldest XID that can be safely looked up in CLOG.