diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-08-02 14:42:57 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-08-02 14:42:57 -0400 |
| commit | 7c80e521f00a52254678acb7dab632be3e6d0119 (patch) | |
| tree | aef400f87e7f8613c632d478769b415393a69d27 /test/sql/test_cte.py | |
| parent | 32165f50209036a98959553e1c5e81537a091a15 (diff) | |
| download | sqlalchemy-7c80e521f00a52254678acb7dab632be3e6d0119.tar.gz | |
- Fixed bug in CTE where ``literal_binds`` compiler argument would not
be always be correctly propagated when one CTE referred to another
aliased CTE in a statement.
Fixes #3154
Diffstat (limited to 'test/sql/test_cte.py')
| -rw-r--r-- | test/sql/test_cte.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/test/sql/test_cte.py b/test/sql/test_cte.py index 7e83968da..b907fe649 100644 --- a/test/sql/test_cte.py +++ b/test/sql/test_cte.py @@ -391,6 +391,44 @@ class CTETest(fixtures.TestBase, AssertsCompiledSQL): 'regional_sales_2."order" FROM regional_sales_2', checkpositional=('x', 'y', 'z'), dialect=dialect) + def test_positional_binds_2_asliteral(self): + orders = table('orders', + column('order'), + ) + s = select([orders.c.order, literal("x")]).cte("regional_sales") + s = select([s.c.order, literal("y")]) + dialect = default.DefaultDialect() + dialect.positional = True + dialect.paramstyle = 'numeric' + s1 = select([orders.c.order]).where(orders.c.order == 'x').\ + cte("regional_sales_1") + + s1a = s1.alias() + + s2 = select([orders.c.order == 'y', s1a.c.order, + orders.c.order, s1.c.order]).\ + where(orders.c.order == 'z').\ + cte("regional_sales_2") + + s3 = select([s2]) + + self.assert_compile( + s3, + 'WITH regional_sales_1 AS ' + '(SELECT orders."order" AS "order" ' + 'FROM orders ' + 'WHERE orders."order" = \'x\'), ' + 'regional_sales_2 AS ' + '(SELECT orders."order" = \'y\' AS anon_1, ' + 'anon_2."order" AS "order", orders."order" AS "order", ' + 'regional_sales_1."order" AS "order" ' + 'FROM orders, regional_sales_1 AS anon_2, regional_sales_1 ' + 'WHERE orders."order" = \'z\') ' + 'SELECT regional_sales_2.anon_1, regional_sales_2."order" ' + 'FROM regional_sales_2', + checkpositional=(), dialect=dialect, + literal_binds=True) + def test_all_aliases(self): orders = table('order', column('order')) s = select([orders.c.order]).cte("regional_sales") |
