diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-04-26 16:34:14 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-04-26 16:34:14 +0000 |
commit | f3bcc15c5ca153932a35401a3b37082eb41a9d08 (patch) | |
tree | 2551465ea2326f0982188640f8776f6c020be9a5 /lib/sqlalchemy/sql/expression.py | |
parent | b089e8615b9cec8b7cb4741b1fad8c30afcfc848 (diff) | |
download | sqlalchemy-f3bcc15c5ca153932a35401a3b37082eb41a9d08.tar.gz |
- improved behavior of text() expressions when used as
FROM clauses, such as select().select_from(text("sometext"))
[ticket:1014]
- removed _TextFromClause; _TextClause just adds necessary FromClause descriptors
at the class level
Diffstat (limited to 'lib/sqlalchemy/sql/expression.py')
-rw-r--r-- | lib/sqlalchemy/sql/expression.py | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py index 8c439ce2c..94c145613 100644 --- a/lib/sqlalchemy/sql/expression.py +++ b/lib/sqlalchemy/sql/expression.py @@ -1788,12 +1788,6 @@ class FromClause(Selectable): def _populate_column_collection(self): pass -class _TextFromClause(FromClause): - __visit_name__ = 'fromclause' - - def __init__(self, text): - self.name = text - class _BindParamClause(ClauseElement, _CompareMixin): """Represent a bind parameter. @@ -1914,6 +1908,9 @@ class _TextClause(ClauseElement): _bind_params_regex = re.compile(r'(?<![:\w\x5c]):(\w+)(?!:)', re.UNICODE) + _hide_froms = [] + oid_column = None + def __init__(self, text = "", bind=None, bindparams=None, typemap=None, autocommit=False): self._bind = bind self.bindparams = {} @@ -1949,7 +1946,7 @@ class _TextClause(ClauseElement): def _get_from_objects(self, **modifiers): return [] - + def supports_execution(self): return True @@ -3007,7 +3004,7 @@ class Select(_SelectBaseMixin, FromClause): if from_obj: self._froms = util.Set([ - _is_literal(f) and _TextFromClause(f) or f + _is_literal(f) and _TextClause(f) or f for f in util.to_list(from_obj) ]) else: @@ -3184,7 +3181,7 @@ class Select(_SelectBaseMixin, FromClause): s = self._generate() if _is_literal(fromclause): - fromclause = _TextFromClause(fromclause) + fromclause = _TextClause(fromclause) s._froms = s._froms.union([fromclause]) return s @@ -3261,7 +3258,7 @@ class Select(_SelectBaseMixin, FromClause): """ if _is_literal(fromclause): - fromclause = _TextFromClause(fromclause) + fromclause = _TextClause(fromclause) self._froms = self._froms.union([fromclause]) |