docstr: Reads the table and return a batch iterator for the
  tuples.
  
  Argument:
      table: table metadata object of the table to read
      batch_mem_size (int): memory size of the batch read from storage
  Return:
      Iterator of Batch read.
docstr_tok: ["Reads","the","table","and","return","a","batch","iterator","for","the","tuples",".","Argument",":","table",":","table","metadata","object","of","the","table","to","read","batch_mem_size","(","int",")",":","memory","size","of","the","batch","read","from","storage","Return",":","Iterator","of","Batch","read","."]
code: def read(
      self, table: TableCatalogEntry, batch_mem_size: int = 30000000
  ) -> Iterator[Batch]:
      """
      Reads the table and return a batch iterator for the
      tuples.
  
      Argument:
          table: table metadata object of the table to read
          batch_mem_size (int): memory size of the batch read from storage
      Return:
          Iterator of Batch read.
      """
      try:
          table_to_read = self._try_loading_table_via_reflection(
              table.name
          )
          result = self._sql_session.execute(
              table_to_read.select()
          ).fetchall()
          result_iter = (
              self._deserialize_sql_row(row._asdict(), table.columns)
              for row in result
          )
          for df in rebatch(result_iter, batch_mem_size):
              yield Batch(pd.DataFrame(df))
      except Exception as e:
          err_msg = f"Failed to read the table {table.name} with exception {str(e)}"
          logger.exception(err_msg)
          raise Exception(err_msg)
  
imports: from typing import Iterator, List
  import numpy
  import pandas
  from sqlalchemy import Table, inspect
  from sqlalchemy.sql.expression import ColumnElement
  from evadb.catalog.catalog_type import ColumnType
  from evadb.catalog.models.base_model import BaseModel
  from evadb.catalog.models.column_catalog import ColumnCatalogEntry
  from evadb.catalog.models.table_catalog import TableCatalogEntry
  from evadb.catalog.schema_utils import SchemaUtils
  from evadb.catalog.sql_config import IDENTIFIER_COLUMN, ROW_NUM_COLUMN
  from evadb.database import EvaDBDatabase
  from evadb.models.storage.batch import Batch
  from evadb.parser.table_ref import TableInfo
  from evadb.storage.abstract_storage_engine import AbstractStorageEngine
  from evadb.utils.generic_utils import PickleSerializer, rebatch
  from evadb.utils.logging_manager import logger
label_desc: Use image node_id 8 for calling the SQLStorageEngine obj's underlying member method code with example usage: obj.read(table, batch_mem_size) without return types