code: def exec(self, *args, **kwargs):
      # Check if the job already exists.
      job_catalog_entry = self.catalog().get_job_catalog_entry(
          self.node.job_name
      )
  
      if job_catalog_entry is not None:
          if self.node.if_not_exists:
              msg = f"A job with name {self.node.job_name} already exists, nothing added."
              yield Batch(pd.DataFrame([msg]))
              return
          else:
              raise ExecutorError(
                  f"A job with name {self.node.job_name} already exists."
              )
  
      logger.debug(f"Creating job {self.node}")
  
      job_name = self.node.job_name
      queries = []
      parser = Parser()
  
      for q in self.node.queries:
          try:
              curr_query = str(q)
              parser.parse(curr_query)
              queries.append(curr_query)
          except Exception:
              error_msg = f"Failed to parse the job query: {curr_query}"
              logger.exception(error_msg)
              raise ExecutorError(error_msg)
      start_time = (
          self._parse_datetime_str(self.node.start_time)
          if self.node.start_time is not None
          else datetime.datetime.now()
      )
      end_time = (
          self._parse_datetime_str(self.node.end_time)
          if self.node.end_time is not None
          else None
      )
      repeat_interval = self._get_repeat_time_interval_seconds(
          self.node.repeat_interval, self.node.repeat_period
      )
      active = True
      next_schedule_run = start_time
  
      self.catalog().insert_job_catalog_entry(
          job_name,
          queries,
          start_time,
          end_time,
          repeat_interval,
          active,
          next_schedule_run,
      )
  
      yield Batch(
          pd.DataFrame(
              [
                  f"The job {self.node.job_name} has been successfully created."
              ]
          )
      )
  
file_path: evadb/evadb/executor/create_job_executor.py
imports: import re
  from datetime import datetime
  import pandas
  from evadb.database import EvaDBDatabase
  from evadb.executor.abstract_executor import AbstractExecutor
  from evadb.executor.executor_utils import ExecutorError
  from evadb.models.storage.batch import Batch
  from evadb.parser.create_statement import CreateJobStatement
  from evadb.parser.parser import Parser
  from evadb.utils.logging_manager import logger
label_desc: Use image node_id 4 for calling the CreateJobExecutor obj's underlying member method code with example usage: obj.exec() without return types