{
/* Use original, unchanged base tuple */
tuplesz = IndexTupleSize(state->base);
+ Assert(tuplesz == MAXALIGN(IndexTupleSize(state->base)));
+ Assert(tuplesz <= BTMaxItemSize(newpage));
if (PageAddItem(newpage, (Item) state->base, tuplesz, tupoff,
false, false) == InvalidOffsetNumber)
elog(ERROR, "deduplication failed to add tuple to page");
state->intervals[state->nintervals].nitems = state->nitems;
Assert(tuplesz == MAXALIGN(IndexTupleSize(final)));
+ Assert(tuplesz <= BTMaxItemSize(newpage));
if (PageAddItem(newpage, (Item) final, tuplesz, tupoff, false,
false) == InvalidOffsetNumber)
elog(ERROR, "deduplication failed to add tuple to page");
* attribute, which we account for here.
*/
#define BTMaxItemSize(page) \
- MAXALIGN_DOWN((PageGetPageSize(page) - \
- MAXALIGN(SizeOfPageHeaderData + 3*sizeof(ItemIdData)) - \
- MAXALIGN(sizeof(BTPageOpaqueData))) / 3) - \
- MAXALIGN(sizeof(ItemPointerData))
+ (MAXALIGN_DOWN((PageGetPageSize(page) - \
+ MAXALIGN(SizeOfPageHeaderData + 3*sizeof(ItemIdData)) - \
+ MAXALIGN(sizeof(BTPageOpaqueData))) / 3) - \
+ MAXALIGN(sizeof(ItemPointerData)))
#define BTMaxItemSizeNoHeapTid(page) \
MAXALIGN_DOWN((PageGetPageSize(page) - \
MAXALIGN(SizeOfPageHeaderData + 3*sizeof(ItemIdData)) - \