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

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


The following commit(s) were added to refs/heads/master by this push:
     new 800d33448 CAY-2861 Derby version upgrade
800d33448 is described below

commit 800d334488d2cf7621471469bd75ce0c9a724c5a
Author: ntimofeev <[email protected]>
AuthorDate: Tue Aug 18 13:55:17 2026 +0300

    CAY-2861 Derby version upgrade
---
 RELEASE-NOTES.txt                                  |  1 +
 .../merge/factory/DerbyMergerTokenFactory.java     | 44 ++++++++++++++++++++++
 .../apache/cayenne/tools/DbImporterMojoTest.java   |  3 +-
 .../cayenne/unit/datasource/DerbyDataSource.java   |  2 +-
 .../cayenne/unit/dba/DerbyTestDbAdapter.java       |  6 ---
 .../org/apache/cayenne/unit/dba/TestDbAdapter.java |  8 ++--
 .../_getting-started-guide/object-context.adoc     |  9 ++++-
 pom.xml                                            | 14 ++++++-
 tutorials/tutorial/pom.xml                         |  4 ++
 9 files changed, 75 insertions(+), 16 deletions(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 166cf3c13..e77def223 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -13,6 +13,7 @@ Date:
 ----------------------------------
 Changes/New Features:
 
+CAY-2861 Derby version upgrade
 CAY-2912 Compact SQL logger
 CAY-2954 Don't wrap selecting queries in transactions
 CAY-2956 Get rid of a dedicated adapter for Oracle 8
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/factory/DerbyMergerTokenFactory.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/factory/DerbyMergerTokenFactory.java
index c0f42a856..0ae1cd13e 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/factory/DerbyMergerTokenFactory.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/factory/DerbyMergerTokenFactory.java
@@ -22,13 +22,17 @@ import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.dba.QuotingStrategy;
 import org.apache.cayenne.dbsync.merge.token.MergerToken;
+import org.apache.cayenne.dbsync.merge.token.db.DropRelationshipToDb;
 import org.apache.cayenne.dbsync.merge.token.db.SetAllowNullToDb;
 import org.apache.cayenne.dbsync.merge.token.db.SetColumnTypeToDb;
 import org.apache.cayenne.dbsync.merge.token.db.SetGeneratedFlagToDb;
 import org.apache.cayenne.dbsync.merge.token.db.SetNotNullToDb;
+import org.apache.cayenne.dbsync.merge.token.db.SetPrimaryKeyToDb;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.DbRelationship;
 
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
@@ -102,6 +106,46 @@ public class DerbyMergerTokenFactory extends 
DefaultMergerTokenFactory {
         };
     }
 
