提交 c1690010 编写于 作者: H Heikki Linnakangas

Update "tuples out" counter in a single chokepoint.

Also move initialization of gpmon packet to single choke point at
ExecInitNode(), and sending the packet at ExecReScan() and ExecRestrPos().

A few CheckSendPlanStateGpmonPkt() remain here and there, which I didn't
dare to remove. Although I'm pretty sure we could just remove them as well
and no-one would notice the difference.
上级 be4fb709
......@@ -288,6 +288,9 @@ ExecReScan(PlanState *node, ExprContext *exprCtxt)
bms_free(node->chgParam);
node->chgParam = NULL;
}
/* Now would be a good time to also send an update to gpmon */
CheckSendPlanStateGpmonPkt(node);
}
/*
......@@ -427,6 +430,9 @@ ExecRestrPos(PlanState *node)
elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node));
break;
}
/* Now would be a good time to also send an update to gpmon */
CheckSendPlanStateGpmonPkt(node);
}
/*
......
......@@ -206,17 +206,6 @@ fetchNextBitmapPage(BitmapTableScanState *scanState)
return gotBitmapPage;
}
/*
* Initializes perfmon details for BitmapTableScan node.
*/
void
initGpmonPktForBitmapTableScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, BitmapTableScan));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
/*
* Checks eligibility of a tuple.
*
......
......@@ -827,6 +827,9 @@ ExecInitNode(Plan *node, EState *estate, int eflags)
if (estate->es_instrument && result != NULL)
result->instrument = InstrAlloc(1);
/* Also set up gpmon counters */
InitPlanNodeGpmonPkt(node, &result->gpmon_pkt, estate);
if (result != NULL)
{
SAVE_EXECUTOR_MEMORY_ACCOUNT(result, curMemoryAccountId);
......@@ -1205,6 +1208,12 @@ ExecProcNode(PlanState *node)
break;
}
if (!TupIsNull(result))
{
Gpmon_Incr_Rows_Out(&node->gpmon_pkt);
CheckSendPlanStateGpmonPkt(node);
}
if (node->instrument)
InstrStopNode(node->instrument, TupIsNull(result) ? 0.0 : 1.0);
......
......@@ -1478,9 +1478,6 @@ agg_retrieve_direct(AggState *aggstate)
* and the representative input tuple. Note we do not support
* aggregates returning sets ...
*/
Gpmon_Incr_Rows_Out(GpmonPktFromAggState(aggstate));
CheckSendPlanStateGpmonPkt(&aggstate->ss.ps);
return ExecProject(projInfo, NULL);
}
}
......@@ -1594,8 +1591,6 @@ agg_retrieve_hash_table(AggState *aggstate)
* and the representative input tuple. Note we do not support
* aggregates returning sets ...
*/
Gpmon_Incr_Rows_Out(GpmonPktFromAggState(aggstate));
CheckSendPlanStateGpmonPkt(&aggstate->ss.ps);
return ExecProject(projInfo, NULL);
}
}
......@@ -2351,8 +2346,6 @@ ExecInitAgg(Agg *node, EState *estate, int eflags)
aggstate->mem_manager.manager = aggstate->aggcontext;
aggstate->mem_manager.realloc_ratio = 1;
initGpmonPktForAgg((Plan *) node, &aggstate->ss.ps.gpmon_pkt, estate);
return aggstate;
}
......@@ -2628,14 +2621,6 @@ get_grouping_groupid(TupleTableSlot *slot, int grping_attno)
return grouping;
}
void
initGpmonPktForAgg(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, Agg));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
/*
* Combine the argument and sortkey expressions of an Aggref
* node into a single target list (of TargetEntry*) and, if
......
......@@ -282,8 +282,6 @@ ExecInitAppend(Append *node, EState *estate, int eflags)
appendstate->as_whichplan = appendstate->as_firstplan;
exec_append_initialize_next(appendstate);
initGpmonPktForAppend((Plan *)node, &appendstate->ps.gpmon_pkt, estate);
return appendstate;
}
......@@ -352,8 +350,6 @@ ExecAppend(AppendState *node)
* because it may have the wrong tuple descriptor in
* inherited-UPDATE cases.
*/
Gpmon_Incr_Rows_Out(GpmonPktFromAppendState(node));
CheckSendPlanStateGpmonPkt(&node->ps);
return result;
}
......@@ -441,20 +437,3 @@ ExecReScanAppend(AppendState *node, ExprContext *exprCtxt)
node->as_whichplan = node->as_firstplan;
exec_append_initialize_next(node);
}
void
initGpmonPktForAppend(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
int last_plan;
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, Append));
last_plan = list_length(((Append*)planNode)->appendplans) - 1;
if (((Append*)planNode)->isTarget && estate->es_evTuple != NULL)
{
last_plan = estate->es_result_relation_info - estate->es_result_relations;
Assert(last_plan >= 0 && last_plan < list_length(((Append*)planNode)->appendplans));
}
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -91,8 +91,6 @@ ExecInitBitmapAnd(BitmapAnd *node, EState *estate, int eflags)
i++;
}
initGpmonPktForBitmapAnd((Plan *) node, &bitmapandstate->ps.gpmon_pkt, estate);
return bitmapandstate;
}
......@@ -292,11 +290,3 @@ ExecReScanBitmapAnd(BitmapAndState *node, ExprContext *exprCtxt)
ExecReScan(subnode, exprCtxt);
}
}
void
initGpmonPktForBitmapAnd(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, BitmapAnd));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -285,11 +285,6 @@ BitmapAppendOnlyScanNext(BitmapAppendOnlyScanState *node)
/* Flag for the next call that no more tuples */
estate->es_evTupleNull[scanrelid - 1] = true;
if (!TupIsNull(slot))
{
Gpmon_Incr_Rows_Out(GpmonPktFromBitmapAppendOnlyScanState(node));
CheckSendPlanStateGpmonPkt(&node->ss.ps);
}
return slot;
}
......@@ -453,12 +448,6 @@ BitmapAppendOnlyScanNext(BitmapAppendOnlyScanState *node)
}
/* OK to return this tuple */
if (!TupIsNull(slot))
{
Gpmon_Incr_Rows_Out(GpmonPktFromBitmapAppendOnlyScanState(node));
CheckSendPlanStateGpmonPkt(&node->ss.ps);
}
return slot;
}
......@@ -527,8 +516,6 @@ ExecBitmapAppendOnlyReScan(BitmapAppendOnlyScanState *node, ExprContext *exprCtx
* Always rescan the input immediately, to ensure we can pass down any
* outer tuple that might be used in index quals.
*/
CheckSendPlanStateGpmonPkt(&node->ss.ps);
ExecReScan(outerPlanState(node), exprCtxt);
}
......@@ -678,8 +665,6 @@ ExecInitBitmapAppendOnlyScan(BitmapAppendOnlyScan *node, EState *estate, int efl
*/
outerPlanState(scanstate) = ExecInitNode(outerPlan(node), estate, eflags);
initGpmonPktForBitmapAppendOnlyScan((Plan *)node, &scanstate->ss.ps.gpmon_pkt, estate);
/*
* all done.
*/
......@@ -693,14 +678,6 @@ ExecCountSlotsBitmapAppendOnlyScan(BitmapAppendOnlyScan *node)
ExecCountSlotsNode(innerPlan((Plan *) node)) + BITMAPAPPENDONLYSCAN_NSLOTS;
}
void
initGpmonPktForBitmapAppendOnlyScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, BitmapAppendOnlyScan));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
void
ExecEagerFreeBitmapAppendOnlyScan(BitmapAppendOnlyScanState *node)
{
......
......@@ -185,11 +185,6 @@ BitmapHeapNext(BitmapHeapScanState *node)
/* Flag for the next call that no more tuples */
estate->es_evTupleNull[scanrelid - 1] = true;
if (!TupIsNull(slot))
{
Gpmon_Incr_Rows_Out(GpmonPktFromBitmapHeapScanState(node));
CheckSendPlanStateGpmonPkt(&node->ss.ps);
}
return slot;
}
......@@ -318,11 +313,6 @@ BitmapHeapNext(BitmapHeapScanState *node)
}
/* OK to return this tuple */
if (!TupIsNull(slot))
{
Gpmon_Incr_Rows_Out(GpmonPktFromBitmapHeapScanState(node));
CheckSendPlanStateGpmonPkt(&node->ss.ps);
}
return slot;
}
......@@ -495,7 +485,6 @@ ExecBitmapHeapReScan(BitmapHeapScanState *node, ExprContext *exprCtxt)
* Always rescan the input immediately, to ensure we can pass down any
* outer tuple that might be used in index quals.
*/
CheckSendPlanStateGpmonPkt(&node->ss.ps);
ExecReScan(outerPlanState(node), exprCtxt);
}
......@@ -632,8 +621,6 @@ ExecInitBitmapHeapScan(BitmapHeapScan *node, EState *estate, int eflags)
*/
outerPlanState(scanstate) = ExecInitNode(outerPlan(node), estate, eflags);
initGpmonPktForBitmapHeapScan((Plan *)node, &scanstate->ss.ps.gpmon_pkt, estate);
/*
* all done.
*/
......@@ -647,14 +634,6 @@ ExecCountSlotsBitmapHeapScan(BitmapHeapScan *node)
ExecCountSlotsNode(innerPlan((Plan *) node)) + BITMAPHEAPSCAN_NSLOTS;
}
void
initGpmonPktForBitmapHeapScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, BitmapHeapScan));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
void
ExecEagerFreeBitmapHeapScan(BitmapHeapScanState *node)
{
......
......@@ -153,8 +153,6 @@ ExecBitmapIndexReScan(BitmapIndexScanState *node, ExprContext *exprCtxt)
tbm_bitmap_free(node->bitmap);
node->bitmap = NULL;
}
CheckSendPlanStateGpmonPkt(&scanState->ss.ps);
}
/* ----------------------------------------------------------------
......@@ -224,8 +222,6 @@ ExecInitBitmapIndexScan(BitmapIndexScan *node, EState *estate, int eflags)
*/
Assert(NULL == scanState->ss.ss_currentRelation);
initGpmonPktForBitmapIndexScan((Plan *)node, &scanState->ss.ps.gpmon_pkt, estate);
return indexstate;
}
......@@ -235,12 +231,3 @@ ExecCountSlotsBitmapIndexScan(BitmapIndexScan *node)
return ExecCountSlotsNode(outerPlan((Plan *) node)) +
ExecCountSlotsNode(innerPlan((Plan *) node)) + BITMAPINDEXSCAN_NSLOTS;
}
void
initGpmonPktForBitmapIndexScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(NULL != planNode && NULL != gpmon_pkt && IsA(planNode, BitmapIndexScan));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -90,8 +90,6 @@ ExecInitBitmapOr(BitmapOr *node, EState *estate, int eflags)
bitmapplanstates[i] = ExecInitNode(initNode, estate, eflags);
i++;
}
initGpmonPktForBitmapOr((Plan *)node, &bitmaporstate->ps.gpmon_pkt, estate);
return bitmaporstate;
}
......@@ -257,11 +255,3 @@ ExecReScanBitmapOr(BitmapOrState *node, ExprContext *exprCtxt)
ExecReScan(subnode, exprCtxt);
}
}
void
initGpmonPktForBitmapOr(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, BitmapOr));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -82,8 +82,6 @@ ExecInitBitmapTableScan(BitmapTableScan *node, EState *estate, int eflags)
*/
outerPlanState(state) = ExecInitNode(outerPlan(node), estate, eflags);
initGpmonPktForBitmapTableScan((Plan *)node, &state->ss.ps.gpmon_pkt, estate);
return state;
}
......@@ -98,12 +96,7 @@ ExecBitmapTableScan(BitmapTableScanState *node)
TupleTableSlot *slot = DynamicScan_GetNextTuple(scanState, BitmapTableScanBeginPartition,
BitmapTableScanEndPartition, BitmapTableScanReScanPartition, BitmapTableScanFetchNext);
if (!TupIsNull(slot))
{
Gpmon_Incr_Rows_Out(GpmonPktFromBitmapTableScanState(node));
CheckSendPlanStateGpmonPkt(&scanState->ps);
}
else if (!scanState->ps.delayEagerFree)
if (TupIsNull(slot) && !scanState->ps.delayEagerFree)
{
ExecEagerFreeBitmapTableScan(node);
}
......@@ -122,7 +115,6 @@ ExecBitmapTableReScan(BitmapTableScanState *node, ExprContext *exprCtxt)
* Always rescan the input immediately, to ensure we can pass down any
* outer tuple that might be used in index quals.
*/
CheckSendPlanStateGpmonPkt(&node->ss.ps);
ExecReScan(outerPlanState(node), exprCtxt);
}
......
......@@ -197,8 +197,6 @@ ExecInitDML(DML *node, EState *estate, int eflags)
dmlstate->ps.cdbexplainfun = ExecDMLExplainEnd;
}
initGpmonPktForDML((Plan *)node, &dmlstate->ps.gpmon_pkt, estate);
return dmlstate;
}
......@@ -223,13 +221,4 @@ ExecCountSlotsDML(DML *node)
return ExecCountSlotsNode(outerPlan(node)) + DML_NSLOTS;
}
/* Tracing execution for GP Monitor. */
void
initGpmonPktForDML(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, DML));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
/* EOF */
......@@ -84,8 +84,6 @@ ExecInitDynamicIndexScan(DynamicIndexScan *node, EState *estate, int eflags)
InitRuntimeKeysContext(indexState);
initGpmonPktForDynamicIndexScan((Plan *)node, &indexState->ss.ps.gpmon_pkt, estate);
return dynamicIndexScanState;
}
......@@ -306,17 +304,8 @@ ExecDynamicIndexScan(DynamicIndexScanState *node)
{
slot = ExecScan(&indexState->ss, (ExecScanAccessMtd) IndexNext);
if (!TupIsNull(slot))
{
/* Report output rows to Gpmon */
Gpmon_Incr_Rows_Out(GpmonPktFromDynamicIndexScanState(node));
CheckSendPlanStateGpmonPkt(&indexState->ss.ps);
}
else
{
if (TupIsNull(slot))
CleanupOnePartition(indexState);
}
}
return slot;
}
......@@ -422,17 +411,4 @@ ExecDynamicIndexReScan(DynamicIndexScanState *node, ExprContext *exprCtxt)
*/
ResetExprContext(econtext);
}
CheckSendPlanStateGpmonPkt(&node->indexScanState.ss.ps);
}
/*
* Method for reporting DynamicIndexScan progress to gpperfmon
*/
void
initGpmonPktForDynamicIndexScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, DynamicIndexScan));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -69,8 +69,6 @@ ExecInitDynamicTableScan(DynamicTableScan *node, EState *estate, int eflags)
ALLOCSET_DEFAULT_INITSIZE,
ALLOCSET_DEFAULT_MAXSIZE);
initGpmonPktForDynamicTableScan((Plan *)node, &state->tableScanState.ss.ps.gpmon_pkt, estate);
return state;
}
......@@ -231,15 +229,8 @@ ExecDynamicTableScan(DynamicTableScanState *node)
SIMPLE_FAULT_INJECTOR(FaultDuringExecDynamicTableScan);
if (!TupIsNull(slot))
{
Gpmon_Incr_Rows_Out(GpmonPktFromDynamicTableScanState(node));
CheckSendPlanStateGpmonPkt(&scanState->ps);
}
else
{
if (TupIsNull(slot))
CleanupOnePartition(scanState);
}
}
return slot;
......@@ -325,8 +316,6 @@ ExecDynamicTableReScan(DynamicTableScanState *node, ExprContext *exprCtxt)
*/
ResetExprContext(econtext);
}
CheckSendPlanStateGpmonPkt(&node->tableScanState.ss.ps);
}
void
......@@ -350,11 +339,3 @@ ExecCountSlotsDynamicTableScan(DynamicTableScan *node)
{
return 0;
}
void
initGpmonPktForDynamicTableScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, DynamicTableScan));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -147,8 +147,6 @@ ExternalNext(ExternalScanState *node)
ExecClearTuple(slot);
continue;
}
Gpmon_Incr_Rows_Out(GpmonPktFromExtScanState(node));
CheckSendPlanStateGpmonPkt(&node->ss.ps);
/*
* CDB: Label each row with a synthetic ctid if needed for subquery dedup.
*/
......@@ -281,8 +279,6 @@ ExecInitExternalScan(ExternalScan *node, EState *estate, int eflags)
externalstate->ss.ps.delayEagerFree =
((eflags & (EXEC_FLAG_REWIND | EXEC_FLAG_BACKWARD | EXEC_FLAG_MARK)) != 0);
initGpmonPktForExternalScan((Plan *)node, &externalstate->ss.ps.gpmon_pkt, estate);
return externalstate;
}
......@@ -388,7 +384,6 @@ ExecExternalReScan(ExternalScanState *node, ExprContext *exprCtxt)
estate->es_evTupleNull[scanrelid - 1] = false;
return;
}
CheckSendPlanStateGpmonPkt(&node->ss.ps);
fileScan = node->ess_ScanDesc;
ItemPointerSet(&node->cdb_fake_ctid, 0, 0);
......@@ -396,14 +391,6 @@ ExecExternalReScan(ExternalScanState *node, ExprContext *exprCtxt)
external_rescan(fileScan);
}
void
initGpmonPktForExternalScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, ExternalScan));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
void
ExecEagerFreeExternalScan(ExternalScanState *node)
{
......
......@@ -112,17 +112,11 @@ FunctionNext(FunctionScanState *node)
}
}
if (!TupIsNull(slot))
{
Gpmon_Incr_Rows_Out(GpmonPktFromFuncScanState(node));
CheckSendPlanStateGpmonPkt(&node->ss.ps);
}
else if (!node->ss.ps.delayEagerFree)
if (TupIsNull(slot) && !node->ss.ps.delayEagerFree)
{
ExecEagerFreeFunctionScan((FunctionScanState *)(&node->ss.ps));
}
return slot;
}
......@@ -266,8 +260,6 @@ ExecInitFunctionScan(FunctionScan *node, EState *estate, int eflags)
*/
ExecAssignResultTypeFromTL(&scanstate->ss.ps);
ExecAssignScanProjectionInfo(&scanstate->ss);
initGpmonPktForFunctionScan((Plan *)node, &scanstate->ss.ps.gpmon_pkt, estate);
if (!IsResManagerMemoryPolicyNone())
{
......@@ -359,14 +351,6 @@ ExecFunctionReScan(FunctionScanState *node, ExprContext *exprCtxt)
tuplestore_rescan(node->tuplestorestate);
}
void
initGpmonPktForFunctionScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, FunctionScan));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
void
ExecEagerFreeFunctionScan(FunctionScanState *node)
{
......
......@@ -223,8 +223,6 @@ ExecInitHash(Hash *node, EState *estate, int eflags)
ExecAssignResultTypeFromTL(&hashstate->ps);
hashstate->ps.ps_ProjInfo = NULL;
initGpmonPktForHash((Plan *) node, &hashstate->ps.gpmon_pkt, estate);
return hashstate;
}
......@@ -1661,10 +1659,3 @@ ExecHashTableExplainBatchEnd(HashState *hashState, HashJoinTable hashtable)
}
END_MEMORY_ACCOUNT();
} /* ExecHashTableExplainBatchEnd */
void
initGpmonPktForHash(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, Hash));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -390,11 +390,7 @@ ExecHashJoin(HashJoinState *node)
node->hj_NeedNewOuter = true;
if (otherqual == NIL || ExecQual(otherqual, econtext, false))
{
Gpmon_Incr_Rows_Out(GpmonPktFromHashJoinState(node));
CheckSendPlanStateGpmonPkt(&node->js.ps);
return ExecProject(node->js.ps.ps_ProjInfo, NULL);
}
/*
* If semijoin and we didn't return the tuple, we're still
......@@ -424,11 +420,7 @@ ExecHashJoin(HashJoinState *node)
econtext->ecxt_innertuple = node->hj_NullInnerTupleSlot;
if (otherqual == NIL || ExecQual(otherqual, econtext, false))
{
Gpmon_Incr_Rows_Out(GpmonPktFromHashJoinState(node));
CheckSendPlanStateGpmonPkt(&node->js.ps);
return ExecProject(node->js.ps.ps_ProjInfo, NULL);
}
}
}
}
......@@ -624,8 +616,6 @@ ExecInitHashJoin(HashJoin *node, EState *estate, int eflags)
hjstate->hj_MatchedOuter = false;
hjstate->hj_OuterNotEmpty = false;
initGpmonPktForHashJoin((Plan *) node, &hjstate->js.ps.gpmon_pkt, estate);
return hjstate;
}
......@@ -765,8 +755,6 @@ ExecHashJoinOuterGetTuple(PlanState *outerNode,
elog(gp_workfile_caching_loglevel, "HashJoin built table with %.1f tuples for batch %d", hashtable->totalTuples, curbatch);
#endif
Gpmon_Incr_Rows_Out(GpmonPktFromHashJoinState(hjstate));
CheckSendPlanStateGpmonPkt(&hjstate->js.ps);
} /* if (curbatch == 0) */
/*
......@@ -1247,14 +1235,6 @@ isNotDistinctJoin(List *qualList)
return false;
}
void
initGpmonPktForHashJoin(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, HashJoin));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
void
ExecEagerFreeHashJoin(HashJoinState *node)
{
......
......@@ -151,8 +151,6 @@ IndexNext(IndexScanState *node)
/* Flag for the next call that no more tuples */
estate->es_evTupleNull[scanrelid - 1] = true;
Gpmon_Incr_Rows_Out(GpmonPktFromIndexScanState(node));
CheckSendPlanStateGpmonPkt(&node->ss.ps);
return slot;
}
......@@ -171,8 +169,6 @@ IndexNext(IndexScanState *node)
scandesc->xs_cbuf, /* buffer containing tuple */
false); /* don't pfree */
Gpmon_Incr_Rows_Out(GpmonPktFromIndexScanState(node));
CheckSendPlanStateGpmonPkt(&node->ss.ps);
return slot;
}
......@@ -276,8 +272,6 @@ ExecIndexReScan(IndexScanState *node, ExprContext *exprCtxt)
/* reset index scan */
index_rescan(node->iss_ScanDesc, node->iss_ScanKeys);
CheckSendPlanStateGpmonPkt(&node->ss.ps);
}
......@@ -518,7 +512,6 @@ void
ExecIndexRestrPos(IndexScanState *node)
{
index_restrpos(node->iss_ScanDesc);
CheckSendPlanStateGpmonPkt(&node->ss.ps);
}
/* ----------------------------------------------------------------
......@@ -642,8 +635,6 @@ ExecInitIndexScan(IndexScan *node, EState *estate, int eflags)
*/
indexstate->iss_RuntimeKeysReady = false;
initGpmonPktForIndexScan((Plan *)node, &indexstate->ss.ps.gpmon_pkt, estate);
/*
* If eflag contains EXEC_FLAG_REWIND or EXEC_FLAG_BACKWARD or EXEC_FLAG_MARK,
* then this node is not eager free safe.
......@@ -1096,14 +1087,6 @@ ExecCountSlotsIndexScan(IndexScan *node)
ExecCountSlotsNode(innerPlan((Plan *) node)) + INDEXSCAN_NSLOTS;
}
void
initGpmonPktForIndexScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, IndexScan));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
void
ExecEagerFreeIndexScan(IndexScanState *node)
{
......
......@@ -232,11 +232,6 @@ ExecLimit(LimitState *node)
/* Return the current tuple */
Assert(!TupIsNull(slot));
if (!TupIsNull(slot))
{
Gpmon_Incr_Rows_Out(GpmonPktFromLimitState(node));
CheckSendPlanStateGpmonPkt(&node->ps);
}
return slot;
}
......@@ -405,8 +400,6 @@ ExecInitLimit(Limit *node, EState *estate, int eflags)
*/
ExecAssignResultTypeFromTL(&limitstate->ps);
limitstate->ps.ps_ProjInfo = NULL;
initGpmonPktForLimit((Plan *)node, &limitstate->ps.gpmon_pkt, estate);
return limitstate;
}
......@@ -453,11 +446,3 @@ ExecReScanLimit(LimitState *node, ExprContext *exprCtxt)
if (((PlanState *) node)->lefttree->chgParam == NULL)
ExecReScan(((PlanState *) node)->lefttree, exprCtxt);
}
void
initGpmonPktForLimit(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, Limit));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -194,11 +194,6 @@ ExecMaterial(MaterialState *node)
if(tsa != NULL && ntuplestore_acc_tell(tsa, NULL))
{
ntuplestore_acc_current_tupleslot(tsa, slot);
if (!TupIsNull(slot))
{
Gpmon_Incr_Rows_Out(GpmonPktFromMaterialState(node));
CheckSendPlanStateGpmonPkt(&node->ss.ps);
}
return slot;
}
......@@ -239,8 +234,6 @@ ExecMaterial(MaterialState *node)
/*
* We can just return the subplan's returned tuple, without copying.
*/
Gpmon_Incr_Rows_Out(GpmonPktFromMaterialState(node));
CheckSendPlanStateGpmonPkt(&node->ss.ps);
return outerslot;
}
......@@ -375,8 +368,6 @@ ExecInitMaterial(Material *node, EState *estate, int eflags)
snEntry->shareState = (Node *) matstate;
}
initGpmonPktForMaterial((Plan *)node, &matstate->ss.ps.gpmon_pkt, estate);
return matstate;
}
......@@ -544,10 +535,8 @@ ExecChildRescan(MaterialState *node, ExprContext *exprCtxt)
* first ExecProcNode. Otherwise, we need to rescan subplan here
*/
if (((PlanState *) node)->lefttree->chgParam == NULL)
{
CheckSendPlanStateGpmonPkt(&node->ss.ps);
ExecReScan(((PlanState *) node)->lefttree, exprCtxt);
}
node->eof_underlying = false;
}
......@@ -610,14 +599,6 @@ ExecMaterialReScan(MaterialState *node, ExprContext *exprCtxt)
}
}
void
initGpmonPktForMaterial(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, Material));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
void
ExecEagerFreeMaterial(MaterialState *node)
{
......
......@@ -673,7 +673,6 @@ ExecMergeJoin(MergeJoinState *node)
for (;;)
{
MJ_dump(node);
CheckSendPlanStateGpmonPkt(&node->js.ps);
/*
* get the current state of the join and do things accordingly.
......@@ -1484,11 +1483,7 @@ ExecMergeJoin(MergeJoinState *node)
result = MJFillOuter(node);
if (result)
{
Gpmon_Incr_Rows_Out(GpmonPktFromMergeJoinState(node));
CheckSendPlanStateGpmonPkt(&node->js.ps);
return result;
}
}
/*
......@@ -1708,8 +1703,6 @@ ExecInitMergeJoin(MergeJoin *node, EState *estate, int eflags)
*/
MJ1_printf("ExecInitMergeJoin: %s\n",
"node initialized");
initGpmonPktForMergeJoin((Plan *)node, &mergestate->js.ps.gpmon_pkt, estate);
return mergestate;
}
......@@ -1779,13 +1772,6 @@ ExecReScanMergeJoin(MergeJoinState *node, ExprContext *exprCtxt)
ExecReScan(((PlanState *) node)->righttree, exprCtxt);
}
void
initGpmonPktForMergeJoin(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, MergeJoin));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
void
ExecEagerFreeMergeJoin(MergeJoinState *node)
......
......@@ -224,10 +224,6 @@ ExecMotion(MotionState * node)
if (tuple == NULL)
node->ps.state->active_recv_id = -1;
else
{
Gpmon_Incr_Rows_Out(GpmonPktFromMotionState(node));
}
#ifdef MEASURE_MOTION_TIME
gettimeofday(&stopTime, NULL);
......@@ -314,9 +310,6 @@ execMotionSender(MotionState * node)
doSendTuple(motion, node, outerTupleSlot);
/* doSendTuple() may have set node->stopRequested as a side-effect */
Gpmon_Incr_Rows_Out(GpmonPktFromMotionState(node));
CheckSendPlanStateGpmonPkt(&node->ps);
if (node->stopRequested)
{
elog(gp_workfile_caching_loglevel, "Motion initiating Squelch walker");
......@@ -861,7 +854,6 @@ ExecInitMotion(Motion * node, EState *estate, int eflags)
Assert(node->motionID <= sliceTable->nMotions);
estate->currentSliceIdInPlan = node->motionID;
int parentExecutingSliceId = estate->currentExecutingSliceId;
estate->currentExecutingSliceId = node->motionID;
/*
......@@ -1042,14 +1034,6 @@ ExecInitMotion(Motion * node, EState *estate, int eflags)
}
#endif
/*
* Temporarily set currentExecutingSliceId to the parent value, since
* this motion might be in the top slice of an InitPlan.
*/
estate->currentExecutingSliceId = parentExecutingSliceId;
initGpmonPktForMotion((Plan *)node, &motionstate->ps.gpmon_pkt, estate);
estate->currentExecutingSliceId = node->motionID;
return motionstate;
}
......@@ -1573,11 +1557,3 @@ ExecStopMotion(MotionState * node)
node->ps.state->interconnect_context,
motion->motionID);
}
void
initGpmonPktForMotion(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, Motion));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -226,7 +226,6 @@ ExecNestLoop(NestLoopState *node)
ENL1_printf("getting new inner tuple");
innerTupleSlot = ExecProcNode(innerPlan);
CheckSendPlanStateGpmonPkt(&node->js.ps);
node->reset_inner = true;
econtext->ecxt_innertuple = innerTupleSlot;
......@@ -267,8 +266,6 @@ ExecNestLoop(NestLoopState *node)
*/
ENL1_printf("qualification succeeded, projecting tuple");
Gpmon_Incr_Rows_Out(GpmonPktFromNLJState(node));
CheckSendPlanStateGpmonPkt(&node->js.ps);
return ExecProject(node->js.ps.ps_ProjInfo, NULL);
}
}
......@@ -334,9 +331,6 @@ ExecNestLoop(NestLoopState *node)
*/
ENL1_printf("qualification succeeded, projecting tuple");
Gpmon_Incr_Rows_Out(GpmonPktFromNLJState(node));
CheckSendPlanStateGpmonPkt(&node->js.ps);
return ExecProject(node->js.ps.ps_ProjInfo, NULL);
}
}
......@@ -502,8 +496,6 @@ ExecInitNestLoop(NestLoop *node, EState *estate, int eflags)
NL1_printf("ExecInitNestLoop: %s\n",
"node initialized");
initGpmonPktForNestLoop((Plan *)node, &nlstate->js.ps.gpmon_pkt, estate);
return nlstate;
}
......@@ -577,14 +569,6 @@ ExecReScanNestLoop(NestLoopState *node, ExprContext *exprCtxt)
/* CDB: We intentionally leave node->nl_innerSquelchNeeded unchanged on ReScan */
}
void
initGpmonPktForNestLoop(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, NestLoop));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
/* ----------------------------------------------------------------
* splitJoinQualExpr
*
......
......@@ -70,8 +70,6 @@ ExecRepeat(RepeatState *repeatstate)
/* Check the qual until we find one output tuple. */
if (ExecQual(repeatstate->ps.qual, econtext, false))
{
Gpmon_Incr_Rows_Out(GpmonPktFromRepeatState(repeatstate));
CheckSendPlanStateGpmonPkt(&repeatstate->ps);
return ExecProject(repeatstate->ps.ps_ProjInfo, NULL);
}
} while (repeatstate->repeat_count > 0);
......@@ -121,8 +119,6 @@ ExecRepeat(RepeatState *repeatstate)
/* Check the qual until we find one output tuple. */
if (ExecQual(repeatstate->ps.qual, econtext, false))
{
Gpmon_Incr_Rows_Out(GpmonPktFromRepeatState(repeatstate));
CheckSendPlanStateGpmonPkt(&repeatstate->ps);
return ExecProject(repeatstate->ps.ps_ProjInfo, NULL);
}
} while (repeatstate->repeat_count > 0);
......@@ -174,9 +170,7 @@ ExecInitRepeat(Repeat *node, EState *estate, int eflags)
ExecAssignProjectionInfo(&repeatstate->ps, NULL);
init_RepeatState(repeatstate);
initGpmonPktForRepeat((Plan *)node, &repeatstate->ps.gpmon_pkt, estate);
return repeatstate;
}
......@@ -227,11 +221,3 @@ init_RepeatState(RepeatState *repeatstate)
repeatstate->slot = NULL;
repeatstate->repeat_count = 0;
}
void
initGpmonPktForRepeat(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, Repeat));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -431,8 +431,6 @@ ExecInitResult(Result *node, EState *estate, int eflags)
SPI_ReserveMemory(((Plan *)node)->operatorMemKB * 1024L);
}
initGpmonPktForResult((Plan *)node, &resstate->ps.gpmon_pkt, estate);
return resstate;
}
......@@ -487,11 +485,3 @@ ExecReScanResult(ResultState *node, ExprContext *exprCtxt)
(node->ps.lefttree->chgParam == NULL || exprCtxt != NULL))
ExecReScan(node->ps.lefttree, exprCtxt);
}
void
initGpmonPktForResult(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, Result));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -72,8 +72,6 @@ ExecInitSequence(Sequence *node, EState *estate, int eflags)
ExecInitResultTupleSlot(estate, &sequenceState->ps);
ExecAssignResultTypeFromTL(&sequenceState->ps);
initGpmonPktForSequence((Plan *)node, &sequenceState->ps.gpmon_pkt, estate);
return sequenceState;
}
......@@ -126,15 +124,9 @@ ExecSequence(SequenceState *node)
}
Assert(!node->initState);
PlanState *lastPlan = node->subplans[node->numSubplans - 1];
TupleTableSlot *result = ExecProcNode(lastPlan);
if (!TupIsNull(result))
{
Gpmon_Incr_Rows_Out(GpmonPktFromSequenceState(node));
CheckSendPlanStateGpmonPkt(&node->ps);
}
/*
* Return the tuple as returned by the subplan as-is. We do
......@@ -182,11 +174,3 @@ ExecReScanSequence(SequenceState *node, ExprContext *exprCtxt)
node->initState = true;
}
void
initGpmonPktForSequence(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, Sequence));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -203,10 +203,6 @@ ExecSetOp(SetOpState *node)
*/
Assert(node->numOutput > 0);
node->numOutput--;
Gpmon_Incr_Rows_Out(GpmonPktFromSetOpState(node));
CheckSendPlanStateGpmonPkt(&node->ps);
return resultTupleSlot;
}
......@@ -274,8 +270,6 @@ ExecInitSetOp(SetOp *node, EState *estate, int eflags)
execTuplesMatchPrepare(node->numCols,
node->dupOperators);
initGpmonPktForSetOp((Plan *)node, &setopstate->ps.gpmon_pkt, estate);
return setopstate;
}
......@@ -324,11 +318,3 @@ ExecReScanSetOp(SetOpState *node, ExprContext *exprCtxt)
if (((PlanState *) node)->lefttree->chgParam == NULL)
ExecReScan(((PlanState *) node)->lefttree, exprCtxt);
}
void
initGpmonPktForSetOp(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, SetOp));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -196,9 +196,6 @@ ShareInputNext(ShareInputScanState *node)
if(!gotOK)
return NULL;
Gpmon_Incr_Rows_Out(GpmonPktFromShareInputState(node));
CheckSendPlanStateGpmonPkt(&node->ss.ps);
SIMPLE_FAULT_INJECTOR(ExecShareInputNext);
return slot;
......@@ -285,8 +282,6 @@ ExecInitShareInputScan(ShareInputScan *node, EState *estate, int eflags)
ShareNodeEntry *snEntry = ExecGetShareNodeEntry(estate, node->share_id, true);
snEntry->refcount++;
}
initGpmonPktForShareInputScan((Plan *)node, &sisstate->ss.ps.gpmon_pkt, estate);
return sisstate;
}
......@@ -378,8 +373,6 @@ void ExecShareInputScanReScan(ShareInputScanState *node, ExprContext *exprCtxt)
{
Assert(!"ExecShareInputScanReScan: invalid share type ");
}
CheckSendPlanStateGpmonPkt(&node->ss.ps);
}
/*************************************************************************
......@@ -891,14 +884,6 @@ shareinput_writer_waitdone(void *ctxt, int share_id, int nsharer_xslice)
UnregisterXactCallbackOnce(XCallBack_ShareInput_FIFO, (void *) ctxt);
}
void
initGpmonPktForShareInputScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, ShareInputScan));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
/*
* During EagerFree ShareInputScan decrements the
* reference count in ShareNodeEntry when its intra-slice share node.
......
......@@ -185,7 +185,6 @@ ExecSort(SortState *node)
break;
}
CheckSendPlanStateGpmonPkt(&node->ss.ps);
tuplesort_puttupleslot(tuplesortstate, slot);
}
......@@ -393,8 +392,6 @@ ExecInitSort(Sort *node, EState *estate, int eflags)
SO1_printf("ExecInitSort: %s\n",
"sort node initialized");
initGpmonPktForSort((Plan *)node, &sortstate->ss.ps.gpmon_pkt, estate);
return sortstate;
}
......@@ -534,14 +531,6 @@ ExecSortExplainEnd(PlanState *planstate, struct StringInfoData *buf)
} /* ExecSortExplainEnd */
void
initGpmonPktForSort(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, Sort));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
void
ExecEagerFreeSort(SortState *node)
{
......
......@@ -77,12 +77,6 @@ SubqueryNext(SubqueryScanState *node)
slot_set_ctid_from_fake(slot, &node->cdb_fake_ctid);
}
if (!TupIsNull(slot))
{
Gpmon_Incr_Rows_Out(GpmonPktFromSubqueryScanState(node));
CheckSendPlanStateGpmonPkt(&node->ss.ps);
}
return slot;
}
......@@ -186,8 +180,6 @@ ExecInitSubqueryScan(SubqueryScan *node, EState *estate, int eflags)
ExecAssignResultTypeFromTL(&subquerystate->ss.ps);
ExecAssignScanProjectionInfo(&subquerystate->ss);
initGpmonPktForSubqueryScan((Plan *)node, &subquerystate->ss.ps.gpmon_pkt, estate);
return subquerystate;
}
......@@ -267,10 +259,3 @@ ExecSubqueryReScan(SubqueryScanState *node, ExprContext *exprCtxt)
CheckSendPlanStateGpmonPkt(&node->ss.ps);
}
void
initGpmonPktForSubqueryScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, SubqueryScan));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -49,7 +49,6 @@
static void setupFunctionArguments(TableFunctionState *node);
static TupleTableSlot *TableFunctionNext(TableFunctionState *node);
static gpmon_packet_t *GpmonPktFromTableFunctionState(TableFunctionState *node);
static void initGpmonPktForTableFunction(Plan *planNode,
gpmon_packet_t *gpmon_pkt,
EState *estate);
......@@ -254,14 +253,6 @@ TableFunctionNext(TableFunctionState *node)
Assert(!TupIsNull(slot));
node->ss.ss_ScanTupleSlot = slot;
/* Update gpmon statistics */
if (!TupIsNull(slot))
{
Gpmon_Incr_Rows_Out(GpmonPktFromTableFunctionState(node));
CheckSendPlanStateGpmonPkt(&node->ss.ps);
}
return slot;
}
......@@ -497,12 +488,6 @@ initGpmonPktForTableFunction(Plan *planNode,
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
gpmon_packet_t *
GpmonPktFromTableFunctionState(TableFunctionState *node)
{
return &node->ss.ps.gpmon_pkt;
}
/* Callback functions exposed to the user */
TupleDesc
......
......@@ -30,8 +30,6 @@ ExecInitTableScan(TableScan *node, EState *estate, int eflags)
state->ss.scan_state = SCAN_INIT;
InitScanStateInternal((ScanState *)state, (Plan *)node, estate, eflags, true /* initCurrentRelation */);
initGpmonPktForTableScan((Plan *)node, &state->ss.ps.gpmon_pkt, estate);
return state;
}
......@@ -48,14 +46,8 @@ ExecTableScan(TableScanState *node)
}
TupleTableSlot *slot = ExecTableScanRelation(scanState);
if (!TupIsNull(slot))
{
Gpmon_Incr_Rows_Out(GpmonPktFromTableScanState(node));
CheckSendPlanStateGpmonPkt(&scanState->ps);
}
else if (!scanState->ps.delayEagerFree)
if (TupIsNull(slot) && !scanState->ps.delayEagerFree)
{
EndTableScanRelation(scanState);
}
......@@ -79,8 +71,6 @@ void
ExecTableReScan(TableScanState *node, ExprContext *exprCtxt)
{
ReScanRelation((ScanState *)node);
CheckSendPlanStateGpmonPkt(&node->ss.ps);
}
void
......@@ -93,8 +83,6 @@ void
ExecTableRestrPos(TableScanState *node)
{
RestrPosScanRelation((ScanState *)node);
CheckSendPlanStateGpmonPkt(&node->ss.ps);
}
int
......@@ -103,18 +91,6 @@ ExecCountSlotsTableScan(TableScan *node)
return TABLE_SCAN_NSLOTS;
}
void
initGpmonPktForTableScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL);
Assert(IsA(planNode, TableScan) ||
IsA(planNode, SeqScan) ||
IsA(planNode, AppendOnlyScan) ||
IsA(planNode, AOCSScan));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
void
ExecEagerFreeTableScan(TableScanState *node)
{
......
......@@ -297,11 +297,6 @@ TidNext(TidScanState *node)
/* Flag for the next call that no more tuples */
estate->es_evTupleNull[scanrelid - 1] = true;
if (!TupIsNull(slot))
{
Gpmon_Incr_Rows_Out(GpmonPktFromTidScanState(node));
CheckSendPlanStateGpmonPkt(&node->ss.ps);
}
return slot;
}
......@@ -588,8 +583,6 @@ ExecInitTidScan(TidScan *node, EState *estate, int eflags)
ExecAssignResultTypeFromTL(&tidstate->ss.ps);
ExecAssignScanProjectionInfo(&tidstate->ss);
initGpmonPktForTidScan((Plan *)node, &tidstate->ss.ps.gpmon_pkt, estate);
/*
* all done.
*/
......@@ -602,11 +595,3 @@ ExecCountSlotsTidScan(TidScan *node)
return ExecCountSlotsNode(outerPlan((Plan *) node)) +
ExecCountSlotsNode(innerPlan((Plan *) node)) + TIDSCAN_NSLOTS;
}
void
initGpmonPktForTidScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, TidScan));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -99,12 +99,6 @@ ExecUnique(UniqueState *node)
* won't guarantee that this source tuple is still accessible after
* fetching the next source tuple.
*/
if (!TupIsNull(slot))
{
Gpmon_Incr_Rows_Out(GpmonPktFromUniqueState(node));
CheckSendPlanStateGpmonPkt(&node->ps);
}
return ExecCopySlot(resultTupleSlot, slot);
}
......@@ -169,8 +163,6 @@ ExecInitUnique(Unique *node, EState *estate, int eflags)
uniquestate->eqfunctions =
execTuplesMatchPrepare(node->numCols,
node->uniqOperators);
initGpmonPktForUnique((Plan *)node, &uniquestate->ps.gpmon_pkt, estate);
return uniquestate;
}
......@@ -217,11 +209,3 @@ ExecReScanUnique(UniqueState *node, ExprContext *exprCtxt)
if (((PlanState *) node)->lefttree->chgParam == NULL)
ExecReScan(((PlanState *) node)->lefttree, exprCtxt);
}
void
initGpmonPktForUnique(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, Unique));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -277,8 +277,6 @@ ExecInitValuesScan(ValuesScan *node, EState *estate, int eflags)
*/
ExecAssignResultTypeFromTL(&scanstate->ss.ps);
ExecAssignScanProjectionInfo(&scanstate->ss);
initGpmonPktForValuesScan((Plan *)node, &scanstate->ss.ps.gpmon_pkt, estate);
return scanstate;
}
......@@ -354,14 +352,3 @@ ExecValuesReScan(ValuesScanState *node, ExprContext *exprCtxt)
node->curr_idx = -1;
}
void
initGpmonPktForValuesScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate)
{
RangeTblEntry *rte;
Assert(planNode != NULL && gpmon_pkt != NULL);
rte = rt_fetch(((ValuesScan *)planNode)->scan.scanrelid, estate->es_range_table);
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
......@@ -4549,16 +4549,8 @@ ExecWindow(WindowState * wstate)
*/
resultSlot = ExecProject(wstate->ps.ps_ProjInfo, &isDone);
if (!TupIsNull(resultSlot))
{
Gpmon_Incr_Rows_Out(GpmonPktFromWindowState(wstate));
CheckSendPlanStateGpmonPkt(&wstate->ps);
}
else
{
if (TupIsNull(resultSlot))
ExecEagerFreeWindow(wstate);
}
return resultSlot;
}
......@@ -5822,8 +5814,6 @@ ExecInitWindow(WindowAgg * node, EState *estate, int eflags)
/* Frame initialisation can take place now */
init_frames(wstate);
initGpmonPktForWindow((Plan *) node, &wstate->ps.gpmon_pkt, estate);
return wstate;
}
......@@ -6762,14 +6752,6 @@ first_value_generic(PG_FUNCTION_ARGS)
return d;
}
void
initGpmonPktForWindow(Plan * planNode, gpmon_packet_t * gpmon_pkt, EState *estate)
{
Assert(planNode != NULL && gpmon_pkt != NULL && IsA(planNode, WindowAgg));
InitPlanNodeGpmonPkt(planNode, gpmon_pkt, estate);
}
void
ExecEagerFreeWindow(WindowState * node)
{
......
......@@ -195,11 +195,6 @@ extern Datum datumCopyWithMemManager(Datum oldvalue, Datum value, bool typByVal,
MemoryManagerContainer *mem_manager);
extern void ExecEagerFreeAgg(AggState *aggstate);
static inline gpmon_packet_t * GpmonPktFromAggState(AggState *node)
{
return &node->ss.ps.gpmon_pkt;
}
extern List *combineAggrefArgs(Aggref *aggref, List **sort_clauses);
extern List *combinePercentileArgs(PercentileExpr *p);
......
......@@ -22,9 +22,4 @@ extern TupleTableSlot *ExecAppend(AppendState *node);
extern void ExecEndAppend(AppendState *node);
extern void ExecReScanAppend(AppendState *node, ExprContext *exprCtxt);
static inline gpmon_packet_t * GpmonPktFromAppendState(AppendState *node)
{
return &node->ps.gpmon_pkt;
}
#endif /* NODEAPPEND_H */
......@@ -22,9 +22,4 @@ extern Node *MultiExecBitmapAnd(BitmapAndState *node);
extern void ExecEndBitmapAnd(BitmapAndState *node);
extern void ExecReScanBitmapAnd(BitmapAndState *node, ExprContext *exprCtxt);
static inline gpmon_packet_t *GpmonPktFromBitmapAndState(BitmapAndState *node)
{
return &node->ps.gpmon_pkt;
}
#endif /* NODEBITMAPAND_H */
......@@ -27,10 +27,5 @@ extern void ExecEndBitmapAppendOnlyScan(BitmapAppendOnlyScanState *node);
extern void ExecBitmapAppendOnlyReScan(BitmapAppendOnlyScanState *node, ExprContext *exprCtxt);
extern void ExecEagerFreeBitmapAppendOnlyScan(BitmapAppendOnlyScanState *node);
static inline gpmon_packet_t * GpmonPktFromBitmapAppendOnlyScanState(BitmapAppendOnlyScanState *node)
{
return &node->ss.ps.gpmon_pkt;
}
#endif /* NODEBITMAPAPPENDONLYSCAN_H */
......@@ -25,9 +25,4 @@ extern void ExecEagerFreeBitmapHeapScan(BitmapHeapScanState *node);
extern void bitgetpage(HeapScanDesc scan, TBMIterateResult *tbmres);
static inline gpmon_packet_t * GpmonPktFromBitmapHeapScanState(BitmapHeapScanState *node)
{
return &node->ss.ps.gpmon_pkt;
}
#endif /* NODEBITMAPHEAPSCAN_H */
......@@ -22,9 +22,4 @@ extern Node *MultiExecBitmapIndexScan(BitmapIndexScanState *node);
extern void ExecEndBitmapIndexScan(BitmapIndexScanState *node);
extern void ExecBitmapIndexReScan(BitmapIndexScanState *node, ExprContext *exprCtxt);
static inline gpmon_packet_t * GpmonPktFromBitmapIndexScanState(BitmapIndexScanState *node)
{
return &((IndexScanState*)node)->ss.ps.gpmon_pkt;
}
#endif /* NODEBITMAPINDEXSCAN_H */
......@@ -22,8 +22,4 @@ extern Node *MultiExecBitmapOr(BitmapOrState *node);
extern void ExecEndBitmapOr(BitmapOrState *node);
extern void ExecReScanBitmapOr(BitmapOrState *node, ExprContext *exprCtxt);
static inline gpmon_packet_t * GpmonPktFromBitmapOrState(BitmapOrState *node)
{
return &node->ps.gpmon_pkt;
}
#endif /* NODEBITMAPOR_H */
......@@ -29,10 +29,4 @@ extern void BitmapTableScanEndPartition(ScanState *node);
extern void BitmapTableScanReScanPartition(ScanState *node);
extern TupleTableSlot *BitmapTableScanFetchNext(ScanState *node);
static inline gpmon_packet_t * GpmonPktFromBitmapTableScanState(BitmapTableScanState *node)
{
return &node->ss.ps.gpmon_pkt;
}
#endif /* NODEBITMAPTABLESCAN_H */
......@@ -24,8 +24,4 @@ extern void ExecDynamicTableMarkPos(DynamicTableScanState *node);
extern void ExecDynamicTableRestrPos(DynamicTableScanState *node);
extern void ExecDynamicTableReScan(DynamicTableScanState *node, ExprContext *exprCtxt);
static inline gpmon_packet_t * GpmonPktFromDynamicTableScanState(DynamicTableScanState *node)
{
return &node->tableScanState.ss.ps.gpmon_pkt;
}
#endif
......@@ -24,10 +24,4 @@ extern void ExecStopExternalScan(ExternalScanState *node);
extern void ExecExternalReScan(ExternalScanState *node, ExprContext *exprCtxt);
extern void ExecEagerFreeExternalScan(ExternalScanState *node);
static inline gpmon_packet_t *GpmonPktFromExtScanState(ExternalScanState *node)
{
return &node->ss.ps.gpmon_pkt;
}
#endif /* NODEEXTERNALSCAN_H */
......@@ -23,9 +23,4 @@ extern void ExecEndFunctionScan(FunctionScanState *node);
extern void ExecFunctionReScan(FunctionScanState *node, ExprContext *exprCtxt);
extern void ExecEagerFreeFunctionScan(FunctionScanState *node);
static inline gpmon_packet_t * GpmonPktFromFuncScanState(FunctionScanState *node)
{
return &node->ss.ps.gpmon_pkt;
}
#endif /* NODEFUNCTIONSCAN_H */
......@@ -50,11 +50,6 @@ extern void ExecHashTableExplainInit(HashState *hashState, HashJoinState *hjstat
HashJoinTable hashtable);
extern void ExecHashTableExplainBatchEnd(HashState *hashState, HashJoinTable hashtable);
static inline gpmon_packet_t * GpmonPktFromHashState(HashState *node)
{
return &node->ps.gpmon_pkt;
}
static inline int
ExecHashRowSize(int tupwidth)
{
......
......@@ -31,9 +31,4 @@ extern void ExecHashJoinSaveTuple(PlanState *ps, MemTuple tuple, uint32 hashvalu
MemoryContext bfCxt);
extern void ExecEagerFreeHashJoin(HashJoinState *node);
static inline gpmon_packet_t * GpmonPktFromHashJoinState(HashJoinState *s)
{
return &s->js.ps.gpmon_pkt;
}
#endif /* NODEHASHJOIN_H */
......@@ -39,8 +39,4 @@ extern bool ExecIndexAdvanceArrayKeys(IndexArrayKeyInfo *arrayKeys, int numArray
extern TupleTableSlot *IndexNext(IndexScanState *node);
static inline gpmon_packet_t * GpmonPktFromIndexScanState(IndexScanState *node)
{
return &node->ss.ps.gpmon_pkt;
}
#endif /* NODEINDEXSCAN_H */
......@@ -22,9 +22,4 @@ extern TupleTableSlot *ExecLimit(LimitState *node);
extern void ExecEndLimit(LimitState *node);
extern void ExecReScanLimit(LimitState *node, ExprContext *exprCtxt);
static inline gpmon_packet_t * GpmonPktFromLimitState(LimitState *node)
{
return &node->ps.gpmon_pkt;
}
#endif /* NODELIMIT_H */
......@@ -25,9 +25,4 @@ extern void ExecMaterialRestrPos(MaterialState *node);
extern void ExecMaterialReScan(MaterialState *node, ExprContext *exprCtxt);
extern void ExecEagerFreeMaterial(MaterialState *node);
static inline gpmon_packet_t * GpmonPktFromMaterialState(MaterialState *node)
{
return &node->ss.ps.gpmon_pkt;
}
#endif /* NODEMATERIAL_H */
......@@ -23,8 +23,4 @@ extern void ExecEndMergeJoin(MergeJoinState *node);
extern void ExecReScanMergeJoin(MergeJoinState *node, ExprContext *exprCtxt);
extern void ExecEagerFreeMergeJoin(MergeJoinState *node);
static inline gpmon_packet_t *GpmonPktFromMergeJoinState(MergeJoinState *node)
{
return &node->js.ps.gpmon_pkt;
}
#endif /* NODEMERGEJOIN_H */
......@@ -27,9 +27,4 @@ extern void ExecStopMotion(MotionState *node);
extern bool isMotionGather(const Motion *m);
static inline gpmon_packet_t * GpmonPktFromMotionState(MotionState *node)
{
return &node->ps.gpmon_pkt;
}
#endif /* NODEMOTION_H */
......@@ -22,9 +22,4 @@ extern TupleTableSlot *ExecNestLoop(NestLoopState *node);
extern void ExecEndNestLoop(NestLoopState *node);
extern void ExecReScanNestLoop(NestLoopState *node, ExprContext *exprCtxt);
static inline gpmon_packet_t * GpmonPktFromNLJState(NestLoopState *node)
{
return &node->js.ps.gpmon_pkt;
}
#endif /* NODENESTLOOP_H */
......@@ -23,9 +23,4 @@ extern int ExecCountSlotsRepeat(Repeat *node);
extern void ExecEndRepeat(RepeatState *node);
extern void ExecReScanRepeat(RepeatState *node, ExprContext *exprCtxt);
static inline gpmon_packet_t * GpmonPktFromRepeatState(RepeatState *node)
{
return &node->ps.gpmon_pkt;
}
#endif
......@@ -24,8 +24,4 @@ extern void ExecResultMarkPos(ResultState *node);
extern void ExecResultRestrPos(ResultState *node);
extern void ExecReScanResult(ResultState *node, ExprContext *exprCtxt);
static inline gpmon_packet_t * GpmonPktFromResultState(ResultState *node)
{
return &node->ps.gpmon_pkt;
}
#endif /* NODERESULT_H */
......@@ -24,9 +24,4 @@ extern void ExecReScanSequence(SequenceState *node, ExprContext *exprCtxt);
extern void ExecEndSequence(SequenceState *node);
extern int ExecCountSlotsSequence(Sequence *node);
static inline gpmon_packet_t * GpmonPktFromSequenceState(SequenceState *node)
{
return &node->ps.gpmon_pkt;
}
#endif
......@@ -22,9 +22,4 @@ extern TupleTableSlot *ExecSetOp(SetOpState *node);
extern void ExecEndSetOp(SetOpState *node);
extern void ExecReScanSetOp(SetOpState *node, ExprContext *exprCtxt);
static inline gpmon_packet_t * GpmonPktFromSetOpState(SetOpState *node)
{
return &node->ps.gpmon_pkt;
}
#endif /* NODESETOP_H */
......@@ -26,9 +26,4 @@ extern void ExecEagerFreeShareInputScan(ShareInputScanState *node);
extern void ExecSliceDependencyShareInputScan(ShareInputScanState *node);
static inline gpmon_packet_t * GpmonPktFromShareInputState(ShareInputScanState *node)
{
return &node->ss.ps.gpmon_pkt;
}
#endif /* NODESHAREINPUTSCAN_H */
......@@ -25,9 +25,4 @@ extern void ExecSortRestrPos(SortState *node);
extern void ExecReScanSort(SortState *node, ExprContext *exprCtxt);
extern void ExecEagerFreeSort(SortState *node);
static inline gpmon_packet_t * GpmonPktFromSortState(SortState *node)
{
return &node->ss.ps.gpmon_pkt;
}
#endif /* NODESORT_H */
......@@ -22,10 +22,4 @@ extern TupleTableSlot *ExecSubqueryScan(SubqueryScanState *node);
extern void ExecEndSubqueryScan(SubqueryScanState *node);
extern void ExecSubqueryReScan(SubqueryScanState *node, ExprContext *exprCtxt);
static inline gpmon_packet_t * GpmonPktFromSubqueryScanState(SubqueryScanState *node)
{
return &node->ss.ps.gpmon_pkt;
}
#endif /* NODESUBQUERYSCAN_H */
......@@ -25,9 +25,4 @@ extern void ExecTableRestrPos(TableScanState *node);
extern void ExecTableReScan(TableScanState *node, ExprContext *exprCtxt);
extern void ExecEagerFreeTableScan(TableScanState *node);
static inline gpmon_packet_t * GpmonPktFromTableScanState(TableScanState *node)
{
return &node->ss.ps.gpmon_pkt;
}
#endif
......@@ -24,8 +24,4 @@ extern void ExecTidMarkPos(TidScanState *node);
extern void ExecTidRestrPos(TidScanState *node);
extern void ExecTidReScan(TidScanState *node, ExprContext *exprCtxt);
static inline gpmon_packet_t * GpmonPktFromTidScanState(TidScanState *node)
{
return &node->ss.ps.gpmon_pkt;
}
#endif /* NODETIDSCAN_H */
......@@ -22,8 +22,4 @@ extern TupleTableSlot *ExecUnique(UniqueState *node);
extern void ExecEndUnique(UniqueState *node);
extern void ExecReScanUnique(UniqueState *node, ExprContext *exprCtxt);
static inline gpmon_packet_t * GpmonPktFromUniqueState(UniqueState *node)
{
return &node->ps.gpmon_pkt;
}
#endif /* NODEUNIQUE_H */
......@@ -24,8 +24,4 @@ extern void ExecValuesMarkPos(ValuesScanState *node);
extern void ExecValuesRestrPos(ValuesScanState *node);
extern void ExecValuesReScan(ValuesScanState *node, ExprContext *exprCtxt);
static inline gpmon_packet_t * GpmonPktFromValueScanState(ValuesScanState *node)
{
return &node->ss.ps.gpmon_pkt;
}
#endif /* NODEVALUESSCAN_H */
......@@ -48,9 +48,4 @@ extern Datum last_value_generic(PG_FUNCTION_ARGS);
extern Datum first_value_generic(PG_FUNCTION_ARGS);
extern Datum lag_generic(PG_FUNCTION_ARGS);
static inline gpmon_packet_t * GpmonPktFromWindowState(WindowState *node)
{
return &node->ps.gpmon_pkt;
}
#endif /* NODEWINDOW_H */
......@@ -2705,39 +2705,4 @@ typedef struct PartitionSelectorState
ProjectionInfo *partTabProj;
} PartitionSelectorState;
extern void initGpmonPktForResult(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForAppend(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForSequence(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForBitmapAnd(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForBitmapOr(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForTableScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForDynamicTableScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForExternalScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForIndexScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForDynamicIndexScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForBitmapIndexScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForBitmapHeapScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForBitmapAppendOnlyScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForTidScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForSubqueryScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForFunctionScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForValuesScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForNestLoop(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForMergeJoin(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForHashJoin(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForMaterial(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForSort(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForGroup(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForAgg(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForUnique(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForHash(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForSetOp(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForLimit(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForMotion(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForShareInputScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForWindow(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForRepeat(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForDML(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
extern void initGpmonPktForPartitionSelector(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate);
#endif /* EXECNODES_H */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册