diff options
Diffstat (limited to 'lib/sqlalchemy/sql_util.py')
-rw-r--r-- | lib/sqlalchemy/sql_util.py | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/lib/sqlalchemy/sql_util.py b/lib/sqlalchemy/sql_util.py index 0728bba47..1a720d1d5 100644 --- a/lib/sqlalchemy/sql_util.py +++ b/lib/sqlalchemy/sql_util.py @@ -9,7 +9,22 @@ class TableCollection(object): self.tables = [] def add(self, table): self.tables.append(table) - def sort(self, reverse=False ): + if hasattr(self, '_sorted'): + del self._sorted + def sort(self, reverse=False): + try: + sorted = self._sorted + except AttributeError, e: + self._sorted = self._do_sort() + return self.sort(reverse=reverse) + if reverse: + x = sorted[:] + x.reverse() + return x + else: + return sorted + + def _do_sort(self): import sqlalchemy.orm.topological tuples = [] class TVisitor(schema.SchemaVisitor): @@ -29,8 +44,6 @@ class TableCollection(object): to_sequence( child ) if head is not None: to_sequence( head ) - if reverse: - sequence.reverse() return sequence |