+    @Override
+    public MergerToken createDropRelationshipToDb(final DbEntity entity, 
DbRelationship rel) {
+        return new DropRelationshipToDb(entity, rel) {
+
+            @Override
+            public List<String> createSql(DataNode node) {
+                if (isEmpty()) {
+                    return Collections.emptyList();
+                }
+
+                QuotingStrategy quotes = 
node.getAdapter().getQuotingStrategy(entity);
+                StringBuilder sql = new StringBuilder("ALTER TABLE ");
+                quotes.appendFQN(sql, entity.getCatalog(), entity.getSchema(), 
entity.getName());
+                sql.append(" DROP CONSTRAINT 
\"").append(getFkName()).append('"');
+
+                return Collections.singletonList(sql.toString());
+            }
+        };
+    }
+
+    @Override
+    public MergerToken createSetPrimaryKeyToDb(DbEntity entity, 
Collection<DbAttribute> primaryKeyOriginal,
+                                               Collection<DbAttribute> 
primaryKeyNew, String detectedPrimaryKeyName) {
+        return new SetPrimaryKeyToDb(entity, primaryKeyOriginal, 
primaryKeyNew, detectedPrimaryKeyName) {
+
+            @Override
+            protected void appendDropOriginalPrimaryKeySQL(DbAdapter adapter, 
List<String> sqls) {
+                if (detectedPrimaryKeyName == null) {
+                    return;
+                }
+
+                QuotingStrategy quotes = resolveQuotes(adapter);
+                StringBuilder sql = new StringBuilder("ALTER TABLE ");
+                quotes.appendFQN(sql, getEntity().getCatalog(), 
getEntity().getSchema(), getEntity().getName());
+                sql.append(" DROP CONSTRAINT 
\"").append(detectedPrimaryKeyName).append('"');
+                sqls.add(sql.toString());
+            }
+        };
+    }
+
     @Override
     public MergerToken createSetGeneratedFlagToDb(DbEntity entity, DbAttribute 
column, boolean isGenerated) {
         return new SetGeneratedFlagToDb(entity, column, isGenerated) {
diff --git 
a/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
 
b/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
index 7af3d8107..d63bd0f6a 100644
--- 
a/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
+++ 
b/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/DbImporterMojoTest.java
@@ -484,7 +484,8 @@ public class DbImporterMojoTest {
                             String fkTableSchem = 
keys.getString("FKTABLE_SCHEM");
                             String fkTableName = 
keys.getString("FKTABLE_NAME");
                             String fkTableNameFull = (isBlank(fkTableSchem) ? 
"" : fkTableSchem + ".") + fkTableName;
-                            execute(stmt, "ALTER TABLE " + fkTableNameFull + " 
DROP CONSTRAINT " + keys.getString("FK_NAME"));
+                            execute(stmt, "ALTER TABLE " + fkTableNameFull
+                                    + " DROP CONSTRAINT \"" + 
keys.getString("FK_NAME") + "\"");
                         }
 
                         String sql = "DROP TABLE " + tableNameFull;
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DerbyDataSource.java 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DerbyDataSource.java
index 4c185dc32..8c25cae3e 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DerbyDataSource.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DerbyDataSource.java
@@ -26,7 +26,7 @@ public class DerbyDataSource {
         return DataSourceDescriptorFactory.create(
                 "sa",
                 "",
-                "jdbc:derby:target/testdb;create=true",
+                "jdbc:derby:memory:testdb;create=true",
                 "org.apache.derby.jdbc.EmbeddedDriver");
     }
 }
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/dba/DerbyTestDbAdapter.java 
b/cayenne/src/test/java/org/apache/cayenne/unit/dba/DerbyTestDbAdapter.java
index 08b8c045e..5daaf9097 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/dba/DerbyTestDbAdapter.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/dba/DerbyTestDbAdapter.java
@@ -24,12 +24,6 @@ import org.apache.cayenne.exp.parser.ASTExtract;
 
 public class DerbyTestDbAdapter extends TestDbAdapter {
 
-    static {
-        // as of Derby 10.1 Alpha, this is needed for Mac OS X:
-        // http://issues.apache.org/jira/browse/DERBY-1
-        System.setProperty("derby.storage.fileSyncTransactionLog", "true");
-    }
-
     public DerbyTestDbAdapter(DbAdapter adapter) {
         super(adapter);
     }
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/dba/TestDbAdapter.java 
b/cayenne/src/test/java/org/apache/cayenne/unit/dba/TestDbAdapter.java
index be9fb24a1..f7f9423e5 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/dba/TestDbAdapter.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/dba/TestDbAdapter.java
@@ -143,10 +143,10 @@ public abstract class TestDbAdapter {
             QuotingStrategy quotes = adapter.getQuotingStrategy(entity);
 
             for (String constraint : constraints) {
-
                 String drop = "ALTER TABLE "
                         + quotes.quotedFQN(entity.getCatalog(), 
entity.getSchema(), entity.getName()) +
-                        " DROP CONSTRAINT " + constraint;
+                        " DROP CONSTRAINT "
+                        + getIdentifiersStartQuote() + constraint + 
getIdentifiersEndQuote();
                 executeDDL(conn, drop);
             }
         }
@@ -329,8 +329,6 @@ public abstract class TestDbAdapter {
                 continue;
             }
 
-            QuotingStrategy quotes = adapter.getQuotingStrategy(entity);
-
             // Get all constraints for the table
             try (ResultSet rs = metadata.getExportedKeys(entity.getCatalog(), 
entity.getSchema(), entity.getName())) {
                 while (rs.next()) {
@@ -341,7 +339,7 @@ public abstract class TestDbAdapter {
                         Collection<String> constraints = constraintMap
                                 .computeIfAbsent(fkTable, k -> new 
HashSet<String>());
                         // use a set to avoid duplicate constraints
-                        constraints.add(quotes.quoted(fk));
+                        constraints.add(fk);
                     }
                 }
             }
diff --git 
a/docs/asciidoc/getting-started-guide/src/docs/asciidoc/_getting-started-guide/object-context.adoc
 
b/docs/asciidoc/getting-started-guide/src/docs/asciidoc/_getting-started-guide/object-context.adoc
index 331c962d7..4c1f030d9 100644
--- 
a/docs/asciidoc/getting-started-guide/src/docs/asciidoc/_getting-started-guide/object-context.adoc
+++ 
b/docs/asciidoc/getting-started-guide/src/docs/asciidoc/_getting-started-guide/object-context.adoc
@@ -66,9 +66,14 @@ jars:
 [source,xml]
 ----
 <dependency>
-   <groupId>org.apache.derby</groupId>
+    <groupId>org.apache.derby</groupId>
     <artifactId>derby</artifactId>
-    <version>10.14.2.0</version>
+    <version>10.17.1.0</version>
+</dependency>
+<dependency>
+    <groupId>org.apache.derby</groupId>
+    <artifactId>derbytools</artifactId>
+    <version>10.17.1.0</version>
 </dependency>
 ----
 Now we are ready to run. Right click the "Main" class in IDEA and select "Run 
'Main.main()'".
diff --git a/pom.xml b/pom.xml
index b919acbb7..825c31887 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,7 +54,7 @@
         <xmlunit.version>2.9.1</xmlunit.version>
 
         <!-- JDBC driver versions -->
-        <derby.version>10.14.2.0</derby.version>
+        <derby.version>10.17.1.0</derby.version>
         <frontbase.driver.version>4.1</frontbase.driver.version>
         <h2.version>2.2.220</h2.version>
         <hsqldb.version>2.7.4</hsqldb.version>
@@ -414,6 +414,11 @@
                 <artifactId>derby</artifactId>
                 <version>${derby.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.apache.derby</groupId>
+                <artifactId>derbytools</artifactId>
+                <version>${derby.version}</version>
+            </dependency>
             <dependency>
                 <groupId>com.mysql</groupId>
                 <artifactId>mysql-connector-j</artifactId>
@@ -605,6 +610,11 @@
             <artifactId>derby</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derbytools</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>com.mysql</groupId>
             <artifactId>mysql-connector-j</artifactId>
@@ -892,6 +902,7 @@
                         </property>
                         
<org.slf4j.simpleLogger.defaultLogLevel>${cayenneLogLevel}
                         </org.slf4j.simpleLogger.defaultLogLevel>
+                        
<derby.stream.error.file>${project.build.directory}/derby.log</derby.stream.error.file>
                     </systemPropertyVariables>
                 </configuration>
             </plugin>
@@ -906,6 +917,7 @@
                     <systemPropertyVariables>
                         
<org.slf4j.simpleLogger.defaultLogLevel>${cayenneLogLevel}
                         </org.slf4j.simpleLogger.defaultLogLevel>
+                        
<derby.stream.error.file>${project.build.directory}/derby.log</derby.stream.error.file>
                     </systemPropertyVariables>
                 </configuration>
             </plugin>
diff --git a/tutorials/tutorial/pom.xml b/tutorials/tutorial/pom.xml
index 6d14c4135..34ac8aa9c 100644
--- a/tutorials/tutorial/pom.xml
+++ b/tutorials/tutorial/pom.xml
@@ -35,6 +35,10 @@
                        <groupId>org.apache.derby</groupId>
                        <artifactId>derby</artifactId>
                </dependency>
+               <dependency>
+                       <groupId>org.apache.derby</groupId>
+                       <artifactId>derbytools</artifactId>
+               </dependency>
                <dependency>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-simple</artifactId>

Reply via email to