MCPcopy Create free account
hub / github.com/apache/cloudberry / ExplainPreScanNode

Function ExplainPreScanNode

src/backend/commands/explain.c:1452–1510  ·  view source on GitHub ↗

* ExplainPreScanNode - * Prescan the planstate tree to identify which RTEs are referenced * * Adds the relid of each referenced RTE to *rels_used. The result controls * which RTEs are assigned aliases by select_rtable_names_for_explain. * This ensures that we don't confusingly assign un-suffixed aliases to RTEs * that never appear in the EXPLAIN output (such as inheritance parents). */

Source from the content-addressed store, hash-verified

1450 * that never appear in the EXPLAIN output (such as inheritance parents).
1451 */
1452static bool
1453ExplainPreScanNode(PlanState *planstate, Bitmapset **rels_used)
1454{
1455 Plan *plan = planstate->plan;
1456
1457 switch (nodeTag(plan))
1458 {
1459 case T_SeqScan:
1460 case T_SampleScan:
1461 case T_IndexScan:
1462 case T_IndexOnlyScan:
1463 case T_BitmapHeapScan:
1464 case T_DynamicBitmapHeapScan:
1465 case T_TidScan:
1466 case T_TidRangeScan:
1467 case T_SubqueryScan:
1468 case T_FunctionScan:
1469 case T_TableFuncScan:
1470 case T_ValuesScan:
1471 case T_CteScan:
1472 case T_NamedTuplestoreScan:
1473 case T_WorkTableScan:
1474 case T_DynamicSeqScan:
1475 case T_DynamicIndexScan:
1476 case T_DynamicIndexOnlyScan:
1477 case T_ShareInputScan:
1478 *rels_used = bms_add_member(*rels_used,
1479 ((Scan *) plan)->scanrelid);
1480 break;
1481 case T_ForeignScan:
1482 case T_DynamicForeignScan:
1483 *rels_used = bms_add_members(*rels_used,
1484 ((ForeignScan *) plan)->fs_relids);
1485 break;
1486 case T_CustomScan:
1487 *rels_used = bms_add_members(*rels_used,
1488 ((CustomScan *) plan)->custom_relids);
1489 break;
1490 case T_ModifyTable:
1491 *rels_used = bms_add_member(*rels_used,
1492 ((ModifyTable *) plan)->nominalRelation);
1493 if (((ModifyTable *) plan)->exclRelRTI)
1494 *rels_used = bms_add_member(*rels_used,
1495 ((ModifyTable *) plan)->exclRelRTI);
1496 break;
1497 case T_Append:
1498 *rels_used = bms_add_members(*rels_used,
1499 ((Append *) plan)->apprelids);
1500 break;
1501 case T_MergeAppend:
1502 *rels_used = bms_add_members(*rels_used,
1503 ((MergeAppend *) plan)->apprelids);
1504 break;
1505 default:
1506 break;
1507 }
1508
1509 return planstate_tree_walker(planstate, ExplainPreScanNode, rels_used);

Callers 1

ExplainPrintPlanFunction · 0.85

Calls 3

bms_add_memberFunction · 0.85
bms_add_membersFunction · 0.85
planstate_tree_walkerFunction · 0.85

Tested by

no test coverage detected