pgsql: Avoid fetching from an already-terminated plan.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Avoid fetching from an already-terminated plan.
Дата
Msg-id E1mONys-0001zg-3I@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Avoid fetching from an already-terminated plan.

Some plan node types don't react well to being called again after
they've already returned NULL.  PortalRunSelect() has long dealt
with this by calling the executor with NoMovementScanDirection
if it sees that we've already run the portal to the end.  However,
commit ba2c6d6ce overlooked this point, so that persisting an
already-fully-fetched cursor would fail if it had such a plan.

Per report from Tomas Barton.  Back-patch to v11, as the faulty
commit was.  (I've omitted a test case because the type of plan
that causes a problem isn't all that stable.)

Discussion: https://postgr.es/m/CAPV2KRjd=ErgVGbvO2Ty20tKTEZZr6cYsYLxgN_W3eAo9pf5sw@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/cba79a163267a44205e391137deb543f4f89bc8b

Modified Files
--------------
src/backend/commands/portalcmds.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Fujii Masao
Дата:
Сообщение: pgsql: pgbench: Stop counting skipped transactions as soon as timer is
Следующее
От: Noah Misch
Дата:
Сообщение: pgsql: Revoke PUBLIC CREATE from public schema, now owned by pg_databas