]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- fix annotation for aliased()
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 24 Jul 2011 17:36:40 +0000 (13:36 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 24 Jul 2011 17:36:40 +0000 (13:36 -0400)
lib/sqlalchemy/sql/expression.py
test/sql/test_selectable.py

index 0035b57cd584b3d3f769c60f357191eb0745db6c..fc0ab38767bebf4bbdcc17ce4e1b1ab501d75bdc 100644 (file)
@@ -3362,7 +3362,7 @@ class Alias(FromClause):
 
     def _copy_internals(self, clone=_clone):
         self._reset_exported()
-        self.element = _clone(self.element)
+        self.element = clone(self.element)
         baseselectable = self.element
         while isinstance(baseselectable, Alias):
             baseselectable = baseselectable.element
index dd0bf5275633783c51f709f8fd499578a0b82f3f..8e716fcee44818c4df6d8541716dab55a8e5910f 100644 (file)
@@ -821,6 +821,13 @@ class AnnotationsTest(TestBase):
         b5 = visitors.cloned_traverse(b3, {}, {'binary':visit_binary})
         assert str(b5) == ":bar = table1.col2"
 
+    def test_annotate_aliased(self):
+        t1 = table('t1', column('c1'))
+        s = select([(t1.c.c1 + 3).label('bat')])
+        a = s.alias()
+        a = sql_util._deep_annotate(a, {'foo': 'bar'})
+        eq_(a._annotations['foo'], 'bar')
+        eq_(a.element._annotations['foo'], 'bar')
 
     def test_annotate_expressions(self):
         table1 = table('table1', column('col1'), column('col2'))