From 775de754cf9bace67bb1dbd1f064886ee835e663 Mon Sep 17 00:00:00 2001 From: Daniele Varrazzo Date: Mon, 24 Jul 2017 14:20:52 +0100 Subject: [PATCH] Added back timestamptz[] default cast It was registered as side effect of an excessive definition that got cleaned up in 338dbe70a6c78c7edddea985e2386ebd864378c6. Looking at other removed redundant type oids, this was the only one missing from the `string_types` map. Close #578. --- NEWS | 7 +++++++ psycopg/typecast_array.c | 1 + psycopg/typecast_builtins.c | 1 + tests/test_dates.py | 5 +++++ 4 files changed, 14 insertions(+) diff --git a/NEWS b/NEWS index 81d5fe25..6c67cb58 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,13 @@ Current release --------------- +What's new in psycopg 2.7.3 +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Restored default :sql:`timestamptz[]` typecasting to Python `!datetime`. + Regression introduced in Psycopg 2.7.2 (:ticket:`#578`). + + What's new in psycopg 2.7.2 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/psycopg/typecast_array.c b/psycopg/typecast_array.c index adf07eee..10c2b374 100644 --- a/psycopg/typecast_array.c +++ b/psycopg/typecast_array.c @@ -288,6 +288,7 @@ typecast_GENERIC_ARRAY_cast(const char *str, Py_ssize_t len, PyObject *curs) #define typecast_UNICODEARRAY_cast typecast_GENERIC_ARRAY_cast #define typecast_BOOLEANARRAY_cast typecast_GENERIC_ARRAY_cast #define typecast_DATETIMEARRAY_cast typecast_GENERIC_ARRAY_cast +#define typecast_DATETIMETZARRAY_cast typecast_GENERIC_ARRAY_cast #define typecast_DATEARRAY_cast typecast_GENERIC_ARRAY_cast #define typecast_TIMEARRAY_cast typecast_GENERIC_ARRAY_cast #define typecast_INTERVALARRAY_cast typecast_GENERIC_ARRAY_cast diff --git a/psycopg/typecast_builtins.c b/psycopg/typecast_builtins.c index 9ffec03d..3ed76892 100644 --- a/psycopg/typecast_builtins.c +++ b/psycopg/typecast_builtins.c @@ -57,6 +57,7 @@ static typecastObject_initlist typecast_builtins[] = { {"STRINGARRAY", typecast_STRINGARRAY_types, typecast_STRINGARRAY_cast, "STRING"}, {"BOOLEANARRAY", typecast_BOOLEANARRAY_types, typecast_BOOLEANARRAY_cast, "BOOLEAN"}, {"DATETIMEARRAY", typecast_DATETIMEARRAY_types, typecast_DATETIMEARRAY_cast, "DATETIME"}, + {"DATETIMETZARRAY", typecast_DATETIMETZARRAY_types, typecast_DATETIMETZARRAY_cast, "DATETIMETZ"}, {"TIMEARRAY", typecast_TIMEARRAY_types, typecast_TIMEARRAY_cast, "TIME"}, {"DATEARRAY", typecast_DATEARRAY_types, typecast_DATEARRAY_cast, "DATE"}, {"INTERVALARRAY", typecast_INTERVALARRAY_types, typecast_INTERVALARRAY_cast, "INTERVAL"}, diff --git a/tests/test_dates.py b/tests/test_dates.py index 0b790d07..9ce74d88 100755 --- a/tests/test_dates.py +++ b/tests/test_dates.py @@ -317,6 +317,11 @@ class DatetimeTests(ConnectingTestCase, CommonDatetimeTestsMixin): from datetime import datetime self._test_type_roundtrip_array(datetime(2010, 5, 3, 10, 20, 30)) + def test_type_roundtrip_datetimetz_array(self): + from datetime import datetime + self._test_type_roundtrip_array( + datetime(2010, 5, 3, 10, 20, 30, tzinfo=FixedOffsetTimezone(0))) + def test_type_roundtrip_time_array(self): from datetime import time self._test_type_roundtrip_array(time(10, 20, 30))