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]

Reply via email to