diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-10-10 02:30:00 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-10-10 02:30:00 +0000 |
| commit | 74064ce9fd8e08619fb376ac506311d96a7ba85e (patch) | |
| tree | 28bc93cb742885291547a1a4fc1923bb5aa2e385 /lib/sqlalchemy/databases | |
| parent | da45a65a484f69881ca205157687282a9eabbf6e (diff) | |
| download | sqlalchemy-74064ce9fd8e08619fb376ac506311d96a7ba85e.tar.gz | |
- fixed Oracle non-ansi join syntax
Diffstat (limited to 'lib/sqlalchemy/databases')
| -rw-r--r-- | lib/sqlalchemy/databases/oracle.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py index 951f97e38..848a68ff3 100644 --- a/lib/sqlalchemy/databases/oracle.py +++ b/lib/sqlalchemy/databases/oracle.py @@ -577,12 +577,18 @@ class OracleCompiler(compiler.DefaultCompiler): binary.left = _OuterJoinColumn(binary.left) elif binary.right.table is join.right: binary.right = _OuterJoinColumn(binary.right) - - if where is not None: - self.__wheres[join.left] = self.__wheres[parentjoin] = (sql.and_(VisitOn().traverse(join.onclause, clone=True), where), parentjoin) + + if join.isouter: + if where is not None: + self.__wheres[join.left] = self.__wheres[parentjoin] = (sql.and_(VisitOn().traverse(join.onclause, clone=True), where), parentjoin) + else: + self.__wheres[join.left] = self.__wheres[join] = (VisitOn().traverse(join.onclause, clone=True), join) else: - self.__wheres[join.left] = self.__wheres[join] = (VisitOn().traverse(join.onclause, clone=True), join) - + if where is not None: + self.__wheres[join.left] = self.__wheres[parentjoin] = (sql.and_(join.onclause, where), parentjoin) + else: + self.__wheres[join.left] = self.__wheres[join] = (join.onclause, join) + return self.process(join.left, asfrom=True) + ", " + self.process(join.right, asfrom=True) def get_whereclause(self, f): |
