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