-- PostgreSQL conversion from Gerrit 1 -> Gerrit 2
--
-- If this is the first time the Gerrit1 schema has been used it
-- needs to be renamed:
--     psql -c 'ALTER SCHEMA public RENAME TO gerrit1' $srcdb
--
-- Make sure there is a current dump file:
--     pg_dump -O -Fc $src >gerrit1.dump
--
-- Write your "UPDATE system_config SET ..." and put it into
-- some config.sql script.  At least git_base_path must be set.
--
-- Execute the conversion script:
--     gerrit1_import/1-to-2.sh gerrit1.dump config.sql
--

DELETE FROM accounts;
INSERT INTO accounts
(account_id,
 registered_on,
 full_name,
 preferred_email,
 ssh_user_name,
 contact_address,
 contact_country,
 contact_phone_nbr,
 contact_fax_nbr,
 default_context
) SELECT
 nextval('account_id'),
 a.created,
 a.real_name,
 a.user_email,
 CASE WHEN a.user_email LIKE '%@%'
      THEN lower(substring(a.user_email from '^(.*)@.*$'))
      ELSE NULL
 END,
 a.mailing_address,
 a.mailing_address_country,
 a.phone_number,
 a.fax_number,
 a.default_context
 FROM gerrit1.accounts a;

UPDATE system_config
SET allow_google_account_upgrade = 'Y';

DELETE FROM account_external_ids;
INSERT INTO account_external_ids
(account_id,
 external_id,
 email_address) SELECT
 l.account_id,
 'Google Account ' || a.user_email,
 a.user_email
 FROM gerrit1.accounts a, accounts l
 WHERE l.preferred_email = a.user_email;

DELETE FROM contributor_agreements;
INSERT INTO contributor_agreements
(active,
 require_contact_information,
 auto_verify,
 short_name,
 short_description,
 agreement_url,
 id) VALUES (
 'Y',
 'Y',
 'Y',
 'Individual',
 'If you are going to be contributing code on your own, this is the one you want. You can sign this one online.',
 'static/cla_individual.html',
 nextval('contributor_agreement_id'));
INSERT INTO contributor_agreements
(active,
 require_contact_information,
 auto_verify,
 short_name,
 short_description,
 agreement_url,
 id) VALUES (
 'Y',
 'N',
 'N',
 'Corporate',
 'If you are going to be contributing code on behalf of your company, this is the one you want. We\'ll give you a form that will need to printed, signed and sent back via post, email or fax.',
 'static/cla_corporate.html',
 nextval('contributor_agreement_id'));

DELETE FROM account_agreements;
INSERT INTO account_agreements
(accepted_on,
 status,
 account_id,
 review_comments,
 reviewed_by,
 reviewed_on,
 cla_id) SELECT
 a.individual_cla_timestamp,
 CASE WHEN a.cla_verified = 'Y' THEN 'V'
      ELSE 'n'
 END,
 r.account_id,
 a.cla_comments,
 (SELECT m.account_id FROM accounts m
  WHERE m.preferred_email = a.cla_verified_by),
 a.cla_verified_timestamp,
 i.id
 FROM contributor_agreements i,
 gerrit1.accounts a,
 accounts r
 WHERE i.short_name = 'Individual'
 AND a.individual_cla_version = 1
 AND r.preferred_email = a.user_email;
INSERT INTO account_agreements
(accepted_on,
 status,
 account_id,
 review_comments,
 reviewed_by,
 reviewed_on,
 cla_id) SELECT
 CASE WHEN a.individual_cla_timestamp IS NOT NULL
      THEN a.individual_cla_timestamp
      ELSE a.created
      END,
 'V',
 r.account_id,
 a.cla_comments,
 (SELECT m.account_id FROM accounts m
  WHERE m.preferred_email = a.cla_verified_by),
 a.cla_verified_timestamp,
 i.id
 FROM contributor_agreements i,
 gerrit1.accounts a,
 accounts r
 WHERE i.short_name = 'Corporate'
 AND a.individual_cla_version = 0
 AND a.cla_verified = 'Y'
 AND r.preferred_email = a.user_email;

DELETE FROM account_groups;
INSERT INTO account_groups
(group_id,
 description,
 name) SELECT
 nextval('account_group_id'),
 g.comment,
 g.name
 FROM gerrit1.account_groups g;

