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

georgia-tech-db / eva / d8e82e0e-8b3d-4d22-9a86-fe9f65c8b264

28 Oct 2023 10:50PM UTC coverage: 67.392% (-9.6%) from 76.956%
d8e82e0e-8b3d-4d22-9a86-fe9f65c8b264

push

circle-ci

xzdandy
Use table for side by side display

8763 of 13003 relevant lines covered (67.39%)

0.67 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

© 2026 Coveralls, Inc