* Workhorse walker that uses flags. */
| 1165 | * Workhorse walker that uses flags. |
| 1166 | */ |
| 1167 | CdbVisitOpt |
| 1168 | planstate_walk_node_extended(PlanState *planstate, |
| 1169 | CdbVisitOpt (*walker) (PlanState *planstate, void *context), |
| 1170 | void *context, |
| 1171 | int flags) |
| 1172 | { |
| 1173 | CdbVisitOpt whatnext; |
| 1174 | |
| 1175 | if (planstate == NULL) |
| 1176 | whatnext = CdbVisit_Walk; |
| 1177 | else |
| 1178 | { |
| 1179 | whatnext = walker(planstate, context); |
| 1180 | if (whatnext == CdbVisit_Walk) |
| 1181 | whatnext = planstate_walk_kids(planstate, walker, context, flags); |
| 1182 | else if (whatnext == CdbVisit_Skip) |
| 1183 | whatnext = CdbVisit_Walk; |
| 1184 | } |
| 1185 | Assert(whatnext != CdbVisit_Skip); |
| 1186 | return whatnext; |
| 1187 | } /* planstate_walk_node */ |
| 1188 | |
| 1189 | CdbVisitOpt |
| 1190 | planstate_walk_array(PlanState **planstates, |
no test coverage detected