diff --git a/migrations/cockroach/V1.36__cleanup_resource_owners.sql b/migrations/cockroach/V1.36__cleanup_resource_owners.sql new file mode 100644 index 000000000..eea726f9e --- /dev/null +++ b/migrations/cockroach/V1.36__cleanup_resource_owners.sql @@ -0,0 +1,46 @@ +WITH resource_owners AS ( + WITH first_sequences AS ( + WITH duplicates AS ( + select + aggregate_id, + aggregate_type + from ( + select + aggregate_type, + aggregate_id, + resource_owner + from eventstore.events + where aggregate_type not like '%.%' + group by + aggregate_type, + aggregate_id, + resource_owner + ) group by + aggregate_id, + aggregate_type + having count(resource_owner) > 1 + ) + SELECT + MIN(event_sequence) AS seq, + aggregate_type, + aggregate_id + FROM + eventstore.events + WHERE + aggregate_id IN (select aggregate_id from duplicates) + GROUP BY + aggregate_type, + aggregate_id + ORDER BY aggregate_id, seq + ) + SELECT + f.*, + e.resource_owner + FROM + first_sequences f + JOIN + eventstore.events e ON f.seq = e.event_sequence +) +UPDATE eventstore.events e +SET resource_owner = r.resource_owner +FROM resource_owners r where e.aggregate_id = r.aggregate_id;