This is an automated email from the ASF dual-hosted git repository.
wuchunfu 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 8e0ca8f725 [Fix][Connector-V2] Fix jdbc query sql can not get table
path (#7484)
8e0ca8f725 is described below
commit 8e0ca8f7251fd3ccc00bd42f45921d1d86087db3
Author: corgy-w <[email protected]>
AuthorDate: Wed Aug 28 18:13:07 2024 +0800
[Fix][Connector-V2] Fix jdbc query sql can not get table path (#7484)
* [Fix][Connector-V2] fix jdbc-multi-metrics bug
* [Fix][Connector-V2] fix part jdbc-multi-metrics bug
* [Fix][Connector-V2] optimized code
* [Fix][Connector-V2] update test case
* [Fix][Connector-V2] update
* [Fix][Connector-V2] update
* [Fix][Connector-V2] update
---------
Co-authored-by: Jia Fan <[email protected]>
---
docs/en/connector-v2/source/Mysql.md | 6 +--
docs/en/connector-v2/source/Oracle.md | 6 +--
docs/en/connector-v2/source/PostgreSQL.md | 6 +--
docs/en/connector-v2/source/SqlServer.md | 6 +--
.../seatunnel/jdbc/catalog/utils/CatalogUtils.java | 19 +++++++++-
.../connectors/seatunnel/jdbc/AbstractJdbcIT.java | 43 ++++++++++++++++++++++
.../connectors/seatunnel/jdbc/JdbcCase.java | 4 ++
.../connectors/seatunnel/jdbc/JdbcMysqlIT.java | 1 +
.../connectors/seatunnel/jdbc/JdbcOracleIT.java | 2 +
.../seatunnel/jdbc/JdbcStarRocksdbIT.java | 2 +
.../connectors/seatunnel/jdbc/JdbcHiveIT.java | 4 +-
.../connectors/seatunnel/jdbc/JdbcSqlServerIT.java | 1 +
.../connectors/seatunnel/jdbc/JdbcDmIT.java | 1 +
.../connectors/seatunnel/jdbc/JdbcGreenplumIT.java | 1 +
.../connectors/seatunnel/jdbc/JdbcXuguIT.java | 1 +
15 files changed, 88 insertions(+), 15 deletions(-)
diff --git a/docs/en/connector-v2/source/Mysql.md
b/docs/en/connector-v2/source/Mysql.md
index 45a6bce18d..0d6835f41e 100644
--- a/docs/en/connector-v2/source/Mysql.md
+++ b/docs/en/connector-v2/source/Mysql.md
@@ -67,7 +67,7 @@ Read external data source data through JDBC.
## Source Options
-| Name | Type | Required |
Default |
Description
[...]
+| Name | Type | Required | Default
|
Description
[...]
|--------------------------------------------|------------|----------|-----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[...]
| url | String | Yes | -
| The URL of the JDBC connection. Refer to a case:
jdbc:mysql://localhost:3306:3306/test
[...]
| driver | String | Yes | -
| The jdbc class name used to connect to the remote data source,<br/>
if you use MySQL the value is `com.mysql.cj.jdbc.Driver`.
[...]
@@ -81,8 +81,8 @@ Read external data source data through JDBC.
| partition_num | Int | No | job
parallelism | The number of partition count, only support positive integer.
default value is job parallelism
[...]
| fetch_size | Int | No | 0
| For queries that return a large number of objects,you can
configure<br/> the row fetch size used in the query toimprove performance
by<br/> reducing the number database hits required to satisfy the selection
criteria.<br/> Zero means use jdbc default value.
[...]
| properties | Map | No | -
| Additional connection configuration parameters,when properties and
URL have the same parameters, the priority is determined by the <br/>specific
implementation of the driver. For example, in MySQL, properties take precedence
over the URL.
[...]
-| table_path | Int | No | 0
| The path to the full path of table, you can use this configuration
instead of `query`. <br/>examples: <br/>mysql: "testdb.table1" <br/>oracle:
"test_schema.table1" <br/>sqlserver: "testdb.test_schema.table1"
<br/>postgresql: "testdb.test_schema.table1"
[...]
-| table_list | Array | No | 0
| The list of tables to be read, you can use this configuration instead
of `table_path` example: ```[{ table_path = "testdb.table1"}, {table_path =
"testdb.table2", query = "select * id, name from testdb.table2"}]```
[...]
+| table_path | String | No | -
| The path to the full path of table, you can use this configuration
instead of `query`. <br/>examples: <br/>mysql: "testdb.table1" <br/>oracle:
"test_schema.table1" <br/>sqlserver: "testdb.test_schema.table1"
<br/>postgresql: "testdb.test_schema.table1"
[...]
+| table_list | Array | No | -
| The list of tables to be read, you can use this configuration instead
of `table_path` example: ```[{ table_path = "testdb.table1"}, {table_path =
"testdb.table2", query = "select * id, name from testdb.table2"}]```
[...]
| where_condition | String | No | -
| Common row filter conditions for all tables/queries, must start with
`where`. for example `where id > 100`
[...]
| split.size | Int | No | 8096
| The split size (number of rows) of table, captured tables are split
into multiple splits when read of table.
[...]
| split.even-distribution.factor.lower-bound | Double | No | 0.05
| The lower bound of the chunk key distribution factor. This factor is
used to determine whether the table data is evenly distributed. If the
distribution factor is calculated to be greater than or equal to this lower
bound (i.e., (MAX(id) - MIN(id) + 1) / row count), the table chunks would be
optimized for even distribution. Otherwise, if the distribution factor is less,
the table will be considered a [...]
diff --git a/docs/en/connector-v2/source/Oracle.md
b/docs/en/connector-v2/source/Oracle.md
index b7a2822520..1756a76db1 100644
--- a/docs/en/connector-v2/source/Oracle.md
+++ b/docs/en/connector-v2/source/Oracle.md
@@ -81,7 +81,7 @@ Read external data source data through JDBC.
| fetch_size | Int | No | 0 | For
queries that return a large number of objects,you can configure<br/> the row
fetch size used in the query toimprove performance by<br/> reducing the number
database hits required to satisfy the selection criteria.<br/> Zero means use
jdbc default value. |
| properties | Map | No | - |
Additional connection configuration parameters,when properties and URL have the
same parameters, the priority is determined by the <br/>specific implementation
of the driver. For example, in MySQL, properties take precedence over the URL.
|
-| Name | Type | Required |
Default |
Description
[...]
+| Name | Type | Required | Default
|
Description
[...]
|--------------------------------------------|------------|----------|-----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[...]
| url | String | Yes | -
| The URL of the JDBC connection. Refer to a case:
jdbc:mysql://localhost:3306:3306/test
[...]
| driver | String | Yes | -
| The jdbc class name used to connect to the remote data source,<br/>
if you use MySQL the value is `com.mysql.cj.jdbc.Driver`.
[...]
@@ -95,8 +95,8 @@ Read external data source data through JDBC.
| partition_num | Int | No | job
parallelism | The number of partition count, only support positive integer.
default value is job parallelism
[...]
| fetch_size | Int | No | 0
| For queries that return a large number of objects,you can
configure<br/> the row fetch size used in the query toimprove performance
by<br/> reducing the number database hits required to satisfy the selection
criteria.<br/> Zero means use jdbc default value.
[...]
| properties | Map | No | -
| Additional connection configuration parameters,when properties and
URL have the same parameters, the priority is determined by the <br/>specific
implementation of the driver. For example, in MySQL, properties take precedence
over the URL.
[...]
-| table_path | Int | No | 0
| The path to the full path of table, you can use this configuration
instead of `query`. <br/>examples: <br/>mysql: "testdb.table1" <br/>oracle:
"test_schema.table1" <br/>sqlserver: "testdb.test_schema.table1"
<br/>postgresql: "testdb.test_schema.table1"
[...]
-| table_list | Array | No | 0
| The list of tables to be read, you can use this configuration instead
of `table_path` example: ```[{ table_path = "testdb.table1"}, {table_path =
"testdb.table2", query = "select * id, name from testdb.table2"}]```
[...]
+| table_path | String | No | -
| The path to the full path of table, you can use this configuration
instead of `query`. <br/>examples: <br/>mysql: "testdb.table1" <br/>oracle:
"test_schema.table1" <br/>sqlserver: "testdb.test_schema.table1"
<br/>postgresql: "testdb.test_schema.table1"
[...]
+| table_list | Array | No | -
| The list of tables to be read, you can use this configuration instead
of `table_path` example: ```[{ table_path = "testdb.table1"}, {table_path =
"testdb.table2", query = "select * id, name from testdb.table2"}]```
[...]
| where_condition | String | No | -
| Common row filter conditions for all tables/queries, must start with
`where`. for example `where id > 100`
[...]
| split.size | Int | No | 8096
| The split size (number of rows) of table, captured tables are split
into multiple splits when read of table.
[...]
| split.even-distribution.factor.lower-bound | Double | No | 0.05
| The lower bound of the chunk key distribution factor. This factor is
used to determine whether the table data is evenly distributed. If the
distribution factor is calculated to be greater than or equal to this lower
bound (i.e., (MAX(id) - MIN(id) + 1) / row count), the table chunks would be
optimized for even distribution. Otherwise, if the distribution factor is less,
the table will be considered a [...]
diff --git a/docs/en/connector-v2/source/PostgreSQL.md
b/docs/en/connector-v2/source/PostgreSQL.md
index 5dd922b76f..101902d361 100644
--- a/docs/en/connector-v2/source/PostgreSQL.md
+++ b/docs/en/connector-v2/source/PostgreSQL.md
@@ -76,7 +76,7 @@ Read external data source data through JDBC.
| Name | Type | Required |
Default |
Description
[...]
|--------------------------------------------|------------|----------|-----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[...]
-| url | String | Yes | -
| The URL of the JDBC connection. Refer to a case:
jdbc:mysql://localhost:3306:3306/test
[...]
+| url | String | Yes | -
| The URL of the JDBC connection. Refer to a case:
jdbc:postgresql://localhost:5432/test
[...]
| driver | String | Yes | -
| The jdbc class name used to connect to the remote data source,<br/>
if you use MySQL the value is `com.mysql.cj.jdbc.Driver`.
[...]
| user | String | No | -
| Connection instance user name
[...]
| password | String | No | -
| Connection instance password
[...]
@@ -88,8 +88,8 @@ Read external data source data through JDBC.
| partition_num | Int | No | job
parallelism | The number of partition count, only support positive integer.
default value is job parallelism
[...]
| fetch_size | Int | No | 0
| For queries that return a large number of objects,you can
configure<br/> the row fetch size used in the query toimprove performance
by<br/> reducing the number database hits required to satisfy the selection
criteria.<br/> Zero means use jdbc default value.
[...]
| properties | Map | No | -
| Additional connection configuration parameters,when properties and
URL have the same parameters, the priority is determined by the <br/>specific
implementation of the driver. For example, in MySQL, properties take precedence
over the URL.
[...]
-| table_path | Int | No | 0
| The path to the full path of table, you can use this configuration
instead of `query`. <br/>examples: <br/>mysql: "testdb.table1" <br/>oracle:
"test_schema.table1" <br/>sqlserver: "testdb.test_schema.table1"
<br/>postgresql: "testdb.test_schema.table1"
[...]
-| table_list | Array | No | 0
| The list of tables to be read, you can use this configuration instead
of `table_path` example: ```[{ table_path = "testdb.table1"}, {table_path =
"testdb.table2", query = "select * id, name from testdb.table2"}]```
[...]
+| table_path | String | No | -
| The path to the full path of table, you can use this configuration
instead of `query`. <br/>examples: <br/>mysql: "testdb.table1" <br/>oracle:
"test_schema.table1" <br/>sqlserver: "testdb.test_schema.table1"
<br/>postgresql: "testdb.test_schema.table1"
[...]
+| table_list | Array | No | -
| The list of tables to be read, you can use this configuration instead
of `table_path` example: ```[{ table_path = "testdb.table1"}, {table_path =
"testdb.table2", query = "select * id, name from testdb.table2"}]```
[...]
| where_condition | String | No | -
| Common row filter conditions for all tables/queries, must start with
`where`. for example `where id > 100`
[...]
| split.size | Int | No | 8096
| The split size (number of rows) of table, captured tables are split
into multiple splits when read of table.
[...]
| split.even-distribution.factor.lower-bound | Double | No | 0.05
| The lower bound of the chunk key distribution factor. This factor is
used to determine whether the table data is evenly distributed. If the
distribution factor is calculated to be greater than or equal to this lower
bound (i.e., (MAX(id) - MIN(id) + 1) / row count), the table chunks would be
optimized for even distribution. Otherwise, if the distribution factor is less,
the table will be considered a [...]
diff --git a/docs/en/connector-v2/source/SqlServer.md
b/docs/en/connector-v2/source/SqlServer.md
index bbcd6751a2..2905f45fbd 100644
--- a/docs/en/connector-v2/source/SqlServer.md
+++ b/docs/en/connector-v2/source/SqlServer.md
@@ -67,7 +67,7 @@ Read external data source data through JDBC.
## Source Options
-| name | type | required | default
|
Description
[...]
+| name | type | required | default
|
Description
[...]
|--------------------------------------------|--------|----------|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[...]
| url | String | Yes | -
| The URL of the JDBC connection. Refer to a case:
jdbc:sqlserver://127.0.0.1:1434;database=TestDB
[...]
| driver | String | Yes | -
| The jdbc class name used to connect to the remote data source,<br/> if
you use SQLserver the value is `com.microsoft.sqlserver.jdbc.SQLServerDriver`.
[...]
@@ -81,8 +81,8 @@ Read external data source data through JDBC.
| partition_num | Int | No | job
parallelism | The number of partition count, only support positive integer.
default value is job parallelism
[...]
| fetch_size | Int | No | 0
| For queries that return a large number of objects,you can configure<br/>
the row fetch size used in the query toimprove performance by<br/> reducing the
number database hits required to satisfy the selection criteria.<br/> Zero
means use jdbc default value.
[...]
| properties | Map | No | -
| Additional connection configuration parameters,when properties and URL
have the same parameters, the priority is determined by the <br/>specific
implementation of the driver. For example, in MySQL, properties take precedence
over the URL.
[...]
-| table_path | Int | No | 0
| The path to the full path of table, you can use this configuration
instead of `query`. <br/>examples: <br/>mysql: "testdb.table1" <br/>oracle:
"test_schema.table1" <br/>sqlserver: "testdb.test_schema.table1"
<br/>postgresql: "testdb.test_schema.table1"
[...]
-| table_list | Array | No | 0
| The list of tables to be read, you can use this configuration instead of
`table_path` example: ```[{ table_path = "testdb.table1"}, {table_path =
"testdb.table2", query = "select * id, name from testdb.table2"}]```
[...]
+| table_path | String | No | -
| The path to the full path of table, you can use this configuration
instead of `query`. <br/>examples: <br/>mysql: "testdb.table1" <br/>oracle:
"test_schema.table1" <br/>sqlserver: "testdb.test_schema.table1"
<br/>postgresql: "testdb.test_schema.table1"
[...]
+| table_list | Array | No | -
| The list of tables to be read, you can use this configuration instead of
`table_path` example: ```[{ table_path = "testdb.table1"}, {table_path =
"testdb.table2", query = "select * id, name from testdb.table2"}]```
[...]
| where_condition | String | No | -
| Common row filter conditions for all tables/queries, must start with
`where`. for example `where id > 100`
[...]
| split.size | Int | No | 8096
| The split size (number of rows) of table, captured tables are split into
multiple splits when read of table.
[...]
| split.even-distribution.factor.lower-bound | Double | No | 0.05
| The lower bound of the chunk key distribution factor. This factor is used
to determine whether the table data is evenly distributed. If the distribution
factor is calculated to be greater than or equal to this lower bound (i.e.,
(MAX(id) - MIN(id) + 1) / row count), the table chunks would be optimized for
even distribution. Otherwise, if the distribution factor is less, the table
will be considered as un [...]
diff --git
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/utils/CatalogUtils.java
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/utils/CatalogUtils.java
index bb224c4624..070ef670af 100644
---
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/utils/CatalogUtils.java
+++
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/utils/CatalogUtils.java
@@ -272,6 +272,15 @@ public class CatalogUtils {
throws SQLException {
TableSchema.Builder schemaBuilder = TableSchema.builder();
Map<String, String> unsupported = new LinkedHashMap<>();
+ String tableName = null;
+ String databaseName = null;
+ String schemaName = null;
+ try {
+ tableName = metadata.getTableName(1);
+ databaseName = metadata.getCatalogName(1);
+ schemaName = metadata.getSchemaName(1);
+ } catch (SQLException ignored) {
+ }
for (int index = 1; index <= metadata.getColumnCount(); index++) {
try {
Column column = columnConverter.apply(metadata, index);
@@ -289,8 +298,14 @@ public class CatalogUtils {
throw CommonError.getCatalogTableWithUnsupportedType("UNKNOWN",
sqlQuery, unsupported);
}
String catalogName = "jdbc_catalog";
+ databaseName = StringUtils.isBlank(databaseName) ? null : databaseName;
+ schemaName = StringUtils.isBlank(schemaName) ? null : schemaName;
+ TablePath tablePath =
+ StringUtils.isBlank(tableName)
+ ? TablePath.DEFAULT
+ : TablePath.of(databaseName, schemaName, tableName);
return CatalogTable.of(
- TableIdentifier.of(catalogName, "default", "default",
"default"),
+ TableIdentifier.of(catalogName, tablePath),
schemaBuilder.build(),
new HashMap<>(),
new ArrayList<>(),
@@ -307,11 +322,11 @@ public class CatalogUtils {
}
/**
- * @deprecated instead by {@link #getCatalogTable(Connection, String,
JdbcDialectTypeMapper)}
* @param connection
* @param sqlQuery
* @return
* @throws SQLException
+ * @deprecated instead by {@link #getCatalogTable(Connection, String,
JdbcDialectTypeMapper)}
*/
@Deprecated
public static CatalogTable getCatalogTable(Connection connection, String
sqlQuery)
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-common/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/AbstractJdbcIT.java
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-common/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/AbstractJdbcIT.java
index 7cd6be4fd9..d5456934fb 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-common/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/AbstractJdbcIT.java
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-common/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/AbstractJdbcIT.java
@@ -31,6 +31,10 @@ import
org.apache.seatunnel.common.exception.SeaTunnelRuntimeException;
import org.apache.seatunnel.common.utils.ExceptionUtils;
import org.apache.seatunnel.connectors.seatunnel.jdbc.catalog.iris.IrisCatalog;
import
org.apache.seatunnel.connectors.seatunnel.jdbc.catalog.oracle.OracleCatalog;
+import
org.apache.seatunnel.connectors.seatunnel.jdbc.config.JdbcConnectionConfig;
+import
org.apache.seatunnel.connectors.seatunnel.jdbc.config.JdbcSourceTableConfig;
+import org.apache.seatunnel.connectors.seatunnel.jdbc.source.JdbcSourceTable;
+import org.apache.seatunnel.connectors.seatunnel.jdbc.utils.JdbcCatalogUtils;
import org.apache.seatunnel.e2e.common.TestResource;
import org.apache.seatunnel.e2e.common.TestSuiteBase;
import org.apache.seatunnel.e2e.common.container.ContainerExtendedFactory;
@@ -72,7 +76,9 @@ import java.sql.Statement;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
import java.util.Properties;
+import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -454,6 +460,43 @@ public abstract class AbstractJdbcIT extends TestSuiteBase
implements TestResour
}
}
+ @Test
+ public void testCatalogWithCatalogUtils() throws SQLException,
ClassNotFoundException {
+ if (StringUtils.isBlank(jdbcCase.getTablePathFullName())) {
+ return;
+ }
+
+ List<JdbcSourceTableConfig> tablesConfig = new ArrayList<>();
+ JdbcSourceTableConfig tableConfig =
+ JdbcSourceTableConfig.builder()
+ .query("SELECT * FROM " + jdbcCase.getSourceTable())
+ .useSelectCount(false)
+ .build();
+ tablesConfig.add(tableConfig);
+ Map<TablePath, JdbcSourceTable> tables =
+ JdbcCatalogUtils.getTables(
+ JdbcConnectionConfig.builder()
+ .url(jdbcCase.getJdbcUrl().replace(HOST,
dbServer.getHost()))
+ .driverName(jdbcCase.getDriverClass())
+ .username(jdbcCase.getUserName())
+ .password(jdbcCase.getPassword())
+ .build(),
+ tablesConfig);
+ Set<TablePath> tablePaths = tables.keySet();
+
+ tablePaths.forEach(
+ tablePath -> {
+ log.info(
+ "Expected: {} Actual: {}",
+ tablePath.getFullName(),
+ jdbcCase.getTablePathFullName());
+ Assertions.assertTrue(
+ tablePath
+ .getFullName()
+
.equalsIgnoreCase(jdbcCase.getTablePathFullName()));
+ });
+ }
+
protected Object[] toArrayResult(ResultSet resultSet, String[] fieldNames)
throws SQLException, IOException {
List<Object> result = new ArrayList<>(0);
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-common/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcCase.java
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-common/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcCase.java
index 006d3d5f35..3dd7b64b95 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-common/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcCase.java
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-common/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcCase.java
@@ -57,4 +57,8 @@ public class JdbcCase {
private String catalogDatabase;
private String catalogSchema;
private String catalogTable;
+
+ // The full path of the table created when initializing data
+ // According to whether jdbc api supports setting
+ private String tablePathFullName;
}
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMysqlIT.java
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMysqlIT.java
index 6bd97863b2..1b148ce494 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMysqlIT.java
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMysqlIT.java
@@ -180,6 +180,7 @@ public class JdbcMysqlIT extends AbstractJdbcIT {
.testData(testDataSet)
.catalogDatabase(CATALOG_DATABASE)
.catalogTable(MYSQL_SINK)
+ .tablePathFullName(MYSQL_DATABASE + "." + MYSQL_SOURCE)
.build();
}
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcOracleIT.java
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcOracleIT.java
index 9cd130219a..19f7f118f2 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcOracleIT.java
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcOracleIT.java
@@ -205,6 +205,8 @@ public class JdbcOracleIT extends AbstractJdbcIT {
.configFile(CONFIG_FILE)
.insertSql(insertSql)
.testData(testDataSet)
+ // oracle jdbc not support getTables/getCatalog/getSchema , is
empty
+ .tablePathFullName(TablePath.DEFAULT.getFullName())
.build();
}
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-2/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcStarRocksdbIT.java
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-2/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcStarRocksdbIT.java
index 1d41c480c3..e34557b739 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-2/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcStarRocksdbIT.java
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-2/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcStarRocksdbIT.java
@@ -17,6 +17,7 @@
package org.apache.seatunnel.connectors.seatunnel.jdbc;
+import org.apache.seatunnel.api.table.catalog.TablePath;
import org.apache.seatunnel.api.table.type.SeaTunnelRow;
import org.apache.commons.lang3.tuple.Pair;
@@ -105,6 +106,7 @@ public class JdbcStarRocksdbIT extends AbstractJdbcIT {
.configFile(CONFIG_FILE)
.insertSql(insertSql)
.testData(testDataSet)
+ .tablePathFullName(TablePath.DEFAULT.getFullName())
.build();
}
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcHiveIT.java
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcHiveIT.java
index f183c0c193..dfa128f813 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcHiveIT.java
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcHiveIT.java
@@ -17,6 +17,7 @@
package org.apache.seatunnel.connectors.seatunnel.jdbc;
+import org.apache.seatunnel.api.table.catalog.TablePath;
import org.apache.seatunnel.api.table.type.SeaTunnelRow;
import org.apache.seatunnel.common.exception.SeaTunnelRuntimeException;
import org.apache.seatunnel.common.utils.ExceptionUtils;
@@ -43,7 +44,7 @@ public class JdbcHiveIT extends AbstractJdbcIT {
private static final String HIVE_DATABASE = "default";
- private static final String HIVE_SOURCE = "e2e_table_source";
+ private static final String HIVE_SOURCE = "hive_e2e_source_table";
private static final String HIVE_USERNAME = "root";
private static final String HIVE_PASSWORD = null;
private static final int HIVE_PORT = 10000;
@@ -94,6 +95,7 @@ public class JdbcHiveIT extends AbstractJdbcIT {
.sourceTable(HIVE_SOURCE)
.createSql(CREATE_SQL)
.configFile(CONFIG_FILE)
+ .tablePathFullName(TablePath.DEFAULT.getFullName())
.build();
}
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcSqlServerIT.java
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcSqlServerIT.java
index de5621899a..d36b864215 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcSqlServerIT.java
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcSqlServerIT.java
@@ -180,6 +180,7 @@ public class JdbcSqlServerIT extends AbstractJdbcIT {
.configFile(CONFIG_FILE)
.insertSql(insertSql)
.testData(testDataSet)
+ .tablePathFullName(TablePath.DEFAULT.getFullName())
.build();
}
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-5/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcDmIT.java
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-5/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcDmIT.java
index f2b9097ffa..cc6af23d6e 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-5/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcDmIT.java
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-5/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcDmIT.java
@@ -127,6 +127,7 @@ public class JdbcDmIT extends AbstractJdbcIT {
.configFile(CONFIG_FILE)
.insertSql(insertSql)
.testData(testDataSet)
+ .tablePathFullName(String.format("%s.%s", DM_DATABASE,
DM_SOURCE))
.build();
}
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-5/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcGreenplumIT.java
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-5/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcGreenplumIT.java
index 9c98c29a7a..1ea4e2b693 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-5/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcGreenplumIT.java
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-5/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcGreenplumIT.java
@@ -84,6 +84,7 @@ public class JdbcGreenplumIT extends AbstractJdbcIT {
.configFile(CONFIG_FILE)
.insertSql(insertSql)
.testData(testDataSet)
+ .tablePathFullName(GREENPLUM_SOURCE)
.build();
}
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcXuguIT.java
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcXuguIT.java
index 5fdae0ad93..186e23530a 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcXuguIT.java
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcXuguIT.java
@@ -152,6 +152,7 @@ public class JdbcXuguIT extends AbstractJdbcIT {
.configFile(CONFIG_FILE)
.insertSql(insertSql)
.testData(testDataSet)
+ .tablePathFullName(XUGU_DATABASE + "." + XUGU_SCHEMA + "." +
XUGU_SOURCE)
.build();
}