From: Mike Bayer Date: Mon, 27 Nov 2006 19:42:33 +0000 (+0000) Subject: added label() function to Select class, useable only with select X-Git-Tag: rel_0_3_2~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=95dc215913ceede05bcfdd75b58cc8a626be4e60;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git added label() function to Select class, useable only with select that has scalar=True --- diff --git a/CHANGES b/CHANGES index b7504b9670..516309c3d5 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,8 @@ 0.3.2 - added keywords for EXCEPT, INTERSECT, EXCEPT ALL, INTERSECT ALL [ticket:247] +- added label() function to Select class, when scalar=True is used +to create a scalar subquery. 0.3.1 - Engine/Pool: diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index b3d61dc7e8..17c0a25f76 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -1494,6 +1494,9 @@ class Select(_SelectBaseMixin, FromClause): self._raw_columns.append(column) + if self.is_scalar and not hasattr(self, 'type'): + self.type = column.type + # if the column is a Select statement itself, # accept visitor column.accept_visitor(self.__correlator) @@ -1502,7 +1505,17 @@ class Select(_SelectBaseMixin, FromClause): for f in column._get_from_objects(): f.accept_visitor(self.__correlator) self._process_froms(column, False) - + def _make_proxy(self, selectable, name): + if self.is_scalar: + return self._raw_columns[0]._make_proxy(selectable, name) + else: + raise exceptions.InvalidRequestError("Not a scalar select statement") + def label(self, name): + if not self.is_scalar: + raise exceptions.InvalidRequestError("Not a scalar select statement") + else: + return label(name, self) + def _exportable_columns(self): return self._raw_columns def _proxy_column(self, column):