INSERT INTO account_groups
(group_id,
 description,
 name) VALUES
(nextval('account_group_id'),
'Any user, signed-in or not',
'Anonymous Users');

INSERT INTO account_groups
(group_id,
 description,
 name) VALUES
(nextval('account_group_id'),
'Any signed-in user',
'Registered Users');


DELETE FROM account_group_members;
INSERT INTO account_group_members
(account_id,
 group_id) SELECT
 a.account_id,
 g.group_id
 FROM accounts a,
 account_groups g,
 gerrit1.account_group_users o
 WHERE
 o.group_name = g.name
 AND a.preferred_email = o.email;

UPDATE system_config
SET
 use_contributor_agreements = 'Y'
,admin_group_id = (SELECT group_id
                  FROM account_groups
                  WHERE name = 'admin')
,anonymous_group_id = (SELECT group_id
                      FROM account_groups
                      WHERE name = 'Anonymous Users')
,registered_group_id = (SELECT group_id
                      FROM account_groups
                      WHERE name = 'Registered Users');

UPDATE account_groups
SET owner_group_id = (SELECT admin_group_id FROM system_config);

DELETE FROM projects WHERE project_id <> 0;
INSERT INTO projects
(project_id,
 description,
 name,
 use_contributor_agreements,
 owner_group_id) SELECT
 p.project_id,
 p.comment,
 p.name,
 'Y',
 (SELECT admin_group_id FROM system_config)
 FROM gerrit1.projects p;

DELETE FROM account_project_watches;
INSERT INTO account_project_watches
(account_id,
 project_id) SELECT
 a.account_id,
 p.project_id
 FROM gerrit1.projects p,
 accounts a,
 gerrit1.account_unclaimed_changes_projects q
 WHERE a.preferred_email = q.email
 AND p.gae_key = q.project_key;

DELETE FROM branches;
INSERT INTO branches
(branch_id,
 project_name,
 branch_name) SELECT
 nextval('branch_id'),
 p.name,
 b.name
 FROM gerrit1.branches b, gerrit1.projects p
 WHERE p.gae_key = b.project_key;

CREATE TEMPORARY TABLE need_groups (project_id INT NOT NULL);
INSERT INTO need_groups
 SELECT p.project_id
 FROM projects p, gerrit1.project_owner_groups o
 WHERE p.project_id = o.project_id
 GROUP BY p.project_id
 HAVING COUNT(*) > 1;
INSERT INTO need_groups
 SELECT p.project_id
 FROM projects p
 WHERE EXISTS (SELECT 1 FROM gerrit1.project_owner_users u
               WHERE u.project_id = p.project_id)
 AND NOT EXISTS (SELECT 1 FROM need_groups n
                 WHERE n.project_id = p.project_id);

INSERT INTO account_groups
(group_id,
 owner_group_id,
 description,
 name) SELECT
 nextval('account_group_id'),
 (SELECT admin_group_id FROM system_config),
 p.name || ' maintainers',
 substring(p.name from '^.*/([^/]*)$') || '_' || p.project_id || '-owners'
 FROM projects p, need_groups g
 WHERE p.project_id = g.project_id;

UPDATE account_groups
SET owner_group_id = group_id
WHERE name IN (SELECT
 substring(p.name from '^.*/([^/]*)$') || '_' || p.project_id || '-owners'
 FROM projects p, need_groups g
 WHERE p.project_id = g.project_id);

UPDATE projects
SET owner_group_id = (SELECT group_id
FROM account_groups
WHERE name = substring(projects.name
from '^.*/([^/]*)$') || '_' || projects.project_id || '-owners')
WHERE project_id IN (SELECT project_id FROM need_groups);

INSERT INTO account_group_members
(account_id,
 group_id) SELECT DISTINCT
 q.account_id,
 p.owner_group_id
 FROM projects p,
 need_groups n,
 gerrit1.account_groups og,
 gerrit1.project_owner_groups o,
 account_groups g,
 account_group_members q
 WHERE
 n.project_id = p.project_id
 AND o.project_id = p.project_id
 AND og.gae_key = o.group_key
 AND g.name = og.name
 AND q.group_id = g.group_id
 UNION
 SELECT
 a.account_id,
 p.owner_group_id
 FROM accounts a,
 projects p,
 need_groups n,
 gerrit1.project_owner_users o
 WHERE
 n.project_id = p.project_id
 AND o.project_id = p.project_id
 AND a.preferred_email = o.email;

