Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> writes:
> Hmm, you're right. I think it can be made to work by storing the *end*
> offset of each chunk. To find the chunk containing offset X, search for
> the first chunk with end_offset > X.
Yeah, that seems like it would work, and it would disentangle us
altogether from needing a hard-wired chunk size. The only downside is
that it'd be a pain to convert in-place. However, if we are also going
to add identifying information to the toast chunks (like the owning
column's number or datatype), then you could tell whether a toast chunk
had been converted by checking t_natts. So in principle a toast table
could be converted a page at a time. If the converted data didn't fit
you could push one of the chunks out to some new page of the file.
On the whole I like this a lot better than Zdenek's original proposal
http://archives.postgresql.org/pgsql-hackers/2008-10/msg00556.php
which didn't seem to me to solve much of anything.
regards, tom lane