45#define VARLENA_EXTSIZE_BITS 30
46#define VARLENA_EXTSIZE_MASK ((1U << VARLENA_EXTSIZE_BITS) - 1)
193#ifdef WORDS_BIGENDIAN
195#define VARATT_IS_4B(PTR) \
196 ((((varattrib_1b *) (PTR))->va_header & 0x80) == 0x00)
197#define VARATT_IS_4B_U(PTR) \
198 ((((varattrib_1b *) (PTR))->va_header & 0xC0) == 0x00)
199#define VARATT_IS_4B_C(PTR) \
200 ((((varattrib_1b *) (PTR))->va_header & 0xC0) == 0x40)
201#define VARATT_IS_1B(PTR) \
202 ((((varattrib_1b *) (PTR))->va_header & 0x80) == 0x80)
203#define VARATT_IS_1B_E(PTR) \
204 ((((varattrib_1b *) (PTR))->va_header) == 0x80)
205#define VARATT_NOT_PAD_BYTE(PTR) \
206 (*((uint8 *) (PTR)) != 0)
209#define VARSIZE_4B(PTR) \
210 (((varattrib_4b *) (PTR))->va_4byte.va_header & 0x3FFFFFFF)
211#define VARSIZE_1B(PTR) \
212 (((varattrib_1b *) (PTR))->va_header & 0x7F)
213#define VARTAG_1B_E(PTR) \
214 ((vartag_external) ((varattrib_1b_e *) (PTR))->va_tag)
216#define SET_VARSIZE_4B(PTR,len) \
217 (((varattrib_4b *) (PTR))->va_4byte.va_header = (len) & 0x3FFFFFFF)
218#define SET_VARSIZE_4B_C(PTR,len) \
219 (((varattrib_4b *) (PTR))->va_4byte.va_header = ((len) & 0x3FFFFFFF) | 0x40000000)
220#define SET_VARSIZE_1B(PTR,len) \
221 (((varattrib_1b *) (PTR))->va_header = (len) | 0x80)
222#define SET_VARTAG_1B_E(PTR,tag) \
223 (((varattrib_1b_e *) (PTR))->va_header = 0x80, \
224 ((varattrib_1b_e *) (PTR))->va_tag = (tag))
228#define VARATT_IS_4B(PTR) \
229 ((((varattrib_1b *) (PTR))->va_header & 0x01) == 0x00)
230#define VARATT_IS_4B_U(PTR) \
231 ((((varattrib_1b *) (PTR))->va_header & 0x03) == 0x00)
232#define VARATT_IS_4B_C(PTR) \
233 ((((varattrib_1b *) (PTR))->va_header & 0x03) == 0x02)
234#define VARATT_IS_1B(PTR) \
235 ((((varattrib_1b *) (PTR))->va_header & 0x01) == 0x01)
236#define VARATT_IS_1B_E(PTR) \
237 ((((varattrib_1b *) (PTR))->va_header) == 0x01)
238#define VARATT_NOT_PAD_BYTE(PTR) \
239 (*((uint8 *) (PTR)) != 0)
242#define VARSIZE_4B(PTR) \
243 ((((varattrib_4b *) (PTR))->va_4byte.va_header >> 2) & 0x3FFFFFFF)
244#define VARSIZE_1B(PTR) \
245 ((((varattrib_1b *) (PTR))->va_header >> 1) & 0x7F)
246#define VARTAG_1B_E(PTR) \
247 ((vartag_external) ((varattrib_1b_e *) (PTR))->va_tag)
249#define SET_VARSIZE_4B(PTR,len) \
250 (((varattrib_4b *) (PTR))->va_4byte.va_header = (((uint32) (len)) << 2))
251#define SET_VARSIZE_4B_C(PTR,len) \
252 (((varattrib_4b *) (PTR))->va_4byte.va_header = (((uint32) (len)) << 2) | 0x02)
253#define SET_VARSIZE_1B(PTR,len) \
254 (((varattrib_1b *) (PTR))->va_header = (((uint8) (len)) << 1) | 0x01)
255#define SET_VARTAG_1B_E(PTR,tag) \
256 (((varattrib_1b_e *) (PTR))->va_header = 0x01, \
257 ((varattrib_1b_e *) (PTR))->va_tag = (tag))
261#define VARDATA_4B(PTR) (((varattrib_4b *) (PTR))->va_4byte.va_data)
262#define VARDATA_4B_C(PTR) (((varattrib_4b *) (PTR))->va_compressed.va_data)
263#define VARDATA_1B(PTR) (((varattrib_1b *) (PTR))->va_data)
264#define VARDATA_1B_E(PTR) (((varattrib_1b_e *) (PTR))->va_data)
276#define VARHDRSZ_EXTERNAL offsetof(varattrib_1b_e, va_data)
277#define VARHDRSZ_COMPRESSED offsetof(varattrib_4b, va_compressed.va_data)
278#define VARHDRSZ_SHORT offsetof(varattrib_1b, va_data)
279#define VARATT_SHORT_MAX 0x7F
520#define VARATT_EXTERNAL_SET_SIZE_AND_COMPRESS_METHOD(toast_pointer, len, cm) \
522 Assert((cm) == TOAST_PGLZ_COMPRESSION_ID || \
523 (cm) == TOAST_LZ4_COMPRESSION_ID); \
524 ((toast_pointer).va_extinfo = \
525 (len) | ((uint32) (cm) << VARLENA_EXTSIZE_BITS)); \
#define FLEXIBLE_ARRAY_MEMBER
Assert(PointerIsAligned(start, uint64))
ExpandedObjectHeader * eohptr
#define VARLENA_EXTSIZE_BITS
static bool VARATT_IS_SHORT(const void *PTR)
#define VARATT_IS_4B_C(PTR)
#define SET_VARSIZE_4B(PTR, len)
static Size VARDATA_COMPRESSED_GET_EXTSIZE(const void *PTR)
static void SET_VARSIZE_COMPRESSED(void *PTR, Size len)
#define VARATT_IS_4B_U(PTR)
static bool VARATT_IS_EXTERNAL_ONDISK(const void *PTR)
static Size VARATT_EXTERNAL_GET_EXTSIZE(struct varatt_external toast_pointer)
static Size VARSIZE_ANY(const void *PTR)
static bool VARATT_CAN_MAKE_SHORT(const void *PTR)
static bool VARATT_IS_EXTENDED(const void *PTR)
static bool VARTAG_IS_EXPANDED(vartag_external tag)
static uint32 VARDATA_COMPRESSED_GET_COMPRESS_METHOD(const void *PTR)
#define VARATT_IS_1B_E(PTR)
static Size VARSIZE_ANY_EXHDR(const void *PTR)
static bool VARATT_IS_EXTERNAL_EXPANDED_RW(const void *PTR)
static bool VARATT_IS_EXTERNAL(const void *PTR)
static char * VARDATA_EXTERNAL(const void *PTR)
static bool VARATT_IS_EXTERNAL_INDIRECT(const void *PTR)
static Size VARSIZE(const void *PTR)
static char * VARDATA(const void *PTR)
static char * VARDATA_ANY(const void *PTR)
static Size VARATT_CONVERTED_SHORT_SIZE(const void *PTR)
static void SET_VARTAG_EXTERNAL(void *PTR, vartag_external tag)
#define SET_VARSIZE_1B(PTR, len)
struct varatt_external varatt_external
static bool VARATT_IS_EXTERNAL_NON_EXPANDED(const void *PTR)
#define VARDATA_1B_E(PTR)
static bool VARATT_IS_COMPRESSED(const void *PTR)
static vartag_external VARTAG_EXTERNAL(const void *PTR)
static Size VARSIZE_EXTERNAL(const void *PTR)
#define VARLENA_EXTSIZE_MASK
struct varatt_indirect varatt_indirect
static bool VARATT_IS_EXTERNAL_EXPANDED(const void *PTR)
#define SET_VARTAG_1B_E(PTR, tag)
static void SET_VARSIZE_SHORT(void *PTR, Size len)
struct varatt_expanded varatt_expanded
static Size VARTAG_SIZE(vartag_external tag)
static bool VARATT_IS_EXTERNAL_EXPANDED_RO(const void *PTR)
#define SET_VARSIZE_4B_C(PTR, len)
static char * VARDATA_SHORT(const void *PTR)
#define VARATT_IS_1B(PTR)
static uint32 VARATT_EXTERNAL_GET_COMPRESS_METHOD(struct varatt_external toast_pointer)
#define VARHDRSZ_EXTERNAL
static bool VARATT_EXTERNAL_IS_COMPRESSED(struct varatt_external toast_pointer)
static void SET_VARSIZE(void *PTR, Size len)
static Size VARSIZE_SHORT(const void *PTR)