# HG changeset patch # User Sylvain Thénault # Date 1245083324 -7200 # Node ID f469368df530984053036b9f4ebb2b80d37ed2c8 # Parent b3f6fa7ad59f5b770043e1fc20312a19073a8ae2 when a relation isn't supported by a ms query parts, dereference introduced variable refs diff -r b3f6fa7ad59f -r f469368df530 server/msplanner.py --- a/server/msplanner.py Mon Jun 15 18:26:31 2009 +0200 +++ b/server/msplanner.py Mon Jun 15 18:28:44 2009 +0200 @@ -1216,6 +1216,7 @@ self.terms = terms self.solindices = solindices self.final = final + self._pending_vrefs = [] # terms which appear in unsupported branches needsel |= self.extneedsel self.needsel = needsel @@ -1369,9 +1370,12 @@ else: raise UnsupportedBranch() rschema = self.schema.rschema(node.r_type) + self._pending_vrefs = [] try: res = self.visit_default(node, newroot, terms)[0] - except Exception, ex: + except: + for vref in self._pending_vrefs: + vref.unregister_reference() raise ored = node.ored() if rschema.is_final() or rschema.inlined: @@ -1434,7 +1438,9 @@ # set scope so we can insert types restriction properly newvar = newroot.get_variable(node.name) newvar.stinfo['scope'] = self.scopes.get(node.variable.scope, newroot) - return VariableRef(newvar), node + vref = VariableRef(newvar) + self._pending_vrefs.append(vref) + return vref, node def visit_constant(self, node, newroot, terms): return copy_node(newroot, node), node