def evalLeftJoin(ctx, join): a = set(evalPart(ctx, join.p1)) b = set(evalPart(ctx, join.p2)) res = set() res.update(_filter(_join(a, b), join.expr)) res.update(_diff(a, b, join.expr)) return res
def evalFilter(ctx, part): # import pdb; pdb.set_trace() # TODO: Deal with dict returned from evalPart! return _filter(evalPart(ctx, part.p), part.expr)