class_docstr: This handler handles connection and execution of the Xata statements.
class_docstr_tok: ["This","handler","handles","connection","and","execution","of","the","Xata","statements","."]
docstr: Get columns of the given table
docstr_tok: ["Get","columns","of","the","given","table"]
code: def get_columns(self, table_name: str) -> HandlerResponse:
      """Get columns of the given table"""
      # Vector stores have predefined columns
      try:
          # But at least try to see if the table is valid
          resp = self._client.table().get_columns(table_name)
          if not resp.is_success():
              raise Exception(
                  f"Error getting columns: {resp['message']}"
              )
      except Exception as e:
          return Response(
              resp_type=RESPONSE_TYPE.ERROR,
              error_message=f"{e}",
          )
      return super().get_columns(table_name)
  
imports: from collections import OrderedDict
  from typing import List, Optional
  import pandas
  import json
  import xata
  from xata.helpers import BulkProcessor
  from mindsdb.integrations.libs.const import HANDLER_CONNECTION_ARG_TYPE
  from mindsdb.integrations.libs.response import RESPONSE_TYPE
  from mindsdb.integrations.libs.response import HandlerResponse
  from mindsdb.integrations.libs.response import HandlerResponse
  from mindsdb.integrations.libs.response import HandlerStatusResponse
  from mindsdb.integrations.libs.vectordatabase_handler import FilterCondition, FilterOperator, TableField, VectorStoreHandler
  from mindsdb.utilities import log
label_desc: Use image node_id 8 for calling the XataHandler obj's underlying member method code with example usage: obj.get_columns(table_name) and returns: super, Response