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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy