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

wanghailin pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git


The following commit(s) were added to refs/heads/dev by this push:
     new 70ec59ce0e [Fix][Connector-v2] Throw Exception in sql query for 
JdbcCatalog in table or db exists query (#7651)
70ec59ce0e is described below

commit 70ec59ce0e1e1517647d8746107a530e05b813e5
Author: dailai <[email protected]>
AuthorDate: Fri Sep 13 18:54:03 2024 +0800

    [Fix][Connector-v2] Throw Exception in sql query for JdbcCatalog in table 
or db exists query (#7651)
---
 .../seatunnel/jdbc/catalog/AbstractJdbcCatalog.java | 21 ++++++++++-----------
 .../seatunnel/jdbc/catalog/iris/IrisCatalog.java    | 10 +++++++---
 .../catalog/oceanbase/OceanBaseOracleCatalog.java   | 12 +++++++++---
 3 files changed, 26 insertions(+), 17 deletions(-)

diff --git 
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/AbstractJdbcCatalog.java
 
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/AbstractJdbcCatalog.java
index 69f1007b6c..e971c13893 100644
--- 
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/AbstractJdbcCatalog.java
+++ 
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/AbstractJdbcCatalog.java
@@ -37,6 +37,7 @@ import org.apache.seatunnel.common.exception.CommonError;
 import org.apache.seatunnel.common.exception.CommonErrorCode;
 import org.apache.seatunnel.common.exception.SeaTunnelRuntimeException;
 import org.apache.seatunnel.common.utils.JdbcUrlUtil;
+import org.apache.seatunnel.common.utils.SeaTunnelException;
 import 
org.apache.seatunnel.connectors.seatunnel.jdbc.catalog.utils.CatalogUtils;
 
 import org.apache.commons.lang3.StringUtils;
@@ -279,9 +280,7 @@ public abstract class AbstractJdbcCatalog implements 
Catalog {
             return false;
         }
         try {
-            return querySQLResultExists(
-                    getUrlFromDatabaseName(databaseName),
-                    getDatabaseWithConditionSql(databaseName));
+            return querySQLResultExists(defaultUrl, 
getDatabaseWithConditionSql(databaseName));
         } catch (SeaTunnelRuntimeException e) {
             if 
(e.getSeaTunnelErrorCode().getCode().equals(UNSUPPORTED_METHOD.getCode())) {
                 log.warn(
@@ -290,6 +289,8 @@ public abstract class AbstractJdbcCatalog implements 
Catalog {
                 return listDatabases().contains(databaseName);
             }
             throw e;
+        } catch (SQLException e) {
+            throw new SeaTunnelException("Failed to querySQLResult", e);
         }
     }
 
@@ -350,6 +351,8 @@ public abstract class AbstractJdbcCatalog implements 
Catalog {
                 }
             }
             throw e1;
+        } catch (SQLException e) {
+            throw new SeaTunnelException("Failed to querySQLResult", e);
         }
     }
 
@@ -566,14 +569,10 @@ public abstract class AbstractJdbcCatalog implements 
Catalog {
         }
     }
 
-    protected boolean querySQLResultExists(String dbUrl, String sql) {
-        try (PreparedStatement stmt = 
getConnection(dbUrl).prepareStatement(sql)) {
-            try (ResultSet rs = stmt.executeQuery()) {
-                return rs.next();
-            }
-        } catch (Exception e) {
-            log.info("query exists error", e);
-            return false;
+    protected boolean querySQLResultExists(String dbUrl, String sql) throws 
SQLException {
+        try (PreparedStatement stmt = 
getConnection(dbUrl).prepareStatement(sql);
+                ResultSet rs = stmt.executeQuery()) {
+            return rs.next();
         }
     }
 
diff --git 
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/iris/IrisCatalog.java
 
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/iris/IrisCatalog.java
index fad902b984..b4d60a22d3 100644
--- 
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/iris/IrisCatalog.java
+++ 
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/iris/IrisCatalog.java
@@ -137,9 +137,13 @@ public class IrisCatalog extends AbstractJdbcCatalog {
 
     @Override
     public boolean tableExists(TablePath tablePath) throws CatalogException {
-        return querySQLResultExists(
-                this.getUrlFromDatabaseName(tablePath.getDatabaseName()),
-                getTableWithConditionSql(tablePath));
+        try {
+            return querySQLResultExists(
+                    this.getUrlFromDatabaseName(tablePath.getDatabaseName()),
+                    getTableWithConditionSql(tablePath));
+        } catch (SQLException e) {
+            throw new SeaTunnelException("Failed to querySQLResult", e);
+        }
     }
 
     @Override
diff --git 
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/oceanbase/OceanBaseOracleCatalog.java
 
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/oceanbase/OceanBaseOracleCatalog.java
index cb563a2229..328b3f38b3 100644
--- 
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/oceanbase/OceanBaseOracleCatalog.java
+++ 
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/oceanbase/OceanBaseOracleCatalog.java
@@ -23,8 +23,10 @@ import 
org.apache.seatunnel.api.table.catalog.exception.CatalogException;
 import 
org.apache.seatunnel.api.table.catalog.exception.DatabaseNotExistException;
 import 
org.apache.seatunnel.api.table.catalog.exception.TableAlreadyExistException;
 import org.apache.seatunnel.common.utils.JdbcUrlUtil;
+import org.apache.seatunnel.common.utils.SeaTunnelException;
 import 
org.apache.seatunnel.connectors.seatunnel.jdbc.catalog.oracle.OracleCatalog;
 
+import java.sql.SQLException;
 import java.util.List;
 
 import static 
org.apache.seatunnel.shade.com.google.common.base.Preconditions.checkNotNull;
@@ -52,9 +54,13 @@ public class OceanBaseOracleCatalog extends OracleCatalog {
 
     @Override
     public boolean tableExists(TablePath tablePath) throws CatalogException {
-        return querySQLResultExists(
-                this.getUrlFromDatabaseName(tablePath.getDatabaseName()),
-                getTableWithConditionSql(tablePath));
+        try {
+            return querySQLResultExists(
+                    this.getUrlFromDatabaseName(tablePath.getDatabaseName()),
+                    getTableWithConditionSql(tablePath));
+        } catch (SQLException e) {
+            throw new SeaTunnelException("Failed to querySQLResult", e);
+        }
     }
 
     @Override

Reply via email to