diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-06-04 18:43:59 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-06-04 18:43:59 -0400 |
commit | c7b52003fb369637d5f72d2a45ff256638b6362d (patch) | |
tree | 456831bd1578a0284c37765a5d364aa2370e8173 | |
parent | 11578ba709ff3e5f2a2a2a9f92bf6fdc2ee6d328 (diff) | |
download | sqlalchemy-c7b52003fb369637d5f72d2a45ff256638b6362d.tar.gz |
- add a flag to DefaultDialect for this so that people will have some
workaround
-rw-r--r-- | lib/sqlalchemy/engine/default.py | 3 | ||||
-rw-r--r-- | test/sql/test_join_rewriting.py | 29 |
2 files changed, 31 insertions, 1 deletions
diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py index 94f59d388..7d558f5ff 100644 --- a/lib/sqlalchemy/engine/default.py +++ b/lib/sqlalchemy/engine/default.py @@ -106,6 +106,7 @@ class DefaultDialect(interfaces.Dialect): def __init__(self, convert_unicode=False, encoding='utf-8', paramstyle=None, dbapi=None, implicit_returning=None, + supports_right_nested_joins=None, case_sensitive=True, label_length=None, **kwargs): @@ -130,6 +131,8 @@ class DefaultDialect(interfaces.Dialect): self.positional = self.paramstyle in ('qmark', 'format', 'numeric') self.identifier_preparer = self.preparer(self) self.type_compiler = self.type_compiler(self) + if supports_right_nested_joins is not None: + self.supports_right_nested_joins = supports_right_nested_joins self.case_sensitive = case_sensitive diff --git a/test/sql/test_join_rewriting.py b/test/sql/test_join_rewriting.py index ba54acb05..2cf98be3f 100644 --- a/test/sql/test_join_rewriting.py +++ b/test/sql/test_join_rewriting.py @@ -3,7 +3,6 @@ from sqlalchemy.testing import fixtures, AssertsCompiledSQL from sqlalchemy import util from sqlalchemy.engine import default - m = MetaData() a = Table('a', m, @@ -110,3 +109,31 @@ class JoinRewriteTest(fixtures.TestBase, AssertsCompiledSQL): "FROM b JOIN c ON b.id = c.b_id) AS anon_2 " "ON a_1.id = anon_2.b_a_id ORDER BY anon_2.b_id" ) + + def test_dialect_flag(self): + d1 = default.DefaultDialect(supports_right_nested_joins=True) + d2 = default.DefaultDialect(supports_right_nested_joins=False) + + j1 = b.join(c) + j2 = a.join(j1) + + s = select([a, b, c], use_labels=True).\ + select_from(j2) + + self.assert_compile( + s, + "SELECT a.id AS a_id, b.id AS b_id, b.a_id AS b_a_id, c.id AS c_id, " + "c.b_id AS c_b_id FROM a JOIN (b JOIN c ON b.id = c.b_id) " + "ON a.id = b.a_id", + dialect=d1 + ) + self.assert_compile( + s, + "SELECT a.id AS a_id, anon_1.b_id AS b_id, " + "anon_1.b_a_id AS b_a_id, " + "anon_1.c_id AS c_id, anon_1.c_b_id AS c_b_id " + "FROM a JOIN (SELECT b.id AS b_id, b.a_id AS b_a_id, c.id AS c_id, " + "c.b_id AS c_b_id FROM b JOIN c ON b.id = c.b_id) AS anon_1 " + "ON a.id = anon_1.b_a_id", + dialect=d2 + ) |