[improvement](JDBC Catalog)Added Presto connection to Presto/Trino (#19307)
This commit is contained in:
@ -69,6 +69,7 @@ public class JdbcResource extends Resource {
|
||||
public static final String JDBC_CLICKHOUSE = "jdbc:clickhouse";
|
||||
public static final String JDBC_SAP_HANA = "jdbc:sap";
|
||||
public static final String JDBC_TRINO = "jdbc:trino";
|
||||
public static final String JDBC_PRESTO = "jdbc:presto";
|
||||
public static final String JDBC_OCEANBASE = "jdbc:oceanbase";
|
||||
|
||||
public static final String MYSQL = "MYSQL";
|
||||
@ -78,6 +79,7 @@ public class JdbcResource extends Resource {
|
||||
public static final String CLICKHOUSE = "CLICKHOUSE";
|
||||
public static final String SAP_HANA = "SAP_HANA";
|
||||
public static final String TRINO = "TRINO";
|
||||
public static final String PRESTO = "PRESTO";
|
||||
public static final String OCEANBASE = "OCEANBASE";
|
||||
public static final String OCEANBASE_ORACLE = "OCEANBASE_ORACLE";
|
||||
|
||||
@ -280,6 +282,8 @@ public class JdbcResource extends Resource {
|
||||
return SAP_HANA;
|
||||
} else if (url.startsWith(JDBC_TRINO)) {
|
||||
return TRINO;
|
||||
} else if (url.startsWith(JDBC_PRESTO)) {
|
||||
return PRESTO;
|
||||
} else if (url.startsWith(JDBC_OCEANBASE)) {
|
||||
if (oceanbaseMode == null || oceanbaseMode.isEmpty()) {
|
||||
throw new DdlException("OceanBase mode must be specified for OceanBase databases"
|
||||
|
||||
@ -77,6 +77,7 @@ public class JdbcTable extends Table {
|
||||
tempMap.put("clickhouse", TOdbcTableType.CLICKHOUSE);
|
||||
tempMap.put("sap_hana", TOdbcTableType.SAP_HANA);
|
||||
tempMap.put("trino", TOdbcTableType.TRINO);
|
||||
tempMap.put("presto", TOdbcTableType.PRESTO);
|
||||
tempMap.put("oceanbase", TOdbcTableType.OCEANBASE);
|
||||
tempMap.put("oceanbase_oracle", TOdbcTableType.OCEANBASE_ORACLE);
|
||||
TABLE_TYPE_MAP = Collections.unmodifiableMap(tempMap);
|
||||
@ -294,6 +295,10 @@ public class JdbcTable extends Table {
|
||||
driverUrl = jdbcResource.getProperty(DRIVER_URL);
|
||||
checkSum = jdbcResource.getProperty(CHECK_SUM);
|
||||
|
||||
if (!jdbcTypeName.equalsIgnoreCase(jdbcUrl.split(":")[1])) {
|
||||
throw new DdlException("property " + TABLE_TYPE + " must be same with resource url");
|
||||
}
|
||||
|
||||
// get oceanbase_mode
|
||||
String oceanbaseMode = jdbcResource.getProperty("oceanbase_mode");
|
||||
|
||||
|
||||
@ -211,6 +211,7 @@ public class JdbcClient {
|
||||
rs = stmt.executeQuery("SELECT SCHEMA_NAME FROM SYS.SCHEMAS WHERE HAS_PRIVILEGES = 'TRUE'");
|
||||
break;
|
||||
case JdbcResource.TRINO:
|
||||
case JdbcResource.PRESTO:
|
||||
rs = stmt.executeQuery("SHOW SCHEMAS");
|
||||
break;
|
||||
default:
|
||||
@ -256,6 +257,7 @@ public class JdbcClient {
|
||||
case JdbcResource.SQLSERVER:
|
||||
case JdbcResource.SAP_HANA:
|
||||
case JdbcResource.TRINO:
|
||||
case JdbcResource.PRESTO:
|
||||
case JdbcResource.OCEANBASE_ORACLE:
|
||||
databaseNames.add(conn.getSchema());
|
||||
break;
|
||||
@ -295,6 +297,7 @@ public class JdbcClient {
|
||||
rs = databaseMetaData.getTables(null, dbName, null, types);
|
||||
break;
|
||||
case JdbcResource.TRINO:
|
||||
case JdbcResource.PRESTO:
|
||||
rs = databaseMetaData.getTables(catalogName, dbName, null, types);
|
||||
break;
|
||||
default:
|
||||
@ -337,6 +340,7 @@ public class JdbcClient {
|
||||
rs = databaseMetaData.getTables(null, dbName, null, types);
|
||||
break;
|
||||
case JdbcResource.TRINO:
|
||||
case JdbcResource.PRESTO:
|
||||
rs = databaseMetaData.getTables(catalogName, dbName, null, types);
|
||||
break;
|
||||
default:
|
||||
@ -414,6 +418,7 @@ public class JdbcClient {
|
||||
rs = databaseMetaData.getColumns(null, dbName, tableName, null);
|
||||
break;
|
||||
case JdbcResource.TRINO:
|
||||
case JdbcResource.PRESTO:
|
||||
rs = databaseMetaData.getColumns(catalogName, dbName, tableName, null);
|
||||
break;
|
||||
default:
|
||||
@ -464,6 +469,7 @@ public class JdbcClient {
|
||||
case JdbcResource.SAP_HANA:
|
||||
return saphanaTypeToDoris(fieldSchema);
|
||||
case JdbcResource.TRINO:
|
||||
case JdbcResource.PRESTO:
|
||||
return trinoTypeToDoris(fieldSchema);
|
||||
default:
|
||||
throw new JdbcClientException("Unknown database type");
|
||||
|
||||
Reference in New Issue
Block a user