UPDATE projects
SET owner_group_id = (
 SELECT g.group_id
 FROM account_groups g,
 gerrit1.project_owner_groups o,
 gerrit1.account_groups og
 WHERE projects.project_id = o.project_id
 AND og.gae_key = o.group_key
 AND g.name = og.name)
WHERE project_id NOT IN (SELECT project_id FROM need_groups)
AND EXISTS (
 SELECT g.group_id
 FROM account_groups g,
 gerrit1.project_owner_groups o,
 gerrit1.account_groups og
 WHERE projects.project_id = o.project_id
 AND og.gae_key = o.group_key
 AND g.name = og.name);

DROP TABLE need_groups;
 

DELETE FROM changes;
INSERT INTO changes
(created_on,
 last_updated_on,
 owner_account_id,
 dest_project_name,
 dest_branch_name,
 status,
 open,
 nbr_patch_sets,
 current_patch_set_id,
 subject,
 change_id) SELECT
 c.created,
 c.modified,
 a.account_id,
 p.name,
 b.name,
 CASE WHEN c.merged = 'Y' THEN 'M'
      WHEN c.closed = 'Y' THEN 'A'
      ELSE 'n'
 END,
 CASE WHEN c.merged = 'Y' THEN 'N'
      WHEN c.closed = 'Y' THEN 'N'
      ELSE 'Y'
 END,
 c.n_patchsets,
 c.n_patchsets,
 c.subject,
 c.change_id
 FROM gerrit1.changes c,
 accounts a,
 gerrit1.projects p,
 gerrit1.branches b
 WHERE 
 a.preferred_email = c.owner
 AND p.gae_key = c.dest_project_key
 AND b.gae_key = c.dest_branch_key
 ;

UPDATE gerrit1.messages
SET sender = substring(sender from '<(.*)>')
WHERE sender LIKE '%<%>';

UPDATE gerrit1.messages
SET sender = NULL
WHERE sender = 'code-review@android.com';

UPDATE gerrit1.messages
SET body = 'Change has been successfully merged into the git repository.'
WHERE body LIKE '
Hi.

Your change has been successfully merged into the git repository.

-Your friendly git merger%'
AND sender IS NULL;

UPDATE gerrit1.messages
SET body = 'Change could not be merged because of a missing dependency.  As soon as its dependencies are submitted, the change will be submitted.'
WHERE (body LIKE '
Hi.

Your change could not be merged because of a missing dependency.%

-Your friendly git merger%'
OR body LIKE '
Your change could not be merged because of a missing dependency.

As soon as all dependencies are submitted, your change will be
resubmitted automatically.%'
) AND sender IS NULL;

UPDATE gerrit1.messages
SET body = 'Change cannot be merged because of a path conflict.'
WHERE body LIKE '
Hi.

Your change has not been successfully merged into the git repository
because of a path conflict.

-Your friendly git merger%'
AND sender is NULL;

