diff -r c397819f2482 -r 1e73a466aa69 server/mssteps.py --- a/server/mssteps.py Thu Jun 17 12:13:38 2010 +0200 +++ b/server/mssteps.py Thu Jun 17 14:43:16 2010 +0200 @@ -140,13 +140,6 @@ def mytest_repr(self): """return a representation of this step suitable for test""" - sel = self.select.selection - restr = self.select.where - self.select.selection = self.selection - self.select.where = None - rql = self.select.as_string(kwargs=self.plan.args) - self.select.selection = sel - self.select.where = restr try: # rely on a monkey patch (cf unittest_querier) table = self.plan.tablesinorder[self.table] @@ -155,12 +148,19 @@ # not monkey patched table = self.table outputtable = self.outputtable - return (self.__class__.__name__, rql, self.limit, self.offset, table, - outputtable) + sql = self.get_sql().replace(self.table, table) + return (self.__class__.__name__, sql, outputtable) def execute(self): """execute this step""" self.execute_children() + sql = self.get_sql() + if self.outputtable: + self.plan.create_temp_table(self.outputtable) + sql = 'INSERT INTO %s %s' % (self.outputtable, sql) + return self.plan.sqlexec(sql, self.plan.args) + + def get_sql(self): self.inputmap = inputmap = self.children[-1].outputmap # get the select clause clause = [] @@ -223,17 +223,15 @@ sql.append('LIMIT %s' % self.limit) if self.offset: sql.append('OFFSET %s' % self.offset) - #print 'DATA', plan.sqlexec('SELECT * FROM %s' % self.table, None) - sql = ' '.join(sql) - if self.outputtable: - self.plan.create_temp_table(self.outputtable) - sql = 'INSERT INTO %s %s' % (self.outputtable, sql) - return self.plan.sqlexec(sql, self.plan.args) + return ' '.join(sql) def visit_function(self, function): """generate SQL name for a function""" - return '%s(%s)' % (function.name, - ','.join(c.accept(self) for c in function.children)) + try: + return self.children[0].outputmap[str(function)] + except KeyError: + return '%s(%s)' % (function.name, + ','.join(c.accept(self) for c in function.children)) def visit_variableref(self, variableref): """get the sql name for a variable reference"""