From: | Stepan Neretin <sncfmgg(at)gmail(dot)com> |
---|---|
To: | Peter Eisentraut <peter(at)eisentraut(dot)org> |
Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: thread-safety: gmtime_r(), localtime_r() |
Date: | 2024-06-27 04:47:17 |
Message-ID: | CAN-sa+DhO9JJH7M3eanZnyxKK0pq0EAHCJcaAnTNJnQ9MyWAKA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Thu, Jun 27, 2024 at 1:42 AM Peter Eisentraut <peter(at)eisentraut(dot)org>
wrote:
> Here is a patch for using gmtime_r() and localtime_r() instead of
> gmtime() and localtime(), for thread-safety.
>
> There are a few affected calls in libpq and ecpg's libpgtypes, which are
> probably effectively bugs, because those libraries already claim to be
> thread-safe.
>
> There is one affected call in the backend. Most of the backend
> otherwise uses the custom functions pg_gmtime() and pg_localtime(),
> which are implemented differently.
>
> Some portability fun: gmtime_r() and localtime_r() are in POSIX but are
> not available on Windows. Windows has functions gmtime_s() and
> localtime_s() that can fulfill the same purpose, so we can add some
> small wrappers around them. (Note that these *_s() functions are also
> different from the *_s() functions in the bounds-checking extension of
> C11. We are not using those here.)
>
> MinGW exposes neither *_r() nor *_s() by default. You can get at the
> POSIX-style *_r() functions by defining _POSIX_C_SOURCE appropriately
> before including <time.h>. (There is apparently probably also a way to
> get at the Windows-style *_s() functions by supplying some additional
> options or defines. But we might as well just use the POSIX ones.)
>
>
Hi! Looks good to me.
But why you don`t change localtime function at all places?
For example:
src/bin/pg_controldata/pg_controldata.c
src/bin/pg_dump/pg_backup_archiver.c
src/bin/initdb/findtimezone.c
Best regards, Stepan Neretin.
From | Date | Subject | |
---|---|---|---|
Next Message | shveta malik | 2024-06-27 04:50:25 | Re: Conflict Detection and Resolution |
Previous Message | Michael Paquier | 2024-06-27 04:04:22 | Re: Avoid incomplete copy string (src/backend/access/transam/xlog.c) |