diff options
Diffstat (limited to 'lib/sqlalchemy/dialects')
| -rw-r--r-- | lib/sqlalchemy/dialects/mysql/base.py | 15 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/oracle/base.py | 13 |
2 files changed, 20 insertions, 8 deletions
diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index 8241d951b..6e84c9da1 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -1434,7 +1434,10 @@ class MySQLCompiler(compiler.SQLCompiler): else: return "" - def visit_join(self, join, asfrom=False, **kwargs): + def visit_join(self, join, asfrom=False, from_linter=None, **kwargs): + if from_linter: + from_linter.edges.add((join.left, join.right)) + if join.full: join_type = " FULL OUTER JOIN " elif join.isouter: @@ -1444,11 +1447,15 @@ class MySQLCompiler(compiler.SQLCompiler): return "".join( ( - self.process(join.left, asfrom=True, **kwargs), + self.process( + join.left, asfrom=True, from_linter=from_linter, **kwargs + ), join_type, - self.process(join.right, asfrom=True, **kwargs), + self.process( + join.right, asfrom=True, from_linter=from_linter, **kwargs + ), " ON ", - self.process(join.onclause, **kwargs), + self.process(join.onclause, from_linter=from_linter, **kwargs), ) ) diff --git a/lib/sqlalchemy/dialects/oracle/base.py b/lib/sqlalchemy/dialects/oracle/base.py index 9cb25b934..87e0baa58 100644 --- a/lib/sqlalchemy/dialects/oracle/base.py +++ b/lib/sqlalchemy/dialects/oracle/base.py @@ -829,19 +829,24 @@ class OracleCompiler(compiler.SQLCompiler): return " FROM DUAL" - def visit_join(self, join, **kwargs): + def visit_join(self, join, from_linter=None, **kwargs): if self.dialect.use_ansi: - return compiler.SQLCompiler.visit_join(self, join, **kwargs) + return compiler.SQLCompiler.visit_join( + self, join, from_linter=from_linter, **kwargs + ) else: + if from_linter: + from_linter.edges.add((join.left, join.right)) + kwargs["asfrom"] = True if isinstance(join.right, expression.FromGrouping): right = join.right.element else: right = join.right return ( - self.process(join.left, **kwargs) + self.process(join.left, from_linter=from_linter, **kwargs) + ", " - + self.process(right, **kwargs) + + self.process(right, from_linter=from_linter, **kwargs) ) def _get_nonansi_join_whereclause(self, froms): |
