diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 39e7234e3ac..11e0ee96a1d 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -1983,7 +1983,7 @@ ExplainNode(PlanState *planstate, List *ancestors, show_instrumentation_count("Rows Removed by Filter", 1, planstate, es); if (es->analyze) - show_indexscan_nprimscans(planstate, es); + show_indexscan_nprimscans(((IndexScanState *) planstate)->iss_ScanDesc, es); break; case T_IndexOnlyScan: show_scan_qual(((IndexOnlyScan *) plan)->indexqual, @@ -2001,14 +2001,14 @@ ExplainNode(PlanState *planstate, List *ancestors, { ExplainPropertyFloat("Heap Fetches", NULL, planstate->instrument->ntuples2, 0, es); - show_indexscan_nprimscans(planstate, es); + show_indexscan_nprimscans(((IndexOnlyScanState *) planstate)->iss_ScanDesc, es); } break; case T_BitmapIndexScan: show_scan_qual(((BitmapIndexScan *) plan)->indexqualorig, "Index Cond", planstate, ancestors, es); if (es->analyze) - show_indexscan_nprimscans(planstate, es); + show_indexscan_nprimscans(((BitmapIndexScanState *) planstate)->iss_ScanDesc, es); break; case T_BitmapHeapScan: show_scan_qual(((BitmapHeapScan *) plan)->bitmapqualorig, @@ -2523,26 +2523,8 @@ show_expression(Node *node, const char *qlabel, * IndexOnlyScan node, or BitmapIndexScan node */ static void -show_indexscan_nprimscans(PlanState *planstate, ExplainState *es) +show_indexscan_nprimscans(IndexScanDescData *scanDesc, ExplainState *es) { - Plan *plan = planstate->plan; - struct IndexScanDescData *scanDesc = NULL; - - switch (nodeTag(plan)) - { - case T_IndexScan: - scanDesc = ((IndexScanState *) planstate)->iss_ScanDesc; - break; - case T_IndexOnlyScan: - scanDesc = ((IndexOnlyScanState *) planstate)->ioss_ScanDesc; - break; - case T_BitmapIndexScan: - scanDesc = ((BitmapIndexScanState *) planstate)->biss_ScanDesc; - break; - default: - break; - } - if (scanDesc && scanDesc->nprimscans > 0) ExplainPropertyUInteger("Primitive Index Scans", NULL, scanDesc->nprimscans, es);