mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
Clean up some ugly coding (hardwired constants) in index_formtuple.
This commit is contained in:
parent
33e5a4dfa5
commit
acbbeffc29
@ -9,7 +9,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/access/common/indextuple.c,v 1.44 2000/07/22 11:18:45 wieck Exp $
|
* $Header: /cvsroot/pgsql/src/backend/access/common/indextuple.c,v 1.45 2000/09/23 22:40:12 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -46,8 +46,8 @@ index_formtuple(TupleDesc tupleDescriptor,
|
|||||||
uint16 tupmask = 0;
|
uint16 tupmask = 0;
|
||||||
int numberOfAttributes = tupleDescriptor->natts;
|
int numberOfAttributes = tupleDescriptor->natts;
|
||||||
#ifdef TOAST_INDEX_HACK
|
#ifdef TOAST_INDEX_HACK
|
||||||
Datum untoasted_value[MaxHeapAttributeNumber];
|
Datum untoasted_value[INDEX_MAX_KEYS];
|
||||||
bool untoasted_free[MaxHeapAttributeNumber];
|
bool untoasted_free[INDEX_MAX_KEYS];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (numberOfAttributes > INDEX_MAX_KEYS)
|
if (numberOfAttributes > INDEX_MAX_KEYS)
|
||||||
@ -79,10 +79,14 @@ index_formtuple(TupleDesc tupleDescriptor,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
for (i = 0; i < numberOfAttributes && !hasnull; i++)
|
|
||||||
|
for (i = 0; i < numberOfAttributes; i++)
|
||||||
{
|
{
|
||||||
if (null[i] != ' ')
|
if (null[i] != ' ')
|
||||||
|
{
|
||||||
hasnull = true;
|
hasnull = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasnull)
|
if (hasnull)
|
||||||
@ -122,23 +126,21 @@ index_formtuple(TupleDesc tupleDescriptor,
|
|||||||
/*
|
/*
|
||||||
* We do this because DataFill wants to initialize a "tupmask" which
|
* We do this because DataFill wants to initialize a "tupmask" which
|
||||||
* is used for HeapTuples, but we want an indextuple infomask. The
|
* is used for HeapTuples, but we want an indextuple infomask. The
|
||||||
* only "relevent" info is the "has variable attributes" field, which
|
* only relevant info is the "has variable attributes" field.
|
||||||
* is in mask position 0x02. We have already set the null mask above.
|
* We have already set the hasnull bit above.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (tupmask & 0x02)
|
if (tupmask & HEAP_HASVARLENA)
|
||||||
infomask |= INDEX_VAR_MASK;
|
infomask |= INDEX_VAR_MASK;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Here we make sure that we can actually hold the size. We also want
|
* Here we make sure that the size will fit in the field reserved for
|
||||||
* to make sure that size is not aligned oddly. This actually is a
|
* it in t_info.
|
||||||
* rather odd way to make sure the size is not too large overall.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (size & 0xE000)
|
if ((size & INDEX_SIZE_MASK) != size)
|
||||||
elog(ERROR, "index_formtuple: data takes %d bytes: too big", size);
|
elog(ERROR, "index_formtuple: data takes %d bytes: too big", size);
|
||||||
|
|
||||||
|
|
||||||
infomask |= size;
|
infomask |= size;
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user