mirror of
https://github.com/postgres/postgres.git
synced 2025-06-26 12:21:12 +03:00
Do execGrouping.c via expression eval machinery.
This has a performance benefit on own, although not hugely so. The primary benefit is that it will allow for to JIT tuple deforming and comparator invocations. Author: Andres Freund Discussion: https://postgr.es/m/20171129080934.amqqkke2zjtekd4t@alap3.anarazel.de
This commit is contained in:
@ -113,25 +113,18 @@ extern bool execCurrentOf(CurrentOfExpr *cexpr,
|
||||
/*
|
||||
* prototypes from functions in execGrouping.c
|
||||
*/
|
||||
extern bool execTuplesMatch(TupleTableSlot *slot1,
|
||||
TupleTableSlot *slot2,
|
||||
int numCols,
|
||||
AttrNumber *matchColIdx,
|
||||
FmgrInfo *eqfunctions,
|
||||
MemoryContext evalContext);
|
||||
extern bool execTuplesUnequal(TupleTableSlot *slot1,
|
||||
TupleTableSlot *slot2,
|
||||
int numCols,
|
||||
AttrNumber *matchColIdx,
|
||||
FmgrInfo *eqfunctions,
|
||||
MemoryContext evalContext);
|
||||
extern FmgrInfo *execTuplesMatchPrepare(int numCols,
|
||||
Oid *eqOperators);
|
||||
extern ExprState *execTuplesMatchPrepare(TupleDesc desc,
|
||||
int numCols,
|
||||
AttrNumber *keyColIdx,
|
||||
Oid *eqOperators,
|
||||
PlanState *parent);
|
||||
extern void execTuplesHashPrepare(int numCols,
|
||||
Oid *eqOperators,
|
||||
FmgrInfo **eqFunctions,
|
||||
FmgrInfo **hashFunctions);
|
||||
extern TupleHashTable BuildTupleHashTable(int numCols, AttrNumber *keyColIdx,
|
||||
extern TupleHashTable BuildTupleHashTable(PlanState *parent,
|
||||
TupleDesc inputDesc,
|
||||
int numCols, AttrNumber *keyColIdx,
|
||||
FmgrInfo *eqfunctions,
|
||||
FmgrInfo *hashfunctions,
|
||||
long nbuckets, Size additionalsize,
|
||||
@ -257,6 +250,11 @@ extern ExprState *ExecInitCheck(List *qual, PlanState *parent);
|
||||
extern List *ExecInitExprList(List *nodes, PlanState *parent);
|
||||
extern ExprState *ExecBuildAggTrans(AggState *aggstate, struct AggStatePerPhaseData *phase,
|
||||
bool doSort, bool doHash);
|
||||
extern ExprState *ExecBuildGroupingEqual(TupleDesc desc,
|
||||
int numCols,
|
||||
AttrNumber *keyColIdx,
|
||||
Oid *eqfunctions,
|
||||
PlanState *parent);
|
||||
extern ProjectionInfo *ExecBuildProjectionInfo(List *targetList,
|
||||
ExprContext *econtext,
|
||||
TupleTableSlot *slot,
|
||||
|
Reference in New Issue
Block a user