diff -r 163a2eab0e55 -r adb1673efa5f server/sources/rql2sql.py --- a/server/sources/rql2sql.py Tue Apr 26 16:14:43 2011 +0200 +++ b/server/sources/rql2sql.py Wed Apr 27 09:32:05 2011 +0200 @@ -84,6 +84,7 @@ newvar.prepare_annotation() newvar.stinfo['scope'] = select newvar._q_invariant = False + select.selection.append(VariableRef(newvar)) return newvar def _fill_to_wrap_rel(var, newselect, towrap, schema): @@ -93,10 +94,12 @@ towrap.add( (var, rel) ) for vref in rel.children[1].iget_nodes(VariableRef): newivar = _new_var(newselect, vref.name) - newselect.selection.append(VariableRef(newivar)) _fill_to_wrap_rel(vref.variable, newselect, towrap, schema) elif rschema.final: towrap.add( (var, rel) ) + for vref in rel.children[1].iget_nodes(VariableRef): + newivar = _new_var(newselect, vref.name) + newivar.stinfo['attrvar'] = (var, rel.r_type) def rewrite_unstable_outer_join(select, solutions, unstable, schema): """if some optional variables are unstable, they should be selected in a @@ -116,11 +119,6 @@ # extract aliases / selection newvar = _new_var(newselect, var.name) newselect.selection = [VariableRef(newvar)] - for avar in select.defined_vars.itervalues(): - if avar.stinfo['attrvar'] is var: - newavar = _new_var(newselect, avar.name) - newavar.stinfo['attrvar'] = newvar - newselect.selection.append(VariableRef(newavar)) towrap_rels = set() _fill_to_wrap_rel(var, newselect, towrap_rels, schema) # extract relations