This is an automated email from the ASF dual-hosted git repository. morningman pushed a commit to branch branch-1.2-lts in repository https://gitbox.apache.org/repos/asf/doris.git
commit e255540181f7ce43d38f30fc32b91464361f33a1 Author: yongkang.zhong <[email protected]> AuthorDate: Thu May 18 22:58:33 2023 +0800 [improvement](jdbc catalog) Add adaptation to Oracle special character `/` table names (#19809) --- .../org/apache/doris/external/jdbc/JdbcClient.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java b/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java index 3b8e3d73f7..9d4c5f8df1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java +++ b/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java @@ -357,6 +357,8 @@ public class JdbcClient { try { DatabaseMetaData databaseMetaData = conn.getMetaData(); String catalogName = conn.getCatalog(); + String modifiedTableName; + boolean isModify = false; // getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) // catalog - the catalog of this table, `null` means all catalogs // schema - The schema of the table; corresponding to tablespace in Oracle @@ -371,12 +373,18 @@ public class JdbcClient { rs = databaseMetaData.getColumns(dbName, null, tableName, null); break; case JdbcResource.POSTGRESQL: - case JdbcResource.ORACLE: case JdbcResource.CLICKHOUSE: case JdbcResource.SQLSERVER: case JdbcResource.SAP_HANA: rs = databaseMetaData.getColumns(null, dbName, tableName, null); break; + case JdbcResource.ORACLE: + modifiedTableName = tableName.replace("/", "%"); + if (!modifiedTableName.equals(tableName)) { + isModify = true; + } + rs = databaseMetaData.getColumns(null, dbName, modifiedTableName, null); + break; case JdbcResource.TRINO: rs = databaseMetaData.getColumns(catalogName, dbName, tableName, null); break; @@ -384,6 +392,14 @@ public class JdbcClient { throw new JdbcClientException("Unknown database type"); } while (rs.next()) { + // for oracle special table name + if (isModify) { + String actualTableName = rs.getString("TABLE_NAME"); + if (!tableName.equals(actualTableName)) { + continue; + } + } + JdbcFieldSchema field = new JdbcFieldSchema(); field.setColumnName(rs.getString("COLUMN_NAME")); field.setDataType(rs.getInt("DATA_TYPE")); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
