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>