[MASSMAIL]Failure of postgres_fdw because of TimeZone setting - Mailing list pgsql-general

From Adnan Dautovic
Subject [MASSMAIL]Failure of postgres_fdw because of TimeZone setting
Date
Msg-id 5DF49366-10D1-42A4-99BF-F9A7DC3AB0F4@mailbox.org
Whole thread Raw
Responses Re: Failure of postgres_fdw because of TimeZone setting
Re: Failure of postgres_fdw because of TimeZone setting
List pgsql-general
Hi everyone,


I have some trouble using postgres_fdw in order to display some data from a Postgres database I do not control in a
Postgresdatabase that I do control. I filled out the form from the wiki below and would appreciate any tips. 


* A description of what you are trying to achieve and what results you expect.:
I am trying to import the public schema of a Postgres instance I do not control (I will call it "remote"), but have
read-onlyaccess to, into a Postgres instance I fully control (I will call it "local"), using the foreign data wrapper
postgres_fdw.
The result I expect is that the import runs successfully and that I have access to the foreign tables.
However, I currently fail to achieve this. I always get an error message regarding the TimeZone setting. I also tried,
withoutsuccess, different versions for the local instance, namely 9.4.14 so I would be as close as possible to the
remoteversion and 13.14 to try an up-to-date version of Postgres 13. 

* PostgreSQL version number you are running:

remote: "PostgreSQL 9.4.13 on x86_64-apple-darwin20.2.0, compiled by Apple clang version 12.0.0 (clang-1200.0.32.29),
64-bit"

local: "PostgreSQL 13.0 (Debian 13.0-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0,
64-bit"

* How you installed PostgreSQL:

remote: I do not know. It is an instance that runs as part of a software I have no further insight in.

local: I am using the official PostgreSQL docker image.

* Changes made to the settings in the postgresql.conf file:

remote:
"name" "current_setting" "source"
"application_name" "pgAdmin 4 - CONN:2930678" "client"
"bdr.log_conflicts_to_table" "on" "configuration file"
"bytea_output" "hex" "session"
"checkpoint_completion_target" "0.9" "configuration file"
"checkpoint_segments" "32" "configuration file"
"client_encoding" "UNICODE" "session"
"client_min_messages" "notice" "session"
"DateStyle" "ISO, MDY" "session"
"default_text_search_config" "pg_catalog.english" "configuration file"
"dynamic_shared_memory_type" "posix" "configuration file"
"effective_cache_size" "19046MB" "configuration file"
"lc_messages" "C" "configuration file"
"lc_monetary" "C" "configuration file"
"lc_numeric" "C" "configuration file"
"lc_time" "C" "configuration file"
"listen_addresses" "*" "configuration file"
"log_line_prefix" "%t [%d]" "configuration file"
"log_timezone" "Europe/Berlin" "configuration file"
"logging_collector" "on" "configuration file"
"maintenance_work_mem" "1587MB" "configuration file"
"max_connections" "100" "configuration file"
"max_replication_slots" "10" "configuration file"
"max_stack_depth" "2MB" "environment variable"
"max_wal_senders" "10" "configuration file"
"max_worker_processes" "10" "configuration file"
"port" "5432" "configuration file"
"shared_buffers" "7936MB" "configuration file"
"ssl" "on" "configuration file"
"ssl_ca_file" "root.crt" "configuration file"
"ssl_cert_file" "server.crt" "configuration file"
"ssl_key_file" "server.key" "configuration file"
"tcp_keepalives_idle" "10" "configuration file"
"TimeZone" "Europe/Berlin" "configuration file"
"track_commit_timestamp" "on" "configuration file"
"wal_level" "logical" "configuration file"
"wal_receiver_timeout" "20min" "configuration file"
"wal_sender_timeout" "20min" "configuration file"
"wal_sync_method" "fsync_writethrough" "configuration file"
"work_mem" "81264kB" "configuration file"

local:
"name" "current_setting" "source"
"application_name" "pgAdmin 4 - CONN:511122" "client"
"bytea_output" "hex" "session"
"client_encoding" "UNICODE" "session"
"client_min_messages" "notice" "session"
"DateStyle" "ISO, MDY" "session"
"default_text_search_config" "pg_catalog.english" "configuration file"
"dynamic_shared_memory_type" "posix" "configuration file"
"lc_messages" "en_US.utf8" "configuration file"
"lc_monetary" "en_US.utf8" "configuration file"
"lc_numeric" "en_US.utf8" "configuration file"
"lc_time" "en_US.utf8" "configuration file"
"listen_addresses" "*" "configuration file"
"log_timezone" "Etc/UTC" "configuration file"
"max_connections" "100" "configuration file"
"max_stack_depth" "2MB" "environment variable"
"max_wal_size" "1GB" "configuration file"
"min_wal_size" "80MB" "configuration file"
"shared_buffers" "128MB" "configuration file"
"TimeZone" "Etc/UTC" "configuration file"

* Operating system and version:

remote: Mac mini (2018), running macOS Monterey 12.5.1, output of uname -a: "Darwin mac 21.6.0 Darwin Kernel Version
21.6.0:Wed Aug 10 14:25:27 PDT 2022; root:xnu-8020.141.5-2/RELEASE_X86_64 x86_64 

local: A Linux VM running Debian 11.3 ARM64, output of uname -a: "Linux debian-gnu-linux-11 5.10.0-28-arm64 #1 SMP
Debian5.10.209-2 (2024-01-31) aarch64 GNU/Linux" 

* What program you're using to connect to PostgreSQL:
pgAdmin 4
 
* Is there anything relevant or unusual in the PostgreSQL server logs?:
No, not that I know of.
 
* What you were doing when the error happened / how to cause the error:
First, I successfully enabled the postgres_fdw extension, created the remote server configuration and the user mapping.
Then, I tried to import the public schema locally, using:

IMPORT FOREIGN SCHEMA public FROM SERVER remote INTO public;

* The EXACT TEXT of the error message you're getting, if there is one:
ERROR:  invalid value for parameter "TimeZone": "UTC"
CONTEXT:  remote SQL command: SET timezone = 'UTC'
SQL state: 22023


Now, I gather that the postgres_fdw extension sets this option for its connection here

https://github.com/postgres/postgres/blob/936e3fa3787a51397280c1081587586e83c20399/contrib/postgres_fdw/connection.c#L677
but I really can not figure out why it fails in this scenario and what I could do about it.


I thought my next step might be to look into how to create my own foreign data wrapper and basically use a modified
versionof postgres_fdw where I remove the TimeZone setting. It seems like there should be an easier way, though. :-) 


Does anyone have an idea for me? 

Kind regards,


Adnan Dautovic




pgsql-general by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: Moving delta data faster
Next
From: yudhi s
Date:
Subject: Re: Moving delta data faster