summaryrefslogtreecommitdiff
path: root/test/dialect/postgresql
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2022-10-21 12:37:04 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2022-10-21 12:37:04 -0400
commite9df3e8de0caaea20ddf0ab7f46b1110ba6dd0e9 (patch)
tree54b88684c3f0bc61f86a3aae7b7821c1ef49ce08 /test/dialect/postgresql
parent2fc5cf56a4b146b94b5dd14239a791e354d7ebe4 (diff)
downloadsqlalchemy-e9df3e8de0caaea20ddf0ab7f46b1110ba6dd0e9.tar.gz
Only convert Range for sqlalchemy Range object
Refined the new approach to range objects described at :ref:`change_7156` to accommodate driver-specific range and multirange objects, to better accommodate both legacy code as well as when passing results from raw SQL result sets back into new range or multirange expressions. Fixes: #8690 Change-Id: I7e62c47067f695c6380ad0fe2fe19deaf33594d1
Diffstat (limited to 'test/dialect/postgresql')
-rw-r--r--test/dialect/postgresql/test_types.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/dialect/postgresql/test_types.py b/test/dialect/postgresql/test_types.py
index 1f93a4023..91eada9a8 100644
--- a/test/dialect/postgresql/test_types.py
+++ b/test/dialect/postgresql/test_types.py
@@ -3891,6 +3891,23 @@ class _RangeTypeRoundTrip(fixtures.TablesTest):
cols = insp.get_columns("data_table")
assert isinstance(cols[0]["type"], self._col_type)
+ def test_textual_round_trip_w_dialect_type(self, connection):
+ """test #8690"""
+ data_table = self.tables.data_table
+
+ data_obj = self._data_obj()
+ connection.execute(
+ self.tables.data_table.insert(), {"range": data_obj}
+ )
+
+ q1 = text("SELECT range from data_table")
+ v = connection.scalar(q1)
+
+ q2 = select(data_table).where(data_table.c.range == v)
+ v2 = connection.scalar(q2)
+
+ eq_(data_obj, v2)
+
def _assert_data(self, conn):
data = conn.execute(select(self.tables.data_table.c.range)).fetchall()
eq_(data, [(self._data_obj(),)])
@@ -4348,6 +4365,23 @@ class _MultiRangeTypeRoundTrip(fixtures.TablesTest):
data = conn.execute(select(self.tables.data_table.c.range)).fetchall()
eq_(data, [(self._data_obj(),)])
+ def test_textual_round_trip_w_dialect_type(self, connection):
+ """test #8690"""
+ data_table = self.tables.data_table
+
+ data_obj = self._data_obj()
+ connection.execute(
+ self.tables.data_table.insert(), {"range": data_obj}
+ )
+
+ q1 = text("SELECT range from data_table")
+ v = connection.scalar(q1)
+
+ q2 = select(data_table).where(data_table.c.range == v)
+ v2 = connection.scalar(q2)
+
+ eq_(data_obj, v2)
+
def test_insert_obj(self, connection):
connection.execute(
self.tables.data_table.insert(), {"range": self._data_obj()}