code: def _get_columns(self, query: ASTNode = None):
      columns = self.information_schema["COLUMNS"]
  
      # NOTE there is a lot of types in mysql, but listed below should be enough for our purposes
      row_templates = {
          "text": [
              "def",
              "SCHEMA_NAME",
              "TABLE_NAME",
              "COLUMN_NAME",
              "COL_INDEX",
              None,
              "YES",
              "varchar",
              1024,
              3072,
              None,
              None,
              None,
              "utf8",
              "utf8_bin",
              "varchar(1024)",
              None,
              None,
              "select",
              None,
              None,
          ],
          "timestamp": [
              "def",
              "SCHEMA_NAME",
              "TABLE_NAME",
              "COLUMN_NAME",
              "COL_INDEX",
              "CURRENT_TIMESTAMP",
              "YES",
              "timestamp",
              None,
              None,
              None,
              None,
              0,
              None,
              None,
              "timestamp",
              None,
              None,
              "select",
              None,
              None,
          ],
          "bigint": [
              "def",
              "SCHEMA_NAME",
              "TABLE_NAME",
              "COLUMN_NAME",
              "COL_INDEX",
              None,
              "YES",
              "bigint",
              None,
              None,
              20,
              0,
              None,
              None,
              None,
              "bigint unsigned",
              None,
              None,
              "select",
              None,
              None,
          ],
          "float": [
              "def",
              "SCHEMA_NAME",
              "TABLE_NAME",
              "COLUMN_NAME",
              "COL_INDEX",
              None,
              "YES",
              "float",
              None,
              None,
              12,
              0,
              None,
              None,
              None,
              "float",
              None,
              None,
              "select",
              None,
              None,
          ],
      }
  
      result = []
  
      for table_name in self.information_schema:
          table_columns = self.information_schema[table_name]
          for i, column_name in enumerate(table_columns):
              result_row = row_templates["text"].copy()
              result_row[1] = "information_schema"
              result_row[2] = table_name
              result_row[3] = column_name
              result_row[4] = i
              result.append(result_row)
  
      mindsdb_dn = self.get("MINDSDB")
      for table_row in mindsdb_dn.get_tables():
          table_name = table_row.TABLE_NAME
          table_columns = mindsdb_dn.get_table_columns(table_name)
          for i, column_name in enumerate(table_columns):
              result_row = row_templates["text"].copy()
              result_row[1] = "mindsdb"
              result_row[2] = table_name
              result_row[3] = column_name
              result_row[4] = i
              result.append(result_row)
  
      files_dn = self.get("FILES")
      for table_name in files_dn.get_tables():
          table_columns = files_dn.get_table_columns(table_name)
          for i, column_name in enumerate(table_columns):
              result_row = row_templates["text"].copy()
              result_row[1] = "files"
              result_row[2] = table_name
              result_row[3] = column_name
              result_row[4] = i
              result.append(result_row)
  
      df = pd.DataFrame(result, columns=columns)
      return df
  
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 21 for calling the InformationSchemaDataNode obj's underlying member method code with example usage: obj._get_columns(query) and returns: df