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.trino import TrinoEngineAdapter 20from sqlmesh.core.engine_adapter.athena import AthenaEngineAdapter 21from sqlmesh.core.engine_adapter.risingwave import RisingwaveEngineAdapter 22from sqlmesh.core.engine_adapter.fabric import FabricEngineAdapter 23 24DIALECT_TO_ENGINE_ADAPTER = { 25 "hive": SparkEngineAdapter, 26 "spark": SparkEngineAdapter, 27 "bigquery": BigQueryEngineAdapter, 28 "clickhouse": ClickhouseEngineAdapter, 29 "duckdb": DuckDBEngineAdapter, 30 "snowflake": SnowflakeEngineAdapter, 31 "databricks": DatabricksEngineAdapter, 32 "redshift": RedshiftEngineAdapter, 33 "postgres": PostgresEngineAdapter, 34 "mysql": MySQLEngineAdapter, 35 "mssql": MSSQLEngineAdapter, 36 "trino": TrinoEngineAdapter, 37 "athena": AthenaEngineAdapter, 38 "risingwave": RisingwaveEngineAdapter, 39 "fabric": FabricEngineAdapter, 40} 41 42DIALECT_ALIASES = { 43 "postgresql": "postgres", 44} 45 46 47def create_engine_adapter( 48 connection_factory: t.Callable[[], t.Any], dialect: str, **kwargs: t.Any 49) -> EngineAdapter: 50 dialect = dialect.lower() 51 dialect = DIALECT_ALIASES.get(dialect, dialect) 52 engine_adapter = DIALECT_TO_ENGINE_ADAPTER.get(dialect) 53 if engine_adapter is None: 54 return EngineAdapter(connection_factory, dialect, **kwargs) 55 if engine_adapter is EngineAdapterWithIndexSupport: 56 return EngineAdapterWithIndexSupport( 57 connection_factory, 58 dialect, 59 **kwargs, 60 ) 61 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'>}
DIALECT_ALIASES =
{'postgresql': 'postgres'}
def
create_engine_adapter( connection_factory: Callable[[], Any], dialect: str, **kwargs: Any) -> sqlmesh.core.engine_adapter.base.EngineAdapter:
48def create_engine_adapter( 49 connection_factory: t.Callable[[], t.Any], dialect: str, **kwargs: t.Any 50) -> EngineAdapter: 51 dialect = dialect.lower() 52 dialect = DIALECT_ALIASES.get(dialect, dialect) 53 engine_adapter = DIALECT_TO_ENGINE_ADAPTER.get(dialect) 54 if engine_adapter is None: 55 return EngineAdapter(connection_factory, dialect, **kwargs) 56 if engine_adapter is EngineAdapterWithIndexSupport: 57 return EngineAdapterWithIndexSupport( 58 connection_factory, 59 dialect, 60 **kwargs, 61 ) 62 return engine_adapter(connection_factory, **kwargs)