diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-01-19 20:32:13 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-01-19 20:32:13 +0000 |
| commit | 8a48ee2c8c0a28c059e8d60ef1da4c8b2ddf0738 (patch) | |
| tree | 5050844ba68ed0a94d5ada36f87160aad7029920 /lib/sqlalchemy/sql.py | |
| parent | ddecef10715d9cdd05c568f81ade052c12330488 (diff) | |
| download | sqlalchemy-8a48ee2c8c0a28c059e8d60ef1da4c8b2ddf0738.tar.gz | |
- changed "BooleanExpression" to subclass from "BinaryExpression", so that boolean
expressions can also follow column-clause behaviors (i.e. label(), etc).
- query.select() had to become more picky about what it considers to be a full "selectable"
and what it considers to be a fragment that represents a WHERE criterion - looks for the presence
of a FromClause now (which is still pretty liberal, since i originally intended the check to be
for select() only). the previous exception-catch method also added a little stack tracing
overhead anyway.
Diffstat (limited to 'lib/sqlalchemy/sql.py')
| -rw-r--r-- | lib/sqlalchemy/sql.py | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index dbd119fd1..e0bae905a 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -1076,8 +1076,14 @@ class _BinaryClause(ClauseElement): self.left.compare(other.left) and self.right.compare(other.right) ) -class _BooleanExpression(_BinaryClause): - """represents a boolean expression, which is only useable in WHERE criterion.""" +class _BinaryExpression(_BinaryClause, ColumnElement): + """represents a binary expression, which can be in a WHERE criterion or in the column list + of a SELECT. By adding "ColumnElement" to its inherited list, it becomes a Selectable + unit which can be placed in the column list of a SELECT.""" + pass + +class _BooleanExpression(_BinaryExpression): + """represents a boolean expression.""" def __init__(self, *args, **kwargs): self.negate = kwargs.pop('negate', None) super(_BooleanExpression, self).__init__(*args, **kwargs) @@ -1087,13 +1093,6 @@ class _BooleanExpression(_BinaryClause): else: return super(_BooleanExpression, self)._negate() -class _BinaryExpression(_BinaryClause, ColumnElement): - """represents a binary expression, which can be in a WHERE criterion or in the column list - of a SELECT. By adding "ColumnElement" to its inherited list, it becomes a Selectable - unit which can be placed in the column list of a SELECT.""" - pass - - class Join(FromClause): def __init__(self, left, right, onclause=None, isouter = False): self.left = left._selectable() |
