On Fri, Jun 28, 2013 at 9:23 AM, Robert Haas <robertmh...@gmail.com> wrote: > On Thu, Jun 27, 2013 at 12:56 PM, Andres Freund <and...@2ndquadrant.com> > wrote: >> Please find attached the next version of the extensible toast >> support. There basically are two changes: >> >> * handle indirect toast tuples properly in heap_tuple_fetch_attr >> and related places >> * minor comment adjustments > > It looks to me like you need to pass true, rather than false, as the > first argument to TrapMacro: > > +#define VARTAG_SIZE(tag) \ > + ((tag) == VARTAG_INDIRECT ? sizeof(varatt_indirect) : \ > + (tag) == VARTAG_ONDISK ? sizeof(varatt_external) : \ > + TrapMacro(false, "unknown vartag")) > > Still looking at the rest of this.
Why does toast_insert_or_update() need to go through all the rigamarole in toast_datum_differs()? I would have thought that it could simply treat any external-indirect value as needing to be detoasted and retoasted, since the destination is the disk anyhow. Do you see external-indirect values getting used for anything other than logical replication? Is there code to do so anywhere? -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers