• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

georgia-tech-db / eva / a4c010ba-78be-4818-8e6f-1da08c6af280

31 Aug 2023 11:59PM UTC coverage: 70.992% (-10.6%) from 81.552%
a4c010ba-78be-4818-8e6f-1da08c6af280

push

circle-ci

web-flow
Merge branch 'staging' into evadb_staging

54 of 54 new or added lines in 3 files covered. (100.0%)

8020 of 11297 relevant lines covered (70.99%)

0.71 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

44.44
/evadb/executor/pp_executor.py
1
# coding=utf-8
2
# Copyright 2018-2023 EvaDB
3
#
4
# Licensed under the Apache License, Version 2.0 (the "License");
5
# you may not use this file except in compliance with the License.
6
# You may obtain a copy of the License at
7
#
8
#     http://www.apache.org/licenses/LICENSE-2.0
9
#
10
# Unless required by applicable law or agreed to in writing, software
11
# distributed under the License is distributed on an "AS IS" BASIS,
12
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
# See the License for the specific language governing permissions and
14
# limitations under the License.
15
from typing import Iterator
1✔
16

17
from evadb.database import EvaDBDatabase
1✔
18
from evadb.executor.abstract_executor import AbstractExecutor
1✔
19
from evadb.models.storage.batch import Batch
1✔
20
from evadb.plan_nodes.pp_plan import PPScanPlan
1✔
21

22

23
class PPExecutor(AbstractExecutor):
1✔
24
    """
25
    Applies PP to filter out the frames that doesn't satisfy the condition
26
    Arguments:
27
        node (AbstractPlan): ...
28

29
    Note: This look kind of redundant. This logic for now is similar to that
30
    of sequential scan executor. Will decide to delete it depending on how
31
    sequential scan evolves.
32
    """
33

34
    def __init__(self, db: EvaDBDatabase, node: PPScanPlan):
1✔
35
        super().__init__(db, node)
×
36
        self.predicate = node.predicate
×
37

38
    def exec(self, *args, **kwargs) -> Iterator[Batch]:
1✔
39
        child_executor = self.children[0]
×
40
        for batch in child_executor.exec():
×
41
            outcomes = self.predicate.evaluate(batch)
×
42
            required_frame_ids = []
×
43
            for i, outcome in enumerate(outcomes):
×
44
                if outcome:
×
45
                    required_frame_ids.append(i)
×
46

47
            yield batch[required_frame_ids]
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc