class_docstr: This context is used to store information that is useful during the process of binding a statement (such as a SELECT statement) to the catalog. It stores the following information:
  
  Args:
      `_table_alias_map`: Maintains a mapping from table_alias to corresponding
      catalog table entry
      `_derived_table_alias_map`: Maintains a mapping from derived table aliases,
      such as subqueries or function expressions, to column alias maps for all the
      corresponding projected columns. For example, in the following queries, the
      `_derived_table_alias_map` attribute would contain:
  
      `Select * FROM (SELECT id1, id2 FROM table) AS A` :
          `{A: {id1: table.col1, id2: table.col2}}`
      `Select * FROM video LATERAL JOIN func AS T(a, b)` :
          `{T: {a: func.obj1, b:func.obj2}}`
docstr: Search the alias and column object using column name
  Arguments:
      col_name (str): column name
  
  Returns:
      A tuple of alias and column object.
docstr_tok: ["Search","the","alias","and","column","object","using","column","name","Arguments",":","col_name","(","str",")",":","column","name","Returns",":","A","tuple","of","alias","and","column","object","."]
code: def _search_all_alias_maps(
      self, col_name: str
  ) -> Tuple[str, CatalogColumnType]:
      """
      Search the alias and column object using column name
      Arguments:
          col_name (str): column name
  
      Returns:
          A tuple of alias and column object.
      """
      num_alias_matches = 0
      alias_match = None
      match_obj = None
      for alias in self._table_alias_map:
          col_obj = self._check_table_alias_map(alias, col_name)
          if col_obj:
              match_obj = col_obj
              num_alias_matches += 1
              alias_match = alias
  
      for alias in self._derived_table_alias_map:
          col_obj = self._check_derived_table_alias_map(alias, col_name)
          if col_obj:
              match_obj = col_obj
              num_alias_matches += 1
              alias_match = alias
  
      if num_alias_matches > 1:
          err_msg = f"Ambiguous Column name {col_name}"
          logger.error(err_msg)
          raise BinderError(err_msg)
  
      return alias_match, match_obj
  
imports: from typing import Callable, Dict, List, Tuple, Union
  from thefuzz import process
  from evadb.binder.binder_utils import BinderError, check_data_source_and_table_are_valid, create_table_catalog_entry_for_data_source
  from evadb.catalog.catalog_type import TableType
  from evadb.catalog.models.column_catalog import ColumnCatalogEntry
  from evadb.catalog.models.function_io_catalog import FunctionIOCatalogEntry
  from evadb.catalog.models.table_catalog import TableCatalogEntry
  from evadb.expression.function_expression import FunctionExpression
  from evadb.expression.tuple_value_expression import TupleValueExpression
  from evadb.third_party.databases.interface import get_database_handler
  from evadb.utils.logging_manager import logger
label_desc: Use image node_id 9 for calling the StatementBinderContext obj's underlying member method code with example usage: obj._search_all_alias_maps(col_name) and returns: alias_match,  match_obj