Christian Tu created OPENJPA-2848: ------------------------------------- Summary: Duplicate DROP SEQUENCE statements generated by MappingTool/SchemaTool Key: OPENJPA-2848 URL: https://issues.apache.org/jira/browse/OPENJPA-2848 Project: OpenJPA Issue Type: Bug Components: jdbc Affects Versions: 3.1.2 Reporter: Christian Tu Attachments: openjpa-mappingtool-test.zip
Using the MappingTool with the action dropSchema to generate DDL statements from Java classes, results in duplicate DROP SEQUENCE statements, if a SEQUENCE of the same name already exists in the database. I have added a small Maven example that demonstrates this. It uses the openjpa-maven-plugin with the sql goal and build/dropSchema action on a Friend class. The sql generated from the build action is used to initialize an h2 db with a sequence. The subsequent dropSchema action then creates a file target/drop.sql where the duplicate DROP SEQUENCE statement can be observed. Using Version 2.4.3 of openjpa-maven-plugin results in a single DROP SEQUENCE statement. Not initializing the database with the sequence first, also results in a single DROP SEQUENCE statement. I'm not familiar with OpenJPA an its code base. But it seems reasonable to me that the offending code is in SchemaTool, where this if should be an else if to prevent dropSequence from being called twice: {code:java} diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java index 1bdbf6416..32a803ce5 100644 --- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java +++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java @@ -918,9 +918,7 @@ public class SchemaTool { dbSeq.getSchema().removeSequence(dbSeq); else _log.warn(_loc.get("drop-seq", seqs[j])); - } - - if (_writer != null) { + } else if (_writer != null) { dropSequence(seqs[j]); } } {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)