def test_product(self): with HTTMock(create_mock()): left = MyriaRelation(FULL_NAME, connection=self.connection) right = MyriaRelation(FULL_NAME2, connection=self.connection) product = left.join(right) join = filter(lambda op: isinstance(op, CrossProduct), product.query.walk()) self.assertTrue(join) self.assertEqual(join[0].left, left.query) self.assertEqual(join[0].right, right.query) self.assertIsNotNone(product._sink().to_json())
def test_join_predicate(self): with HTTMock(create_mock()): left = MyriaRelation(FULL_NAME, connection=self.connection) right = MyriaRelation(FULL_NAME2, connection=self.connection) joined = left.join(right, lambda l, r: l.column == r.column3) join = filter(lambda op: isinstance(op, Join), joined.query.walk()) self.assertTrue(join) self.assertEqual(join[0].left, left.query) self.assertEqual(join[0].right, right.query) self.assertIsNotNone(join[0].condition) self.assertIsNotNone(join[0].condition) self.assertNotEqual(join[0].condition, TAUTOLOGY) self.assertIsNotNone(joined._sink().to_json())
def test_join_lambda_attribute(self): with HTTMock(create_mock()): left = MyriaRelation(FULL_NAME, connection=self.connection) right = MyriaRelation(FULL_NAME2, connection=self.connection) joined = left.join(right, lambda l, r: l.column == r.column3, projection=[lambda l, r: l.column2]) join = filter(lambda op: isinstance(op, ProjectingJoin), joined.query.walk()) self.assertTrue(join) self.assertEqual(join[0].left, left.query) self.assertEqual(join[0].right, right.query) self.assertIsNotNone(join[0].output_columns) self.assertListEqual(join[0].output_columns, [UnnamedAttributeRef(1)]) self.assertIsNotNone(joined._sink().to_json())