Esempio n. 1
0
 def test_should_just_get_plan_with_storage_if_no_predicate_and_tlist(self):
     logical_plan = LogicalGet("video", 1)
     plan = ScanGenerator().build(logical_plan)
     self.assertTrue(isinstance(plan, SeqScanPlan))
     self.assertEqual(None, plan.predicate)
     self.assertEqual(None, plan.columns)
     self.assertEqual(PlanNodeType.STORAGE_PLAN, plan.children[0].node_type)
     self.assertEqual(1, plan.children[0].video)
Esempio n. 2
0
 def build(self, logical_plan: Operator):
     if logical_plan.type in self._SCAN_NODE_TYPES:
         return ScanGenerator().build(logical_plan)
     if logical_plan.type is self._INSERT_NODE_TYPE:
         return InsertGenerator().build(logical_plan)
     if logical_plan.type is self._CREATE_NODE_TYPE:
         return CreateGenerator().build(logical_plan)
     if logical_plan.type is self._CREATE_UDF_NODE_TYPE:
         return CreateUDFGenerator().build(logical_plan)
         
Esempio n. 3
0
    def test_should_return_correct_plan_tree_for_input_logical_tree(self):
        logical_plan = LogicalProject(
            [1, 2], [LogicalFilter("a", [LogicalGet("video", 1)])])

        plan = ScanGenerator().build(logical_plan)
        self.assertTrue(isinstance(plan, SeqScanPlan))
        self.assertEqual("a", plan.predicate)
        self.assertEqual([1, 2], plan.columns)
        self.assertEqual(PlanNodeType.STORAGE_PLAN, plan.children[0].node_type)
        self.assertEqual(1, plan.children[0].video)
    def test_should_return_correct_plan_tree_for_limit_logical_tree(self):
        # SELECT data, id FROM video limit 5;
        logical_plan = LogicalLimit(ConstantValueExpression(5))

        plan = ScanGenerator().build(logical_plan)

        self.assertTrue(isinstance(plan, LimitPlan))
        self.assertTrue(
            isinstance(plan.limit_expression, ConstantValueExpression))
        self.assertEqual(plan.limit_value, 5)
    def test_should_return_correct_plan_tree_for_orderby_logical_tree(self):
        # SELECT data, id FROM video ORDER BY data, id DESC;
        logical_plan = LogicalOrderBy([
            (TupleValueExpression('data'), ParserOrderBySortType.ASC),
            (TupleValueExpression('id'), ParserOrderBySortType.DESC)
        ])

        plan = ScanGenerator().build(logical_plan)

        self.assertTrue(isinstance(plan, OrderByPlan))
        self.assertEqual(TupleValueExpression('data'), plan.orderby_list[0][0])
        self.assertEqual(ParserOrderBySortType.ASC, plan.orderby_list[0][1])
        self.assertEqual(TupleValueExpression('id'), plan.orderby_list[1][0])
        self.assertEqual(ParserOrderBySortType.DESC, plan.orderby_list[1][1])
Esempio n. 6
0
 def test_should_just_get_plan_with_storage_if_no_predicate_and_tlist(self):
     logical_plan = LogicalGet("video", 1)
     plan = ScanGenerator().build(logical_plan)
     self.assertTrue(isinstance(plan, StoragePlan))
     self.assertEqual(1, plan.video)