Tom Lane wrote:
> JanWieck@t-online.de (Jan Wieck) writes:
> > TOAST is now vacuum-safe. When needed, the toaster creates a
> > second heap tuple, containing only plain or compressed
> > values. This one is then returned by the heap access methods
> > to the caller, so indices will never contain external
> > references.
>
> That should be sufficient for insertions into existing indexes,
> but what about CREATE INDEX on a column that already contains
> toasted values? That works with fetched tuples, not ones formed
> during insert/update.
>
> I think a cleaner and more reliable short-term hack would be to twiddle
> index_formtuple() to detoast any externally-stored attributes. AFAIK,
> in current sources all paths for creating an index tuple go through that
> routine, and it has a tupdesc handy so it knows which attributes are of
> varlena type.
>
> This way you wouldn't need to hack up the tuptoaster itself.
You're right. Will do it that way.
> Also, this would work for functional indexes whereas the way you are
> doing it will not (a function could return a toasted Datum extracted
> from some other table, no?).
Don't know of a function that does it that way right now. But that doesn't mean no such exists - you're right
again. 2 donut's for U.
Jan
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== JanWieck@Yahoo.com #