This is an automated email from the ASF dual-hosted git repository.
ljmotta pushed a commit to branch main
in repository
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git
The following commit(s) were added to refs/heads/main by this push:
new f47d7bd97b [incubator-kie-issues#167] Process Instance Migration: Fix
SQL statement on GenericRepository migrate with processInstanceIds (#4120)
f47d7bd97b is described below
commit f47d7bd97b2677ef8530b88dfe73bd92b619d6f6
Author: Pere Fernández <[email protected]>
AuthorDate: Thu Nov 6 15:53:45 2025 +0100
[incubator-kie-issues#167] Process Instance Migration: Fix SQL statement on
GenericRepository migrate with processInstanceIds (#4120)
---
.../kogito/persistence/jdbc/GenericRepository.java | 33 +++++++++++++---------
.../kie/kogito/persistence/jdbc/Repository.java | 4 +--
2 files changed, 22 insertions(+), 15 deletions(-)
diff --git
a/addons/common/persistence/jdbc/src/main/java/org/kie/kogito/persistence/jdbc/GenericRepository.java
b/addons/common/persistence/jdbc/src/main/java/org/kie/kogito/persistence/jdbc/GenericRepository.java
index 9540df10e4..91c62dd48d 100644
---
a/addons/common/persistence/jdbc/src/main/java/org/kie/kogito/persistence/jdbc/GenericRepository.java
+++
b/addons/common/persistence/jdbc/src/main/java/org/kie/kogito/persistence/jdbc/GenericRepository.java
@@ -22,20 +22,16 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.Deque;
-import java.util.List;
-import java.util.Optional;
-import java.util.Spliterator;
-import java.util.Spliterators;
-import java.util.UUID;
+import java.util.*;
import java.util.function.Consumer;
+import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
import javax.sql.DataSource;
+import static java.util.Arrays.stream;
+
public class GenericRepository extends Repository {
private static final String PAYLOAD = "payload";
@@ -323,15 +319,26 @@ public class GenericRepository extends Repository {
}
@Override
- void migrate(String processId, String processVersion, String
targetProcessId, String targetProcessVersion, String[] processIds) {
+ void migrate(String processId, String processVersion, String
targetProcessId, String targetProcessVersion, String[] processInstanceIds) {
+ String sqlParamsPlaceHolders =
stream(processInstanceIds).map(processInstanceId -> "?")
+ .collect(Collectors.joining(", "));
+
+ String migrateProcessInstancesSQLStatement =
MIGRATE_INSTANCES_SQL_TEMPLATE.formatted(sqlParamsPlaceHolders);
+
try (Connection connection = dataSource.getConnection();
- PreparedStatement statement =
connection.prepareStatement(sqlIncludingVersion(Repository.MIGRATE_INSTANCE,
processVersion))) {
+ PreparedStatement statement =
connection.prepareStatement(sqlIncludingVersion(migrateProcessInstancesSQLStatement,
processVersion))) {
+
statement.setString(1, targetProcessId);
statement.setString(2, targetProcessVersion);
- statement.setObject(3, connection.createArrayOf("VARCHAR",
processIds));
- statement.setString(4, processId);
+ statement.setString(3, processId);
+
+ int i = 4;
+ for (String processInstanceId : processInstanceIds) {
+ statement.setString(i++, processInstanceId);
+ }
+
if (processVersion != null) {
- statement.setString(5, processVersion);
+ statement.setString(i, processVersion);
}
statement.executeUpdate();
} catch (Exception e) {
diff --git
a/addons/common/persistence/jdbc/src/main/java/org/kie/kogito/persistence/jdbc/Repository.java
b/addons/common/persistence/jdbc/src/main/java/org/kie/kogito/persistence/jdbc/Repository.java
index f06c34c9ee..09795ac657 100644
---
a/addons/common/persistence/jdbc/src/main/java/org/kie/kogito/persistence/jdbc/Repository.java
+++
b/addons/common/persistence/jdbc/src/main/java/org/kie/kogito/persistence/jdbc/Repository.java
@@ -35,7 +35,7 @@ abstract class Repository {
static final String PROCESS_VERSION_EQUALS_TO = "and process_version = ?";
static final String PROCESS_VERSION_IS_NULL = "and process_version is
null";
static final String MIGRATE_BULK = "UPDATE process_instances SET
process_id = ?, process_version = ? WHERE process_id = ? ";
- static final String MIGRATE_INSTANCE = "UPDATE process_instances SET
process_id = ?, process_version = ? WHERE id = ANY (?) and process_id = ? ";
+ static final String MIGRATE_INSTANCES_SQL_TEMPLATE = "UPDATE
process_instances SET process_id = ?, process_version = ? WHERE process_id = ?
and id IN ( %s ) ";
static final String FIND_ALL_WAITING_FOR_EVENT_TYPE =
"SELECT payload, version FROM event_types, process_instances WHERE
process_instances.id = event_types.process_instance_id AND process_id = ? AND
event_type = ?";
static final String DELETE_ALL_WAITING_FOR_EVENT_TYPE = "DELETE FROM
event_types WHERE process_instance_id = ?";
@@ -81,6 +81,6 @@ abstract class Repository {
abstract long migrate(String id, String version, String targetProcessId,
String targetProcessVersion);
- abstract void migrate(String id, String version, String targetProcessId,
String targetProcessVersion, String[] processIds);
+ abstract void migrate(String id, String version, String targetProcessId,
String targetProcessVersion, String[] processInstanceIds);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]