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();
     }
 

Reply via email to