Re: preserving forensic information when we freeze

From: Stephen Frost <sfrost(at)snowman(dot)net>
To: Andres Freund <andres(at)2ndquadrant(dot)com>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Jim Nasby <jim(at)nasby(dot)net>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: preserving forensic information when we freeze
Date: 2013-12-27 14:15:34
Message-ID: 20131227141534.GV2543@tamriel.snowman.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

* Andres Freund (andres(at)2ndquadrant(dot)com) wrote:
> On 2013-12-26 15:25:41 -0800, Robert Haas wrote:
> > I dunno, I just have an uneasy feeling about it. I guess if
> > everyone's happy to add pg_infomask and pg_infomask2 as new system
> > columns, we could go that route. For my part, I think that functions
> > are a real extensibility mechanism and hidden system columns are a
> > crock I'd rather not propagate. But I just work here, and I'll give
> > way if the consensus is otherwise.
>
> I am happy enough with functions as well, so I certainly won't
> fundamentally block that path after a bit more discussion. My problems
> with the function approach may in parts even be fixable, making me
> prefer it:
> * It's slower. It refetches the tuple from s_b/disk, it builds a row
> type to return, which then needs to get accessed for the individual
> columns.
> * By nature of being a record returning function it's awkward to use if you
> want the individual columns because you essentially need to use
> LATERAL or you re-execute the function for each column.
> * It's awkward to use because you need to need to pass
> tableoid/ctid. That's quite some notational overhead, relying on
> system columns itself...
> * It's imo harder to spot differenced between versions in record types than
> columns.

For my 2c, I tend to agree w/ Andres on this one. I like the *idea* of
having a function instead, but, practically, it doesn't really work.
Perhaps if the 'function' approach was one-function-per-column and we
could remove the need for the function to take any arguments, but I'm
not sure we've really got something better than what we have now.

Hindsight being what it is, perhaps we should have stuffed the system
columns into a complex type instead of having individual columns, but
I'm not sure changing that now would be worth the backwards
compatibility break (yes, I know they're system columns, but I've seen
more than one case of using ctid to break ties in otherwise identical
rows..).

Thanks,

Stephen

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Joseph Kregloh 2013-12-27 14:50:44 Re: pg_upgrade & tablespaces
Previous Message Alexander Korotkov 2013-12-27 12:27:41 Happy new year from viva64