# HG changeset patch # User Sylvain Thénault # Date 1282284906 -7200 # Node ID 0d0a87e88281e756e7b5cbdead1e26c49c20a6e3 # Parent 4d2b04b32cdc85aed284e50465b8198e9f8ec9c9 [querier] add_types_restriction_cleanups: remove useless try/except (we already filtered out variables not in newroot.defined_vars) and dict accss. Also systematically set computed solutions instead of modifying existing ones diff -r 4d2b04b32cdc -r 0d0a87e88281 rqlrewrite.py --- a/rqlrewrite.py Fri Aug 20 08:46:32 2010 +0200 +++ b/rqlrewrite.py Fri Aug 20 08:15:06 2010 +0200 @@ -45,14 +45,12 @@ allpossibletypes = {} for solution in solutions: for varname, etype in solution.iteritems(): - if not varname in newroot.defined_vars or eschema(etype).final: + # XXX not considering aliases by design, right ? + if varname not in newroot.defined_vars or eschema(etype).final: continue allpossibletypes.setdefault(varname, set()).add(etype) for varname in sorted(allpossibletypes): - try: - var = newroot.defined_vars[varname] - except KeyError: - continue + var = newroot.defined_vars[varname] stinfo = var.stinfo if stinfo.get('uidrel') is not None: continue # eid specified, no need for additional type specification @@ -64,7 +62,7 @@ if newroot is rqlst and typerel is not None: mytyperel = typerel else: - for vref in newroot.defined_vars[varname].references(): + for vref in var.references(): rel = vref.relation() if rel and rel.is_types_restriction(): mytyperel = rel @@ -79,12 +77,6 @@ for cst in mytyperel.get_nodes(n.Constant): if not cst.value in possibletypes: cst.parent.remove(cst) - try: - stinfo['possibletypes'].remove(cst.value) - except KeyError: - # restriction on a type not used by this query, may - # occurs with X is IN(...) - pass else: # we have to add types restriction if stinfo.get('scope') is not None: @@ -94,7 +86,7 @@ # to the root rel = newroot.add_type_restriction(var, possibletypes) stinfo['typerel'] = rel - stinfo['possibletypes'] = possibletypes + stinfo['possibletypes'] = possibletypes def remove_solutions(origsolutions, solutions, defined):