Author: eallen Date: 2011-03-02 22:38:36 +0000 (Wed, 02 Mar 2011) New Revision: 4566
Modified: trunk/rosemary/python/rosemary/sqlmodel.py trunk/rosemary/python/rosemary/sqlquery.py Log: Allow aliases on sql columns. This is to support sorting on derived/calculated columns.
Modified: trunk/rosemary/python/rosemary/sqlmodel.py =================================================================== --- trunk/rosemary/python/rosemary/sqlmodel.py 2011-03-02 22:36:27 UTC (rev 4565) +++ trunk/rosemary/python/rosemary/sqlmodel.py 2011-03-02 22:38:36 UTC (rev 4566) @@ -151,6 +151,7 @@ self.table = table self.name = name self.type = type + self.alias = None
self.table._columns.append(self) self.table._columns_by_name[self.name] = self
Modified: trunk/rosemary/python/rosemary/sqlquery.py =================================================================== --- trunk/rosemary/python/rosemary/sqlquery.py 2011-03-02 22:36:27 UTC (rev 4565) +++ trunk/rosemary/python/rosemary/sqlquery.py 2011-03-02 22:38:36 UTC (rev 4566) @@ -20,7 +20,10 @@ cols = list()
for column in columns: - cols.append(getattr(column, "identifier", column)) + col = getattr(column, "identifier", column) + if getattr(column, "alias", None): + col = "%s as %s" % (col, column.alias) + cols.append(col)
tokens.append("select %s" % ", ".join(cols))
@@ -63,9 +66,11 @@ else: direction = "desc"
- column = getattr(column, "identifier", column) + alias = getattr(column, "alias", None) + if not alias: + alias = getattr(column, "identifier", column)
- return "order by %s %s" % (column, direction) + return "order by %s %s" % (alias, direction)
class Limit(object): def emit(self, limit, offset):
cumin-developers@lists.fedorahosted.org