Add support for toast_value_type=oid8 This commit adds the possibility to define TOAST tables with oid8 as their chunk_id, based on the reloption toast_value_type. All the external TOAST pointers still rely on varatt_external_oid and a single vartag. The values inserted in the oid8 TOAST tables are fed from the OID8 value generator, casted to OID for now, as we do not have a vartag_external able to store Oid8 values yet.
An upcoming commit will add support for a new vartag_external and its associated structures, with the code being able to use a different on-disk external TOAST pointer depending on the attribute type of chunk_id defined in TOAST relations. All the changes done here are mechanical, mostly around the TOAST code that needs to be able to do chunk_id lookups based on the two types now supported. Bump catalog version. Author: Michael Paquier <[email protected]> Reviewed-by: Greg Burd <[email protected]> Reviewed-by: Bharath Rupireddy <[email protected]> Reviewed-by: Yugo Nagata <[email protected]> Discussion: https://postgr.es/m/[email protected] Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/a625fc570c22e199471e1a2656e2c32b8dc0c0fd Modified Files -------------- contrib/amcheck/verify_heapam.c | 13 ++-- doc/src/sgml/ref/create_table.sgml | 5 +- doc/src/sgml/storage.sgml | 7 +- src/backend/access/common/reloptions.c | 3 +- src/backend/access/common/toast_internals.c | 88 +++++++++++++++++-------- src/backend/access/heap/heaptoast.c | 7 +- src/backend/catalog/toasting.c | 25 ++++++- src/backend/replication/logical/reorderbuffer.c | 9 ++- src/include/access/toast_internals.h | 4 ++ src/include/catalog/pg_opclass.dat | 3 +- src/include/utils/rel.h | 1 + src/test/regress/expected/reloptions.out | 15 ++++- src/test/regress/sql/reloptions.sql | 8 +++ 13 files changed, 142 insertions(+), 46 deletions(-)
