code: def test_create_or_replace(self):
      function_name = "DummyObjectDetector"
      execute_query_fetch_all(
          self.evadb, f"DROP FUNCTION IF EXISTS {function_name};"
      )
      create_function_query = """CREATE OR REPLACE FUNCTION {}
                    INPUT  (Frame_Array NDARRAY UINT8(3, 256, 256))
                    OUTPUT (label NDARRAY STR(10))
                    TYPE  Classification
                    IMPL  'test/util.py';
          """
      actual = execute_query_fetch_all(
          self.evadb, create_function_query.format(function_name)
      )
      expected = Batch(
          pd.DataFrame(
              [f"Function {function_name} added to the database."]
          )
      )
      self.assertEqual(actual, expected)
  
      # Try to create or replace FUNCTION
      actual = execute_query_fetch_all(
          self.evadb, create_function_query.format(function_name)
      )
      expected = Batch(
          pd.DataFrame([f"Function {function_name} overwritten."])
      )
      self.assertEqual(actual, expected)
  
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 6 for calling the FunctionExecutorTest obj's underlying member method code with example usage: obj.test_create_or_replace() without return types