docstr: Drop Object executor
docstr_tok: ["Drop","Object","executor"]
code: def exec(self, *args, **kwargs):
      """Drop Object executor"""
  
      if self.node.object_type == ObjectType.TABLE:
          yield self._handle_drop_table(
              self.node.name, self.node.if_exists
          )
  
      elif self.node.object_type == ObjectType.INDEX:
          yield self._handle_drop_index(
              self.node.name, self.node.if_exists
          )
  
      elif self.node.object_type == ObjectType.FUNCTION:
          yield self._handle_drop_function(
              self.node.name, self.node.if_exists
          )
  
      elif self.node.object_type == ObjectType.DATABASE:
          yield self._handle_drop_database(
              self.node.name, self.node.if_exists
          )
  
      elif self.node.object_type == ObjectType.JOB:
          yield self._handle_drop_job(
              self.node.name, self.node.if_exists
          )
  
file_path: evadb/evadb/executor/drop_object_executor.py
imports: import pandas
  from evadb.database import EvaDBDatabase
  from evadb.executor.abstract_executor import AbstractExecutor
  from evadb.executor.executor_utils import ExecutorError, handle_vector_store_params
  from evadb.models.storage.batch import Batch
  from evadb.parser.types import ObjectType
  from evadb.plan_nodes.drop_object_plan import DropObjectPlan
  from evadb.storage.storage_engine import StorageEngine
  from evadb.third_party.vector_stores.utils import VectorStoreFactory
  from evadb.utils.logging_manager import logger
label_desc: Use image node_id 2 for calling the DropObjectExecutor obj's underlying member method code with example usage: obj.exec() without return types