class_docstr: SQL connectors are used to connect to SQL databases in different dialects.
class_docstr_tok: ["SQL","connectors","are","used","to","connect","to","SQL","databases","in","different","dialects","."]
docstr: Return the hash of the SQL table columns.
  
  Args:
      include_additional_filters (bool, optional): Whether to include the
          additional filters in the hash. Defaults to False.
  
  Returns:
      str: The hash of the SQL table columns.
docstr_tok: ["Return","the","hash","of","the","SQL","table","columns",".","Args",":","include_additional_filters","(","bool",",","optional",")",":","Whether","to","include","the","additional","filters","in","the","hash",".","Defaults","to","False",".","Returns",":","str",":","The","hash","of","the","SQL","table","columns","."]
code: def _get_column_hash(self, include_additional_filters: bool = False):
      """
      Return the hash of the SQL table columns.
  
      Args:
          include_additional_filters (bool, optional): Whether to include the
              additional filters in the hash. Defaults to False.
  
      Returns:
          str: The hash of the SQL table columns.
      """
  
      # Return the hash of the columns and the where clause
      columns_str = "".join(self.head().columns)
      if (
          self._config.where
          or include_additional_filters
          and self._additional_filters is not None
      ):
          columns_str += "WHERE"
      if self._config.where:
          # where clause is a list of lists
          for condition in self._config.where:
              columns_str += (
                  f"{condition[0]} {condition[1]} {condition[2]}"
              )
      if include_additional_filters and self._additional_filters:
          for condition in self._additional_filters:
              columns_str += (
                  f"{condition[0]} {condition[1]} {condition[2]}"
              )
  
      hash_object = hashlib.sha256(columns_str.encode())
      return hash_object.hexdigest()
  
imports: import re
  import os
  import pandas
  from pandasai.exceptions import MaliciousQueryError
  from .base import BaseConnector, SQLConnectorConfig, SqliteConnectorConfig
  from .base import BaseConnectorConfig
  from sqlalchemy import create_engine, text, select, asc
  from sqlalchemy.engine import Connection
  from functools import cached_property, cache
  import hashlib
  from ..helpers.path import find_project_root
  from ..constants import DEFAULT_FILE_PERMISSIONS
  from typing import Union
  import time
label_desc: Use image node_id 15 for calling the SQLConnector obj's underlying member method code with example usage: obj._get_column_hash(include_additional_filters) and returns: hash_object