From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Amit Kapila <amit(dot)kapila(at)huawei(dot)com> |
Cc: | "'Andres Freund'" <andres(at)2ndquadrant(dot)com>, "'Craig Ringer'" <craig(at)2ndquadrant(dot)com>, "'Jameison Martin'" <jameisonb(at)yahoo(dot)com>, "'Noah Misch'" <noah(at)leadboat(dot)com>, "'Simon Riggs'" <simon(at)2ndquadrant(dot)com>, "'Kevin Grittner'" <kgrittn(at)mail(dot)com>, robertmhaas(at)gmail(dot)com, josh(at)agliodbs(dot)com, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: patch submission: truncate trailing nulls from heap rows to reduce the size of the null bitmap [Review] |
Date: | 2013-06-24 14:49:53 |
Message-ID: | 13816.1372085393@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Amit Kapila <amit(dot)kapila(at)huawei(dot)com> writes:
> I will summarize the results, and if most of us feel that they are not good
> enough, then we can return this patch.
Aside from the question of whether there's really any generally-useful
performance improvement from this patch, it strikes me that this change
forecloses other games that we might want to play with interpretation of
the value of a tuple's natts.
In particular, when I was visiting Salesforce last week, the point came
up that they'd really like ALTER TABLE ADD COLUMN to be "free" even when
the column had a non-null DEFAULT. It's not too difficult to imagine
how we might support that, at least when the default expression is a
constant: decree that if the requested attribute number is beyond natts,
look aside at the tuple descriptor to see if the column is marked as
having a magic default value, and if so, substitute that rather than
just returning NULL. (This has to be a "magic" value separate from
the current default, else a subsequent DROP or SET DEFAULT would do
the wrong thing.)
However, this idea conflicts with an optimization that supposes it can
reduce natts to suppress null columns: if the column was actually stored
as null, you'd lose that information, and would incorrectly return the
magic default on subsequent reads.
I think it might be possible to make both ideas play together, by
not reducing natts further than the last column with a magic default.
However, that means extra complexity in heap_form_tuple, which would
invalidate the performance measurements done in support of this patch.
In short, there's no free lunch ...
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2013-06-24 14:59:00 | Re: Re: FILTER for aggregates [was Re: Department of Redundancy Department: makeNode(FuncCall) division] |
Previous Message | Kevin Grittner | 2013-06-24 14:48:13 | Re: changeset generation v5-01 - Patches & git tree |