On Fri, Jun 28, 2013 at 9:23 AM, Robert Haas <[email protected]> wrote: > On Thu, Jun 27, 2013 at 12:56 PM, Andres Freund <[email protected]> > 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 ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
