pgsql: Avoid statically allocating gmtsub()'s timezone workspace.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Avoid statically allocating gmtsub()'s timezone workspace.
Дата
Msg-id E1gCRcI-0007bk-J2@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Avoid statically allocating gmtsub()'s timezone workspace.

localtime.c's "struct state" is a rather large object, ~23KB.  We were
statically allocating one for gmtsub() to use to represent the GMT
timezone, even though that function is not at all heavily used and is
never reached in most backends.  Let's malloc it on-demand, instead.

This does pose the question of how to handle a malloc failure, but
there's already a well-defined error report convention here, ie
set errno and return NULL.

We have but one caller of pg_gmtime in HEAD, and two in back branches,
neither of which were troubling to check for error.  Make them do so.
The possible errors are sufficiently unlikely (out-of-range timestamp,
and now malloc failure) that I think elog() is adequate.

Back-patch to all supported branches to keep our copies of the IANA
timezone code in sync.  This particular change is in a stanza that
already differs from upstream, so it's a wash for maintenance purposes
--- but only as long as we keep the branches the same.

Discussion: https://postgr.es/m/20181015200754.7y7zfuzsoux2c4ya@alap3.anarazel.de

Branch
------
REL_11_STABLE

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

Modified Files
--------------
src/backend/utils/adt/nabstime.c  |  3 +++
src/backend/utils/adt/timestamp.c |  3 +++
src/timezone/localtime.c          | 11 ++++++-----
3 files changed, 12 insertions(+), 5 deletions(-)


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

Предыдущее
От: Andres Freund
Дата:
Сообщение: pgsql: Correct constness of a few variables.
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Improve stability of recently-added regression test case.