|
|
@ -5257,6 +5257,12 @@ exec_for_query(PLpgSQL_execstate *estate, PLpgSQL_stmt_forq *stmt, |
|
|
|
/* Fetch loop variable's datum entry */ |
|
|
|
/* Fetch loop variable's datum entry */ |
|
|
|
var = (PLpgSQL_variable *) estate->datums[stmt->var->dno]; |
|
|
|
var = (PLpgSQL_variable *) estate->datums[stmt->var->dno]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
* Make sure the portal doesn't get closed by the user statements we |
|
|
|
|
|
|
|
* execute. |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
PinPortal(portal); |
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
* Fetch the initial tuple(s). If prefetching is allowed then we grab a |
|
|
|
* Fetch the initial tuple(s). If prefetching is allowed then we grab a |
|
|
|
* few more rows to avoid multiple trips through executor startup |
|
|
|
* few more rows to avoid multiple trips through executor startup |
|
|
@ -5318,6 +5324,8 @@ loop_exit: |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
SPI_freetuptable(tuptab); |
|
|
|
SPI_freetuptable(tuptab); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UnpinPortal(portal); |
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
* Set the FOUND variable to indicate the result of executing the loop |
|
|
|
* Set the FOUND variable to indicate the result of executing the loop |
|
|
|
* (namely, whether we looped one or more times). This must be set last so |
|
|
|
* (namely, whether we looped one or more times). This must be set last so |
|
|
|