256 from cubicweb.server.msplanner import PartPlanInformation |
256 from cubicweb.server.msplanner import PartPlanInformation |
257 except ImportError: |
257 except ImportError: |
258 class PartPlanInformation(object): |
258 class PartPlanInformation(object): |
259 def merge_input_maps(*args): |
259 def merge_input_maps(*args): |
260 pass |
260 pass |
261 # def _choose_term(self, sourceterms): |
261 def _choose_term(self, sourceterms): |
262 # pass |
262 pass |
263 _orig_merge_input_maps = PartPlanInformation.merge_input_maps |
263 _orig_merge_input_maps = PartPlanInformation.merge_input_maps |
264 # _orig_choose_term = PartPlanInformation._choose_term |
264 _orig_choose_term = PartPlanInformation._choose_term |
265 |
265 |
266 def _merge_input_maps(*args): |
266 def _merge_input_maps(*args): |
267 return sorted(_orig_merge_input_maps(*args)) |
267 return sorted(_orig_merge_input_maps(*args)) |
268 |
268 |
269 # def _choose_term(self, sourceterms): |
269 def _choose_term(self, sourceterms): |
270 # # predictable order for test purpose |
270 # predictable order for test purpose |
271 # def get_key(x): |
271 def get_key(x): |
272 # try: |
272 try: |
273 # # variable |
273 # variable |
274 # return x.name |
274 return x.name |
275 # except AttributeError: |
275 except AttributeError: |
276 # try: |
276 try: |
277 # # relation |
277 # relation |
278 # return x.r_type |
278 return x.r_type |
279 # except AttributeError: |
279 except AttributeError: |
280 # # const |
280 # const |
281 # return x.value |
281 return x.value |
282 # varsinorder = sorted(sourceterms, key=get_key) |
282 return _orig_choose_term(self, sorted(sourceterms, key=get_key)) |
283 # if len(self._sourcesterms) > 1: |
|
284 # for var in varsinorder: |
|
285 # if not var.scope is self.rqlst: |
|
286 # return var, sourceterms.pop(var) |
|
287 # else: |
|
288 # for var in varsinorder: |
|
289 # if var.scope is self.rqlst: |
|
290 # return var, sourceterms.pop(var) |
|
291 # var = varsinorder[0] |
|
292 # return var, sourceterms.pop(var) |
|
293 |
283 |
294 |
284 |
295 def do_monkey_patch(): |
285 def do_monkey_patch(): |
296 RQLRewriter.insert_snippets = _insert_snippets |
286 RQLRewriter.insert_snippets = _insert_snippets |
297 RQLRewriter.build_variantes = _build_variantes |
287 RQLRewriter.build_variantes = _build_variantes |
298 ExecutionPlan._check_permissions = _check_permissions |
288 ExecutionPlan._check_permissions = _check_permissions |
299 ExecutionPlan.tablesinorder = None |
289 ExecutionPlan.tablesinorder = None |
300 ExecutionPlan.init_temp_table = _init_temp_table |
290 ExecutionPlan.init_temp_table = _init_temp_table |
301 PartPlanInformation.merge_input_maps = _merge_input_maps |
291 PartPlanInformation.merge_input_maps = _merge_input_maps |
302 #PartPlanInformation._choose_term = _choose_term |
292 PartPlanInformation._choose_term = _choose_term |
303 |
293 |
304 def undo_monkey_patch(): |
294 def undo_monkey_patch(): |
305 RQLRewriter.insert_snippets = _orig_insert_snippets |
295 RQLRewriter.insert_snippets = _orig_insert_snippets |
306 RQLRewriter.build_variantes = _orig_build_variantes |
296 RQLRewriter.build_variantes = _orig_build_variantes |
307 ExecutionPlan._check_permissions = _orig_check_permissions |
297 ExecutionPlan._check_permissions = _orig_check_permissions |
308 ExecutionPlan.init_temp_table = _orig_init_temp_table |
298 ExecutionPlan.init_temp_table = _orig_init_temp_table |
309 PartPlanInformation.merge_input_maps = _orig_merge_input_maps |
299 PartPlanInformation.merge_input_maps = _orig_merge_input_maps |
310 #PartPlanInformation._choose_term = _orig_choose_term |
300 PartPlanInformation._choose_term = _orig_choose_term |
311 |
301 |