in core/src/main/java/org/apache/calcite/sql/SqlDialect.java [266:343]
public static DatabaseProduct getProduct(
String productName,
String productVersion) {
final String upperProductName =
productName.toUpperCase(Locale.ROOT).trim();
switch (upperProductName) {
case "ACCESS":
return DatabaseProduct.ACCESS;
case "APACHE DERBY":
return DatabaseProduct.DERBY;
case "CLICKHOUSE":
return DatabaseProduct.CLICKHOUSE;
case "DBMS:CLOUDSCAPE":
return DatabaseProduct.DERBY;
case "DUCKDB":
return DatabaseProduct.DUCKDB;
case "EXASOL":
return DatabaseProduct.EXASOL;
case "FIREBOLT":
return DatabaseProduct.FIREBOLT;
case "HIVE":
return DatabaseProduct.HIVE;
case "INGRES":
return DatabaseProduct.INGRES;
case "INTERBASE":
return DatabaseProduct.INTERBASE;
case "LUCIDDB":
return DatabaseProduct.LUCIDDB;
case "ORACLE":
return DatabaseProduct.ORACLE;
case "PHOENIX":
return DatabaseProduct.PHOENIX;
case "PRESTO":
case "AWS.ATHENA":
return DatabaseProduct.PRESTO;
case "MYSQL (INFOBRIGHT)":
return DatabaseProduct.INFOBRIGHT;
case "MYSQL":
return DatabaseProduct.MYSQL;
case "REDSHIFT":
return DatabaseProduct.REDSHIFT;
default:
break;
}
// Now the fuzzy matches.
if (productName.startsWith("DB2")) {
return DatabaseProduct.DB2;
} else if (upperProductName.contains("FIREBIRD")) {
return DatabaseProduct.FIREBIRD;
} else if (productName.startsWith("Informix")) {
return DatabaseProduct.INFORMIX;
} else if (upperProductName.contains("NETEZZA")) {
return DatabaseProduct.NETEZZA;
} else if (upperProductName.contains("PARACCEL")) {
return DatabaseProduct.PARACCEL;
} else if (productName.startsWith("HP Neoview")) {
return DatabaseProduct.NEOVIEW;
} else if (upperProductName.contains("POSTGRE")) {
return DatabaseProduct.POSTGRESQL;
} else if (upperProductName.contains("SQL SERVER")) {
return DatabaseProduct.MSSQL;
} else if (upperProductName.contains("SYBASE")) {
return DatabaseProduct.SYBASE;
} else if (upperProductName.contains("TERADATA")) {
return DatabaseProduct.TERADATA;
} else if (upperProductName.contains("HSQL")) {
return DatabaseProduct.HSQLDB;
} else if (upperProductName.contains("H2")) {
return DatabaseProduct.H2;
} else if (upperProductName.contains("VERTICA")) {
return DatabaseProduct.VERTICA;
} else if (upperProductName.contains("GOOGLE BIGQUERY")
|| upperProductName.contains("GOOGLE BIG QUERY")) {
return DatabaseProduct.BIG_QUERY;
} else {
return DatabaseProduct.UNKNOWN;
}
}