code: def get_expression_execution_cost(
      context: "OptimizerContext", expr: AbstractExpression
  ) -> float:
      """
      This function computes the estimated cost of executing the given abstract expression
      based on the statistics in the catalog. The function assumes that all the
      expression, except for the FunctionExpression, have a cost of zero.
      For FunctionExpression, it checks the catalog for relevant statistics; if none are
      available, it uses a default cost of DEFAULT_FUNCTION_EXPRESSION_COST.
  
      Args:
          context (OptimizerContext): the associated optimizer context
          expr (AbstractExpression): The AbstractExpression object whose cost
          needs to be computed.
  
      Returns:
          float: The estimated cost of executing the function expression.
      """
      total_cost = 0
      # iterate over all the function expression and accumulate the cost
      for child_expr in expr.find_all(FunctionExpression):
          cost_entry = (
              context.db.catalog().get_function_cost_catalog_entry(
                  child_expr.name
              )
          )
          if cost_entry:
              total_cost += cost_entry.cost
          else:
              total_cost += DEFAULT_FUNCTION_EXPRESSION_COST
      return total_cost
  
imports: import typing
  from typing import List, Tuple
  from evadb.catalog.catalog_utils import get_table_primary_columns
  from evadb.catalog.models.column_catalog import ColumnCatalogEntry
  from evadb.catalog.models.function_io_catalog import FunctionIOCatalogEntry
  from evadb.catalog.models.function_metadata_catalog import FunctionMetadataCatalogEntry
  from evadb.constants import CACHEABLE_FUNCTIONS, DEFAULT_FUNCTION_EXPRESSION_COST
  from evadb.expression.abstract_expression import AbstractExpression, ExpressionType
  from evadb.expression.constant_value_expression import ConstantValueExpression
  from evadb.expression.expression_utils import conjunction_list_to_expression_tree, contains_single_column, get_columns_in_predicate, is_simple_predicate, to_conjunction_list
  from evadb.expression.function_expression import FunctionExpression, FunctionExpressionCache
  from evadb.expression.tuple_value_expression import TupleValueExpression
  from evadb.parser.alias import Alias
  from evadb.parser.create_statement import ColumnDefinition
  from evadb.utils.kv_cache import DiskKVCache
label_desc: Use image node_id 13 for calling a global function with example usage: get_expression_execution_cost(context, expr) and returns: total_cost