UPDATE gerrit1.messages
SET body = TRIM(both '
' FROM body);

DELETE FROM change_messages;
INSERT INTO change_messages
(change_id,
 uuid,
 author_id,
 written_on,
 message) SELECT
 c.change_id,
 substr(m.gae_key, length(m.change_key) + length('wLEgdNZXNzYWdlG')),
 a.account_id,
 m.date_sent,
 m.body
 FROM gerrit1.messages m
 LEFT OUTER JOIN accounts a ON a.preferred_email = m.sender,
 gerrit1.changes c
 WHERE
 c.gae_key = m.change_key;

DELETE FROM patch_sets;
INSERT INTO patch_sets
(revision,
 change_id,
 patch_set_id,
 created_on,
 uploader_account_id) SELECT
 r.revision_id,
 c.change_id,
 p.patchset_id,
 p.created,
 a.account_id
 FROM gerrit1.patch_sets p
 JOIN accounts a ON a.preferred_email = p.owner
 JOIN gerrit1.changes c ON p.change_key = c.gae_key
 LEFT OUTER JOIN gerrit1.revisions r ON r.gae_key = p.revision_key;

DELETE FROM patch_set_info;
INSERT INTO patch_set_info
(subject,
 message,
 author_name,
 author_email,
 author_when,
 author_tz,
 committer_name,
 committer_email,
 committer_when,
 committer_tz,
 change_id,
 patch_set_id) SELECT DISTINCT
 (SELECT c.subject FROM changes c
  WHERE c.change_id = p.change_id
  AND c.current_patch_set_id = p.patch_set_id),
 r.message,
 r.author_name,
 r.author_email,
 r.author_when,
 r.author_tz,
 r.committer_name,
 r.committer_email,
 r.committer_when,
 r.committer_tz,
 p.change_id,
 p.patch_set_id
 FROM gerrit1.revisions r, patch_sets p
 WHERE r.revision_id = p.revision;

DELETE FROM patch_set_ancestors;
INSERT INTO patch_set_ancestors
(ancestor_revision,
change_id,
patch_set_id,
position
) SELECT DISTINCT
 p.parent_id,
 ps.change_id,
 ps.patch_set_id,
 p.position
 FROM gerrit1.revision_ancestors p,
 patch_sets ps
 WHERE ps.revision = p.child_id;

DELETE FROM patches;
INSERT INTO patches
(change_type,
 patch_type,
 nbr_comments,
 change_id,
 patch_set_id,
 file_name) SELECT
 p.status,
 CASE WHEN p.multi_way_diff = 'Y' THEN 'N'
      ELSE 'U'
 END,
 p.n_comments,
 c.change_id,
 ps.patchset_id,
 p.filename
 FROM gerrit1.patches p,
 gerrit1.patch_sets ps,
 gerrit1.changes c
 WHERE p.patchset_key = ps.gae_key
 AND ps.change_key = c.gae_key;

DELETE FROM patch_comments;
INSERT INTO patch_comments
(line_nbr,
 author_id,
 written_on,
 status,
 side,
 message,
 change_id,
 patch_set_id,
 file_name,
 uuid) SELECT
 c.lineno,
 a.account_id,
 c.written,
 CASE WHEN c.draft = 'Y' THEN 'd'
      ELSE 'P'
 END,
 CASE WHEN c.is_left = 'Y' THEN 0
      ELSE 1
 END,
 c.body,
 o_c.change_id,
 o_ps.patchset_id,
 o_p.filename,
 c.message_id
 FROM gerrit1.comments c,
 accounts a,
 gerrit1.patches o_p,
 gerrit1.patch_sets o_ps,
 gerrit1.changes o_c
 WHERE o_p.patchset_key = o_ps.gae_key
 AND o_ps.change_key = o_c.gae_key
 AND o_p.gae_key = c.patch_key
 AND a.preferred_email = c.author;

DELETE FROM change_approvals;
INSERT INTO change_approvals
(value,
 change_id,
 account_id,
 category_id) SELECT
 1,
 c.change_id,
 a.account_id,
 'VRIF'
 FROM gerrit1.review_status s,
 gerrit1.changes c,
 accounts a
 WHERE
 s.verified = 'Y'
 AND s.change_key = c.gae_key
 AND a.preferred_email = s.email;
INSERT INTO change_approvals
(value,
 change_id,
 account_id,
 category_id) SELECT
 CASE WHEN s.lgtm = 'lgtm' THEN 2
      WHEN s.lgtm = 'yes' THEN 1
      WHEN s.lgtm = 'abstain' THEN 0
      WHEN s.lgtm = 'no' THEN -1
      WHEN s.lgtm = 'reject' THEN -2
      ELSE NULL
 END,
 c.change_id,
 a.account_id,
 'CRVW'
 FROM gerrit1.review_status s,
 gerrit1.changes c,
 accounts a
 WHERE
 s.lgtm IS NOT NULL
 AND s.change_key = c.gae_key
 AND a.preferred_email = s.email;

DELETE FROM starred_changes;
INSERT INTO starred_changes
(account_id,
 change_id) SELECT
 a.account_id,
 c.change_id
FROM gerrit1.account_stars s,
     accounts a,
     changes c
WHERE a.preferred_email = s.email
      AND c.change_id = s.change_id;

UPDATE account_groups
SET name = 'Administrators'
WHERE name = 'admin';


-- Fix change.nbr_patch_sets
--
UPDATE changes
SET nbr_patch_sets = (SELECT MAX(p.patch_set_id)
                      FROM patch_sets p
                      WHERE p.change_id = changes.change_id);

-- Fix change.last_updated_on
--
CREATE TEMPORARY TABLE temp_dates (
change_id INT NOT NULL,
dt TIMESTAMP NOT NULL);

INSERT INTO temp_dates
SELECT change_id,written_on
FROM patch_comments
WHERE status = 'P';

INSERT INTO temp_dates
SELECT change_id,written_on FROM change_messages;

INSERT INTO temp_dates
SELECT change_id,merge_submitted
FROM gerrit1.changes
WHERE merge_submitted IS NOT NULL
AND merged = 'Y';

UPDATE changes
SET last_updated_on = (SELECT MAX(m.dt)
                       FROM temp_dates m
                       WHERE m.change_id = changes.change_id)
WHERE EXISTS (SELECT 1 FROM temp_dates m
              WHERE m.change_id = changes.change_id);
DROP TABLE temp_dates;


-- Fix patches.nbr_comments
--
UPDATE patches
SET nbr_comments = (SELECT COUNT(*)
                    FROM patch_comments c
                    WHERE c.status = 'P'
                    AND c.change_id = patches.change_id
                    AND c.patch_set_id = patches.patch_set_id
                    AND c.file_name = patches.file_name);

SELECT
 (SELECT COUNT(*) FROM gerrit1.accounts) as accounts_g1,
 (SELECT COUNT(*) FROM accounts) as accounts_g1
WHERE
  (SELECT COUNT(*) FROM gerrit1.accounts)
!=(SELECT COUNT(*) FROM accounts);

SELECT
 (SELECT COUNT(*) FROM gerrit1.changes) as changes_g1,
 (SELECT COUNT(*) FROM changes) as changes_g2
WHERE 
  (SELECT COUNT(*) FROM gerrit1.changes)
!=(SELECT COUNT(*) FROM changes);

SELECT
 (SELECT COUNT(*) FROM gerrit1.messages) as messages_g1,
 (SELECT COUNT(*) FROM change_messages) as messages_g2
WHERE 
  (SELECT COUNT(*) FROM gerrit1.messages)
!=(SELECT COUNT(*) FROM change_messages);

SELECT
 (SELECT COUNT(*) FROM gerrit1.patch_sets) as patch_sets_g1,
 (SELECT COUNT(*) FROM patch_sets) as patch_sets_g2
WHERE
  (SELECT COUNT(*) FROM gerrit1.patch_sets)
!=(SELECT COUNT(*) FROM patch_sets);

SELECT
 (SELECT COUNT(*) FROM gerrit1.patches g, gerrit1.patch_sets p
  WHERE g.patchset_key = p.gae_key) as patches_g1,
 (SELECT COUNT(*) FROM patches) as patches_g2
WHERE
  (SELECT COUNT(*) FROM gerrit1.patches g, gerrit1.patch_sets p
   WHERE g.patchset_key = p.gae_key)
!=(SELECT COUNT(*) FROM patches);

SELECT
 (SELECT COUNT(*) FROM gerrit1.comments) as comments_g1,
 (SELECT COUNT(*) FROM patch_comments) as comments_g2
WHERE
  (SELECT COUNT(*) FROM gerrit1.comments)
!=(SELECT COUNT(*) FROM patch_comments);

-- Reset sequences
--
-- account_group_id (above)
-- account_id (above)
-- branch_id (above)
SELECT setval('change_id',(SELECT MAX(change_id) FROM changes));
-- contributor_agreement_id (above)
SELECT setval('project_id',(SELECT MAX(project_id) FROM projects));

-- Grant access to read tables needed for import
--
GRANT SELECT ON gerrit1.project_code_reviews TO gerrit2;
GRANT SELECT ON gerrit1.approval_right_groups TO gerrit2;
GRANT SELECT ON gerrit1.approval_right_users TO gerrit2;
GRANT SELECT ON gerrit1.approval_rights TO gerrit2;
GRANT SELECT ON gerrit1.account_groups TO gerrit2;
