Re: BUG #17687: Session timezone change does not play well with prepared statements

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: bart(at)lengkeek(dot)net
Cc: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #17687: Session timezone change does not play well with prepared statements
Date: 2022-11-14 14:20:25
Message-ID: 888267.1668435625@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

PG Bug reporting form <noreply(at)postgresql(dot)org> writes:
> When a statement is prepared using one session timezone and executed using
> another, it returns the wrong timestamp.

> Example using psql:
> postgres=# SET TIMEZONE TO 'Europe/Berlin';
> SET
> postgres=# PREPARE test AS
> SELECT '2021-03-15 14:10:03'::timestamptz;
> PREPARE
> postgres=# SET TIMEZONE TO 'America/Chicago';
> SET
> postgres=# EXECUTE test;
> timestamptz
> ------------------------
> 2021-03-15 08:10:03-05
> (1 row)

That is not a bug, it's just how timestamptz works. You'd get the
same behavior if you stored the value into a table and then read
it out under another timezone setting. (Internally, the reason
is that the timestamptz literal is reduced to a Const on sight,
and stored that way in the prepared statement.)

regards, tom lane

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Amit Kapila 2022-11-14 16:22:05 Re: WAL segments removed from primary despite the fact that logical replication slot needs it.
Previous Message hubert depesz lubaczewski 2022-11-14 13:33:28 Re: WAL segments removed from primary despite the fact that logical replication slot needs it.