code: def query(self, query=None, native_query=None, session=None):
      try:
          if query is not None:
              result = self.integration_handler.query(query)
          else:
              # try to fetch native query
              result = self.integration_handler.native_query(
                  native_query
              )
      except Exception as e:
          msg = str(e).strip()
          if msg == "":
              msg = e.__class__.__name__
          msg = f"[{self.ds_type}/{self.integration_name}]: {msg}"
          raise DBHandlerException(msg) from e
  
      if result.type == RESPONSE_TYPE.ERROR:
          raise Exception(
              f"Error in {self.integration_name}: {result.error_message}"
          )
      if result.type == RESPONSE_TYPE.OK:
          return [], []
  
      df = result.data_frame
      # region clearing df from NaN values
      # recursion error appears in pandas 1.5.3 https://github.com/pandas-dev/pandas/pull/45749
      if isinstance(df, pd.Series):
          df = df.to_frame()
  
      try:
          df = df.replace(np.NaN, pd.NA)
      except Exception as e:
          logger.error(f"Issue with clearing DF from NaN values: {e}")
  
      try:
          df = df.where(pd.notnull(df), None)
      except Exception as e:
          logger.error(f"Issue with clearing DF from NaN values: {e}")
      # endregion
  
      columns_info = [
          {"name": k, "type": v} for k, v in df.dtypes.items()
      ]
      data = df.to_dict(orient="records")
      return data, columns_info
  
imports: import numpy
  from numpy import dtype
  import pandas
  from pandas.api import types
  from sqlalchemy.types import Integer, Float, Text
  from mindsdb_sql.parser.ast import Insert, Identifier, CreateTable, TableColumn, DropTables
  from mindsdb.api.executor.datahub.datanodes.datanode import DataNode
  from mindsdb.api.executor.data_types.response_type import RESPONSE_TYPE
  from mindsdb.api.executor.datahub.classes.tables_row import TablesRow
  from mindsdb.utilities import log
  from mindsdb.utilities.profiler import profiler
label_desc: Use image node_id 8 for calling the IntegrationDataNode obj's underlying member method code with example usage: obj.query(query, native_query, session) and returns: data,  columns_info, list,  list