summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/databases
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-05-03 16:55:56 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-05-03 16:55:56 +0000
commitea06a3ac2f8225a9aac81cd849d681ee40d2e57a (patch)
treee9522cb6115147e5f9c45a1c91afdad88e9d9f88 /lib/sqlalchemy/databases
parentc5b02351a2e6a80dbd894c8ffacf64d1373d4d9d (diff)
downloadsqlalchemy-ea06a3ac2f8225a9aac81cd849d681ee40d2e57a.tar.gz
"order_by" parameter propigated to inheriting mappers
oracle ROW_NUMBER logic uses select.oid_column to get default order by
Diffstat (limited to 'lib/sqlalchemy/databases')
-rw-r--r--lib/sqlalchemy/databases/oracle.py10
1 files changed, 2 insertions, 8 deletions
diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py
index a475d29b7..863cfd03e 100644
--- a/lib/sqlalchemy/databases/oracle.py
+++ b/lib/sqlalchemy/databases/oracle.py
@@ -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: