mirror of
https://github.com/postgres/postgres.git
synced 2025-07-21 16:02:15 +03:00
Move interrupt checking from ExecProcNode() to executor nodes.
In a followup commit ExecProcNode(), and especially the large switch it contains, will largely be replaced by a function pointer directly to the correct node. The node functions will then get invoked by a thin inline function wrapper. To avoid having to include miscadmin.h in headers - CHECK_FOR_INTERRUPTS() - move the interrupt checks into the individual executor routines. While looking through all executor nodes, I noticed a number of arguably missing interrupt checks, add these too. Author: Andres Freund, Tom Lane Reviewed-By: Tom Lane Discussion: https://postgr.es/m/22833.1490390175@sss.pgh.pa.us
This commit is contained in:
@ -1594,6 +1594,8 @@ ExecWindowAgg(WindowAggState *winstate)
|
||||
int i;
|
||||
int numfuncs;
|
||||
|
||||
CHECK_FOR_INTERRUPTS();
|
||||
|
||||
if (winstate->all_done)
|
||||
return NULL;
|
||||
|
||||
@ -2371,6 +2373,9 @@ window_gettupleslot(WindowObject winobj, int64 pos, TupleTableSlot *slot)
|
||||
WindowAggState *winstate = winobj->winstate;
|
||||
MemoryContext oldcontext;
|
||||
|
||||
/* often called repeatedly in a row */
|
||||
CHECK_FOR_INTERRUPTS();
|
||||
|
||||
/* Don't allow passing -1 to spool_tuples here */
|
||||
if (pos < 0)
|
||||
return false;
|
||||
|
Reference in New Issue
Block a user