pgsql: Force NO SCROLL for plpgsql's implicit cursors.
От | Tom Lane |
---|---|
Тема | pgsql: Force NO SCROLL for plpgsql's implicit cursors. |
Дата | |
Msg-id | E1lqkOV-0006Iz-OJ@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Force NO SCROLL for plpgsql's implicit cursors. Further thought about bug #17050 suggests that it's a good idea to use CURSOR_OPT_NO_SCROLL for the implicit cursor opened by a plpgsql FOR-over-query loop. This ensures that, if somebody commits inside the loop, PersistHoldablePortal won't try to rewind and re-read the cursor. While we'd have selected NO_SCROLL anyway if FOR UPDATE/SHARE appears in the query, there are other hazards with volatile functions; and in any case, it's silly to expend effort storing rows that we know for certain won't be needed. (While here, improve the comment in exec_run_select, which was a bit confused about the rationale for when we can use parallel mode. Cursor operations aren't a hazard for nameless portals.) This wasn't an issue until v11, which introduced the possibility of persisting such cursors. Hence, back-patch to v11. Per bug #17050 from Алексей Булгаков. Discussion: https://postgr.es/m/17050-f77aa827dc85247c@postgresql.org Branch ------ REL_11_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/5b7bf9f72ab5dc77c081d3af3e6c3b50a6dbe872 Modified Files -------------- src/pl/plpgsql/src/pl_exec.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-)
В списке pgsql-committers по дате отправления: