Skip to content

Commit 769d262

Browse files
hide function pointer
1 parent 10323ec commit 769d262

File tree

6 files changed

+27
-16
lines changed

6 files changed

+27
-16
lines changed

src/backend/executor/execExpr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2928,7 +2928,7 @@ ExecInitWholeRowVar(ExprEvalStep *scratch, Var *variable, ExprState *state)
29282928
ExecInitJunkFilter(subplan->plan->targetlist,
29292929
ExecInitExtraTupleSlot(parent->state, NULL,
29302930
&TTSOpsVirtual),
2931-
ExecFilterJunk);
2931+
NULL);
29322932
}
29332933
}
29342934
}

src/backend/executor/execExprInterp.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4205,10 +4205,7 @@ ExecEvalWholeRowVar(ExprState *state, ExprEvalStep *op, ExprContext *econtext)
42054205

42064206
/* Apply the junkfilter if any */
42074207
if (op->d.wholerow.junkFilter != NULL)
4208-
{
4209-
JunkFilter *junkfilter = op->d.wholerow.junkFilter;
4210-
slot = junkfilter->jf_execFilterJunkFunc(junkfilter, slot);
4211-
}
4208+
slot = ExecFilterJunk(op->d.wholerow.junkFilter, slot);
42124209

42134210
/*
42144211
* If first time through, obtain tuple descriptor and check compatibility.

src/backend/executor/execJunk.c

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
#include "executor/executor.h"
1818

19+
static TupleTableSlot *ExecFilterJunkInternal(JunkFilter *junkfilter,
20+
TupleTableSlot *slot);
21+
1922
/*-------------------------------------------------------------------------
2023
* XXX this stuff should be rewritten to take advantage
2124
* of ExecProject() and the ProjectionInfo node.
@@ -121,8 +124,9 @@ ExecInitJunkFilter(List *targetList, TupleTableSlot *slot,
121124
junkfilter->jf_cleanTupType = cleanTupType;
122125
junkfilter->jf_cleanMap = cleanMap;
123126
junkfilter->jf_resultSlot = slot;
124-
junkfilter->jf_execFilterJunkFunc =
125-
execFilterJunkFunc ? execFilterJunkFunc : ExecFilterJunk;
127+
128+
Assert(execFilterJunkFunc != ExecFilterJunk);
129+
junkfilter->jf_execFilterJunkFunc = execFilterJunkFunc;
126130

127131
return junkfilter;
128132
}
@@ -201,8 +205,9 @@ ExecInitJunkFilterConversion(List *targetList,
201205
junkfilter->jf_cleanTupType = cleanTupType;
202206
junkfilter->jf_cleanMap = cleanMap;
203207
junkfilter->jf_resultSlot = slot;
204-
junkfilter->jf_execFilterJunkFunc =
205-
execFilterJunkFunc ? execFilterJunkFunc : ExecFilterJunk;
208+
209+
Assert(execFilterJunkFunc != ExecFilterJunk);
210+
junkfilter->jf_execFilterJunkFunc = execFilterJunkFunc;
206211

207212
return junkfilter;
208213
}
@@ -252,6 +257,15 @@ ExecFindJunkAttributeInTlist(List *targetlist, const char *attrName)
252257
*/
253258
TupleTableSlot *
254259
ExecFilterJunk(JunkFilter *junkfilter, TupleTableSlot *slot)
260+
{
261+
if (junkfilter->jf_execFilterJunkFunc)
262+
return junkfilter->jf_execFilterJunkFunc(junkfilter, slot);
263+
264+
return ExecFilterJunkInternal(junkfilter, slot);
265+
}
266+
267+
static TupleTableSlot *
268+
ExecFilterJunkInternal(JunkFilter *junkfilter, TupleTableSlot *slot)
255269
{
256270
TupleTableSlot *resultSlot;
257271
AttrNumber *cleanMap;

src/backend/executor/execMain.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2028,7 +2028,7 @@ InitPlan(QueryDesc *queryDesc, int eflags)
20282028
slot = ExecInitExtraTupleSlot(estate, NULL, &TTSOpsVirtual);
20292029
j = ExecInitJunkFilter(planstate->plan->targetlist,
20302030
slot,
2031-
ExecFilterJunk);
2031+
NULL);
20322032
estate->es_junkFilter = j;
20332033

20342034
/* Want to return the cleaned tuple type */
@@ -2798,7 +2798,7 @@ ExecutePlan(EState *estate,
27982798
* because that tuple slot has the wrong descriptor.)
27992799
*/
28002800
if (estate->es_junkFilter != NULL)
2801-
slot = estate->es_junkFilter->jf_execFilterJunkFunc(estate->es_junkFilter, slot);
2801+
slot = ExecFilterJunk(estate->es_junkFilter, slot);
28022802

28032803
if (operation != CMD_SELECT && Gp_role == GP_ROLE_EXECUTE && !Gp_is_writer)
28042804
{

src/backend/executor/functions.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -896,9 +896,9 @@ init_sql_fcache(FunctionCallInfo fcinfo, Oid collation, bool lazyEvalOK)
896896
fcache->junkFilter = ExecInitJunkFilterConversion(resulttlist,
897897
rettupdesc,
898898
slot,
899-
ExecFilterJunk);
899+
NULL);
900900
else
901-
fcache->junkFilter = ExecInitJunkFilter(resulttlist, slot, ExecFilterJunk);
901+
fcache->junkFilter = ExecInitJunkFilter(resulttlist, slot, NULL);
902902
}
903903

904904
if (fcache->returnsTuple)
@@ -2226,7 +2226,7 @@ sqlfunction_receive(TupleTableSlot *slot, DestReceiver *self)
22262226
DR_sqlfunction *myState = (DR_sqlfunction *) self;
22272227

22282228
/* Filter tuple as needed */
2229-
slot = myState->filter->jf_execFilterJunkFunc(myState->filter, slot);
2229+
slot = ExecFilterJunk(myState->filter, slot);
22302230

22312231
/* Store the filtered tuple into the tuplestore */
22322232
tuplestore_puttupleslot(myState->tstore, slot);

src/backend/executor/nodeTableFunction.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ ExecInitTableFunction(TableFunctionScan *node, EState *estate, int eflags)
396396
scanstate->inputscan->junkfilter =
397397
ExecInitJunkFilter(subplan->plan->targetlist,
398398
NULL /* slot */,
399-
ExecFilterJunk);
399+
NULL);
400400
BlessTupleDesc(scanstate->inputscan->junkfilter->jf_cleanTupType);
401401

402402
/*
@@ -525,7 +525,7 @@ AnyTable_GetNextTuple(AnyTable t)
525525
* ----------------------------------------
526526
*/
527527

528-
slot = t->junkfilter->jf_execFilterJunkFunc(t->junkfilter, t->econtext->ecxt_outertuple);
528+
slot = ExecFilterJunk(t->junkfilter, t->econtext->ecxt_outertuple);
529529
return ExecCopySlotHeapTuple(slot);
530530
}
531531

0 commit comments

Comments
 (0)