docstr: Drop a function in the database.
  
  Args:
      function_name (str): Name of the function to be dropped.
      if_exists (bool): If True, do not raise an error if the function does not already exist. If False, raise an error.
  
  Returns:
      EvaDBQuery: The EvaDBQuery object representing the DROP FUNCTION.
  
  Examples:
      Drop FUNCTION 'ObjectDetector'
  
      >>> cursor.drop_function("ObjectDetector", if_exists = True)
          0
      0   Function Successfully dropped: ObjectDetector
docstr_tok: ["Drop","a","function","in","the","database",".","Args",":","function_name","(","str",")",":","Name","of","the","function","to","be","dropped",".","if_exists","(","bool",")",":","If","True",",","do","not","raise","an","error","if","the","function","does","not","already","exist",".","If","False",",","raise","an","error",".","Returns",":","EvaDBQuery",":","The","EvaDBQuery","object","representing","the","DROP","FUNCTION",".","Examples",":","Drop","FUNCTION","'ObjectDetector'",">",">",">","cursor.drop_function","(","``","ObjectDetector","''",",","if_exists","=","True",")","0","0","Function","Successfully","dropped",":","ObjectDetector"]
code: def drop_function(
      self, function_name: str, if_exists: bool = True
  ) -> "EvaDBQuery":
      """
      Drop a function in the database.
  
      Args:
          function_name (str): Name of the function to be dropped.
          if_exists (bool): If True, do not raise an error if the function does not already exist. If False, raise an error.
  
      Returns:
          EvaDBQuery: The EvaDBQuery object representing the DROP FUNCTION.
  
      Examples:
          Drop FUNCTION 'ObjectDetector'
  
          >>> cursor.drop_function("ObjectDetector", if_exists = True)
              0
          0	Function Successfully dropped: ObjectDetector
      """
      stmt = parse_drop_function(function_name, if_exists)
      return EvaDBQuery(self._evadb, stmt)
  
imports: import asyncio
  import multiprocessing
  import pandas
  from evadb.configuration.constants import EvaDB_DATABASE_DIR
  from evadb.database import EvaDBDatabase, init_evadb_instance
  from evadb.expression.tuple_value_expression import TupleValueExpression
  from evadb.functions.function_bootstrap_queries import init_builtin_functions
  from evadb.interfaces.relational.relation import EvaDBQuery
  from evadb.interfaces.relational.utils import try_binding
  from evadb.models.server.response import Response
  from evadb.models.storage.batch import Batch
  from evadb.parser.alias import Alias
  from evadb.parser.select_statement import SelectStatement
  from evadb.parser.utils import parse_create_function, parse_create_table, parse_create_vector_index, parse_drop_function, parse_drop_index, parse_drop_table, parse_explain, parse_insert, parse_load, parse_query, parse_rename, parse_show, parse_table_clause
  from evadb.server.command_handler import execute_statement
  from evadb.utils.generic_utils import find_nearest_word, is_ray_enabled_and_installed
  from evadb.utils.job_scheduler import JobScheduler
  from evadb.utils.logging_manager import logger
label_desc: Use image node_id 10 for calling the EvaDBCursor obj's underlying member method code with example usage: obj.drop_function(function_name, if_exists) and returns: EvaDBQuery