code: def query(self, query: ASTNode, session=None):
      query_tables = get_all_tables(query)
  
      if len(query_tables) != 1:
          raise exc.BadTableError(
              f"Only one table can be used in query to information_schema: {query}"
          )
  
      table_name = query_tables[0].upper()
  
      if table_name not in self.get_dataframe_funcs:
          raise exc.NotSupportedYet(
              "Information schema: Not implemented."
          )
  
      dataframe = self.get_dataframe_funcs[table_name](query=query)
      data = query_df(dataframe, query, session=self.session)
  
      columns_info = [
          {"name": k, "type": v} for k, v in data.dtypes.items()
      ]
  
      return data.to_dict(orient="records"), columns_info
  
imports: from functools import partial
  import pandas
  from mindsdb_sql.parser.ast import BinaryOperation, Constant, Identifier, Select, Join, Union, Insert, Delete
  from mindsdb_sql.parser.ast.base import ASTNode
  from mindsdb.api.executor.datahub.classes.tables_row import TABLES_ROW_TYPE, TablesRow
  from mindsdb.api.executor.datahub.datanodes.datanode import DataNode
  from mindsdb.api.executor.datahub.datanodes.integration_datanode import IntegrationDataNode
  from mindsdb.api.executor.datahub.datanodes.project_datanode import ProjectDataNode
  from mindsdb.api.executor import exceptions
  from mindsdb.api.executor.utilities.sql import query_df
  from mindsdb.interfaces.agents.agents_controller import AgentsController
  from mindsdb.interfaces.database.projects import ProjectController
  from mindsdb.interfaces.jobs.jobs_controller import JobsController
  from mindsdb.interfaces.skills.skills_controller import SkillsController
  from mindsdb.utilities import log
label_desc: Use image node_id 27 for calling the InformationSchemaDataNode obj's underlying member method code with example usage: obj.query(query, session) and returns: data,  columns_info