diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-11-13 11:55:54 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-11-13 11:55:54 -0500 |
commit | fefa2f5d57301f86136233a485624f0d083236d9 (patch) | |
tree | 7e504aaa52db476eb5cfe549a857902c6bd09b67 | |
parent | fe1d64473896b1e8abeb8ddb966447632c057321 (diff) | |
download | sqlalchemy-fefa2f5d57301f86136233a485624f0d083236d9.tar.gz |
Fixed bug where usage of new :class:`.Bundle` object would cause
the :attr:`.Query.column_descriptions` attribute to fail.
-rw-r--r-- | doc/build/changelog/changelog_09.rst | 6 | ||||
-rw-r--r-- | lib/sqlalchemy/orm/query.py | 2 | ||||
-rw-r--r-- | test/orm/test_query.py | 13 |
3 files changed, 19 insertions, 2 deletions
diff --git a/doc/build/changelog/changelog_09.rst b/doc/build/changelog/changelog_09.rst index 89d8e14f3..75579f758 100644 --- a/doc/build/changelog/changelog_09.rst +++ b/doc/build/changelog/changelog_09.rst @@ -15,6 +15,12 @@ :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 Fixed bug which prevented history_meta recipe from working with diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index 1b83f3fb8..34b9691f5 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 63e3c4bb9..4d276896c 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 |