diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-10-08 20:06:58 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-10-08 20:08:35 -0400 |
| commit | e488bb47e4bd21ff0a09ce23e1adf00ba64d5d57 (patch) | |
| tree | 537f82e58ebb22bbe0ad776a0e8611c37bb216eb /lib/sqlalchemy/sql | |
| parent | 79f55eb20bf3b65bf0663cf96de96c68f8804399 (diff) | |
| download | sqlalchemy-e488bb47e4bd21ff0a09ce23e1adf00ba64d5d57.tar.gz | |
A :func:`.select` that is made to refer to itself in its FROM clause,
typically via in-place mutation, will raise an informative error
message rather than causing a recursion overflow.
[ticket:2815]
Conflicts:
lib/sqlalchemy/sql/selectable.py
Diffstat (limited to 'lib/sqlalchemy/sql')
| -rw-r--r-- | lib/sqlalchemy/sql/expression.py | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py index b2f957bd0..5a97c2222 100644 --- a/lib/sqlalchemy/sql/expression.py +++ b/lib/sqlalchemy/sql/expression.py @@ -5288,6 +5288,9 @@ class Select(HasPrefixes, SelectBase): def add(items): for item in items: + if item is self: + raise exc.InvalidRequestError( + "select() construct refers to itself as a FROM") if translate and item in translate: item = translate[item] if not seen.intersection(item._cloned_set): |
