1+ //! Module for handling dialect selection for parsing
2+ use sqlparser:: dialect:: AnsiDialect ;
3+ use sqlparser:: dialect:: BigQueryDialect ;
4+ use sqlparser:: dialect:: ClickHouseDialect ;
5+ use sqlparser:: dialect:: DatabricksDialect ;
6+ use sqlparser:: dialect:: DuckDbDialect ;
7+ use sqlparser:: dialect:: GenericDialect ;
8+ use sqlparser:: dialect:: HiveDialect ;
9+ use sqlparser:: dialect:: MsSqlDialect ;
10+ use sqlparser:: dialect:: MySqlDialect ;
11+ use sqlparser:: dialect:: OracleDialect ;
12+ use sqlparser:: dialect:: PostgreSqlDialect ;
13+ use sqlparser:: dialect:: RedshiftSqlDialect ;
14+ use sqlparser:: dialect:: SQLiteDialect ;
15+ use sqlparser:: dialect:: SnowflakeDialect ;
16+
17+ /// Enum used for SQL dialect selection
18+ #[ derive( PartialEq , Eq ) ]
19+ pub enum Dialect {
20+ /// ANSI SQL dialect
21+ Ansi ,
22+ /// Google BigQuery SQL dialect
23+ BigQuery ,
24+ /// ClickHouse SQL dialect
25+ ClickHouse ,
26+ /// Databricks SQL dialect
27+ Databricks ,
28+ /// DuckDB SQL dialect
29+ DuckDb ,
30+ /// Generic SQL dialect
31+ Generic ,
32+ /// Apache Hive SQL dialect
33+ Hive ,
34+ /// Microsoft SQL Server (T-SQL) dialect
35+ MsSql ,
36+ /// MySQL SQL dialect
37+ MySql ,
38+ /// Oracle SQL dialect
39+ Oracle ,
40+ /// PostgreSQL SQL dialect
41+ PostgreSql ,
42+ /// Amazon Redshift SQL dialect
43+ RedshiftSql ,
44+ /// SQLite SQL dialect
45+ SQLite ,
46+ /// Snowflake SQL dialect
47+ Snowflake ,
48+ }
49+
50+ use sqlparser:: dialect:: Dialect as SqlDialectTrait ;
51+
52+ impl Dialect {
53+ /// Execute a function with the selected `sqlparser` dialect.
54+ pub fn with_sqlparser_dialect < R > (
55+ self ,
56+ f : impl FnOnce ( & dyn SqlDialectTrait ) -> R ,
57+ ) -> R {
58+ match self {
59+ Dialect :: Ansi => f ( & AnsiDialect { } ) ,
60+ Dialect :: BigQuery => f ( & BigQueryDialect { } ) ,
61+ Dialect :: ClickHouse => f ( & ClickHouseDialect { } ) ,
62+ Dialect :: Databricks => f ( & DatabricksDialect { } ) ,
63+ Dialect :: DuckDb => f ( & DuckDbDialect { } ) ,
64+ Dialect :: Generic => f ( & GenericDialect { } ) ,
65+ Dialect :: Hive => f ( & HiveDialect { } ) ,
66+ Dialect :: MsSql => f ( & MsSqlDialect { } ) ,
67+ Dialect :: MySql => f ( & MySqlDialect { } ) ,
68+ Dialect :: Oracle => f ( & OracleDialect { } ) ,
69+ Dialect :: PostgreSql => f ( & PostgreSqlDialect { } ) ,
70+ Dialect :: RedshiftSql => f ( & RedshiftSqlDialect { } ) ,
71+ Dialect :: SQLite => f ( & SQLiteDialect { } ) ,
72+ Dialect :: Snowflake => f ( & SnowflakeDialect { } ) ,
73+ }
74+ }
75+ }
0 commit comments