code: def test_should_return_empty_metadata_list_if_function_is_removed(
      self,
  ):
      function_name = "DummyObjectDetector"
      execute_query_fetch_all(
          self.evadb, f"DROP FUNCTION {function_name};"
      )
      create_function_query = """CREATE FUNCTION {}
                    INPUT  (Frame_Array NDARRAY UINT8(3, 256, 256))
                    OUTPUT (label NDARRAY STR(10))
                    TYPE  Classification
                    IMPL  'test/util.py'
                    CACHE 'TRUE'
                    BATCH 'FALSE';
          """
      execute_query_fetch_all(
          self.evadb, create_function_query.format(function_name)
      )
  
      # try fetching the metadata values
      entries = self.evadb.catalog().get_function_metadata_entries_by_function_name(
          function_name
      )
      self.assertEqual(len(entries), 2)
  
      # remove the function
      execute_query_fetch_all(
          self.evadb, f"DROP FUNCTION {function_name};"
      )
      # try fetching the metadata values
      entries = self.evadb.catalog().get_function_metadata_entries_by_function_name(
          function_name
      )
      self.assertEqual(len(entries), 0)
  
imports: import tempfile
  import unittest
  from test.util import DummyObjectDetector, create_dummy_batches, create_sample_video, file_remove, get_evadb_for_testing, shutdown_ray
  import numpy
  import pandas
  import pytest
  from evadb.binder.binder_utils import BinderError
  from evadb.catalog.catalog_type import ColumnType, NdArrayType
  from evadb.executor.executor_utils import ExecutorError
  from evadb.models.storage.batch import Batch
  from evadb.server.command_handler import execute_query_fetch_all
label_desc: Use image node_id 9 for calling the FunctionExecutorTest obj's underlying member method code with example usage: obj.test_should_return_empty_metadata_list_if_function_is_removed() without return types