New perf dashboard should not duplicate author information in each commit
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Dec 2014 22:53:52 +0000 (22:53 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Dec 2014 22:53:52 +0000 (22:53 +0000)
commitd2372bbf30c78e08524dbcfa4b830569881f58e6
tree07aa530227a5b1a2014f8f8fb9543f037f780c14
parent6b741de7ec8b4a9d55b079281cc5d0f607c40f4f
New perf dashboard should not duplicate author information in each commit
https://bugs.webkit.org/show_bug.cgi?id=139756

Reviewed by Darin Adler.

Instead of each commit having author name and email, make it reference a newly added committers table.
Also replace "email" by "account" since some repositories don't use emails as account names.

This improves the keyword search performance in commits.php since LIKE now runs on committers table,
which only contains as many rows as there are accounts in each repository, instead of commits table
which contains every commit ever happened in each repository.

To migrate an existing database into match the new schema, run:

BEGIN;

INSERT INTO committers (committer_repository, committer_name, committer_email)
    (SELECT DISTINCT commit_repository, commit_author_name, commit_author_email
        FROM commits WHERE commit_author_email IS NOT NULL);

ALTER TABLE commits ADD COLUMN commit_committer integer REFERENCES committers ON DELETE CASCADE;

UPDATE commits SET commit_committer = committer_id FROM committers
    WHERE commit_repository = committer_repository AND commit_author_email = committer_email;

ALTER TABLE commits DROP COLUMN commit_author_name CASCADE;
ALTER TABLE commits DROP COLUMN commit_author_email CASCADE;

COMMIT;

* init-database.sql: Added committers table, and replaced author columns in commits table by a foreign
reference to committers. Also added the missing drop table statements.

* public/api/commits.php:
(main): Fetch the corresponding committers row for a single commit. Also wrap a single commit by
an array here instead of doing it in format_commit.
(fetch_commits_between): Updated queries to JOIN commits with committers.
(format_commit): Takes both commit and committers rows. Also don't wrap the result in an array as that
is now done in main.

* public/api/report-commits.php:
(main): Store the reported committer information or update the existing entry if there is one.

* tests/admin-regenerate-manifest.js: Fixed tests.

* tests/api-report-commits.js: Ditto. Also added a test for updating an existing committer entry.

* tools/pull-svn.py: Renamed email to account.
(main):
(fetch_commit_and_resolve_author):
(fetch_commit):
(resolve_author_name_from_account):
(resolve_author_name_from_email): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@177530 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Websites/perf.webkit.org/ChangeLog
Websites/perf.webkit.org/init-database.sql
Websites/perf.webkit.org/public/api/commits.php
Websites/perf.webkit.org/public/api/report-commits.php
Websites/perf.webkit.org/tests/admin-regenerate-manifest.js
Websites/perf.webkit.org/tests/api-report-commits.js
Websites/perf.webkit.org/tools/pull-svn.py