From 5a70cb7fa5345696731eac48958bee804f241df3 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 5 Nov 2007 19:23:08 +0000 Subject: - adjustments to oracle ROWID logic...recent oid changes mean we have to use "rowid" against the select itself (i.e. its just...'rowid', no table name). seems to work OK but not sure if issues will arise - fixes to oracle bind param stuff to account for recent removal of ClauseParameters object. --- lib/sqlalchemy/sql/compiler.py | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) (limited to 'lib/sqlalchemy/sql') diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index ef66ffd5a..9c8a6f56e 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -235,22 +235,24 @@ class DefaultCompiler(engine.Compiled): # for this column which is used to translate result set values self.typemap.setdefault(name.lower(), column.type) self.column_labels.setdefault(column._label, name.lower()) - - if column.table is None or not column.table.named_with_column(): - return self.preparer.format_column(column, name=name) - else: - if column.table.oid_column is column: - n = self.dialect.oid_column_name(column) - if n is not None: - return "%s.%s" % (self.preparer.format_table(column.table, use_schema=False, name=ANONYMOUS_LABEL.sub(self._process_anon, column.table.name)), n) - elif len(column.table.primary_key) != 0: - pk = list(column.table.primary_key)[0] - pkname = (pk.is_literal and name or self._truncated_identifier("colident", pk.name)) - return self.preparer.format_column_with_table(list(column.table.primary_key)[0], column_name=pkname, table_name=ANONYMOUS_LABEL.sub(self._process_anon, column.table.name)) + + if column._is_oid: + n = self.dialect.oid_column_name(column) + if n is not None: + if column.table is None or not column.table.named_with_column(): + return self.preparer.format_column(column, name=n) else: - return None + return "%s.%s" % (self.preparer.format_table(column.table, use_schema=False, name=ANONYMOUS_LABEL.sub(self._process_anon, column.table.name)), n) + elif len(column.table.primary_key) != 0: + pk = list(column.table.primary_key)[0] + pkname = (pk.is_literal and name or self._truncated_identifier("colident", pk.name)) + return self.preparer.format_column_with_table(list(column.table.primary_key)[0], column_name=pkname, table_name=ANONYMOUS_LABEL.sub(self._process_anon, column.table.name)) else: - return self.preparer.format_column_with_table(column, column_name=name, table_name=ANONYMOUS_LABEL.sub(self._process_anon, column.table.name)) + return None + elif column.table is None or not column.table.named_with_column(): + return self.preparer.format_column(column, name=name) + else: + return self.preparer.format_column_with_table(column, column_name=name, table_name=ANONYMOUS_LABEL.sub(self._process_anon, column.table.name)) def visit_fromclause(self, fromclause, **kwargs): -- cgit v1.2.1