From: | Serge Rielau <serge(at)rielau(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Vitaly Burovoy <vitaly(dot)burovoy(at)gmail(dot)com>, Simon Riggs <simon(at)2ndquadrant(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Jeff Janes <jeff(dot)janes(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Fast AT ADD COLUMN with DEFAULTs |
Date: | 2016-10-06 16:12:23 |
Message-ID: | B6A11E38-3A41-4219-AC02-5F4CC30BCC84@rielau.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> On Oct 6, 2016, at 9:01 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
> BTW, it also occurs to me that there are going to be good implementation
> reasons for restricting it to be a hard constant, not any sort of
> expression. We are likely to need to be able to insert the value in
> low-level code where general expression evaluation is impractical.
>
Yes, the padding must happen primarily in the getAttr() routines.
Clearly we do not want to evaluate an expression there.
But what speaks against evaluating the expression before we store it?
After all we seem to all agree that this only works if the expression computes to the same constant all the time.
If we do not want to store an “untyped” datum straight in pg_attribute as a BYTEA (my current approach) we could store the pretty printed version of the constant
and evaluate that when we build the tuple descriptor.
This happens when we load the relation into the relcache.
Anyway, I’m jumping ahead and it’s perhaps best to let the code speak for itself once I have the WIP patch ready so we have something concrete to discuss
Cheers
Serge
From | Date | Subject | |
---|---|---|---|
Next Message | Vitaly Burovoy | 2016-10-06 16:16:05 | Re: Fast AT ADD COLUMN with DEFAULTs |
Previous Message | Peter Geoghegan | 2016-10-06 16:03:25 | Re: memory leak in e94568ecc10 (pre-reading in external sort) |