---------------------------------------------------------------- * ExecutorRun * * This is the main routine of the executor module. It accepts * the query descriptor from the traffic cop and executes the * query plan. * * ExecutorStart must have been called already. * * If direction is NoMovementScanDirection then nothing is done * except to start up/shut down the destination. Ot
| 818 | * ---------------------------------------------------------------- |
| 819 | */ |
| 820 | void |
| 821 | ExecutorRun(QueryDesc *queryDesc, |
| 822 | ScanDirection direction, uint64 count, |
| 823 | bool execute_once) |
| 824 | { |
| 825 | /* |
| 826 | * Greenplum specific code: |
| 827 | * auto_stats() needs to know if it is inside procedure call so |
| 828 | * we maintain executor_run_nesting_level here. See detailed comments |
| 829 | * at the definition of the static variable executor_run_nesting_level. |
| 830 | */ |
| 831 | executor_run_nesting_level++; |
| 832 | PG_TRY(); |
| 833 | { |
| 834 | if (ExecutorRun_hook) |
| 835 | (*ExecutorRun_hook) (queryDesc, direction, count, execute_once); |
| 836 | else |
| 837 | standard_ExecutorRun(queryDesc, direction, count, execute_once); |
| 838 | executor_run_nesting_level--; |
| 839 | } |
| 840 | PG_CATCH(); |
| 841 | { |
| 842 | executor_run_nesting_level--; |
| 843 | PG_RE_THROW(); |
| 844 | } |
| 845 | PG_END_TRY(); |
| 846 | } |
| 847 | |
| 848 | void |
| 849 | standard_ExecutorRun(QueryDesc *queryDesc, |
no test coverage detected