diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-01-02 05:28:05 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-01-02 05:28:05 +0000 |
| commit | 0f7484094cfa7077e90865acdb5cad175608f567 (patch) | |
| tree | 34a891d67059ca0f0bf42b0895e36525b4b861bc /lib/sqlalchemy | |
| parent | 6980730e7d3f962768f44a1d5f5a7013d048cf85 (diff) | |
| download | sqlalchemy-0f7484094cfa7077e90865acdb5cad175608f567.tar.gz | |
order by oid -> order by *default_order_by() when called by mapper layer.
- one layer of abstraction between the "oid" and default ordering
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/mapping/mapper.py | 12 | ||||
| -rw-r--r-- | lib/sqlalchemy/mapping/properties.py | 12 | ||||
| -rw-r--r-- | lib/sqlalchemy/sql.py | 8 |
3 files changed, 17 insertions, 15 deletions
diff --git a/lib/sqlalchemy/mapping/mapper.py b/lib/sqlalchemy/mapping/mapper.py index 01dfd05d3..9108c0308 100644 --- a/lib/sqlalchemy/mapping/mapper.py +++ b/lib/sqlalchemy/mapping/mapper.py @@ -602,8 +602,8 @@ class Mapper(object): if not no_sort: if self.order_by: order_by = self.order_by - elif self.table.oid_column is not None: - order_by = [self.table.oid_column] + elif self.table.default_order_by() is not None: + order_by = self.table.default_order_by() else: order_by = None else: @@ -611,8 +611,8 @@ class Mapper(object): if self._should_nest(**kwargs): s2 = sql.select(self.table.primary_key, whereclause, use_labels=True, **kwargs) - if not kwargs.get('distinct', False) and self.table.oid_column is not None: - s2.order_by(self.table.oid_column) + if not kwargs.get('distinct', False) and self.table.default_order_by() is not None: + s2.order_by(*self.table.default_order_by()) s3 = s2.alias('rowcount') crit = [] for i in range(0, len(self.table.primary_key)): @@ -631,8 +631,8 @@ class Mapper(object): # add that to the column list # TODO: this idea should be handled by the SELECT statement itself, insuring # that order_by cols are in the select list if DISTINCT is selected - if kwargs.get('distinct', False) and self.table.oid_column is not None and order_by == [self.table.oid_column]: - statement.append_column(self.table.oid_column) + if kwargs.get('distinct', False) and self.table.default_order_by() is not None and order_by == [self.table.default_order_by()]: + statement.append_column(*self.table.default_order_by()) # plugin point diff --git a/lib/sqlalchemy/mapping/properties.py b/lib/sqlalchemy/mapping/properties.py index e6b41999d..3f9578372 100644 --- a/lib/sqlalchemy/mapping/properties.py +++ b/lib/sqlalchemy/mapping/properties.py @@ -592,8 +592,8 @@ class LazyLoader(PropertyLoader): if allparams: if self.order_by is not None: order_by = self.order_by - elif self.secondary is not None and self.secondary.oid_column is not None: - order_by = [self.secondary.oid_column] + elif self.secondary is not None and self.secondary.default_order_by() is not None: + order_by = self.secondary.default_order_by() else: order_by = None result = self.mapper.select(self.lazywhere, order_by=order_by, params=params) @@ -714,12 +714,12 @@ class EagerLoader(PropertyLoader): if self.secondaryjoin is not None: statement._outerjoin = sql.outerjoin(towrap, self.secondary, self.primaryjoin).outerjoin(self.eagertarget, self.eagersecondary) - if self.order_by is None and self.secondary.oid_column is not None: - statement.order_by(self.secondary.oid_column) + if self.order_by is None and self.secondary.default_order_by() is not None: + statement.order_by(*self.secondary.default_order_by()) else: statement._outerjoin = towrap.outerjoin(self.eagertarget, self.eagerprimary) - if self.order_by is None and self.eagertarget.oid_column is not None: - statement.order_by(self.eagertarget.oid_column) + if self.order_by is None and self.eagertarget.default_order_by() is not None: + statement.order_by(*self.eagertarget.default_order_by()) if self.eager_order_by is not None: statement.order_by(*self.eager_order_by) diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index 25b73c776..3012708fe 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -484,6 +484,11 @@ class FromClause(Selectable): def _get_from_objects(self): # this could also be [self], at the moment it doesnt matter to the Select object return [] + def default_order_by(self): + if not self.engine.default_ordering: + return None + else: + return [self.oid_column] def hash_key(self): return "FromClause(%s, %s)" % (repr(self.id), repr(self.from_name)) def accept_visitor(self, visitor): @@ -906,9 +911,6 @@ class TableImpl(FromClause): self.id = self.table.name def _oid_col(self): - if not self.table.engine.default_ordering: - return None - if not hasattr(self, '_oid_column'): if self.table.engine.oid_column_name() is not None: self._oid_column = schema.Column(self.table.engine.oid_column_name(), sqltypes.Integer, hidden=True) |
