diff --git a/src/backend/access/common/indextuple.c b/src/backend/access/common/indextuple.c index bb2c6a2bcc..e896c98db9 100644 --- a/src/backend/access/common/indextuple.c +++ b/src/backend/access/common/indextuple.c @@ -73,7 +73,7 @@ index_form_tuple_context(TupleDesc tupleDescriptor, data_size, hoff; int i; - unsigned short infomask = 0; + index_info infomask = 0; bool hasnull = false; uint16 tupmask = 0; int numberOfAttributes = tupleDescriptor->natts; diff --git a/src/backend/access/spgist/spgutils.c b/src/backend/access/spgist/spgutils.c index 5b5e6e82d3..40c4f168a5 100644 --- a/src/backend/access/spgist/spgutils.c +++ b/src/backend/access/spgist/spgutils.c @@ -942,7 +942,7 @@ spgFormNodeTuple(SpGistState *state, Datum label, bool isnull) { SpGistNodeTuple tup; unsigned int size; - unsigned short infomask = 0; + index_info infomask = 0; /* compute space needed (note result is already maxaligned) */ size = SGNTHDRSZ; diff --git a/src/include/access/itup.h b/src/include/access/itup.h index 94885751e5..84498790d3 100644 --- a/src/include/access/itup.h +++ b/src/include/access/itup.h @@ -19,6 +19,8 @@ #include "storage/bufpage.h" #include "storage/itemptr.h" +typedef uint32 index_info; + /* * Index tuple header structure * @@ -39,14 +41,14 @@ typedef struct IndexTupleData /* --------------- * t_info is laid out in the following fashion: * - * 15th (high) bit: has nulls - * 14th bit: has var-width attributes - * 13th bit: AM-defined meaning - * 12-0 bit: size of tuple + * 31st (high) bit: has nulls + * 30th bit: has var-width attributes + * 29th bit: AM-defined meaning + * 28-0 bit: size of tuple * --------------- */ - unsigned short t_info; /* various info about tuple */ + index_info t_info; /* various info about tuple */ } IndexTupleData; /* MORE DATA FOLLOWS AT END OF STRUCT */ @@ -62,11 +64,11 @@ typedef IndexAttributeBitMapData * IndexAttributeBitMap; /* * t_info manipulation macros */ -#define INDEX_SIZE_MASK 0x1FFF -#define INDEX_AM_RESERVED_BIT 0x2000 /* reserved for index-AM specific - * usage */ -#define INDEX_VAR_MASK 0x4000 -#define INDEX_NULL_MASK 0x8000 +#define INDEX_SIZE_MASK 0x1FFFFFFF +#define INDEX_AM_RESERVED_BIT 0x20000000 /* reserved for index-AM specific + * usage */ +#define INDEX_VAR_MASK 0x40000000 +#define INDEX_NULL_MASK 0x80000000 #define IndexTupleSize(itup) ((Size) ((itup)->t_info & INDEX_SIZE_MASK)) #define IndexTupleHasNulls(itup) ((((IndexTuple) (itup))->t_info & INDEX_NULL_MASK)) @@ -96,7 +98,7 @@ extern IndexTuple index_truncate_tuple(TupleDesc sourceDescriptor, * at index_form_tuple time so enough space is allocated). */ static inline Size -IndexInfoFindDataOffset(unsigned short t_info) +IndexInfoFindDataOffset(index_info t_info) { if (!(t_info & INDEX_NULL_MASK)) return MAXALIGN(sizeof(IndexTupleData));