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

Commitd0dd137

Browse files
committed
store RumConfig in RumState
1 parent04dadd7 commitd0dd137

File tree

5 files changed

+30
-23
lines changed

5 files changed

+30
-23
lines changed

‎rum.h

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include"access/generic_xlog.h"
1717
#include"access/gin.h"
1818
#include"access/itup.h"
19+
#include"access/sdir.h"
1920
#include"lib/rbtree.h"
2021
#include"storage/bufmgr.h"
2122

@@ -321,6 +322,17 @@ typedef struct RumOptions
321322
#defineRUM_SHAREBUFFER_LOCK_SHARE
322323
#defineRUM_EXCLUSIVE BUFFER_LOCK_EXCLUSIVE
323324

325+
#defineMAX_STRATEGIES(8)
326+
typedefstructRumConfig
327+
{
328+
OidaddInfoTypeOid;
329+
330+
struct {
331+
StrategyNumberstrategy;
332+
ScanDirectiondirection;
333+
}strategyInfo[MAX_STRATEGIES];
334+
}RumConfig;
335+
324336
/*
325337
* RumState: working data structure describing the index being worked on
326338
*/
@@ -345,7 +357,7 @@ typedef struct RumState
345357
*/
346358
TupleDescorigTupdesc;
347359
TupleDesctupdesc[INDEX_MAX_KEYS];
348-
OidaddInfoTypeOid[INDEX_MAX_KEYS];
360+
RumConfigrumConfig[INDEX_MAX_KEYS];
349361
Form_pg_attributeaddAttrs[INDEX_MAX_KEYS];
350362

351363
/*
@@ -371,11 +383,6 @@ typedef struct RumState
371383
OidsupportCollation[INDEX_MAX_KEYS];
372384
}RumState;
373385

374-
typedefstructRumConfig
375-
{
376-
OidaddInfoTypeOid;
377-
}RumConfig;
378-
379386
/* XLog stuff */
380387

381388
#defineRUM_NDELETE_AT_ONCE 16
@@ -599,6 +606,7 @@ typedef struct RumScanKeyData
599606
boolrecheckCurItem;
600607
boolisFinished;
601608
boolorderBy;
609+
ScanDirectionscanDirection;
602610

603611
RumScanKey*addInfoKeys;
604612
intaddInfoNKeys;
@@ -638,6 +646,7 @@ typedef struct RumScanEntryData
638646
uint32nlist;
639647
OffsetNumberoffset;
640648

649+
ScanDirectionscanDirection;
641650
boolisFinished;
642651
boolreduceResult;
643652
boolpreValue;

