summaryrefslogtreecommitdiff
path: root/test/sql
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2023-05-12 11:20:52 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2023-05-12 11:20:52 -0400
commit169d6e6804c0e6bbb5f8b2fa4217e659b49a0d9f (patch)
treea07615e3147dbc00ad691632758b8483bc9597b1 /test/sql
parent58d37abb049986c7cddf277c4946d7930e3c1635 (diff)
downloadsqlalchemy-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.py26
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(