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

casionone pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/linkis.git


The following commit(s) were added to refs/heads/master by this push:
     new 7411859130 #AI commit# [fix][PES][datasource] fix DB2 schema query to 
use correct SQL instead of invalid command (#5409) (#5440)
7411859130 is described below

commit 741185913021e750c197b0630b0a91bd86f93c61
Author: aiceflower <[email protected]>
AuthorDate: Thu Jun 11 15:40:21 2026 +0800

    #AI commit# [fix][PES][datasource] fix DB2 schema query to use correct SQL 
instead of invalid command (#5409) (#5440)
    
    - Fix getAllDatabases() method in DB2 SqlConnection classes
    - Replace invalid "list database directory" command with proper SQL query
    - Add configurable schema query SQL with default filtering system schemas
    - Query SYSCAT.SCHEMATA to get actual schema list from DB2
    
    Co-authored-by: Claude Opus 4.6 <[email protected]>
---
 .../metadata/query/service/db2/SqlConnection.java  | 23 +++++++++++++++-------
 .../metadata/query/service/db2/SqlConnection.java  | 13 ++++++------
 2 files changed, 22 insertions(+), 14 deletions(-)

diff --git 
a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/db2/SqlConnection.java
 
b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/db2/SqlConnection.java
index e1b4afd011..5c368afc35 100644
--- 
a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/db2/SqlConnection.java
+++ 
b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/db2/SqlConnection.java
@@ -44,6 +44,16 @@ public class SqlConnection implements Closeable {
   private static final CommonVars<String> SQL_CONNECT_URL =
       CommonVars.apply("wds.linkis.server.mdm.service.db2.url", 
"jdbc:db2://%s:%s/%s");
 
+  /**
+   * SQL query to get schema/database list. Default: only show user schemas, 
excluding system
+   * schemas (SYS*, NULLID, SQLJ). To show all schemas, configure: "SELECT 
SCHEMANAME FROM
+   * SYSCAT.SCHEMATA WITH UR"
+   */
+  private static final CommonVars<String> SQL_SCHEMA_QUERY =
+      CommonVars.apply(
+          "wds.linkis.server.mdm.service.db2.schema.query.sql",
+          "SELECT SCHEMANAME FROM SYSCAT.SCHEMATA WHERE SCHEMANAME NOT LIKE 
'SYS%' AND SCHEMANAME != 'NULLID' AND SCHEMANAME != 'SQLJ' WITH UR");
+
   private Connection conn;
 
   private ConnectMessage connectMessage;
@@ -67,22 +77,21 @@ public class SqlConnection implements Closeable {
   }
 
   public List<String> getAllDatabases() throws SQLException {
-    // db2 "select schemaname from syscat.schemata"
-    List<String> dataBaseName = new ArrayList<>();
+    // Query schema list using configurable SQL (default: only user schemas)
+    List<String> schemaNames = new ArrayList<>();
     Statement stmt = null;
     ResultSet rs = null;
     try {
       stmt = conn.createStatement();
-      rs = stmt.executeQuery("list database directory");
-      // rs = stmt.executeQuery("SELECT * FROM SYSIBMADM.APPLICATIONS WITH 
UR");
-      // rs = stmt.executeQuery("select * from syscat.tables");
+      // Use configurable SQL query for schema list
+      rs = stmt.executeQuery(SQL_SCHEMA_QUERY.getValue());
       while (rs.next()) {
-        dataBaseName.add(rs.getString(1));
+        schemaNames.add(rs.getString(1));
       }
     } finally {
       closeResource(null, stmt, rs);
     }
-    return dataBaseName;
+    return schemaNames;
   }
 
   public List<String> getAllTables(String tabschema) throws SQLException {
diff --git 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/db2/SqlConnection.java
 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/db2/SqlConnection.java
index 4fe662c46d..25f8cfcbcd 100644
--- 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/db2/SqlConnection.java
+++ 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/db2/SqlConnection.java
@@ -66,22 +66,21 @@ public class SqlConnection implements Closeable {
   }
 
   public List<String> getAllDatabases() throws SQLException {
-    // db2 "select schemaname from syscat.schemata"
-    List<String> dataBaseName = new ArrayList<>();
+    // Query schema list from system catalog view
+    List<String> schemaNames = new ArrayList<>();
     Statement stmt = null;
     ResultSet rs = null;
     try {
       stmt = conn.createStatement();
-      rs = stmt.executeQuery("list database directory");
-      // rs = stmt.executeQuery("SELECT * FROM SYSIBMADM.APPLICATIONS WITH 
UR");
-      // rs = stmt.executeQuery("select * from syscat.tables");
+      // Query all schemas from SYSCAT.SCHEMATA (DB2 system catalog)
+      rs = stmt.executeQuery("SELECT SCHEMANAME FROM SYSCAT.SCHEMATA WITH UR");
       while (rs.next()) {
-        dataBaseName.add(rs.getString(1));
+        schemaNames.add(rs.getString(1));
       }
     } finally {
       closeResource(null, stmt, rs);
     }
-    return dataBaseName;
+    return schemaNames;
   }
 
   public List<String> getAllTables(String tabschema) throws SQLException {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to