Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitdb8b9d6

Browse files
author
Maxim Orlov
committed
Add support for pg16.
1 parent5719f28 commitdb8b9d6

File tree

2 files changed

+343
-24
lines changed

2 files changed

+343
-24
lines changed

‎src/rumsort.c

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@
2727

2828
#include"rum.h"/* RumItem */
2929

30-
#ifPG_VERSION_NUM >=150000
30+
#ifPG_VERSION_NUM >=160000
31+
#include"tuplesort16.c"
32+
#undef TRACE_SORT
33+
#elifPG_VERSION_NUM >=150000
3134
#include"tuplesort15.c"
3235
#elifPG_VERSION_NUM >=140000
3336
#include"tuplesort14.c"
@@ -53,7 +56,6 @@ typedef struct RumTuplesortstateExt
5356
FmgrInfo*cmp;
5457
}RumTuplesortstateExt;
5558

56-
staticintcompare_rum_itempointer(ItemPointerDatap1,ItemPointerDatap2);
5759
staticintcomparetup_rum(constSortTuple*a,constSortTuple*b,
5860
RumTuplesortstate*state,boolcompareItemPointer);
5961
staticintcomparetup_rum_true(constSortTuple*a,constSortTuple*b,
@@ -69,11 +71,19 @@ static void *rum_tuplesort_getrum_internal(RumTuplesortstate *state,
6971
boolforward,bool*should_free);
7072

7173
#ifPG_VERSION_NUM >=160000
72-
#defineTSS_GET(state) \
73-
TuplesortstateGetPublic((state))
74+
#defineTSS_GET(state)TuplesortstateGetPublic((state))
75+
#else
76+
#defineTSS_GET(state)(state)
77+
#endif
78+
79+
#ifPG_VERSION_NUM >=150000
80+
#defineLT_TYPE LogicalTape *
81+
#defineLT_ARG tape
82+
#defineTAPE(state,LT_ARG) LT_ARG
7483
#else
75-
#defineTSS_GET(state) \
76-
(state)
84+
#defineLT_TYPE int
85+
#defineLT_ARG tapenum
86+
#defineTAPE(state,LT_ARG) state->tapeset, LT_ARG
7787
#endif
7888

7989
staticinlineint
@@ -152,12 +162,14 @@ comparetup_rumitem(const SortTuple *a, const SortTuple *b,
152162
{
153163
RumItem*i1,
154164
*i2;
165+
FmgrInfo*cmp;
155166

156167
/* Extract RumItem from RumScanItem */
157168
i1= (RumItem*)a->tuple;
158169
i2= (RumItem*)b->tuple;
159170

160-
if (((RumTuplesortstateExt*)state)->cmp)
171+
cmp= ((RumTuplesortstateExt*)state)->cmp;
172+
if (cmp!=NULL)
161173
{
162174
if (i1->addInfoIsNull||i2->addInfoIsNull)
163175
{
@@ -169,7 +181,7 @@ comparetup_rumitem(const SortTuple *a, const SortTuple *b,
169181
{
170182
intr;
171183

172-
r=DatumGetInt32(FunctionCall2(((RumTuplesortstateExt*)state)->cmp,
184+
r=DatumGetInt32(FunctionCall2(cmp,
173185
i1->addInfo,
174186
i2->addInfo));
175187

@@ -193,7 +205,7 @@ copytup_rum(RumTuplesortstate *state, SortTuple *stup, void *tup)
193205
stup->datum1=Float8GetDatum(nKeys>0 ?item->data[0] :0);
194206
stup->isnull1= false;
195207
stup->tuple=tup;
196-
//USEMEM(state, GetMemoryChunkSpace(tup));
208+
USEMEM(state,GetMemoryChunkSpace(tup));
197209
}
198210

199211
staticvoid
@@ -202,19 +214,9 @@ copytup_rumitem(RumTuplesortstate *state, SortTuple *stup, void *tup)
202214
stup->isnull1= true;
203215
stup->tuple=palloc(sizeof(RumScanItem));
204216
memcpy(stup->tuple,tup,sizeof(RumScanItem));
205-
//USEMEM(state, GetMemoryChunkSpace(stup->tuple));
217+
USEMEM(state,GetMemoryChunkSpace(stup->tuple));
206218
}
207219

208-
#ifPG_VERSION_NUM >=150000
209-
#defineLT_TYPE LogicalTape *
210-
#defineLT_ARG tape
211-
#defineTAPE(state,LT_ARG) LT_ARG
212-
#else
213-
#defineLT_TYPE int
214-
#defineLT_ARG tapenum
215-
#defineTAPE(state,LT_ARG) state->tapeset, LT_ARG
216-
#endif
217-
218220
staticvoidreadtup_rum(RumTuplesortstate*state,SortTuple*stup,
219221
LT_TYPELT_ARG,unsignedintlen);
220222

@@ -228,9 +230,9 @@ rum_item_size(RumTuplesortstate *state)
228230
returnRumSortItemSize(TSS_GET(state)->nKeys);
229231
elseif (TSS_GET(state)->readtup==readtup_rumitem)
230232
returnsizeof(RumScanItem);
231-
else
232-
elog (FATAL,"Unknown RUM state");
233-
return0;/*Silence compiler */
233+
234+
elog (FATAL,"Unknown RUM state");
235+
return0;/*keep compiler quiet */
234236
}
235237

236238
staticvoid
@@ -277,7 +279,7 @@ readtup_rum_internal(RumTuplesortstate *state, SortTuple *stup,
277279

278280
Assert(tuplen==size);
279281

280-
//USEMEM(state, GetMemoryChunkSpace(item));
282+
USEMEM(state,GetMemoryChunkSpace(item));
281283
#ifPG_VERSION_NUM >=150000
282284
LogicalTapeReadExact(LT_ARG,item,size);
283285
#else
@@ -420,7 +422,12 @@ rum_tuplesort_putrum(RumTuplesortstate *state, RumSortItem *item)
420422

421423
oldcontext=MemoryContextSwitchTo(rum_tuplesort_get_memorycontext(state));
422424
copytup_rum(state,&stup,item);
425+
426+
#ifPG_VERSION_NUM >=160000
427+
tuplesort_puttuple_common(state,&stup, false);
428+
#else
423429
puttuple_common(state,&stup);
430+
#endif
424431

425432
MemoryContextSwitchTo(oldcontext);
426433
}
@@ -433,7 +440,12 @@ rum_tuplesort_putrumitem(RumTuplesortstate *state, RumScanItem *item)
433440

434441
oldcontext=MemoryContextSwitchTo(rum_tuplesort_get_memorycontext(state));
435442
copytup_rumitem(state,&stup,item);
443+
444+
#ifPG_VERSION_NUM >=160000
445+
tuplesort_puttuple_common(state,&stup, false);
446+
#else
436447
puttuple_common(state,&stup);
448+
#endif
437449

438450
MemoryContextSwitchTo(oldcontext);
439451
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp