-- Copyright 2016 The Chromium Authors
-- Use of this source code is governed by a BSD-style license that can be
-- found in the LICENSE file.


DROP PROCEDURE IF EXISTS AttachDanglingRelations;

delimiter //

CREATE PROCEDURE AttachDanglingRelations()
BEGIN
  DROP TEMPORARY TABLE IF EXISTS temp_relations;

  CREATE TEMPORARY TABLE temp_relations (
    old_issue_id INT,
    old_dst_issue_project VARCHAR(80) COLLATE utf8_unicode_ci,
    old_dst_issue_local_id INT,
    old_kind enum('blockedon','blocking','mergedinto') COLLATE utf8_unicode_ci,
    new_issue_id INT,
    new_dst_issue_id INT,
    new_kind enum('blockedon','blocking','mergedinto') COLLATE utf8_unicode_ci
  );

  INSERT INTO temp_relations
  SELECT
    dir.issue_id AS old_issue_id,
    dir.dst_issue_project AS old_dst_issue_project,
    dir.dst_issue_local_id AS old_dst_issue_local_id,
    dir.kind AS old_kind,
    dir.issue_id AS new_issue_id,
    i.id AS new_dst_issue_id,
    dir.kind AS new_kind
  FROM Issue i
  JOIN Project p
  ON i.project_id=p.project_id
  JOIN DanglingIssueRelation dir
  ON dir.dst_issue_local_id=i.local_id
  AND dir.dst_issue_project=p.project_name
  WHERE dir.kind='blockedon';

  INSERT INTO temp_relations
  SELECT
    dir.issue_id AS old_issue_id,
    dir.dst_issue_project AS old_dst_issue_project,
    dir.dst_issue_local_id AS old_dst_issue_local_id,
    dir.kind AS old_kind,
    dir.issue_id AS new_issue_id,
    i.id AS new_dst_issue_id,
    dir.kind AS new_kind
  FROM Issue i
  JOIN Project p
  ON i.project_id=p.project_id
  JOIN DanglingIssueRelation dir
  ON dir.dst_issue_local_id=i.local_id
  AND dir.dst_issue_project=p.project_name
  WHERE dir.kind='mergedinto';

  INSERT INTO temp_relations
  SELECT
    dir.issue_id AS old_issue_id,
    dir.dst_issue_project AS old_dst_issue_project,
    dir.dst_issue_local_id AS old_dst_issue_local_id,
    dir.kind AS old_kind,
    i.id AS new_issue_id,
    dir.issue_id AS new_dst_issue_id,
    'blockedon' AS new_kind
  FROM Issue i
  JOIN Project p
  ON i.project_id=p.project_id
  JOIN DanglingIssueRelation dir
  ON dir.dst_issue_local_id=i.local_id
  AND dir.dst_issue_project=p.project_name
  WHERE dir.kind='blocking';

  INSERT IGNORE INTO IssueRelation
  SELECT new_issue_id, new_dst_issue_id, new_kind
  FROM temp_relations;

  DELETE from DanglingIssueRelation
  WHERE EXISTS (
    SELECT NULL FROM temp_relations
    WHERE issue_id=old_issue_id
    AND dst_issue_project=old_dst_issue_project
    AND dst_issue_local_id=old_dst_issue_local_id
    AND kind=old_kind
  );

END;
//

delimiter ;
