pgsql: Avoid Assert failure when processing empty statement in aborted

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Avoid Assert failure when processing empty statement in aborted
Дата
Msg-id E1qBzQk-002ulY-Dy@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Avoid Assert failure when processing empty statement in aborted xact.

exec_parse_message() wants to create a cached plan in all cases,
including for empty input.  The empty-input path does not have
a test for being in an aborted transaction, making it possible
that plancache.c will fail due to trying to do database lookups
even though there's no real work to do.

One solution would be to throw an aborted-transaction error in
this path too, but it's not entirely clear whether the lack of
such an error was intentional or whether some clients might be
relying on non-error behavior.  Instead, let's hack plancache.c
so that it treats empty statements with the same logic it
already had for transaction control commands, ensuring that it
can soldier through even in an already-aborted transaction.

Per bug #17983 from Alexander Lakhin.  Back-patch to all
supported branches.

Discussion: https://postgr.es/m/17983-da4569fcb878672e@postgresql.org

Branch
------
REL_13_STABLE

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

Modified Files
--------------
src/backend/utils/cache/plancache.c |  4 +++-
src/test/regress/expected/psql.out  | 11 +++++++++++
src/test/regress/sql/psql.sql       |  8 ++++++++
3 files changed, 22 insertions(+), 1 deletion(-)


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Avoid Assert failure when processing empty statement in aborted
Следующее
От: Jeff Davis
Дата:
Сообщение: pgsql: initdb: change default --locale-provider back to libc.