summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2013-11-13 11:55:54 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2013-11-13 11:55:54 -0500
commitfefa2f5d57301f86136233a485624f0d083236d9 (patch)
tree7e504aaa52db476eb5cfe549a857902c6bd09b67
parentfe1d64473896b1e8abeb8ddb966447632c057321 (diff)
downloadsqlalchemy-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.rst6
-rw-r--r--lib/sqlalchemy/orm/query.py2
-rw-r--r--test/orm/test_query.py13
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