From 95dc215913ceede05bcfdd75b58cc8a626be4e60 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 27 Nov 2006 19:42:33 +0000 Subject: [PATCH] added label() function to Select class, useable only with select that has scalar=True --- CHANGES | 2 ++ lib/sqlalchemy/sql.py | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) 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): -- 2.47.2