pgsql: Improve the internal implementation of ereport().

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Improve the internal implementation of ereport().
Дата
Msg-id E1jGm6p-0000C1-9J@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Improve the internal implementation of ereport().

Change all the auxiliary error-reporting routines to return void,
now that we no longer need to pretend they are passing something
useful to errfinish().  While this probably doesn't save anything
significant at the machine-code level, it allows detection of some
additional types of mistakes.

Pass the error location details (__FILE__, __LINE__, PG_FUNCNAME_MACRO)
to errfinish not errstart.  This shaves a few cycles off the case where
errstart decides we're not going to emit anything.

Re-implement elog() as a trivial wrapper around ereport(), removing
the separate support infrastructure it used to have.  Aside from
getting rid of some now-surplus code, this means that elog() now
really does have exactly the same semantics as ereport(), in particular
that it can skip evaluation work if the message is not to be emitted.

Andres Freund and Tom Lane

Discussion: https://postgr.es/m/CA+fd4k6N8EjNvZpM8nme+y+05mz-SM8Z_BgkixzkA34R+ej0Kw@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/17a28b03645e27d73bf69a95d7569b61e58f06eb

Modified Files
--------------
src/backend/executor/execUtils.c   |   8 +-
src/backend/parser/parse_coerce.c  |   6 +-
src/backend/parser/parse_node.c    |   8 +-
src/backend/parser/scan.l          |   6 +-
src/backend/storage/ipc/dsm_impl.c |   8 +-
src/backend/utils/adt/jsonfuncs.c  |   8 +-
src/backend/utils/error/elog.c     | 234 ++++++++-----------------------------
src/include/executor/executor.h    |   2 +-
src/include/parser/parse_coerce.h  |   2 +-
src/include/parser/parse_node.h    |   2 +-
src/include/parser/scanner.h       |   2 +-
src/include/utils/elog.h           |  88 +++++---------
src/pl/plpgsql/src/pl_scanner.c    |   6 +-
src/pl/plpgsql/src/plpgsql.h       |   2 +-
14 files changed, 108 insertions(+), 274 deletions(-)


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Re-implement the ereport() macro using __VA_ARGS__.
Следующее
От: Peter Eisentraut
Дата:
Сообщение: pgsql: Fix compiler warning on Cygwin