pgsql: Be more robust when strerror() doesn't give a useful result.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Be more robust when strerror() doesn't give a useful result.
Дата
Msg-id E1VeA3X-0003df-6r@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Be more robust when strerror() doesn't give a useful result.

glibc, at least, is capable of returning "???" instead of anything useful
if it doesn't like the setting of LC_CTYPE.  If this happens, or in the
previously-known case of strerror() returning an empty string, try to
print the C macro name for the error code ("EACCES" etc).  Only if we
don't have the error code in our compiled-in list of popular error codes
(which covers most though not quite all of what's called out in the POSIX
spec) will we fall back to printing a numeric error code.  This should
simplify debugging.

Note that this functionality is currently only provided for %m in backend
ereport/elog messages.  That may be sufficient, since we don't fool with the
locale environment in frontend clients, but it's foreseeable that we might
want similar code in libpq for instance.

There was some talk of back-patching this, but let's see how the buildfarm
likes it first.  It seems likely that at least some of the POSIX-defined
error code symbols don't exist on all platforms.  I don't want to clutter
the entire list with #ifdefs, but we may need more than are here now.

MauMau, edited by me

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/8e68816cc2567642c6fcca4eaac66c25e0ae5ced

Modified Files
--------------
src/backend/utils/error/elog.c |  161 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 157 insertions(+), 4 deletions(-)


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Support default arguments and named-argument notation for window
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Add #ifdef guards for some POSIX error symbols that Windows does