- changed status to resolved
dont do recursion overflow when FunctionElement type is None
Issue #3485
resolved
from sqlalchemy.sql.functions import FunctionElement
from sqlalchemy import Integer
from sqlalchemy.ext.compiler import compiles
class MissingType(FunctionElement):
name = 'mt'
type = None
class NotMissingType(FunctionElement):
name = 'nmt'
type = Integer
@compiles(NotMissingType)
@compiles(MissingType)
def _fn(element, compiler, **kw):
return element.name
print NotMissingType()
print MissingType()
the second one recursion overflows
#!
File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/sql/elements.py", line 722, in __getattr__
return getattr(self.comparator, key)
File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/sql/elements.py", line 722, in __getattr__
return getattr(self.comparator, key)
File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/sql/elements.py", line 722, in __getattr__
return getattr(self.comparator, key)
File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/sql/elements.py", line 722, in __getattr__
return getattr(self.comparator, key)
File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/sql/elements.py", line 722, in __getattr__
return getattr(self.comparator, key)
File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/sql/elements.py", line 722, in __getattr__
return getattr(self.comparator, key)
File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/sql/elements.py", line 722, in __getattr__
return getattr(self.comparator, key)
File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/sql/elements.py", line 722, in __getattr__
return getattr(self.comparator, key)
File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/sql/elements.py", line 722, in __getattr__
return getattr(self.comparator, key)
this goes back to at least 0.9 but 1.0.7 is fine
Comments (1)
-
reporter - Log in to comment
.FunctionElement
or other column element that incorrectly states 'None' or any other invalid object as the.type
attribute will report this exception instead of recursion overflow. fixes#3485→ <<cset 41aead96cdfd>>