Bugfix
Detail
#28726
Unique-Constraint-Violation bei mehrfacher Anwendung des MoveObjectsProcessor
Wird der MoveObjectsProcessor in einer Daten-Migration mehrfach verwendet, weil aus einer Tabelle Typen in unterschiedliche Ziel-Tabellen verschoben werden sollen, so wird auf dem MigrationContext mehrfach invalidateXRef mit der gleichen - aber nicht der selben - Tabelle aufgerufen. Am Ende der Migration wird dann mehrfach für die gleiche Tabelle die Tabelle`RevisionXRef` aktualisiert, was bei beim zweiten Durchlauf zu folgendem Fehler führt:
java.sql.SQLException: Eindeutiger Index oder Primärschlüssel verletzt: "PUBLIC.PRIMARY_KEY_B5 ON PUBLIC.REVISION_XREF(REV, BRANCH, TYPE) VALUES ( /* key:1210 */ CAST(136 AS BIGINT), CAST(1 AS BIGINT), 'GenericObject')" Unique index or primary key violation: "PUBLIC.PRIMARY_KEY_B5 ON PUBLIC.REVISION_XREF(REV, BRANCH, TYPE) VALUES ( /* key:1210 */ CAST(136 AS BIGINT), CAST(1 AS BIGINT), 'GenericObject')"; SQL statement: INSERT INTO "REVISION_XREF" ("REV","BRANCH","TYPE") SELECT DISTINCT "REV_MIN", "BRANCH", 'GenericObject' FROM "GENERIC_OBJECT" [23505-224]: INSERT INTO "REVISION_XREF" ("REV","BRANCH","TYPE") SELECT DISTINCT "REV_MIN", "BRANCH", 'GenericObject' FROM "GENERIC_OBJECT" at com.top_logic.basic.sql.SQLH.enhanceMessage(SQLH.java:594) at com.top_logic.basic.db.sql.DirectCompiledStatement.enhanceMessage(DirectCompiledStatement.java:103) at com.top_logic.basic.db.sql.DirectCompiledStatement.executeUpdate(DirectCompiledStatement.java:75) at com.top_logic.knowledge.service.migration.MigrationContext.revalidateXRef(MigrationContext.java:208) at com.top_logic.knowledge.service.migration.DataMigration.executeSQLMigration(DataMigration.java:250)