Title: [280127] trunk/Websites/perf.webkit.org
Revision
280127
Author
[email protected]
Date
2021-07-21 04:35:17 -0700 (Wed, 21 Jul 2021)

Log Message

Use bigint for 'commit_order' field in 'commits' table to support larger range.
https://bugs.webkit.org/show_bug.cgi?id=228133

Reviewed by Ryosuke Niwa.

'integer' in postgres has range from -2147483648 to +2147483647 which is not big enough.
Use 'bigint' to support wider range (-9223372036854775808 to 9223372036854775807).
SQL query for migration:
    `ALTER TABLE commits ALTER commit_order TYPE bigint;`

* init-database.sql: Update 'integer' to 'bigint' for 'commit_order'.
* migrate-database.sql: Added migration SQL for this change.
* server-tests/api-report-commits-tests.js: Add a unit test.

Modified Paths

Diff

Modified: trunk/Websites/perf.webkit.org/ChangeLog (280126 => 280127)


--- trunk/Websites/perf.webkit.org/ChangeLog	2021-07-21 05:55:05 UTC (rev 280126)
+++ trunk/Websites/perf.webkit.org/ChangeLog	2021-07-21 11:35:17 UTC (rev 280127)
@@ -1,3 +1,19 @@
+2021-07-20  Dewei Zhu  <[email protected]>
+
+        Use bigint for 'commit_order' field in 'commits' table to support larger range.
+        https://bugs.webkit.org/show_bug.cgi?id=228133
+
+        Reviewed by Ryosuke Niwa.
+
+        'integer' in postgres has range from -2147483648 to +2147483647 which is not big enough.
+        Use 'bigint' to support wider range (-9223372036854775808 to 9223372036854775807).
+        SQL query for migration:
+            `ALTER TABLE commits ALTER commit_order TYPE bigint;`
+
+        * init-database.sql: Update 'integer' to 'bigint' for 'commit_order'.
+        * migrate-database.sql: Added migration SQL for this change.
+        * server-tests/api-report-commits-tests.js: Add a unit test.
+
 2021-05-03  Dewei Zhu  <[email protected]>
 
         [perf dashboard] Add sequential mode for perf dashboard A/B testing.

Modified: trunk/Websites/perf.webkit.org/init-database.sql (280126 => 280127)


--- trunk/Websites/perf.webkit.org/init-database.sql	2021-07-21 05:55:05 UTC (rev 280126)
+++ trunk/Websites/perf.webkit.org/init-database.sql	2021-07-21 11:35:17 UTC (rev 280127)
@@ -106,7 +106,7 @@
     commit_revision_identifier varchar(64) DEFAULT NULL,
     commit_previous_commit integer REFERENCES commits ON DELETE CASCADE,
     commit_time timestamp,
-    commit_order integer,
+    commit_order bigint,
     commit_committer integer REFERENCES committers ON DELETE CASCADE,
     commit_message text,
     commit_reported boolean NOT NULL DEFAULT FALSE,

Modified: trunk/Websites/perf.webkit.org/migrate-database.sql (280126 => 280127)


--- trunk/Websites/perf.webkit.org/migrate-database.sql	2021-07-21 05:55:05 UTC (rev 280126)
+++ trunk/Websites/perf.webkit.org/migrate-database.sql	2021-07-21 11:35:17 UTC (rev 280127)
@@ -13,6 +13,10 @@
 ALTER TABLE commits DROP CONSTRAINT IF EXISTS commit_string_identifier_in_repository_must_be_unique;
 ALTER TABLE commits ADD CONSTRAINT commit_string_identifier_in_repository_must_be_unique UNIQUE(commit_repository, commit_revision_identifier);
 
+IF EXISTS (SELECT NULL FROM information_schema.columns WHERE TABLE_NAME = 'commits' AND COLUMN_NAME = 'commit_order' AND DATA_TYPE = 'integer') THEN
+    ALTER TABLE commits ALTER commit_order TYPE bigint;
+END IF;
+
 CREATE TABLE IF NOT EXISTS platform_groups (
     platformgroup_id serial PRIMARY KEY,
     platformgroup_name varchar(64) NOT NULL,

Modified: trunk/Websites/perf.webkit.org/server-tests/api-report-commits-tests.js (280126 => 280127)


--- trunk/Websites/perf.webkit.org/server-tests/api-report-commits-tests.js	2021-07-21 05:55:05 UTC (rev 280126)
+++ trunk/Websites/perf.webkit.org/server-tests/api-report-commits-tests.js	2021-07-21 11:35:17 UTC (rev 280127)
@@ -812,6 +812,27 @@
         });
     });
 
+    const commitWithHugeOrder = {
+        "workerName": "someWorker",
+        "workerPassword": "somePassword",
+        "commits": [
+            {
+                "repository": "OSX",
+                "revision": "Sierra16D32",
+                "order": 2147483648
+            }
+        ]
+    }
+
+    it("should accept interting one commit with a huge commit order", async () => {
+        await addWorkerForReport(commitWithHugeOrder);
+        const response = await TestServer.remoteAPI().postJSON('/api/report-commits/', commitWithHugeOrder);
+        assert.strictEqual(response['status'], 'OK');
+        const commits = await TestServer.database().selectAll('commits');
+        assert.strictEqual(commits.length, 1);
+        assert.strictEqual(parseInt(commits[0].order), 2147483648);
+    });
+
     const systemVersionCommitAndOwnedCommitWithTimestamp = {
         "workerName": "someWorker",
         "workerPassword": "somePassword",
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to