34 |
34 |
35 from cubicweb.utils import QueryCache, RepeatList |
35 from cubicweb.utils import QueryCache, RepeatList |
36 from cubicweb.server.rqlannotation import SQLGenAnnotator, set_qdata |
36 from cubicweb.server.rqlannotation import SQLGenAnnotator, set_qdata |
37 from cubicweb.server.ssplanner import READ_ONLY_RTYPES, add_types_restriction |
37 from cubicweb.server.ssplanner import READ_ONLY_RTYPES, add_types_restriction |
38 from cubicweb.server.edition import EditedEntity |
38 from cubicweb.server.edition import EditedEntity |
39 |
39 from cubicweb.server.ssplanner import SSPlanner |
40 |
40 |
41 ETYPE_PYOBJ_MAP[Binary] = 'Bytes' |
41 ETYPE_PYOBJ_MAP[Binary] = 'Bytes' |
42 |
42 |
43 |
43 |
44 def empty_rset(rql, args, rqlst=None): |
44 def empty_rset(rql, args, rqlst=None): |
518 # set backend on the rql helper, will be used for function checking |
518 # set backend on the rql helper, will be used for function checking |
519 rqlhelper.backend = repo.config.sources()['system']['db-driver'] |
519 rqlhelper.backend = repo.config.sources()['system']['db-driver'] |
520 self._parse = rqlhelper.parse |
520 self._parse = rqlhelper.parse |
521 self._annotate = rqlhelper.annotate |
521 self._annotate = rqlhelper.annotate |
522 # rql planner |
522 # rql planner |
523 if len(repo.sources) < 2: |
523 self._planner = SSPlanner(schema, rqlhelper) |
524 from cubicweb.server.ssplanner import SSPlanner |
|
525 self._planner = SSPlanner(schema, rqlhelper) |
|
526 else: |
|
527 from cubicweb.server.msplanner import MSPlanner |
|
528 self._planner = MSPlanner(schema, rqlhelper) |
|
529 # sql generation annotator |
524 # sql generation annotator |
530 self.sqlgen_annotate = SQLGenAnnotator(schema).annotate |
525 self.sqlgen_annotate = SQLGenAnnotator(schema).annotate |
531 |
|
532 def set_planner(self): |
|
533 if len(self._repo.sources) < 2: |
|
534 from cubicweb.server.ssplanner import SSPlanner |
|
535 self._planner = SSPlanner(self.schema, self._repo.vreg.rqlhelper) |
|
536 else: |
|
537 from cubicweb.server.msplanner import MSPlanner |
|
538 self._planner = MSPlanner(self.schema, self._repo.vreg.rqlhelper) |
|
539 |
526 |
540 def parse(self, rql, annotate=False): |
527 def parse(self, rql, annotate=False): |
541 """return a rql syntax tree for the given rql""" |
528 """return a rql syntax tree for the given rql""" |
542 try: |
529 try: |
543 return self._parse(unicode(rql), annotate=annotate) |
530 return self._parse(unicode(rql), annotate=annotate) |