class_docstr: Interface for openlineage-sql.
  
  :param dialect: dialect specific to the database
  :param default_schema: schema applied to each table with no schema parsed
class_docstr_tok: ["Interface","for","openlineage-sql",".",":","param","dialect",":","dialect","specific","to","the","database",":","param","default_schema",":","schema","applied","to","each","table","with","no","schema","parsed"]
docstr: Split SQL string into list of statements.
  
  Tries to use `DbApiHook.split_sql_string` if available.
  Otherwise, uses the same logic.
docstr_tok: ["Split","SQL","string","into","list","of","statements",".","Tries","to","use","`","DbApiHook.split_sql_string","`","if","available",".","Otherwise",",","uses","the","same","logic","."]
code: def split_sql_string(cls, sql: list[str] | str) -> list[str]:
      """
      Split SQL string into list of statements.
  
      Tries to use `DbApiHook.split_sql_string` if available.
      Otherwise, uses the same logic.
      """
      try:
          from airflow.providers.common.sql.hooks.sql import DbApiHook
  
          split_statement = DbApiHook.split_sql_string
      except (ImportError, AttributeError):
          # No common.sql Airflow provider available or version is too old.
          def split_statement(sql: str) -> list[str]:
              splits = sqlparse.split(
                  sqlparse.format(sql, strip_comments=True)
              )
              return [s for s in splits if s]
  
      if isinstance(sql, str):
          return split_statement(sql)
      return [
          obj
          for stmt in sql
          for obj in cls.split_sql_string(stmt)
          if obj != ""
      ]
  
imports: from __future__ import annotations
  from typing import TYPE_CHECKING, Callable
  import sqlparse
  from attrs import define
  from openlineage.client.facet import BaseFacet, ColumnLineageDatasetFacet, ColumnLineageDatasetFacetFieldsAdditional, ColumnLineageDatasetFacetFieldsAdditionalInputFields, ExtractionError, ExtractionErrorRunFacet, SqlJobFacet
  from openlineage.common.sql import DbTableMeta, SqlMeta, parse
  from airflow.providers.openlineage.extractors.base import OperatorLineage
  from airflow.providers.openlineage.utils.sql import TablesHierarchy, create_information_schema_query, get_table_schemas
  from airflow.typing_compat import TypedDict
label_desc: Use image node_id 8 for calling the SQLParser obj's underlying member method code with example usage: obj.split_sql_string(cls, sql) and returns: unknown, split_statement, unknown