Github user nlippke commented on a diff in the pull request:
https://github.com/apache/activemq-artemis/pull/1822#discussion_r178460259
--- Diff:
artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/AbstractJDBCDriver.java
---
@@ -189,17 +187,27 @@ private static void createTableIfNotExists(Connection
connection,
if (sqlWarning != null) {
logger.warn(JDBCUtils.appendSQLExceptionDetails(new
StringBuilder(), sqlWarning));
}
- try (Statement statement = connection.createStatement()) {
- for (String sql : sqls) {
- statement.executeUpdate(sql);
- final SQLWarning statementSqlWarning =
statement.getWarnings();
- if (statementSqlWarning != null) {
-
logger.warn(JDBCUtils.appendSQLExceptionDetails(new StringBuilder(),
statementSqlWarning, sql));
- }
+ } else {
+ try (Statement statement = connection.createStatement();
+ ResultSet cntRs =
statement.executeQuery(sqlProvider.getCountJournalRecordsSQL())) {
+ if (rs.next() && rs.getInt(1) > 0) {
--- End diff --
@franz1981, @clebertsuconic: Indeed, the branch was broken. I've fixed it
with the following patch:
~~~
---
a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/AbstractJDBCDriver.java
+++
b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/AbstractJDBCDriver.java
@@ -190,8 +190,9 @@ public abstract class AbstractJDBCDriver {
} else {
try (Statement statement = connection.createStatement();
ResultSet cntRs =
statement.executeQuery(sqlProvider.getCountJournalRecordsSQL())) {
- if (rs.next() && rs.getInt(1) > 0) {
+ if (cntRs.next() && cntRs.getInt(1) > 0) {
logger.tracef("Table %s did exist but is not empty.
Skipping initialization.", tableName);
+ return;
} else {
sqls = Arrays.copyOfRange(sqls, 1, sqls.length);
}
~~~
With this patch the tests run fine and I do not get those PK violations
anymore. Please have look.
---