tableam: New callback relation_fetch_toast_slice. Instead of always calling heap_fetch_toast_slice during detoasting, invoke a table AM callback which, when the toast table is a heap table, will be heap_fetch_toast_slice.
This makes it possible for a table AM other than heap to be used as a TOAST table. It also completes the series of commits intended to improve the interaction of tableam with TOAST that began with commit 8b94dab06617ef80a0901ab103ebd8754427ef5a; detoast.c is now, hopefully, fully AM-independent. Patch by me, reviewed by Andres Freund and Peter Eisentraut. Discussion: http://postgr.es/m/CA+TgmoZv-=2iwm4jcw5zhjel18hf96+w1yjeyrngmydkffn...@mail.gmail.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/ce242ae154dde3217971c6f262705d80999f4e00 Modified Files -------------- src/backend/access/common/detoast.c | 199 +------------------------------ src/backend/access/heap/heapam_handler.c | 1 + src/backend/access/heap/heaptoast.c | 182 ++++++++++++++++++++++++++++ src/include/access/heaptoast.h | 10 ++ src/include/access/tableam.h | 46 +++++++ 5 files changed, 245 insertions(+), 193 deletions(-)