]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
"order_by" parameter propigated to inheriting mappers
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 3 May 2006 16:55:56 +0000 (16:55 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 3 May 2006 16:55:56 +0000 (16:55 +0000)
oracle ROW_NUMBER logic uses select.oid_column to get default order by

lib/sqlalchemy/databases/oracle.py
lib/sqlalchemy/mapping/mapper.py

index a475d29b769fee17f41b0afcb902807ade3a91e0..863cfd03e8dd3893084cd228cbd31cdb963e8b04 100644 (file)
@@ -276,16 +276,10 @@ class OracleCompiler(ansisql.ANSICompiler):
             return
         if select.limit is not None or select.offset is not None:
             select._oracle_visit = True
+            # to use ROW_NUMBER(), an ORDER BY is required. 
             orderby = self.strings[select.order_by_clause]
             if not orderby:
-                # to use ROW_NUMBER(), an ORDER BY is required.  so here we dig in
-                # as best we can to find some column we can order by
-                # TODO: try to get "oid_column" to be used here
-                if len(select.primary_key):
-                    col = select.primary_key[0].original.table.name
-                else:
-                    col = [c for c in select.c][0].original.table.name
-                orderby = "%s.rowid ASC" % col
+                orderby = select.oid_column
             select.append_column(sql.ColumnClause("ROW_NUMBER() OVER (ORDER BY %s)" % orderby).label("ora_rn"))
             limitselect = sql.select([c for c in select.c if c.key!='ora_rn'])
             if select.offset is not None:
index 4a26a4f38aec2cc683392d0acd44390b731dacb0..db404b6eac41405481ae2216a7a3d27252be63ba 100644 (file)
@@ -114,6 +114,8 @@ class Mapper(object):
                 self._synchronizer = None
             self.inherits = inherits
             self.noninherited_table = table
+            if self.order_by is False:
+                self.order_by = inherits.order_by
         else:
             self.primarytable = self.table
             self.noninherited_table = self.table