diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-04-02 18:11:11 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-04-02 18:11:11 -0400 |
commit | b23bb79581ffab33231bc6fb7a49917888d4a836 (patch) | |
tree | 3893a52a83dab27b719ef7cb93f511721457161d | |
parent | 66f2e1257a98bdb257e15a0d9b9588289ef40631 (diff) | |
download | sqlalchemy-b23bb79581ffab33231bc6fb7a49917888d4a836.tar.gz |
- reverse order of columns in sample CTEs as this is a UNION and the cols need to line up
- alter this in the unit tests as well as these queries were just copied from the tests
- remove the included_parts.join(parts) from the core CTE doc (also just copied from the
test, where we want to make sure joins don't get screwed up with the CTE) as it doesn't
contribute to the query itself
fixes #3014
-rw-r--r-- | lib/sqlalchemy/orm/query.py | 2 | ||||
-rw-r--r-- | lib/sqlalchemy/sql/selectable.py | 4 | ||||
-rw-r--r-- | test/sql/test_cte.py | 10 |
3 files changed, 7 insertions, 9 deletions
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index 827fdb5be..5d60c4e29 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -519,8 +519,8 @@ class Query(object): parts_alias = aliased(Part, name="p") included_parts = included_parts.union_all( session.query( - parts_alias.part, parts_alias.sub_part, + parts_alias.part, parts_alias.quantity).\\ filter(parts_alias.part==incl_alias.c.sub_part) ) diff --git a/lib/sqlalchemy/sql/selectable.py b/lib/sqlalchemy/sql/selectable.py index cfa229f94..2aa2c0f40 100644 --- a/lib/sqlalchemy/sql/selectable.py +++ b/lib/sqlalchemy/sql/selectable.py @@ -1467,8 +1467,8 @@ class SelectBase(Executable, FromClause): parts_alias = parts.alias() included_parts = included_parts.union_all( select([ - parts_alias.c.part, parts_alias.c.sub_part, + parts_alias.c.part, parts_alias.c.quantity ]). where(parts_alias.c.part==incl_alias.c.sub_part) @@ -1479,8 +1479,6 @@ class SelectBase(Executable, FromClause): func.sum(included_parts.c.quantity). label('total_quantity') ]).\ - select_from(included_parts.join(parts, - included_parts.c.part==parts.c.part)).\\ group_by(included_parts.c.sub_part) result = conn.execute(statement).fetchall() diff --git a/test/sql/test_cte.py b/test/sql/test_cte.py index 0f6831375..887d56710 100644 --- a/test/sql/test_cte.py +++ b/test/sql/test_cte.py @@ -77,8 +77,8 @@ class CTETest(fixtures.TestBase, AssertsCompiledSQL): parts_alias = parts.alias() included_parts = included_parts.union( select([ - parts_alias.c.part, parts_alias.c.sub_part, + parts_alias.c.part, parts_alias.c.quantity]).\ where(parts_alias.c.part==incl_alias.c.sub_part) ) @@ -93,8 +93,8 @@ class CTETest(fixtures.TestBase, AssertsCompiledSQL): "WITH RECURSIVE anon_1(sub_part, part, quantity) " "AS (SELECT parts.sub_part AS sub_part, parts.part " "AS part, parts.quantity AS quantity FROM parts " - "WHERE parts.part = :part_1 UNION SELECT parts_1.part " - "AS part, parts_1.sub_part AS sub_part, parts_1.quantity " + "WHERE parts.part = :part_1 UNION SELECT parts_1.sub_part AS sub_part, " + "parts_1.part AS part, parts_1.quantity " "AS quantity FROM parts AS parts_1, anon_1 AS anon_2 " "WHERE parts_1.part = anon_2.sub_part) " "SELECT anon_1.sub_part, " @@ -109,8 +109,8 @@ class CTETest(fixtures.TestBase, AssertsCompiledSQL): "WITH anon_1(sub_part, part, quantity) " "AS (SELECT parts.sub_part AS sub_part, parts.part " "AS part, parts.quantity AS quantity FROM parts " - "WHERE parts.part = :part_1 UNION SELECT parts_1.part " - "AS part, parts_1.sub_part AS sub_part, parts_1.quantity " + "WHERE parts.part = :part_1 UNION SELECT parts_1.sub_part AS sub_part, " + "parts_1.part AS part, parts_1.quantity " "AS quantity FROM parts AS parts_1, anon_1 AS anon_2 " "WHERE parts_1.part = anon_2.sub_part) " "SELECT anon_1.sub_part, " |