summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-03-22 16:57:46 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-03-22 16:57:46 +0000
commit2cc08018bdc985c3dc5557dd0773eda431253295 (patch)
tree750a1299397b57a86d635847130ab2427dc618ae /lib/sqlalchemy
parent43dd06381cda9d1c4360e2ec022796b977c313b9 (diff)
downloadsqlalchemy-2cc08018bdc985c3dc5557dd0773eda431253295.tar.gz
fixed oracle's efforts to get an ORDER BY for its ROW NUMBER OVER clause, fixed support for multi-leveled Alias objects to render correctly
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/databases/oracle.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py
index ec93d43ff..1a02448e0 100644
--- a/lib/sqlalchemy/databases/oracle.py
+++ b/lib/sqlalchemy/databases/oracle.py
@@ -244,8 +244,8 @@ class OracleCompiler(ansisql.ANSICompiler):
def visit_alias(self, alias):
"""oracle doesnt like 'FROM table AS alias'. is the AS standard SQL??"""
- self.froms[alias] = self.get_from_text(alias.selectable) + " " + alias.name
- self.strings[alias] = self.get_str(alias.selectable)
+ self.froms[alias] = self.get_from_text(alias.original) + " " + alias.name
+ self.strings[alias] = self.get_str(alias.original)
def visit_column(self, column):
if self._use_ansi:
@@ -282,8 +282,10 @@ class OracleCompiler(ansisql.ANSICompiler):
if hasattr(select, "order_by_clause"):
orderby = self.strings[select.order_by_clause]
else:
+ # 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
- orderby = "%s.rowid ASC" % select.froms[0].name
+ orderby = "%s.rowid ASC" % select.primary_key[0].original.table.name
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: