class_docstr: Group inputs into 4d segments of length provided in the query
  E.g., "GROUP BY '8 frames'" groups every 8 frames into one segment
  
  Arguments:
      node (AbstractPlan): The GroupBy Plan
class_docstr_tok: ["Group","inputs","into","4d","segments","of","length","provided","in","the","query","E.g.",",","``","GROUP","BY","'","8","frames","'","''","groups","every","8","frames","into","one","segment","Arguments",":","node","(","AbstractPlan",")",":","The","GroupBy","Plan"]
code: def exec(self, *args, **kwargs) -> Iterator[Batch]:
      child_executor = self.children[0]
  
      buffer = Batch(pd.DataFrame())
      for batch in child_executor.exec(**kwargs):
          new_batch = buffer + batch
          # We assume that all the segments exactly of segment_length size
          # and discard any dangling frames in the end.
          while len(new_batch) >= self._segment_length:
              yield new_batch[: self._segment_length]
              new_batch = new_batch[self._segment_length :]
          buffer = new_batch
  
file_path: evadb/evadb/executor/groupby_executor.py
imports: import re
  from typing import Iterator
  import pandas
  from evadb.database import EvaDBDatabase
  from evadb.executor.abstract_executor import AbstractExecutor
  from evadb.models.storage.batch import Batch
  from evadb.plan_nodes.groupby_plan import GroupByPlan
label_desc: Use image node_id 2 for calling the GroupByExecutor obj's underlying member method code with example usage: obj.exec() without return types