----------------- * ExecReScanWindowAgg * ----------------- */
| 2936 | * ----------------- |
| 2937 | */ |
| 2938 | void |
| 2939 | ExecReScanWindowAgg(WindowAggState *node) |
| 2940 | { |
| 2941 | PlanState *outerPlan = outerPlanState(node); |
| 2942 | ExprContext *econtext = node->ss.ps.ps_ExprContext; |
| 2943 | |
| 2944 | node->all_done = false; |
| 2945 | node->all_first = true; |
| 2946 | |
| 2947 | /* release tuplestore et al */ |
| 2948 | release_partition(node); |
| 2949 | |
| 2950 | /* release all temp tuples, but especially first_part_slot */ |
| 2951 | ExecClearTuple(node->ss.ss_ScanTupleSlot); |
| 2952 | ExecClearTuple(node->first_part_slot); |
| 2953 | ExecClearTuple(node->agg_row_slot); |
| 2954 | ExecClearTuple(node->temp_slot_1); |
| 2955 | ExecClearTuple(node->temp_slot_2); |
| 2956 | if (node->framehead_slot) |
| 2957 | ExecClearTuple(node->framehead_slot); |
| 2958 | if (node->frametail_slot) |
| 2959 | ExecClearTuple(node->frametail_slot); |
| 2960 | |
| 2961 | /* Forget current wfunc values */ |
| 2962 | MemSet(econtext->ecxt_aggvalues, 0, sizeof(Datum) * node->numfuncs); |
| 2963 | MemSet(econtext->ecxt_aggnulls, 0, sizeof(bool) * node->numfuncs); |
| 2964 | |
| 2965 | /* |
| 2966 | * if chgParam of subnode is not null then plan will be re-scanned by |
| 2967 | * first ExecProcNode. |
| 2968 | */ |
| 2969 | if (outerPlan->chgParam == NULL) |
| 2970 | ExecReScan(outerPlan); |
| 2971 | } |
| 2972 | |
| 2973 | void |
| 2974 | ExecSquelchWindowAgg(WindowAggState *node, bool force) |
no test coverage detected