‎rumfast.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -656,7 +656,7 @@ processPendingPage(BuildAccumulator *accum, KeyArray *ka,
656656
/* Check for change of heap TID or attnum */
657657
curattnum=rumtuple_get_attrnum(accum->rumstate,itup);
658658

659-
if (OidIsValid(accum->rumstate->addInfoTypeOid[curattnum-1]))
659+
if (OidIsValid(accum->rumstate->rumConfig[curattnum-1].addInfoTypeOid))
660660
{
661661
Form_pg_attributeattr=accum->rumstate->addAttrs[curattnum-1];
662662

‎rumget.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2239,7 +2239,7 @@ collectMatchesForHeapRow(IndexScanDesc scan, pendingPosition *pos)
22392239
else
22402240
{
22412241
key->entryRes[j]= true;
2242-
if (OidIsValid(so->rumstate.addInfoTypeOid[i]))
2242+
if (OidIsValid(so->rumstate.rumConfig[i].addInfoTypeOid))
22432243
key->addInfo[j]=index_getattr(itup,
22442244
so->rumstate.oneCol ?2 :3,
22452245
so->rumstate.tupdesc[attrnum-1],

‎rumscan.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ rumFillScanEntry(RumScanOpaque so, OffsetNumber attnum,
120120
scanEntry->isFinished= false;
121121
scanEntry->reduceResult= false;
122122
scanEntry->useMarkAddInfo= false;
123+
scanEntry->scanDirection=NoMovementScanDirection;
123124
ItemPointerSetMin(&scanEntry->markAddInfo.iptr);
124125

125126
returnscanEntry;
@@ -155,6 +156,7 @@ rumFillScanKey(RumScanOpaque so, OffsetNumber attnum,
155156
key->searchMode=searchMode;
156157
key->attnum=key->attnumOrig=attnum;
157158
key->useAddToColumn= false;
159+
key->scanDirection=NoMovementScanDirection;
158160

159161
RumItemSetMin(&key->curItem);
160162
key->curItemMatches= false;

‎rumutil.c

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -176,46 +176,42 @@ initRumState(RumState * state, Relation index)
176176

177177
for (i=0;i<origTupdesc->natts;i++)
178178
{
179-
RumConfigrumConfig;
179+
RumConfig*rumConfig=state->rumConfig+i;
180180

181-
rumConfig.addInfoTypeOid=InvalidOid;
181+
rumConfig->addInfoTypeOid=InvalidOid;
182182

183183
if (index_getprocid(index,i+1,RUM_CONFIG_PROC)!=InvalidOid)
184184
{
185185
fmgr_info_copy(&(state->configFn[i]),
186186
index_getprocinfo(index,i+1,RUM_CONFIG_PROC),
187187
CurrentMemoryContext);
188188

189-
FunctionCall1(&state->configFn[i],PointerGetDatum(&rumConfig));
189+
FunctionCall1(&state->configFn[i],PointerGetDatum(rumConfig));
190190
}
191191

192192
if (state->attrnAddToColumn==i+1)
193193
{
194-
if (OidIsValid(rumConfig.addInfoTypeOid))
194+
if (OidIsValid(rumConfig->addInfoTypeOid))
195195
elog(ERROR,"AddTo could should not have AddInfo");
196196

197-
state->addInfoTypeOid[i]=origTupdesc->attrs[
197+
rumConfig->addInfoTypeOid=origTupdesc->attrs[
198198
state->attrnOrderByColumn-1]->atttypid;
199199
}
200-
else
201-
{
202-
state->addInfoTypeOid[i]=rumConfig.addInfoTypeOid;
203-
}
204200

205201
if (state->oneCol)
206202
{
207203
state->tupdesc[i]=CreateTemplateTupleDesc(
208-
OidIsValid(state->addInfoTypeOid[i]) ?2 :1, false);
204+
OidIsValid(rumConfig->addInfoTypeOid) ?2 :1, false);
209205
TupleDescInitEntry(state->tupdesc[i], (AttrNumber)1,NULL,
210206
origTupdesc->attrs[i]->atttypid,
211207
origTupdesc->attrs[i]->atttypmod,
212208
origTupdesc->attrs[i]->attndims);
213209
TupleDescInitEntryCollation(state->tupdesc[i], (AttrNumber)1,
214210
origTupdesc->attrs[i]->attcollation);
215-
if (OidIsValid(state->addInfoTypeOid[i]))
211+
if (OidIsValid(rumConfig->addInfoTypeOid))
216212
{
217213
TupleDescInitEntry(state->tupdesc[i], (AttrNumber)2,NULL,
218-
state->addInfoTypeOid[i],-1,0);
214+
rumConfig->addInfoTypeOid,-1,0);
219215
state->addAttrs[i]=state->tupdesc[i]->attrs[1];
220216
}
221217
else
@@ -226,7 +222,7 @@ initRumState(RumState * state, Relation index)
226222
else
227223
{
228224
state->tupdesc[i]=CreateTemplateTupleDesc(
229-
OidIsValid(state->addInfoTypeOid[i]) ?3 :2, false);
225+
OidIsValid(rumConfig->addInfoTypeOid) ?3 :2, false);
230226
TupleDescInitEntry(state->tupdesc[i], (AttrNumber)1,NULL,
231227
INT2OID,-1,0);
232228
TupleDescInitEntry(state->tupdesc[i], (AttrNumber)2,NULL,
@@ -235,10 +231,10 @@ initRumState(RumState * state, Relation index)
235231
origTupdesc->attrs[i]->attndims);
236232
TupleDescInitEntryCollation(state->tupdesc[i], (AttrNumber)2,
237233
origTupdesc->attrs[i]->attcollation);
238-
if (OidIsValid(state->addInfoTypeOid[i]))
234+
if (OidIsValid(rumConfig->addInfoTypeOid))
239235
{
240236
TupleDescInitEntry(state->tupdesc[i], (AttrNumber)3,NULL,
241-
state->addInfoTypeOid[i],-1,0);
237+
rumConfig->addInfoTypeOid,-1,0);
242238
state->addAttrs[i]=state->tupdesc[i]->attrs[2];
243239
}
244240
else

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp