* 8-byte TOAST pointer - just (header:1, tag:1 and TID:6) * all other info moved from toast pointer to actual toast record(s), so heap rows are smaller and faster. * all extra fields are bytea with internal encoding (maybe will create full new types for these, or maybe just introspection functions are enough) the reasons for this are - PostgresSQL arrays add 20 byte overhead - bytea gives other freedoms in encoding for minimal space usage
No solution yet for va_toastrelid , but hope is - to use some kind of mapping and find one or two free bits somewhere (tid has one free), - or add a 12-byte toast pointer just for this. - or to make sure that CLUSTER and VACUUM FULL can be done without needing va_toastrelid. I assume it is there for clustering the TOAST which will be not possible separately from the main heap with direct toast tid pointers anyway.