def get_plan(self, statements, logical=False): """Get the query plan""" self.logical = compile.optimize(statements, OptLogicalAlgebra()) self.physical = compile.optimize(self.logical, MyriaLeftDeepTreeAlgebra()) plan = self.logical if logical else self.physical # Verify that we can stringify assert str(plan) # Verify that we can convert to a dot raco.viz.get_dot(plan) # verify repr return replace_with_repr(plan)
def get_plan(self, query, **kwargs): """Get the MyriaL query plan for a query""" statements = self.parser.parse(query) self.processor.evaluate(statements) if kwargs.get('logical', False): p = self.processor.get_logical_plan(**kwargs) else: p = self.processor.get_physical_plan(**kwargs) # verify that we can stringify p # TODO verify the string somehow? assert str(p) # verify that we can convert p to a dot # TODO verify the dot somehow? raco.viz.get_dot(p) # Test repr return replace_with_repr(p)
def get_plan(self, query, **kwargs): """Get the MyriaL query plan for a query""" statements = self.parser.parse(query, udas=kwargs.get('udas', None)) print statements self.processor.evaluate(statements) if kwargs.get('logical', False): p = self.processor.get_logical_plan(**kwargs) else: p = self.processor.get_physical_plan(**kwargs) # verify that we can stringify p # TODO verify the string somehow? assert str(p) # verify that we can convert p to a dot # TODO verify the dot somehow? raco.viz.get_dot(p) # Test repr # FIXME: replace_with_repr() is broken for logical ops # (__repr__ doesn't persist any constructor args), # so only test for physical ops (where __repr__ persists # all constructor args). if kwargs.get('logical', False): return p return replace_with_repr(p)