/* * ExecutorFinish hook: all we need do is track nesting depth */ static void explain_ExecutorFinish(QueryDesc *queryDesc) { nesting_level++; PG_TRY(); { if (prev_ExecutorFinish) prev_ExecutorFinish(queryDesc); else standard_ExecutorFinish(queryDesc); nesting_level--; } PG_CATCH(); { nesting_level--; PG_RE_THROW(); } PG_END_TRY(); }
static void MMExecutorFinish(QueryDesc *queryDesc) { if (MMDoReplication) { CmdType operation = queryDesc->operation; EState *estate = queryDesc->estate; if (estate->es_processed != 0) { MMIsDistributedTrans |= operation == CMD_INSERT || operation == CMD_UPDATE || operation == CMD_DELETE; } } if (PreviousExecutorFinishHook != NULL) { PreviousExecutorFinishHook(queryDesc); } else { standard_ExecutorFinish(queryDesc); } }