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

Function ExecDynamicIndexScan

src/backend/executor/nodeDynamicIndexscan.c:104–139  ·  view source on GitHub ↗

* Execution of DynamicIndexScan */

Source from the content-addressed store, hash-verified

102 * Execution of DynamicIndexScan
103 */
104TupleTableSlot *
105ExecDynamicIndexScan(PlanState *pstate)
106{
107 DynamicIndexScanState *node = castNode(DynamicIndexScanState, pstate);
108
109 DynamicIndexScan *plan = (DynamicIndexScan *) node->ss.ps.plan;
110
111 node->as_valid_subplans = NULL;
112 if (NULL != plan->join_prune_paramids && !node->did_pruning)
113 {
114 node->did_pruning = true;
115 node->as_valid_subplans =
116 ExecFindMatchingSubPlans(node->as_prune_state,
117 node->ss.ps.state,
118 list_length(plan->partOids),
119 plan->join_prune_paramids);
120
121 int i;
122 int partOidIdx = -1;
123 List *newPartOids = NIL;
124 ListCell *lc;
125
126 for (i = 0; i < bms_num_members(node->as_valid_subplans); i++)
127 {
128 partOidIdx = bms_next_member(node->as_valid_subplans, partOidIdx);
129 newPartOids = lappend_oid(newPartOids, node->partOids[partOidIdx]);
130 }
131
132 node->partOids = palloc(sizeof(Oid) * list_length(newPartOids));
133 foreach_with_count(lc, newPartOids, i)
134 node->partOids[i] = lfirst_oid(lc);
135 node->nOids = list_length(newPartOids);
136 }
137
138 return ExecNextDynamicIndexScan(node);
139}

Callers

nothing calls this directly

Calls 8

ExecFindMatchingSubPlansFunction · 0.85
list_lengthFunction · 0.85
bms_num_membersFunction · 0.85
bms_next_memberFunction · 0.85
lappend_oidFunction · 0.85
foreach_with_countFunction · 0.85
ExecNextDynamicIndexScanFunction · 0.85
pallocFunction · 0.50

Tested by

no test coverage detected