if (epqstate != NULL)
{ /* *WeareinsideanEvalPlanQualrecheck.Returnthetesttupleif *oneisavailable,afterrecheckinganyaccess-method-specific *conditions.
*/
Index scanrelid = ((Scan *) node->ps.plan)->scanrelid;
if (scanrelid == 0)
{ /* *ThisisaForeignScanorCustomScanwhichhaspusheddowna *jointotheremoteside.IfitisadescendantnodeintheEPQ *recheckplantree,runtherecheckmethodfunction.Otherwise, *runtheaccessmethodfunctionbelow.
*/ if (bms_is_member(epqstate->epqParam, node->ps.plan->extParam))
{ /* *Therecheckmethodisresponsiblenotonlyforrechecking *thescan/joinqualsbutalsoforstoringthecorrecttuple *intheslot.
*/
TupleTableSlot *slot = node->ss_ScanTupleSlot;
if (!(*recheckMtd) (node, slot))
ExecClearTuple(slot); /* would not be returned by scan */ return slot;
}
} elseif (epqstate->relsubs_done[scanrelid - 1])
{ /* *Returnemptyslot,aseitherthereisnoEPQtupleforthisrel *orwealreadyreturnedit.
*/
/* Mark to remember that we shouldn't return it again */
epqstate->relsubs_done[scanrelid - 1] = true;
/* Return empty slot if we haven't got a test tuple */ if (TupIsNull(slot)) return NULL;
/* Check if it meets the access-method conditions */ if (!(*recheckMtd) (node, slot)) return ExecClearTuple(slot); /* would not be returned by
* scan */ return slot;
} elseif (epqstate->relsubs_rowmark[scanrelid - 1] != NULL)
{ /* *Fetchandreturnreplacementtupleusinganon-lockingrowmark.
*/
TupleTableSlot *slot = node->ss_ScanTupleSlot;
/* Mark to remember that we shouldn't return more */
epqstate->relsubs_done[scanrelid - 1] = true;
if (!EvalPlanQualFetchRowMark(epqstate, scanrelid, slot)) return NULL;
/* Return empty slot if we haven't got a test tuple */ if (TupIsNull(slot)) return NULL;
/* Check if it meets the access-method conditions */ if (!(*recheckMtd) (node, slot)) return ExecClearTuple(slot); /* would not be returned by
* scan */ return slot;
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.