diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2018-10-03 10:40:38 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2018-10-03 10:40:38 -0400 |
| commit | aa2128427064a2bdeaeff5dc946ecbb3727c90aa (patch) | |
| tree | 62e207bb41e8569727153c144f4d650d4981d02c /lib/sqlalchemy/testing/suite/test_select.py | |
| parent | ffd27cef48241e39725c4e9cd13fd744a2806bdd (diff) | |
| download | sqlalchemy-aa2128427064a2bdeaeff5dc946ecbb3727c90aa.tar.gz | |
Support tuples of heterogeneous types for empty expanding IN
Pass a list of all the types for the left side of an
IN expression to the visit_empty_set_expr() method, so that
the "empty expanding IN" can produce clauses for each element.
Fixes: #4271
Change-Id: I2738b9df2292ac01afda37f16d4fa56ae7bf9147
Diffstat (limited to 'lib/sqlalchemy/testing/suite/test_select.py')
| -rw-r--r-- | lib/sqlalchemy/testing/suite/test_select.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/sqlalchemy/testing/suite/test_select.py b/lib/sqlalchemy/testing/suite/test_select.py index 78b34f496..73ce02492 100644 --- a/lib/sqlalchemy/testing/suite/test_select.py +++ b/lib/sqlalchemy/testing/suite/test_select.py @@ -402,6 +402,34 @@ class ExpandingBoundInTest(fixtures.TablesTest): params={"q": [], "p": []}, ) + @testing.requires.tuple_in + def test_empty_heterogeneous_tuples(self): + table = self.tables.some_table + + stmt = select([table.c.id]).where( + tuple_(table.c.x, table.c.z).in_( + bindparam('q', expanding=True))).order_by(table.c.id) + + self._assert_result( + stmt, + [], + params={"q": []}, + ) + + @testing.requires.tuple_in + def test_empty_homogeneous_tuples(self): + table = self.tables.some_table + + stmt = select([table.c.id]).where( + tuple_(table.c.x, table.c.y).in_( + bindparam('q', expanding=True))).order_by(table.c.id) + + self._assert_result( + stmt, + [], + params={"q": []}, + ) + def test_bound_in_scalar(self): table = self.tables.some_table @@ -428,6 +456,20 @@ class ExpandingBoundInTest(fixtures.TablesTest): params={"q": [(2, 3), (3, 4), (4, 5)]}, ) + @testing.requires.tuple_in + def test_bound_in_heterogeneous_two_tuple(self): + table = self.tables.some_table + + stmt = select([table.c.id]).where( + tuple_(table.c.x, table.c.z).in_( + bindparam('q', expanding=True))).order_by(table.c.id) + + self._assert_result( + stmt, + [(2, ), (3, ), (4, )], + params={"q": [(2, "z2"), (3, "z3"), (4, "z4")]}, + ) + def test_empty_set_against_integer(self): table = self.tables.some_table |
