From: Michael Paquier <michael@paquier.xyz>
To: Chao Li <li.evan.chao@gmail.com>
Cc: Postgres hackers <pgsql-hackers@lists.postgresql.org>
Cc: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Andres Freund <andres@anarazel.de>
Subject: Re: Rename of varatt_external to varatt_external_oid
Date: Fri, 4 Sep 2026 10:20:18 +0900
Message-ID: <apoc0WqBlSeBHIMg@paquier.xyz> (raw)
In-Reply-To: <1B63EFC9-93D5-4197-8D12-181D8F55ACA5@gmail.com>
References: <apoD1Ulet2PtDrRV@paquier.xyz>
<1B63EFC9-93D5-4197-8D12-181D8F55ACA5@gmail.com>
On Fri, Sep 04, 2026 at 08:43:37AM +0800, Chao Li wrote:
> I tried to review this patch, but “git am” failed on the current
> HEAD (2b3d11aaed8). Would you please rebase?
Oops. Sorry for the incorrect rebase blurp caused by 2b3d11aaed89.
The attached should work better.
--
Michael
Attachments:v2-0001-Rename-varatt_external-to-varatt_external_oid.patch (text/plain, 24.8K) download
From f77b51e169c472d6f3c2f1eca54f50b043faa6e1 Mon Sep 17 00:00:00 2001
From: Michael Paquier <michael@paquier.xyz>
Date: Fri, 4 Sep 2026 08:29:08 +0900
Subject: [PATCH v2] 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 in preparation of a follow-up patch to add support for
8-byte TOAST values, where we need to make the distinction between the
OID and OID8 variants.
Author: Michael Paquier <michael@paquier.xyz>
Reviewed-by: Yugo Nagata <nagata@sraoss.co.jp>
Reviewed-by: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
Discussion: https://postgr.es/m/CALj2ACVnO6jjs5aRx3dSOBy9LV7=iakPBR1eOvoeB8rL8Q47zg@mail.gmail.com
---
src/include/access/detoast.h | 4 +--
src/include/access/heaptoast.h | 6 ++--
src/include/varatt.h | 36 ++++++++++---------
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 +-
doc/src/sgml/storage.sgml | 2 +-
contrib/amcheck/verify_heapam.c | 14 ++++----
src/tools/pgindent/typedefs.list | 2 +-
15 files changed, 72 insertions(+), 68 deletions(-)
diff --git a/src/include/access/detoast.h b/src/include/access/detoast.hindex fbd98181a3a1..2b1428b1e81c 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.hindex 631cb1836b96..b2346fd75bd4 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.hindex 000bdf33b923..33979bbaaad1 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/backend/access/common/detoast.c b/src/backend/access/common/detoast.cindex a6c1f3a734b2..a50aea7b6b12 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.cindex 5a5d579494a2..3b1bd6519261 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.cindex 77d42e7ed65a..0f234661bfa9 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.cindex bc4cdd8a3d8b..3b7c658a90e6 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.cindex 2f2022d99510..6f2d691cc681 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.cindex 2e3f177100b0..3203f2fd4ee2 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.cindex 900864afc6db..457d544eec93 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.cindex c5fd78f891ea..e5632d930682 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.cindex 1542a56ca4b1..79f3085d7696 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/doc/src/sgml/storage.sgml b/doc/src/sgml/storage.sgmlindex 19924b98d71d..90aae3defcbc 100644--- a/doc/src/sgml/storage.sgml+++ b/doc/src/sgml/storage.sgml@@ -417,7 +417,7 @@ described in more detail below.
<para>
Out-of-line values are divided (after compression if used) into chunks of at
-most <symbol>TOAST_MAX_CHUNK_SIZE</symbol> bytes (by default this value is chosen+most <symbol>TOAST_OID_MAX_CHUNK_SIZE</symbol> 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 <acronym>TOAST</acronym> table
belonging to the owning table. Every
diff --git a/contrib/amcheck/verify_heapam.c b/contrib/amcheck/verify_heapam.cindex 6757baee2404..bbaaec89f8ae 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/src/tools/pgindent/typedefs.list b/src/tools/pgindent/typedefs.listindex c546b3d6375d..04aa7bd202ce 100644--- a/src/tools/pgindent/typedefs.list+++ b/src/tools/pgindent/typedefs.list@@ -4436,7 +4436,7 @@ va_list
vacuumingOptions
validate_string_relopt
varatt_expanded
-varatt_external+varatt_external_oid
varatt_indirect
varattrib_1b
varattrib_1b_e
--
2.55.0
signature.asc (application/pgp-signature, 832B) download
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: michael@paquier.xyz, li.evan.chao@gmail.com, pgsql-hackers@lists.postgresql.org, tgl@sss.pgh.pa.us, andres@anarazel.de
Subject: Re: Rename of varatt_external to varatt_external_oid
In-Reply-To: <apoc0WqBlSeBHIMg@paquier.xyz>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox