Skip to content

Commit f4020eb

Browse files
author
Artur Zakirov
committed
Fix: set RumNullCategory for copied IndexTuple without posting list
1 parent e8f34ec commit f4020eb

File tree

6 files changed

+15
-10
lines changed

6 files changed

+15
-10
lines changed

rum.h

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -211,14 +211,10 @@ typedef signed char RumNullCategory;
211211
#define RumCategoryOffset(itup,rumstate) \
212212
(IndexInfoFindDataOffset((itup)->t_info) + \
213213
((rumstate)->oneCol ? 0 : sizeof(int16)))
214-
/*#define RumGetNullCategory(itup,rumstate) \
215-
(*((RumNullCategory *) ((char*)(itup) + RumCategoryOffset(itup,rumstate))))
216-
#define RumSetNullCategory(itup,rumstate,c) \
217-
(*((RumNullCategory *) ((char*)(itup) + RumCategoryOffset(itup,rumstate))) = (c))*/
218214

219-
#define RumGetNullCategory(itup,rumstate) \
215+
#define RumGetNullCategory(itup) \
220216
(*((RumNullCategory *) ((char*)(itup) + IndexTupleSize(itup) - sizeof(RumNullCategory))))
221-
#define RumSetNullCategory(itup,rumstate,c) \
217+
#define RumSetNullCategory(itup,c) \
222218
(*((RumNullCategory *) ((char*)(itup) + IndexTupleSize(itup) - sizeof(RumNullCategory))) = (c))
223219

224220
/*

rumentrypage.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ static IndexTuple
6868
RumFormInteriorTuple(IndexTuple itup, Page page, BlockNumber childblk)
6969
{
7070
IndexTuple nitup;
71+
RumNullCategory category;
7172

7273
if (RumPageIsLeaf(page) && !RumIsPostingTree(itup))
7374
{
@@ -91,6 +92,14 @@ RumFormInteriorTuple(IndexTuple itup, Page page, BlockNumber childblk)
9192
/* Now insert the correct downlink */
9293
RumSetDownlink(nitup, childblk);
9394

95+
category = RumGetNullCategory(itup);
96+
if (category == RUM_CAT_NULL_KEY || category == RUM_CAT_EMPTY_ITEM ||
97+
category == RUM_CAT_NULL_ITEM)
98+
{
99+
nitup->t_info |= INDEX_NULL_MASK;
100+
RumSetNullCategory(nitup, category);
101+
}
102+
94103
return nitup;
95104
}
96105

rumfast.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ RumFastFormTuple(RumState * rumstate,
421421
if (category != RUM_CAT_NORM_KEY)
422422
{
423423
Assert(IndexTupleHasNulls(itup));
424-
RumSetNullCategory(itup, rumstate, category);
424+
RumSetNullCategory(itup, category);
425425
}
426426

427427
return itup;

ruminsert.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ RumFormTuple(RumState * rumstate,
227227
if (category != RUM_CAT_NORM_KEY)
228228
{
229229
Assert(IndexTupleHasNulls(itup));
230-
RumSetNullCategory(itup, rumstate, category);
230+
RumSetNullCategory(itup, category);
231231
}
232232

233233
return itup;

rumutil.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ rumtuple_get_key(RumState * rumstate, IndexTuple tuple,
419419
}
420420

421421
if (isnull)
422-
*category = RumGetNullCategory(tuple, rumstate);
422+
*category = RumGetNullCategory(tuple);
423423
else
424424
*category = RUM_CAT_NORM_KEY;
425425

rumvacuum.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ RumFormTuple(RumState * rumstate,
203203
if (category != RUM_CAT_NORM_KEY)
204204
{
205205
Assert(IndexTupleHasNulls(itup));
206-
RumSetNullCategory(itup, rumstate, category);
206+
RumSetNullCategory(itup, category);
207207
}
208208
return itup;
209209
}

0 commit comments

Comments
 (0)