This is an automated email from the ASF dual-hosted git repository.

arshad pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/seatunnel-web.git


The following commit(s) were added to refs/heads/main by this push:
     new a3bec06d [Bug][Seatunnel-web][Oracle] Fix fetch table fields for 
Oracle Jdbc (#236)
a3bec06d is described below

commit a3bec06d0f41b4016d22deb5c979a85bf2bbe6d4
Author: Shashwat Tiwari <shati...@visa.com>
AuthorDate: Wed Nov 6 15:54:42 2024 +0530

    [Bug][Seatunnel-web][Oracle] Fix fetch table fields for Oracle Jdbc (#236)
    
    Signed-off-by: Mohammad Arshad <ars...@apache.org>
---
 .../oracle/jdbc/OracleDataSourceChannel.java       | 24 ++++++++++++----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git 
a/seatunnel-datasource/seatunnel-datasource-plugins/datasource-jdbc-oracle/src/main/java/org/apache/seatunnel/datasource/plugin/oracle/jdbc/OracleDataSourceChannel.java
 
b/seatunnel-datasource/seatunnel-datasource-plugins/datasource-jdbc-oracle/src/main/java/org/apache/seatunnel/datasource/plugin/oracle/jdbc/OracleDataSourceChannel.java
index 775decb1..baa408ab 100644
--- 
a/seatunnel-datasource/seatunnel-datasource-plugins/datasource-jdbc-oracle/src/main/java/org/apache/seatunnel/datasource/plugin/oracle/jdbc/OracleDataSourceChannel.java
+++ 
b/seatunnel-datasource/seatunnel-datasource-plugins/datasource-jdbc-oracle/src/main/java/org/apache/seatunnel/datasource/plugin/oracle/jdbc/OracleDataSourceChannel.java
@@ -18,10 +18,10 @@
 package org.apache.seatunnel.datasource.plugin.oracle.jdbc;
 
 import org.apache.seatunnel.api.configuration.util.OptionRule;
+import org.apache.seatunnel.common.utils.SeaTunnelException;
 import org.apache.seatunnel.datasource.plugin.api.DataSourceChannel;
 import org.apache.seatunnel.datasource.plugin.api.DataSourcePluginException;
 import org.apache.seatunnel.datasource.plugin.api.model.TableField;
-import org.apache.seatunnel.datasource.plugin.api.utils.JdbcUtils;
 
 import org.apache.commons.lang3.StringUtils;
 
@@ -170,10 +170,19 @@ public class OracleDataSourceChannel implements 
DataSourceChannel {
             @NonNull String database,
             @NonNull String table) {
         List<TableField> tableFields = new ArrayList<>();
-        try (Connection connection = getConnection(requestParams, database)) {
+        try (Connection connection = getConnection(requestParams)) {
             DatabaseMetaData metaData = connection.getMetaData();
             String primaryKey = getPrimaryKey(metaData, database, table);
-            try (ResultSet resultSet = metaData.getColumns(database, null, 
table, null)) {
+            String[] split = table.split("\\.");
+            if (split.length != 2) {
+                throw new SeaTunnelException(
+                        "The tableName for oracle must be 
schemaName.tableName, but tableName is "
+                                + table);
+            }
+
+            String schemaName = split[0];
+            String tableName = split[1];
+            try (ResultSet resultSet = metaData.getColumns(database, 
schemaName, tableName, null)) {
                 while (resultSet.next()) {
                     TableField tableField = new TableField();
                     String columnName = resultSet.getString("COLUMN_NAME");
@@ -215,16 +224,9 @@ public class OracleDataSourceChannel implements 
DataSourceChannel {
 
     private Connection getConnection(Map<String, String> requestParams)
             throws SQLException, ClassNotFoundException {
-        return getConnection(requestParams, null);
-    }
-
-    private Connection getConnection(Map<String, String> requestParams, String 
databaseName)
-            throws SQLException, ClassNotFoundException {
         checkNotNull(requestParams.get(OracleOptionRule.DRIVER.key()));
         checkNotNull(requestParams.get(OracleOptionRule.URL.key()), "Jdbc url 
cannot be null");
-        String url =
-                JdbcUtils.replaceDatabase(
-                        requestParams.get(OracleOptionRule.URL.key()), 
databaseName);
+        String url = requestParams.get(OracleOptionRule.URL.key());
         if (requestParams.containsKey(OracleOptionRule.USER.key())) {
             String username = requestParams.get(OracleOptionRule.USER.key());
             String password = 
requestParams.get(OracleOptionRule.PASSWORD.key());

Reply via email to