This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new dfc4432e83 [improvement](jdbc catalog) Add adaptation to Oracle
special character `/` table names (#19809)
dfc4432e83 is described below
commit dfc4432e83952b6312656629955a2ce16f14919b
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 c3f1298015..816df17856 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
@@ -403,6 +403,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
@@ -418,13 +420,19 @@ 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:
case JdbcResource.OCEANBASE_ORACLE:
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:
case JdbcResource.PRESTO:
rs = databaseMetaData.getColumns(catalogName, dbName,
tableName, null);
@@ -433,6 +441,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]