*** a/src/backend/executor/nodeWindowAgg.c --- b/src/backend/executor/nodeWindowAgg.c *************** *** 1007,1016 **** restart: */ tuplestore_select_read_pointer(winstate->buffer, winstate->current_ptr); if (!tuplestore_gettupleslot(winstate->buffer, true, ! winstate->ss.ss_ScanTupleSlot)) elog(ERROR, "unexpected end of tuplestore"); /* * Evaluate true window functions */ numfuncs = winstate->numfuncs; --- 1007,1022 ---- */ tuplestore_select_read_pointer(winstate->buffer, winstate->current_ptr); if (!tuplestore_gettupleslot(winstate->buffer, true, ! winstate->temp_slot_1)) elog(ERROR, "unexpected end of tuplestore"); /* + * Scanning slot may be discarded during spool_tuples(), + * so we need to copy it for later use in eval_windowfunction() + */ + ExecCopySlot(winstate->ss.ss_ScanTupleSlot, winstate->temp_slot_1); + + /* * Evaluate true window functions */ numfuncs = winstate->numfuncs;