def test_and_pushdown_relalg_filter(): test = BarOpNode( BinaryOpNode( OpCodes.ADD, VarNode('foo', None), VarNode('buzz', None), ), BoolExprNode( OpCodes.AND, BoolExprNode(OpCodes.EQ, VarNode('bar', RelationNode('foo')), BoolLiteral(True)), BoolExprNode(OpCodes.EQ, VarNode('baz', RelationNode('buzz')), BoolLiteral(True)))) expected = relalg.JoinNode( relalg.SelectNode( relalg.RelationNode('foo'), relalg.BoolOpNode( OpCodes.EQ, relalg.ProjectNode(relalg.RelationNode('foo'), ['bar']), relalg.BoolConstantNode(True))), relalg.SelectNode( relalg.RelationNode('buzz'), relalg.BoolOpNode( OpCodes.EQ, relalg.ProjectNode(relalg.RelationNode('buzz'), ['baz']), relalg.BoolConstantNode(True))), JoinTypes.INNER, JoinSides.FULL, ) assert GavlToRelAlg().visit(test) == expected
def test_expr_relalg_filter(): test = BarOpNode( VarNode('foo', None), BoolExprNode(OpCodes.LT, VarNode('bar', RelationNode('foo')), VarNode('baz', None))) expected = relalg.SelectNode( relalg.RelationNode('foo'), relalg.BoolOpNode( OpCodes.LT, relalg.ProjectNode(relalg.RelationNode('foo'), ['bar']), relalg.RelationNode('baz'))) assert GavlToRelAlg().visit(test) == expected
def visit_select(self, node): bool_expr = SASelectBuilder(self.engine).visit(node.bool_expr)[0] return relalg.SelectNode( node.relation, bool_expr )
def test_simple_relalg_filter(): test = BarOpNode(VarNode('foo', None), BoolLiteral(True)) expected = relalg.SelectNode(relalg.RelationNode('foo'), relalg.BoolConstantNode(True)) assert GavlToRelAlg().visit(test) == expected