From e488bb47e4bd21ff0a09ce23e1adf00ba64d5d57 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 8 Oct 2013 20:06:58 -0400 Subject: 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 --- lib/sqlalchemy/sql/expression.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lib/sqlalchemy/sql') 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): -- cgit v1.2.1