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]