diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2023-05-12 11:20:52 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2023-05-12 11:20:52 -0400 |
| commit | 169d6e6804c0e6bbb5f8b2fa4217e659b49a0d9f (patch) | |
| tree | a07615e3147dbc00ad691632758b8483bc9597b1 /test/sql | |
| parent | 58d37abb049986c7cddf277c4946d7930e3c1635 (diff) | |
| download | sqlalchemy-169d6e6804c0e6bbb5f8b2fa4217e659b49a0d9f.tar.gz | |
substitute include_table param rather than adding
Fixed issue in :func:`_sql.values` construct where an internal compilation
error would occur if the construct were used inside of a scalar subquery.
Fixes: #9772
Change-Id: I4b0f756977abafbd2aabaaa0064baa875249ebe1
Diffstat (limited to 'test/sql')
| -rw-r--r-- | test/sql/test_values.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/sql/test_values.py b/test/sql/test_values.py index b943c4701..62e1f1cb5 100644 --- a/test/sql/test_values.py +++ b/test/sql/test_values.py @@ -10,6 +10,7 @@ from sqlalchemy import Table from sqlalchemy import testing from sqlalchemy import true from sqlalchemy.engine import default +from sqlalchemy.sql import func from sqlalchemy.sql import select from sqlalchemy.sql import Values from sqlalchemy.sql.compiler import FROM_LINTING @@ -85,6 +86,31 @@ class ValuesTest(fixtures.TablesTest, AssertsCompiledSQL): 'AS "Spaces and Cases" ("CaseSensitive", "has spaces", number)', ) + def test_values_in_scalar_subq(self): + """test #9772""" + + people = self.tables.people + table_value_constructor = Values( + Column("v1", Integer), name="tvc" + ).data( + [ + (people.c.people_id,), + (people.c.age,), + (people.c.name,), + ] + ) + + maximum = select(func.max(table_value_constructor.c.v1)) + maximum_subquery = maximum.scalar_subquery() + query = select(people.c.people_id, maximum_subquery) + self.assert_compile( + query, + "SELECT people.people_id, " + "(SELECT max(tvc.v1) AS max_1 FROM " + "(VALUES (people.people_id), (people.age), (people.name)) " + "AS tvc (v1)) AS anon_1 FROM people", + ) + def test_values_in_cte_params(self): cte1 = select( Values( |
