Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Make postgres_fdw request remote time zone 'GMT' not 'UTC'.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 21 Apr 2024 17:46:20 +0000 (13:46 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 21 Apr 2024 17:46:20 +0000 (13:46 -0400)
This should have the same results for all practical purposes.
The advantage of selecting 'GMT' is that it's guaranteed to work
even when the remote system's timezone database is missing
entries, because pg_tzset() hard-wires handling of that,
at least in 9.2 and later.

(It seems like it would be a good idea to similarly hard-wire
correct handling of 'UTC', but that'll be a little more invasive
than I want to consider back-patching.  Leave that for another
day when we're not in feature freeze.)

Per trouble report from Adnan Dautovic.  Back-patch to all
supported branches.

Discussion: https://postgr.es/m/465248.1712211585@sss.pgh.pa.us

contrib/postgres_fdw/connection.c

index f839308b4003059a94d9b7eed5ce1b335e30800f..3246e18ab93dad588200cc087c6a8981ee95635f 100644 (file)
@@ -658,10 +658,12 @@ configure_remote_session(PGconn *conn)
     * anyway.  However it makes the regression test outputs more predictable.
     *
     * We don't risk setting remote zone equal to ours, since the remote
-    * server might use a different timezone database.  Instead, use UTC
-    * (quoted, because very old servers are picky about case).
+    * server might use a different timezone database.  Instead, use GMT
+    * (quoted, because very old servers are picky about case).  That's
+    * guaranteed to work regardless of the remote's timezone database,
+    * because pg_tzset() hard-wires it (at least in PG 9.2 and later).
     */
-   do_sql_command(conn, "SET timezone = 'UTC'");
+   do_sql_command(conn, "SET timezone = 'GMT'");
 
    /*
     * Set values needed to ensure unambiguous data output from remote.  (This