sqlmesh.core.engine_adapter
1from __future__ import annotations 2 3import typing as t 4 5from sqlmesh.core.engine_adapter.base import ( 6 EngineAdapter, 7 EngineAdapterWithIndexSupport, 8) 9from sqlmesh.core.engine_adapter.bigquery import BigQueryEngineAdapter 10from sqlmesh.core.engine_adapter.clickhouse import ClickhouseEngineAdapter 11from sqlmesh.core.engine_adapter.databricks import DatabricksEngineAdapter 12from sqlmesh.core.engine_adapter.duckdb import DuckDBEngineAdapter 13from sqlmesh.core.engine_adapter.mssql import MSSQLEngineAdapter 14from sqlmesh.core.engine_adapter.mysql import MySQLEngineAdapter 15from sqlmesh.core.engine_adapter.postgres import PostgresEngineAdapter 16from sqlmesh.core.engine_adapter.redshift import RedshiftEngineAdapter 17from sqlmesh.core.engine_adapter.snowflake import SnowflakeEngineAdapter 18from sqlmesh.core.engine_adapter.spark import SparkEngineAdapter 19from sqlmesh.core.engine_adapter.starrocks import StarRocksEngineAdapter 20from sqlmesh.core.engine_adapter.trino import TrinoEngineAdapter 21from sqlmesh.core.engine_adapter.athena import AthenaEngineAdapter 22from sqlmesh.core.engine_adapter.risingwave import RisingwaveEngineAdapter 23from sqlmesh.core.engine_adapter.fabric import FabricEngineAdapter 24 25DIALECT_TO_ENGINE_ADAPTER = { 26 "hive": SparkEngineAdapter, 27 "spark": SparkEngineAdapter, 28 "bigquery": BigQueryEngineAdapter, 29 "clickhouse": ClickhouseEngineAdapter, 30 "duckdb": DuckDBEngineAdapter, 31 "snowflake": SnowflakeEngineAdapter, 32 "databricks": DatabricksEngineAdapter, 33 "redshift": RedshiftEngineAdapter, 34 "postgres": PostgresEngineAdapter, 35 "mysql": MySQLEngineAdapter, 36 "mssql": MSSQLEngineAdapter, 37 "trino": TrinoEngineAdapter, 38 "athena": AthenaEngineAdapter, 39 "risingwave": RisingwaveEngineAdapter, 40 "fabric": FabricEngineAdapter, 41 "starrocks": StarRocksEngineAdapter, 42} 43 44DIALECT_ALIASES = { 45 "postgresql": "postgres", 46} 47 48 49def create_engine_adapter( 50 connection_factory: t.Callable[[], t.Any], dialect: str, **kwargs: t.Any 51) -> EngineAdapter: 52 dialect = dialect.lower() 53 dialect = DIALECT_ALIASES.get(dialect, dialect) 54 engine_adapter = DIALECT_TO_ENGINE_ADAPTER.get(dialect) 55 if engine_adapter is None: 56 return EngineAdapter(connection_factory, dialect, **kwargs) 57 if engine_adapter is EngineAdapterWithIndexSupport: 58 return EngineAdapterWithIndexSupport( 59 connection_factory, 60 dialect, 61 **kwargs, 62 ) 63 return engine_adapter(connection_factory, **kwargs)
DIALECT_TO_ENGINE_ADAPTER =
{'hive': <class 'sqlmesh.core.engine_adapter.spark.SparkEngineAdapter'>, 'spark': <class 'sqlmesh.core.engine_adapter.spark.SparkEngineAdapter'>, 'bigquery': <class 'sqlmesh.core.engine_adapter.bigquery.BigQueryEngineAdapter'>, 'clickhouse': <class 'sqlmesh.core.engine_adapter.clickhouse.ClickhouseEngineAdapter'>, 'duckdb': <class 'sqlmesh.core.engine_adapter.duckdb.DuckDBEngineAdapter'>, 'snowflake': <class 'sqlmesh.core.engine_adapter.snowflake.SnowflakeEngineAdapter'>, 'databricks': <class 'sqlmesh.core.engine_adapter.databricks.DatabricksEngineAdapter'>, 'redshift': <class 'sqlmesh.core.engine_adapter.redshift.RedshiftEngineAdapter'>, 'postgres': <class 'sqlmesh.core.engine_adapter.postgres.PostgresEngineAdapter'>, 'mysql': <class 'sqlmesh.core.engine_adapter.mysql.MySQLEngineAdapter'>, 'mssql': <class 'sqlmesh.core.engine_adapter.mssql.MSSQLEngineAdapter'>, 'trino': <class 'sqlmesh.core.engine_adapter.trino.TrinoEngineAdapter'>, 'athena': <class 'sqlmesh.core.engine_adapter.athena.AthenaEngineAdapter'>, 'risingwave': <class 'sqlmesh.core.engine_adapter.risingwave.RisingwaveEngineAdapter'>, 'fabric': <class 'sqlmesh.core.engine_adapter.fabric.FabricEngineAdapter'>, 'starrocks': <class 'sqlmesh.core.engine_adapter.starrocks.StarRocksEngineAdapter'>}
DIALECT_ALIASES =
{'postgresql': 'postgres'}
def
create_engine_adapter( connection_factory: Callable[[], Any], dialect: str, **kwargs: Any) -> sqlmesh.core.engine_adapter.base.EngineAdapter:
50def create_engine_adapter( 51 connection_factory: t.Callable[[], t.Any], dialect: str, **kwargs: t.Any 52) -> EngineAdapter: 53 dialect = dialect.lower() 54 dialect = DIALECT_ALIASES.get(dialect, dialect) 55 engine_adapter = DIALECT_TO_ENGINE_ADAPTER.get(dialect) 56 if engine_adapter is None: 57 return EngineAdapter(connection_factory, dialect, **kwargs) 58 if engine_adapter is EngineAdapterWithIndexSupport: 59 return EngineAdapterWithIndexSupport( 60 connection_factory, 61 dialect, 62 **kwargs, 63 ) 64 return engine_adapter(connection_factory, **kwargs)