169 # reinsert solutions for invariants |
169 # reinsert solutions for invariants |
170 for sol in newsols: |
170 for sol in newsols: |
171 for invvar, vartype in invariants[id(sol)].iteritems(): |
171 for invvar, vartype in invariants[id(sol)].iteritems(): |
172 sol[invvar] = vartype |
172 sol[invvar] = vartype |
173 for sol in existssols: |
173 for sol in existssols: |
174 for invvar, vartype in invariants[id(sol)].iteritems(): |
174 try: |
175 sol[invvar] = vartype |
175 for invvar, vartype in invariants[id(sol)].iteritems(): |
|
176 sol[invvar] = vartype |
|
177 except KeyError: |
|
178 continue |
176 if len(newsols) > 1: |
179 if len(newsols) > 1: |
177 if rewrite_unstable_outer_join(rqlst, newsols, unstable, schema): |
180 if rewrite_unstable_outer_join(rqlst, newsols, unstable, schema): |
178 # remove variables extracted to subqueries from solutions |
181 # remove variables extracted to subqueries from solutions |
179 newsols = _new_solutions(rqlst, newsols) |
182 newsols = _new_solutions(rqlst, newsols) |
180 return newsols, existssols, unstable |
183 return newsols, existssols, unstable |