summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>2018-05-20 13:22:38 +0100
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>2018-05-20 13:22:38 +0100
commit3f389593f54a6ad3354140b77d9a6ce725c0516f (patch)
treec5f9a698825f3a911cba570836aa30bfd861f9b9
parent098c00d73e193f09ce9589a6bb574f5833be714e (diff)
downloadpsycopg2-3f389593f54a6ad3354140b77d9a6ce725c0516f.tar.gz
Raise NotSupportedError fetching iso_8601 intervals
Previously it would have failed parsing and resulted in ValueError Close #707
-rw-r--r--psycopg/typecast_datetime.c5
-rwxr-xr-xtests/test_dates.py7
2 files changed, 12 insertions, 0 deletions
diff --git a/psycopg/typecast_datetime.c b/psycopg/typecast_datetime.c
index f24223c..e34117d 100644
--- a/psycopg/typecast_datetime.c
+++ b/psycopg/typecast_datetime.c
@@ -406,6 +406,11 @@ typecast_PYINTERVAL_cast(const char *str, Py_ssize_t len, PyObject *curs)
}
break;
+ case 'P':
+ PyErr_SetString(NotSupportedError,
+ "iso_8601 intervalstyle currently not supported");
+ return NULL;
+
default:
break;
}
diff --git a/tests/test_dates.py b/tests/test_dates.py
index 74dfc9a..85216f8 100755
--- a/tests/test_dates.py
+++ b/tests/test_dates.py
@@ -438,6 +438,13 @@ class DatetimeTests(ConnectingTestCase, CommonDatetimeTestsMixin):
r = cur.fetchone()[0]
self.assertEqual(r, v, "%s -> %s != %s" % (s, r, v))
+ def test_interval_iso_8601_not_supported(self):
+ # We may end up supporting, but no pressure for it
+ cur = self.conn.cursor()
+ cur.execute("set local intervalstyle to iso_8601")
+ cur.execute("select '1 day 2 hours'::interval")
+ self.assertRaises(psycopg2.NotSupportedError, cur.fetchone)
+
# Only run the datetime tests if psycopg was compiled with support.
if not hasattr(psycopg2.extensions, 'PYDATETIME'):