diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2018-11-15 15:05:11 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2018-11-15 15:05:11 +0000 |
| commit | bfd6f76a7dd48d06a2d55e1b6dba191817e144ce (patch) | |
| tree | 709ba9c218001a6efeb2ac04fda4e17d143027fd /lib/sqlalchemy/sql/selectable.py | |
| parent | 0a07fd99dbb8122f8b0786d693506c849db58d9e (diff) | |
| parent | 7dcfd1e019e1c0ebceba06d6684f5bf64a2efb71 (diff) | |
| download | sqlalchemy-bfd6f76a7dd48d06a2d55e1b6dba191817e144ce.tar.gz | |
Merge "Allow join() to pick the best candidate from multiple froms/entities"
Diffstat (limited to 'lib/sqlalchemy/sql/selectable.py')
| -rw-r--r-- | lib/sqlalchemy/sql/selectable.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/sqlalchemy/sql/selectable.py b/lib/sqlalchemy/sql/selectable.py index 64886b326..f64f152c4 100644 --- a/lib/sqlalchemy/sql/selectable.py +++ b/lib/sqlalchemy/sql/selectable.py @@ -987,6 +987,19 @@ class Join(FromClause): return and_(*crit) @classmethod + def _can_join(cls, left, right, consider_as_foreign_keys=None): + if isinstance(left, Join): + left_right = left.right + else: + left_right = None + + constraints = cls._joincond_scan_left_right( + a=left, b=right, a_subset=left_right, + consider_as_foreign_keys=consider_as_foreign_keys) + + return bool(constraints) + + @classmethod def _joincond_scan_left_right( cls, a, a_subset, b, consider_as_foreign_keys): constraints = collections.defaultdict(list) @@ -1059,6 +1072,7 @@ class Join(FromClause): "Please specify the 'onclause' of this " "join explicitly." % (a.description, b.description)) + def select(self, whereclause=None, **kwargs): r"""Create a :class:`.Select` from this :class:`.Join`. |
