From c59e6a2750248818f2e77afe321fa96d23719f9c Mon Sep 17 00:00:00 2001 From: Anthony Tuininga Date: Tue, 9 May 2023 16:49:31 -0600 Subject: [PATCH] Added support for the ORA_SDTZ environment variable used to set the session time zone used by the database. --- doc/src/release_notes.rst | 2 ++ src/oracledb/impl/thin/messages.pyx | 20 +++++++++++--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/doc/src/release_notes.rst b/doc/src/release_notes.rst index c795fb8..d299feb 100644 --- a/doc/src/release_notes.rst +++ b/doc/src/release_notes.rst @@ -13,6 +13,8 @@ oracledb 1.4.0 (TBD) Thin Mode Changes +++++++++++++++++ +#) Added support for the ``ORA_SDTZ`` environment variable used to set the + session time zone used by the database. #) Added support for shrinking the pool back to the minimum number of connections allowed in the pool when the pool is idle for :data:`ConnectionPool.timeout` seconds. diff --git a/src/oracledb/impl/thin/messages.pyx b/src/oracledb/impl/thin/messages.pyx index 6bbd219..0500ea5 100644 --- a/src/oracledb/impl/thin/messages.pyx +++ b/src/oracledb/impl/thin/messages.pyx @@ -1394,15 +1394,17 @@ cdef class AuthMessage(Message): cdef: int tz_hour, tz_minute, timezone str sign, tz_repr - timezone = -time.altzone if time.daylight else -time.timezone - tz_hour = timezone // 3600 - tz_minute = (timezone - (tz_hour * 3600)) // 60 - if tz_hour < 0: - sign = "-" - tz_hour = -tz_hour - else: - sign = "+" - tz_repr = f"{sign}{tz_hour:02}:{tz_minute:02}" + tz_repr = os.environ.get("ORA_SDTZ") + if tz_repr is None: + timezone = -time.altzone if time.daylight else -time.timezone + tz_hour = timezone // 3600 + tz_minute = (timezone - (tz_hour * 3600)) // 60 + if tz_hour < 0: + sign = "-" + tz_hour = -tz_hour + else: + sign = "+" + tz_repr = f"{sign}{tz_hour:02}:{tz_minute:02}" return f"ALTER SESSION SET TIME_ZONE='{tz_repr}'\x00" cdef tuple _get_version_tuple(self, ReadBuffer buf):