code: def exec(self, *args, **kwargs):
      show_entries = []
  
      assert (
          self.node.show_type is ShowType.FUNCTIONS
          or ShowType.TABLES
          or ShowType.DATABASES
          or ShowType.CONFIGS
      ), f"Show command does not support type {self.node.show_type}"
  
      if self.node.show_type is ShowType.FUNCTIONS:
          functions = self.catalog().get_all_function_catalog_entries()
          for function in functions:
              show_entries.append(function.display_format())
      elif self.node.show_type is ShowType.TABLES:
          tables = self.catalog().get_all_table_catalog_entries()
          for table in tables:
              if table.table_type != TableType.SYSTEM_STRUCTURED_DATA:
                  show_entries.append(table.name)
          show_entries = {"name": show_entries}
      elif self.node.show_type is ShowType.DATABASES:
          databases = self.catalog().get_all_database_catalog_entries()
          for db in databases:
              show_entries.append(db.display_format())
      elif self.node.show_type is ShowType.CONFIGS:
          show_entries = {}
          # CONFIGS is a special word, which is used to display all the configurations
          if self.node.show_val.upper() == ShowType.CONFIGS.name:
              configs = (
                  self.catalog().get_all_configuration_catalog_entries()
              )
              for config in configs:
                  show_entries[config.key] = config.value
          else:
              value = self.catalog().get_configuration_catalog_value(
                  key=self.node.show_val.upper(),
              )
              show_entries = {}
              if value is not None:
                  show_entries = {self.node.show_val: [value]}
              else:
                  raise Exception(
                      "No configuration found with key {}".format(
                          self.node.show_val
                      )
                  )
  
      yield Batch(pd.DataFrame(show_entries))
  
file_path: evadb/evadb/executor/show_info_executor.py
imports: import pandas
  from evadb.catalog.catalog_type import TableType
  from evadb.database import EvaDBDatabase
  from evadb.executor.abstract_executor import AbstractExecutor
  from evadb.models.storage.batch import Batch
  from evadb.parser.types import ShowType
  from evadb.plan_nodes.show_info_plan import ShowInfoPlan
label_desc: Use image node_id 2 for calling the ShowInfoExecutor obj's underlying member method code with example usage: obj.exec() without return types