diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2009-01-28 01:28:20 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2009-01-28 01:28:20 +0000 |
commit | 397ba5d73d8486a2092cacfaaa743d92731ce67c (patch) | |
tree | c8703adb47ed04f345374242a25055c2749f04e4 /lib/sqlalchemy/sql/compiler.py | |
parent | 7e7aa8f7c28628c4b5de7428c33ed63552e8f5b9 (diff) | |
download | sqlalchemy-397ba5d73d8486a2092cacfaaa743d92731ce67c.tar.gz |
- _CalculatedClause is gone
- Function rolls the various standalone execution functionality of CC into itself,
accesses its internal state more directly
- collate just uses _BinaryExpression, don't know why it didn't do this already
- added new _Case construct, compiles directly
- the world is a happier place
Diffstat (limited to 'lib/sqlalchemy/sql/compiler.py')
-rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index dd4e194fe..f34bd4906 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -331,8 +331,16 @@ class DefaultCompiler(engine.Compiled): return sep.join(s for s in (self.process(c) for c in clauselist.clauses) if s is not None) - def visit_calculatedclause(self, clause, **kwargs): - return self.process(clause.clause_expr) + def visit_case(self, clause, **kwargs): + x = "CASE " + if clause.value: + x += self.process(clause.value) + " " + for cond, result in clause.whens: + x += "WHEN " + self.process(cond) + " THEN " + self.process(result) + " " + if clause.else_: + x += "ELSE " + self.process(clause.else_) + " " + x += "END" + return x def visit_cast(self, cast, **kwargs): return "CAST(%s AS %s)" % (self.process(cast.clause), self.process(cast.typeclause)) |