From: Mike Bayer Date: Wed, 13 Nov 2013 16:55:54 +0000 (-0500) Subject: Fixed bug where usage of new :class:`.Bundle` object would cause X-Git-Tag: rel_0_9_0~123^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fefa2f5d57301f86136233a485624f0d083236d9;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Fixed bug where usage of new :class:`.Bundle` object would cause the :attr:`.Query.column_descriptions` attribute to fail. --- diff --git a/doc/build/changelog/changelog_09.rst b/doc/build/changelog/changelog_09.rst index 89d8e14f3a..75579f7583 100644 --- a/doc/build/changelog/changelog_09.rst +++ b/doc/build/changelog/changelog_09.rst @@ -14,6 +14,12 @@ .. changelog:: :version: 0.9.0b2 + .. change:: + :tags: bug, orm + + Fixed bug where usage of new :class:`.Bundle` object would cause + the :attr:`.Query.column_descriptions` attribute to fail. + .. change:: :tags: bug, examples diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index 1b83f3fb8a..34b9691f5f 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -3198,7 +3198,7 @@ class Bundle(object): class _BundleEntity(_QueryEntity): def __init__(self, query, bundle, setup_entities=True): query._entities.append(self) - self.bundle = bundle + self.bundle = self.expr = bundle self.type = type(bundle) self._label_name = bundle.name self._entities = [] diff --git a/test/orm/test_query.py b/test/orm/test_query.py index 63e3c4bb90..4d276896cf 100644 --- a/test/orm/test_query.py +++ b/test/orm/test_query.py @@ -19,7 +19,7 @@ from sqlalchemy.testing.assertions import eq_, assert_raises, assert_raises_mess from sqlalchemy.testing import AssertsCompiledSQL from test.orm import _fixtures from sqlalchemy.testing import fixtures, engines - +from sqlalchemy.orm import Bundle from sqlalchemy.orm.util import join, outerjoin, with_parent class QueryTest(_fixtures.FixtureTest): @@ -74,6 +74,7 @@ class RowTupleTest(QueryTest): address_alias = aliased(Address, name='aalias') fn = func.count(User.id) name_label = User.name.label('uname') + bundle = Bundle('b1', User.id, User.name) for q, asserted in [ ( sess.query(User), @@ -112,6 +113,15 @@ class RowTupleTest(QueryTest): 'expr':fn }, ] + ), + ( + sess.query(bundle), + [ + {'aliased': False, + 'expr': bundle, + 'type': Bundle, + 'name': 'b1'} + ] ) ]: eq_( @@ -119,6 +129,7 @@ class RowTupleTest(QueryTest): asserted ) + def test_unhashable_type(self): from sqlalchemy.types import TypeDecorator, Integer from sqlalchemy.sql import type_coerce