From c5806f2165b57434290dd345ba301e4179634c23 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Mon, 7 Sep 2026 08:45:23 +0900 Subject: [PATCH] Rename varatt_external to varatt_external_oid This impacts a few more definitions, related to this structure, as of: - VARTAG_ONDISK -> VARTAG_ONDISK_OID - TOAST_POINTER_SIZE -> TOAST_OID_POINTER_SIZE - TOAST_MAX_CHUNK_SIZE -> TOAST_OID_MAX_CHUNK_SIZE - Macros in varatt.h for varatt_external_oid. This rename is part of a conversation to add support for more types of external TOAST pointers, not only OID. One of them is to extend the pointers to use an OID8 variant. The control file field for the max chunk size is left out, for now. Author: Michael Paquier Reviewed-by: Chao Li Reviewed-by: Yugo Nagata Reviewed-by: Bharath Rupireddy Discussion: https://postgr.es/m/CALj2ACVnO6jjs5aRx3dSOBy9LV7=iakPBR1eOvoeB8rL8Q47zg@mail.gmail.com Discussion: https://postgr.es/m/apoD1Ulet2PtDrRV@paquier.xyz --- contrib/amcheck/verify_heapam.c | 14 ++++---- doc/src/sgml/storage.sgml | 2 +- src/backend/access/common/detoast.c | 30 ++++++++-------- src/backend/access/common/toast_compression.c | 6 ++-- src/backend/access/common/toast_internals.c | 16 ++++----- src/backend/access/heap/heaptoast.c | 2 +- src/backend/access/table/toast_helper.c | 4 +-- src/backend/access/transam/xlog.c | 8 ++--- .../replication/logical/reorderbuffer.c | 6 ++-- src/backend/utils/adt/varlena.c | 2 +- src/bin/pg_resetwal/pg_resetwal.c | 2 +- src/include/access/detoast.h | 4 +-- src/include/access/heaptoast.h | 6 ++-- src/include/varatt.h | 36 ++++++++++--------- src/tools/pgindent/typedefs.list | 2 +- 15 files changed, 72 insertions(+), 68 deletions(-) diff --git a/contrib/amcheck/verify_heapam.c b/contrib/amcheck/verify_heapam.c index 6757baee240..bbaaec89f8a 100644 --- a/contrib/amcheck/verify_heapam.c +++ b/contrib/amcheck/verify_heapam.c @@ -75,7 +75,7 @@ typedef enum SkipPages */ typedef struct ToastedAttribute { - varatt_external toast_pointer; + varatt_external_oid toast_pointer; BlockNumber blkno; /* block in main table */ OffsetNumber offnum; /* offset in main table */ AttrNumber attnum; /* attribute in main table */ @@ -1565,7 +1565,7 @@ check_toast_tuple(HeapTuple toasttup, HeapCheckContext *ctx, int32 expected_size; int32 max_chunk_size; - max_chunk_size = TOAST_MAX_CHUNK_SIZE; + max_chunk_size = TOAST_OID_MAX_CHUNK_SIZE; last_chunk_seq = (extsize - 1) / max_chunk_size; /* Sanity-check the sequence number. */ @@ -1670,7 +1670,7 @@ check_tuple_attribute(HeapCheckContext *ctx) char *tp; /* pointer to the tuple data */ uint16 infomask; CompactAttribute *thisatt; - varatt_external toast_pointer; + varatt_external_oid toast_pointer; infomask = ctx->tuphdr->t_infomask; thisatt = TupleDescCompactAttr(RelationGetDescr(ctx->rel), ctx->attnum); @@ -1729,7 +1729,7 @@ check_tuple_attribute(HeapCheckContext *ctx) { uint8 va_tag = VARTAG_EXTERNAL(tp + ctx->offset); - if (va_tag != VARTAG_ONDISK) + if (va_tag != VARTAG_ONDISK_OID) { report_corruption(ctx, psprintf("toasted attribute has unexpected TOAST tag %u", @@ -1786,7 +1786,7 @@ check_tuple_attribute(HeapCheckContext *ctx) toast_pointer.va_rawsize, VARLENA_SIZE_LIMIT)); - if (VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer)) + if (VARATT_EXTERNAL_OID_IS_COMPRESSED(toast_pointer)) { ToastCompressionId cmid; bool valid = false; @@ -1872,9 +1872,9 @@ check_toasted_attribute(HeapCheckContext *ctx, ToastedAttribute *ta) uint32 extsize; int32 expected_chunk_seq = 0; int32 last_chunk_seq; - int32 max_chunk_size = TOAST_MAX_CHUNK_SIZE; + int32 max_chunk_size = TOAST_OID_MAX_CHUNK_SIZE; - extsize = VARATT_EXTERNAL_GET_EXTSIZE(ta->toast_pointer); + extsize = VARATT_EXTERNAL_OID_GET_EXTSIZE(ta->toast_pointer); last_chunk_seq = (extsize - 1) / max_chunk_size; /* diff --git a/doc/src/sgml/storage.sgml b/doc/src/sgml/storage.sgml index 19924b98d71..90aae3defcb 100644 --- a/doc/src/sgml/storage.sgml +++ b/doc/src/sgml/storage.sgml @@ -417,7 +417,7 @@ described in more detail below. Out-of-line values are divided (after compression if used) into chunks of at -most TOAST_MAX_CHUNK_SIZE bytes (by default this value is chosen +most TOAST_OID_MAX_CHUNK_SIZE bytes (by default this value is chosen so that four chunk rows will fit on a page, making it about 2000 bytes). Each chunk is stored as a separate row in the TOAST table belonging to the owning table. Every diff --git a/src/backend/access/common/detoast.c b/src/backend/access/common/detoast.c index a6c1f3a734b..a50aea7b6b1 100644 --- a/src/backend/access/common/detoast.c +++ b/src/backend/access/common/detoast.c @@ -225,12 +225,12 @@ detoast_attr_slice(varlena *attr, if (VARATT_IS_EXTERNAL_ONDISK(attr)) { - varatt_external toast_pointer; + varatt_external_oid toast_pointer; VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); /* fast path for non-compressed external datums */ - if (!VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer)) + if (!VARATT_EXTERNAL_OID_IS_COMPRESSED(toast_pointer)) return toast_fetch_datum_slice(attr, sliceoffset, slicelength); /* @@ -240,7 +240,7 @@ detoast_attr_slice(varlena *attr, */ if (slicelimit >= 0) { - int32 max_size = VARATT_EXTERNAL_GET_EXTSIZE(toast_pointer); + int32 max_size = VARATT_EXTERNAL_OID_GET_EXTSIZE(toast_pointer); /* * Determine maximum amount of compressed data needed for a prefix @@ -251,7 +251,7 @@ detoast_attr_slice(varlena *attr, * determine how much compressed data we need to be sure of being * able to decompress the required slice. */ - if (VARATT_EXTERNAL_GET_COMPRESS_METHOD(toast_pointer) == + if (VARATT_EXTERNAL_OID_GET_COMPRESS_METHOD(toast_pointer) == TOAST_PGLZ_COMPRESSION_ID) max_size = pglz_maximum_compressed_size(slicelimit, max_size); @@ -344,7 +344,7 @@ toast_fetch_datum(varlena *attr) { Relation toastrel; varlena *result; - varatt_external toast_pointer; + varatt_external_oid toast_pointer; int32 attrsize; if (!VARATT_IS_EXTERNAL_ONDISK(attr)) @@ -353,11 +353,11 @@ toast_fetch_datum(varlena *attr) /* Must copy to access aligned fields */ VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); - attrsize = VARATT_EXTERNAL_GET_EXTSIZE(toast_pointer); + attrsize = VARATT_EXTERNAL_OID_GET_EXTSIZE(toast_pointer); result = (varlena *) palloc(attrsize + VARHDRSZ); - if (VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer)) + if (VARATT_EXTERNAL_OID_IS_COMPRESSED(toast_pointer)) SET_VARSIZE_COMPRESSED(result, attrsize + VARHDRSZ); else SET_VARSIZE(result, attrsize + VARHDRSZ); @@ -398,7 +398,7 @@ toast_fetch_datum_slice(varlena *attr, int32 sliceoffset, { Relation toastrel; varlena *result; - varatt_external toast_pointer; + varatt_external_oid toast_pointer; int32 attrsize; if (!VARATT_IS_EXTERNAL_ONDISK(attr)) @@ -412,9 +412,9 @@ toast_fetch_datum_slice(varlena *attr, int32 sliceoffset, * prefix -- this isn't lo_* we can't return a compressed datum which is * meaningful to toast later. */ - Assert(!VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer) || 0 == sliceoffset); + Assert(!VARATT_EXTERNAL_OID_IS_COMPRESSED(toast_pointer) || 0 == sliceoffset); - attrsize = VARATT_EXTERNAL_GET_EXTSIZE(toast_pointer); + attrsize = VARATT_EXTERNAL_OID_GET_EXTSIZE(toast_pointer); if (sliceoffset >= attrsize) { @@ -427,7 +427,7 @@ toast_fetch_datum_slice(varlena *attr, int32 sliceoffset, * space required by va_tcinfo, which is stored at the beginning as an * int32 value. */ - if (VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer) && slicelength > 0) + if (VARATT_EXTERNAL_OID_IS_COMPRESSED(toast_pointer) && slicelength > 0) slicelength = slicelength + sizeof(int32); /* @@ -440,7 +440,7 @@ toast_fetch_datum_slice(varlena *attr, int32 sliceoffset, result = (varlena *) palloc(slicelength + VARHDRSZ); - if (VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer)) + if (VARATT_EXTERNAL_OID_IS_COMPRESSED(toast_pointer)) SET_VARSIZE_COMPRESSED(result, slicelength + VARHDRSZ); else SET_VARSIZE(result, slicelength + VARHDRSZ); @@ -550,7 +550,7 @@ toast_raw_datum_size(Datum value) if (VARATT_IS_EXTERNAL_ONDISK(attr)) { /* va_rawsize is the size of the original datum -- including header */ - varatt_external toast_pointer; + varatt_external_oid toast_pointer; VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); result = toast_pointer.va_rawsize; @@ -610,10 +610,10 @@ toast_datum_size(Datum value) * compressed or not. We do not count the size of the toast pointer * ... should we? */ - varatt_external toast_pointer; + varatt_external_oid toast_pointer; VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); - result = VARATT_EXTERNAL_GET_EXTSIZE(toast_pointer); + result = VARATT_EXTERNAL_OID_GET_EXTSIZE(toast_pointer); } else if (VARATT_IS_EXTERNAL_INDIRECT(attr)) { diff --git a/src/backend/access/common/toast_compression.c b/src/backend/access/common/toast_compression.c index 5a5d579494a..3b1bd651926 100644 --- a/src/backend/access/common/toast_compression.c +++ b/src/backend/access/common/toast_compression.c @@ -262,12 +262,12 @@ toast_get_compression_id(varlena *attr) */ if (VARATT_IS_EXTERNAL_ONDISK(attr)) { - varatt_external toast_pointer; + varatt_external_oid toast_pointer; VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr); - if (VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer)) - cmid = VARATT_EXTERNAL_GET_COMPRESS_METHOD(toast_pointer); + if (VARATT_EXTERNAL_OID_IS_COMPRESSED(toast_pointer)) + cmid = VARATT_EXTERNAL_OID_GET_COMPRESS_METHOD(toast_pointer); } else if (VARATT_IS_COMPRESSED(attr)) cmid = VARDATA_COMPRESSED_GET_COMPRESS_METHOD(attr); diff --git a/src/backend/access/common/toast_internals.c b/src/backend/access/common/toast_internals.c index 77d42e7ed65..0f234661bfa 100644 --- a/src/backend/access/common/toast_internals.c +++ b/src/backend/access/common/toast_internals.c @@ -124,7 +124,7 @@ toast_save_datum(Relation rel, Datum value, TupleDesc toasttupDesc; CommandId mycid = GetCurrentCommandId(true); varlena *result; - varatt_external toast_pointer; + varatt_external_oid toast_pointer; int32 chunk_seq = 0; char *data_p; int32 data_todo; @@ -176,7 +176,7 @@ toast_save_datum(Relation rel, Datum value, VARATT_EXTERNAL_SET_SIZE_AND_COMPRESS_METHOD(toast_pointer, data_todo, VARDATA_COMPRESSED_GET_COMPRESS_METHOD(dval)); /* Assert that the numbers look like it's compressed */ - Assert(VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer)); + Assert(VARATT_EXTERNAL_OID_IS_COMPRESSED(toast_pointer)); } else { @@ -225,7 +225,7 @@ toast_save_datum(Relation rel, Datum value, toast_pointer.va_valueid = InvalidOid; if (oldexternal != NULL) { - varatt_external old_toast_pointer; + varatt_external_oid old_toast_pointer; Assert(VARATT_IS_EXTERNAL_ONDISK(oldexternal)); /* Must copy to access aligned fields */ @@ -289,7 +289,7 @@ toast_save_datum(Relation rel, Datum value, { alignas(int32) varlena hdr; /* this is to make the union big enough for a chunk: */ - char data[TOAST_MAX_CHUNK_SIZE + VARHDRSZ]; + char data[TOAST_OID_MAX_CHUNK_SIZE + VARHDRSZ]; } chunk_data; int32 chunk_size; @@ -298,7 +298,7 @@ toast_save_datum(Relation rel, Datum value, /* * Calculate the size of this chunk */ - chunk_size = Min(TOAST_MAX_CHUNK_SIZE, data_todo); + chunk_size = Min(TOAST_OID_MAX_CHUNK_SIZE, data_todo); /* * Build a tuple and store it @@ -359,8 +359,8 @@ toast_save_datum(Relation rel, Datum value, /* * Create the TOAST pointer value that we'll return */ - result = (varlena *) palloc(TOAST_POINTER_SIZE); - SET_VARTAG_EXTERNAL(result, VARTAG_ONDISK); + result = (varlena *) palloc(TOAST_OID_POINTER_SIZE); + SET_VARTAG_EXTERNAL(result, VARTAG_ONDISK_OID); memcpy(VARDATA_EXTERNAL(result), &toast_pointer, sizeof(toast_pointer)); return PointerGetDatum(result); @@ -376,7 +376,7 @@ void toast_delete_datum(Relation rel, Datum value, bool is_speculative) { varlena *attr = (varlena *) DatumGetPointer(value); - varatt_external toast_pointer; + varatt_external_oid toast_pointer; Relation toastrel; Relation *toastidxs; ScanKeyData toastkey; diff --git a/src/backend/access/heap/heaptoast.c b/src/backend/access/heap/heaptoast.c index bc4cdd8a3d8..3b7c658a90e 100644 --- a/src/backend/access/heap/heaptoast.c +++ b/src/backend/access/heap/heaptoast.c @@ -647,7 +647,7 @@ heap_fetch_toast_slice(Relation toastrel, Oid valueid, int32 attrsize, &toastidxs, &num_indexes); - max_chunk_size = TOAST_MAX_CHUNK_SIZE; + max_chunk_size = TOAST_OID_MAX_CHUNK_SIZE; totalchunks = ((attrsize - 1) / max_chunk_size) + 1; startchunk = sliceoffset / max_chunk_size; diff --git a/src/backend/access/table/toast_helper.c b/src/backend/access/table/toast_helper.c index 2f2022d9951..6f2d691cc68 100644 --- a/src/backend/access/table/toast_helper.c +++ b/src/backend/access/table/toast_helper.c @@ -171,7 +171,7 @@ toast_tuple_init(ToastTupleContext *ttc) * The column must have attstorage EXTERNAL or EXTENDED if check_main is * false, and must have attstorage MAIN if check_main is true. * - * The column must have a minimum size of MAXALIGN(TOAST_POINTER_SIZE); + * The column must have a minimum size of MAXALIGN(TOAST_OID_POINTER_SIZE); * if not, no benefit is to be expected by compressing it. * * The return value is the index of the biggest suitable column, or @@ -184,7 +184,7 @@ toast_tuple_find_biggest_attribute(ToastTupleContext *ttc, TupleDesc tupleDesc = ttc->ttc_rel->rd_att; int numAttrs = tupleDesc->natts; int biggest_attno = -1; - int32 biggest_size = MAXALIGN(TOAST_POINTER_SIZE); + int32 biggest_size = MAXALIGN(TOAST_OID_POINTER_SIZE); int32 skip_colflags = TOASTCOL_IGNORE; int i; diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 2e3f177100b..3203f2fd4ee 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -4324,7 +4324,7 @@ WriteControlFile(void) ControlFile->nameDataLen = NAMEDATALEN; ControlFile->indexMaxKeys = INDEX_MAX_KEYS; - ControlFile->toast_max_chunk_size = TOAST_MAX_CHUNK_SIZE; + ControlFile->toast_max_chunk_size = TOAST_OID_MAX_CHUNK_SIZE; ControlFile->loblksize = LOBLKSIZE; ControlFile->float8ByVal = true; /* vestigial */ @@ -4577,15 +4577,15 @@ ReadControlFile(void) "INDEX_MAX_KEYS", ControlFile->indexMaxKeys, "INDEX_MAX_KEYS", INDEX_MAX_KEYS), errhint("It looks like you need to recompile or initdb."))); - if (ControlFile->toast_max_chunk_size != TOAST_MAX_CHUNK_SIZE) + if (ControlFile->toast_max_chunk_size != TOAST_OID_MAX_CHUNK_SIZE) ereport(FATAL, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("database files are incompatible with server"), /* translator: %s is a variable name and %d is its value */ errdetail("The database cluster was initialized with %s %d," " but the server was compiled with %s %d.", - "TOAST_MAX_CHUNK_SIZE", ControlFile->toast_max_chunk_size, - "TOAST_MAX_CHUNK_SIZE", (int) TOAST_MAX_CHUNK_SIZE), + "TOAST_OID_MAX_CHUNK_SIZE", ControlFile->toast_max_chunk_size, + "TOAST_OID_MAX_CHUNK_SIZE", (int) TOAST_OID_MAX_CHUNK_SIZE), errhint("It looks like you need to recompile or initdb."))); if (ControlFile->loblksize != LOBLKSIZE) ereport(FATAL, diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c index 900864afc6d..457d544eec9 100644 --- a/src/backend/replication/logical/reorderbuffer.c +++ b/src/backend/replication/logical/reorderbuffer.c @@ -5168,7 +5168,7 @@ ReorderBufferToastReplace(ReorderBuffer *rb, ReorderBufferTXN *txn, varlena *varlena_pointer; /* va_rawsize is the size of the original datum -- including header */ - varatt_external toast_pointer; + varatt_external_oid toast_pointer; varatt_indirect redirect_pointer; varlena *new_datum = NULL; varlena *reconstructed; @@ -5236,10 +5236,10 @@ ReorderBufferToastReplace(ReorderBuffer *rb, ReorderBufferTXN *txn, VARSIZE(chunk) - VARHDRSZ); data_done += VARSIZE(chunk) - VARHDRSZ; } - Assert(data_done == VARATT_EXTERNAL_GET_EXTSIZE(toast_pointer)); + Assert(data_done == VARATT_EXTERNAL_OID_GET_EXTSIZE(toast_pointer)); /* make sure its marked as compressed or not */ - if (VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer)) + if (VARATT_EXTERNAL_OID_IS_COMPRESSED(toast_pointer)) SET_VARSIZE_COMPRESSED(reconstructed, data_done + VARHDRSZ); else SET_VARSIZE(reconstructed, data_done + VARHDRSZ); diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index c5fd78f891e..e5632d93068 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -4261,7 +4261,7 @@ pg_column_toast_chunk_id(PG_FUNCTION_ARGS) { int typlen; varlena *attr; - varatt_external toast_pointer; + varatt_external_oid toast_pointer; /* On first call, get the input type's typlen, and save at *fn_extra */ if (fcinfo->flinfo->fn_extra == NULL) diff --git a/src/bin/pg_resetwal/pg_resetwal.c b/src/bin/pg_resetwal/pg_resetwal.c index 1542a56ca4b..79f3085d769 100644 --- a/src/bin/pg_resetwal/pg_resetwal.c +++ b/src/bin/pg_resetwal/pg_resetwal.c @@ -737,7 +737,7 @@ GuessControlValues(void) ControlFile.xlog_seg_size = DEFAULT_XLOG_SEG_SIZE; ControlFile.nameDataLen = NAMEDATALEN; ControlFile.indexMaxKeys = INDEX_MAX_KEYS; - ControlFile.toast_max_chunk_size = TOAST_MAX_CHUNK_SIZE; + ControlFile.toast_max_chunk_size = TOAST_OID_MAX_CHUNK_SIZE; ControlFile.loblksize = LOBLKSIZE; ControlFile.float8ByVal = true; /* vestigial */ diff --git a/src/include/access/detoast.h b/src/include/access/detoast.h index fbd98181a3a..2b1428b1e81 100644 --- a/src/include/access/detoast.h +++ b/src/include/access/detoast.h @@ -14,7 +14,7 @@ /* * Macro to fetch the possibly-unaligned contents of an EXTERNAL datum - * into a local "varatt_external" toast pointer. This should be + * into a local "varatt_external_oid" toast pointer. This should be * just a memcpy, but some versions of gcc seem to produce broken code * that assumes the datum contents are aligned. Introducing an explicit * intermediate "varattrib_1b_e *" variable seems to fix it. @@ -28,7 +28,7 @@ do { \ } while (0) /* Size of an EXTERNAL datum that contains a standard TOAST pointer */ -#define TOAST_POINTER_SIZE (VARHDRSZ_EXTERNAL + sizeof(varatt_external)) +#define TOAST_OID_POINTER_SIZE (VARHDRSZ_EXTERNAL + sizeof(varatt_external_oid)) /* Size of an EXTERNAL datum that contains an indirection pointer */ #define INDIRECT_POINTER_SIZE (VARHDRSZ_EXTERNAL + sizeof(varatt_indirect)) diff --git a/src/include/access/heaptoast.h b/src/include/access/heaptoast.h index 631cb1836b9..b2346fd75bd 100644 --- a/src/include/access/heaptoast.h +++ b/src/include/access/heaptoast.h @@ -69,19 +69,19 @@ /* * When we store an oversize datum externally, we divide it into chunks - * containing at most TOAST_MAX_CHUNK_SIZE data bytes. This number *must* + * containing at most TOAST_OID_MAX_CHUNK_SIZE data bytes. This number *must* * be small enough that the completed toast-table tuple (including the * ID and sequence fields and all overhead) will fit on a page. * The coding here sets the size on the theory that we want to fit * EXTERN_TUPLES_PER_PAGE tuples of maximum size onto a page. * - * NB: Changing TOAST_MAX_CHUNK_SIZE requires an initdb. + * NB: Changing TOAST_OID_MAX_CHUNK_SIZE requires an initdb. */ #define EXTERN_TUPLES_PER_PAGE 4 /* tweak only this */ #define EXTERN_TUPLE_MAX_SIZE MaximumBytesPerTuple(EXTERN_TUPLES_PER_PAGE) -#define TOAST_MAX_CHUNK_SIZE \ +#define TOAST_OID_MAX_CHUNK_SIZE \ (EXTERN_TUPLE_MAX_SIZE - \ MAXALIGN(SizeofHeapTupleHeader) - \ sizeof(Oid) - \ diff --git a/src/include/varatt.h b/src/include/varatt.h index 000bdf33b92..33979bbaaad 100644 --- a/src/include/varatt.h +++ b/src/include/varatt.h @@ -16,7 +16,7 @@ #define VARATT_H /* - * varatt_external is a traditional "TOAST pointer", that is, the + * varatt_external_oid is a traditional "TOAST pointer", that is, the * information needed to fetch a Datum stored out-of-line in a TOAST table. * The data is compressed if and only if the external size stored in * va_extinfo is less than va_rawsize - VARHDRSZ. @@ -29,14 +29,14 @@ * you can look at these fields! (The reason we use memcmp is to avoid * having to do that just to detect equality of two TOAST pointers...) */ -typedef struct varatt_external +typedef struct varatt_external_oid { int32 va_rawsize; /* Original data size (includes header) */ uint32 va_extinfo; /* External saved size (without header) and * compression method */ Oid va_valueid; /* Unique ID of value within TOAST table */ Oid va_toastrelid; /* RelID of TOAST table containing it */ -} varatt_external; +} varatt_external_oid; /* * These macros define the "saved size" portion of va_extinfo. Its remaining @@ -51,7 +51,7 @@ typedef struct varatt_external * The creator of such a Datum is entirely responsible that the referenced * storage survives for as long as referencing pointer Datums can exist. * - * Note that just as for varatt_external, this struct is stored + * Note that just as for varatt_external_oid, this struct is stored * unaligned within any containing tuple. */ typedef struct varatt_indirect @@ -66,7 +66,7 @@ typedef struct varatt_indirect * storage. APIs for this, in particular the definition of struct * ExpandedObjectHeader, are in src/include/utils/expandeddatum.h. * - * Note that just as for varatt_external, this struct is stored + * Note that just as for varatt_external_oid, this struct is stored * unaligned within any containing tuple. */ typedef struct ExpandedObjectHeader ExpandedObjectHeader; @@ -78,15 +78,16 @@ typedef struct varatt_expanded /* * Type tag for the various sorts of "TOAST pointer" datums. The peculiar - * value for VARTAG_ONDISK comes from a requirement for on-disk compatibility - * with a previous notion that the tag field was the pointer datum's length. + * value for VARTAG_ONDISK_OID comes from a requirement for on-disk + * compatibility with a previous notion that the tag field was the pointer + * datum's length. */ typedef enum vartag_external { VARTAG_INDIRECT = 1, VARTAG_EXPANDED_RO = 2, VARTAG_EXPANDED_RW = 3, - VARTAG_ONDISK = 18 + VARTAG_ONDISK_OID = 18 } vartag_external; /* Is a TOAST pointer either type of expanded-object pointer? */ @@ -105,8 +106,8 @@ VARTAG_SIZE(vartag_external tag) return sizeof(varatt_indirect); else if (VARTAG_IS_EXPANDED(tag)) return sizeof(varatt_expanded); - else if (tag == VARTAG_ONDISK) - return sizeof(varatt_external); + else if (tag == VARTAG_ONDISK_OID) + return sizeof(varatt_external_oid); else { Assert(false); @@ -360,7 +361,7 @@ VARATT_IS_EXTERNAL(const void *PTR) static inline bool VARATT_IS_EXTERNAL_ONDISK(const void *PTR) { - return VARATT_IS_EXTERNAL(PTR) && VARTAG_EXTERNAL(PTR) == VARTAG_ONDISK; + return VARATT_IS_EXTERNAL(PTR) && VARTAG_EXTERNAL(PTR) == VARTAG_ONDISK_OID; } /* Is varlena datum an indirect pointer? */ @@ -502,15 +503,18 @@ VARDATA_COMPRESSED_GET_COMPRESS_METHOD(const void *PTR) return ((const varattrib_4b *) PTR)->va_compressed.va_tcinfo >> VARLENA_EXTSIZE_BITS; } -/* Same for external Datums; but note argument is a varatt_external */ +/* + * Same for external Datums; but note argument is a struct + * varatt_external_oid. + */ static inline Size -VARATT_EXTERNAL_GET_EXTSIZE(varatt_external toast_pointer) +VARATT_EXTERNAL_OID_GET_EXTSIZE(varatt_external_oid toast_pointer) { return toast_pointer.va_extinfo & VARLENA_EXTSIZE_MASK; } static inline uint32 -VARATT_EXTERNAL_GET_COMPRESS_METHOD(varatt_external toast_pointer) +VARATT_EXTERNAL_OID_GET_COMPRESS_METHOD(varatt_external_oid toast_pointer) { return toast_pointer.va_extinfo >> VARLENA_EXTSIZE_BITS; } @@ -533,9 +537,9 @@ VARATT_EXTERNAL_GET_COMPRESS_METHOD(varatt_external toast_pointer) * actually saves space, so we expect either equality or less-than. */ static inline bool -VARATT_EXTERNAL_IS_COMPRESSED(varatt_external toast_pointer) +VARATT_EXTERNAL_OID_IS_COMPRESSED(varatt_external_oid toast_pointer) { - return VARATT_EXTERNAL_GET_EXTSIZE(toast_pointer) < + return VARATT_EXTERNAL_OID_GET_EXTSIZE(toast_pointer) < (Size) (toast_pointer.va_rawsize - VARHDRSZ); } diff --git a/src/tools/pgindent/typedefs.list b/src/tools/pgindent/typedefs.list index 58c4749e7e4..bc330b73409 100644 --- a/src/tools/pgindent/typedefs.list +++ b/src/tools/pgindent/typedefs.list @@ -4435,7 +4435,7 @@ va_list vacuumingOptions validate_string_relopt varatt_expanded -varatt_external +varatt_external_oid varatt_indirect varattrib_1b varattrib_1b_e