]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- removed "name" attribute from FromClause, Join, Select, CompoundSelect. its needless
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 3 Nov 2007 20:12:59 +0000 (20:12 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 3 Nov 2007 20:12:59 +0000 (20:12 +0000)
and led to some very strange anonymous label names
- removed what was apparently cruft in some column-targeting code

lib/sqlalchemy/orm/util.py
lib/sqlalchemy/sql/expression.py
test/orm/query.py

index 9e3f20257fe1884d56ce5e6f41e0bb75ea6dcb5c..08289ae8961913072e5d55e6536bc29bc76f1ec2 100644 (file)
@@ -189,7 +189,6 @@ class AliasedClauses(object):
         else:
             self.alias = mapped_table.alias()
         self.mapped_table = mapped_table
-        self.extra_cols = {}
         self.row_decorator = self._create_row_adapter()
         
     def aliased_column(self, column):
@@ -200,9 +199,6 @@ class AliasedClauses(object):
         if conv:
             return conv
 
-        if column in self.extra_cols:
-            return self.extra_cols[column]
-
         aliased_column = column
         # for column-level subqueries, swap out its selectable with our
         # eager version as appropriate, and manually build the 
@@ -214,11 +210,6 @@ class AliasedClauses(object):
         aliased_column = sql_util.ClauseAdapter(self.alias).chain(ModifySubquery()).traverse(aliased_column, clone=True)
         aliased_column = aliased_column.label(None)
         self.row_decorator.map[column] = aliased_column
-        # TODO: this is a little hacky
-        for attr in ('name', '_label'):
-            if hasattr(column, attr):
-                self.row_decorator.map[getattr(column, attr)] = aliased_column
-        self.extra_cols[column] = aliased_column
         return aliased_column
 
     def adapt_clause(self, clause):
@@ -246,18 +237,9 @@ class AliasedClauses(object):
                 return self.row[key]
             def keys(self):
                 return map.keys()
-        map = {}        
-        for c in self.alias.c:
-            parent = self.mapped_table.corresponding_column(c)
-            map[parent] = c
-            map[parent._label] = c
-            map[parent.name] = c
-        for c in self.extra_cols:
-            map[c] = self.extra_cols[c]
-            # TODO: this is a little hacky
-            for attr in ('name', '_label'):
-                if hasattr(c, attr):
-                    map[getattr(c, attr)] = self.extra_cols[c]
+        map = {}
+        for c in self.mapped_table.c:
+            map[c] = self.alias.corresponding_column(c)
                 
         AliasedRowAdapter.map = map
         return AliasedRowAdapter
index 3771734e3b7eddd7eb178d0aaa6cd2f7b9df30ff..49dbc143a8f35a3334291f229aa53e16c9b3bc98 100644 (file)
@@ -1521,8 +1521,7 @@ class FromClause(Selectable):
 
     __visit_name__ = 'fromclause'
 
-    def __init__(self, name=None):
-        self.name = name
+    def __init__(self):
         self.oid_column = None
         
     def _get_from_objects(self, **modifiers):
@@ -1723,6 +1722,12 @@ class FromClause(Selectable):
     def _proxy_column(self, column):
         return column._make_proxy(self)
 
+class _TextFromClause(FromClause):
+    __visit_name__ = 'fromclause'
+    
+    def __init__(self, text):
+        self.name = text
+        
 class _BindParamClause(ClauseElement, _CompareMixin):
     """Represent a bind parameter.
 
@@ -2212,9 +2217,6 @@ class Join(FromClause):
         self.__folded_equivalents = None
         self._init_primary_key()
 
-    name = property(lambda s: "Join object on " + s.left.name + " " + s.right.name)
-    encodedname = property(lambda s: s.name.encode('ascii', 'backslashreplace'))
-
     def _init_primary_key(self):
         from sqlalchemy import schema
         pkcol = util.Set([c for c in self._flatten_exportable_columns() if c.primary_key])
@@ -2663,7 +2665,7 @@ class TableClause(FromClause):
     """
 
     def __init__(self, name, *columns):
-        super(TableClause, self).__init__(name)
+        super(TableClause, self).__init__()
         self.name = self.fullname = name
         self.encodedname = self.name.encode('ascii', 'backslashreplace')
         self.oid_column = _ColumnClause('oid', self, _is_oid=True)
@@ -2910,7 +2912,6 @@ class CompoundSelect(_SelectBaseMixin, FromClause):
         
         _SelectBaseMixin.__init__(self, **kwargs)
 
-    name = property(lambda s:s.keyword + " statement")
 
     def self_group(self, against=None):
         return _FromGrouping(self)
@@ -3058,8 +3059,6 @@ class Select(_SelectBaseMixin, FromClause):
 
     froms = property(_get_display_froms, doc="""Return a list of all FromClause elements which will be applied to the FROM clause of the resulting statement.""")
 
-    name = property(lambda self:"Select statement", doc="""Placeholder 'name' attribute to meet the FromClause interface.""")
-
     def locate_all_froms(self):
         """return a Set of all FromClause elements referenced by this Select.  
         
@@ -3250,7 +3249,7 @@ class Select(_SelectBaseMixin, FromClause):
         """append the given FromClause expression to this select() construct's FROM clause."""
         
         if _is_literal(fromclause):
-            fromclause = FromClause(fromclause)
+            fromclause = _TextFromClause(fromclause)
             
         if not _copy_collection:
             self._froms.add(fromclause)
index e2362d6c18ea00cf1404a24ade9bc4f88c7b828c..e82041ff91e1a7b69d06278dd2e55e4f2ef29bc2 100644 (file)
@@ -902,6 +902,8 @@ class ExternalColumnsTest(QueryTest):
 
         assert tuple_address_result == sess.query(Address).join('user', aliased=True, id='ualias').add_entity(User, id='ualias').all()
 
+
+
 if __name__ == '__main__':
     testbase.main()