class_docstr: Abstract class for defining storage engine. Storage engine is responsible
  for handling data storage and retrieval tasks.
  This contains a minimal set of APIs that each engine should implement
class_docstr_tok: ["Abstract","class","for","defining","storage","engine",".","Storage","engine","is","responsible","for","handling","data","storage","and","retrieval","tasks",".","This","contains","a","minimal","set","of","APIs","that","each","engine","should","implement"]
docstr: Interface responsible for yielding row/rows to the client.
  This should be implemented as an iterator over of table. Helpful
  while doing full table scan. `pos` parameter is used if user wants
  to fetch specific rows.
  
  Attributes:
      table: storage unit to be read
      pos: row position to be returned
  
  Returns:
      Batch: an iterator of the batch read
docstr_tok: ["Interface","responsible","for","yielding","row\/rows","to","the","client",".","This","should","be","implemented","as","an","iterator","over","of","table",".","Helpful","while","doing","full","table","scan",".","`","pos","`","parameter","is","used","if","user","wants","to","fetch","specific","rows",".","Attributes",":","table",":","storage","unit","to","be","read","pos",":","row","position","to","be","returned","Returns",":","Batch",":","an","iterator","of","the","batch","read"]
code: def read(
      self,
      table: TableCatalogEntry,
      batch_mem_size: int = 30000000,
      predicate: AbstractExpression = None,
  ) -> Iterator[Batch]:
      """Interface responsible for yielding row/rows to the client.
      This should be implemented as an iterator over of table. Helpful
      while doing full table scan. `pos` parameter is used if user wants
      to fetch specific rows.
  
      Attributes:
          table: storage unit to be read
          pos: row position to be returned
  
      Returns:
          Batch: an iterator of the batch read
      """
  
file_path: evadb/evadb/storage/abstract_storage_engine.py
imports: from abc import ABCMeta, abstractmethod
  from typing import Iterator
  from evadb.catalog.models.table_catalog import TableCatalogEntry
  from evadb.database import EvaDBDatabase
  from evadb.expression.abstract_expression import AbstractExpression
  from evadb.models.storage.batch import Batch
label_desc: Use image node_id 4 for calling the AbstractStorageEngine obj's underlying member method code with example usage: obj.read(table, batch_mem_size, predicate) without return types