* If a node wants to change its ExecProcNode function after ExecInitNode() * has finished, it should do so with this function. That way any wrapper * functions can be reinstalled, without the node having to know how that * works. */
| 577 | * works. |
| 578 | */ |
| 579 | void |
| 580 | ExecSetExecProcNode(PlanState *node, ExecProcNodeMtd function) |
| 581 | { |
| 582 | /* |
| 583 | * Add a wrapper around the ExecProcNode callback that checks stack depth |
| 584 | * during the first execution and maybe adds an instrumentation wrapper. |
| 585 | * When the callback is changed after execution has already begun that |
| 586 | * means we'll superfluously execute ExecProcNodeFirst, but that seems ok. |
| 587 | */ |
| 588 | node->ExecProcNodeReal = function; |
| 589 | node->ExecProcNode = ExecProcNodeFirst; |
| 590 | } |
| 591 | |
| 592 | |
| 593 | /* |
no outgoing calls
no test coverage detected