[improvement](JDBC Catalog)Added Presto connection to Presto/Trino (#19307)

This commit is contained in:
yongkang.zhong
2023-05-08 14:05:56 +08:00
committed by GitHub
parent 1e5000c9b2
commit c7a04fa05a
8 changed files with 33 additions and 5 deletions

View File

@ -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"

View File

@ -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");

View File

@ -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");