600 # set backend on the rql helper, will be used for function checking |
600 # set backend on the rql helper, will be used for function checking |
601 rqlhelper.backend = repo.config.sources()['system']['db-driver'] |
601 rqlhelper.backend = repo.config.sources()['system']['db-driver'] |
602 self._parse = rqlhelper.parse |
602 self._parse = rqlhelper.parse |
603 self._annotate = rqlhelper.annotate |
603 self._annotate = rqlhelper.annotate |
604 # rql planner |
604 # rql planner |
605 # note: don't use repo.sources, may not be built yet, and also "admin" |
605 if len(repo.sources) < 2: |
606 # isn't an actual source |
|
607 if len([uri for uri in repo.config.sources() if uri != 'admin']) < 2: |
|
608 from cubicweb.server.ssplanner import SSPlanner |
606 from cubicweb.server.ssplanner import SSPlanner |
609 self._planner = SSPlanner(schema, rqlhelper) |
607 self._planner = SSPlanner(schema, rqlhelper) |
610 else: |
608 else: |
611 from cubicweb.server.msplanner import MSPlanner |
609 from cubicweb.server.msplanner import MSPlanner |
612 self._planner = MSPlanner(schema, rqlhelper) |
610 self._planner = MSPlanner(schema, rqlhelper) |
613 # sql generation annotator |
611 # sql generation annotator |
614 self.sqlgen_annotate = SQLGenAnnotator(schema).annotate |
612 self.sqlgen_annotate = SQLGenAnnotator(schema).annotate |
|
613 |
|
614 def set_planner(self): |
|
615 if len(self._repo.sources) < 2: |
|
616 from cubicweb.server.ssplanner import SSPlanner |
|
617 self._planner = SSPlanner(self.schema, self._repo.vreg.rqlhelper) |
|
618 else: |
|
619 from cubicweb.server.msplanner import MSPlanner |
|
620 self._planner = MSPlanner(self.schema, self._repo.vreg.rqlhelper) |
615 |
621 |
616 def parse(self, rql, annotate=False): |
622 def parse(self, rql, annotate=False): |
617 """return a rql syntax tree for the given rql""" |
623 """return a rql syntax tree for the given rql""" |
618 try: |
624 try: |
619 return self._parse(unicode(rql), annotate=annotate) |
625 return self._parse(unicode(rql), annotate=annotate) |