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

ntimofeev pushed a commit to branch STABLE-4.2
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/STABLE-4.2 by this push:
     new 8bcc7fc1f CAY-2885 Modeler: DbImport fails to load DB schema view
8bcc7fc1f is described below

commit 8bcc7fc1fd4b42a0df5ea922419fa7fd5ea61423
Author: Nikita Timofeev <stari...@gmail.com>
AuthorDate: Mon Apr 14 14:31:04 2025 +0400

    CAY-2885 Modeler: DbImport fails to load DB schema view
---
 RELEASE-NOTES.txt                                                 | 1 +
 .../org/apache/cayenne/modeler/action/LoadDbSchemaAction.java     | 2 +-
 .../cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java     | 8 ++++++--
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 0add80420..fa56a29ce 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -18,6 +18,7 @@ CAY-2884 Upgrade gradle to 8.13
 Bug Fixes:
 
 CAY-2883 License and notice templates are not processed by the Gradle build
+CAY-2885 Modeler: DbImport fails to load DB schema view
 
 ----------------------------------
 Release: 4.2.2
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java
index 9f7b0155f..9f934f396 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java
@@ -128,7 +128,7 @@ public class LoadDbSchemaAction extends 
DBConnectionAwareAction {
 
     private void loadTables(DBConnectionInfo connectionInfo,
                             TreePath tablePath,
-                            DbImportView rootParent) throws SQLException {
+                            DbImportView rootParent) throws Exception {
         ReverseEngineering databaseReverseEngineering = new 
DatabaseSchemaLoader()
                 .loadTables(connectionInfo,
                         getApplication().getClassLoadingService(),
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java
index 476c62d40..bb2d406c6 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbimport/DatabaseSchemaLoader.java
@@ -125,9 +125,10 @@ public class DatabaseSchemaLoader {
     public ReverseEngineering loadTables(DBConnectionInfo connectionInfo,
                                          ClassLoadingService loadingService,
                                          TreePath path,
-                                         String[] tableTypesFromConfig) throws 
SQLException {
+                                         String[] tableTypesFromConfig) throws 
Exception {
         int pathIndex = 1;
         String catalogName = null, schemaName = null;
+        DbAdapter adapter = connectionInfo.makeAdapter(loadingService);
 
         Object userObject = getUserObjectOrNull(path, pathIndex);
         if (userObject != null) {
@@ -158,7 +159,10 @@ public class DatabaseSchemaLoader {
                     String table = resultSet.getString("TABLE_NAME");
                     String schema = resultSet.getString("TABLE_SCHEM");
                     String catalog = resultSet.getString("TABLE_CAT");
-                    packTable(table, catalog == null ? catalogName : catalog, 
schema, null);
+                    String realCatalogName = catalog == null || 
!adapter.supportsCatalogsOnReverseEngineering()
+                            ? catalogName
+                            : catalog;
+                    packTable(table, realCatalogName, schema, null);
                 }
                 if (!hasTables && (catalogName != null || schemaName != null)) 
{
                     packFilterContainer(catalogName, schemaName);

Reply via email to