jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/384706 )

Change subject: Add primary keys to site_stats
......................................................................


Add primary keys to site_stats

As discussed in I7d42aae434852a56b6f8dd559d8a5f3bce416021 primary keys
are needed to perform various schema changes on  the site_stats table.
This patch aims to introduce primary keys for all supported dbms.

The respective *.sql patch files were tested locally against Postgres
and SQL Server 2016. Please note that neither the patch file for Oracle
DB nor the mediawiki upgrade through update.php was tested.

Bug: T56888
Change-Id: Id10e221f0dc120bc09afc22596fd1dbecbf6a61d
(cherry picked from commit 49f7be39e1cd3ca89db47a3fe320db5c4b23fa6b)
---
M includes/installer/MssqlUpdater.php
M includes/installer/OracleUpdater.php
M includes/installer/PostgresUpdater.php
A maintenance/mssql/archives/patch-site_stats-pk.sql
M maintenance/mssql/tables.sql
A maintenance/oracle/archives/patch-site_stats-pk.sql
M maintenance/oracle/tables.sql
A maintenance/postgres/archives/patch-site_stats-pk.sql
M maintenance/postgres/tables.sql
9 files changed, 15 insertions(+), 7 deletions(-)

Approvals:
  Legoktm: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/includes/installer/MssqlUpdater.php 
b/includes/installer/MssqlUpdater.php
index a2aa8c0..411d2c8 100644
--- a/includes/installer/MssqlUpdater.php
+++ b/includes/installer/MssqlUpdater.php
@@ -104,6 +104,7 @@
 
                        // 1.30
                        [ 'modifyField', 'image', 'img_media_type', 
'patch-add-3d.sql' ],
+                       [ 'addIndex', 'site_stats', 'PRIMARY', 
'patch-site_stats-pk.sql' ],
                ];
        }
 
diff --git a/includes/installer/OracleUpdater.php 
b/includes/installer/OracleUpdater.php
index 00b9661..040b54a 100644
--- a/includes/installer/OracleUpdater.php
+++ b/includes/installer/OracleUpdater.php
@@ -125,6 +125,7 @@
 
                        // 1.30
                        [ 'doAutoIncrementTriggers' ],
+                       [ 'addIndex', 'site_stats', 'PRIMARY', 
'patch-site_stats-pk.sql' ],
 
                        // KEEP THIS AT THE BOTTOM!!
                        [ 'doRebuildDuplicateFunction' ],
diff --git a/includes/installer/PostgresUpdater.php 
b/includes/installer/PostgresUpdater.php
index 07aeb13..92331ea 100644
--- a/includes/installer/PostgresUpdater.php
+++ b/includes/installer/PostgresUpdater.php
@@ -481,6 +481,7 @@
                        [ 'changeNullableField', 'protected_titles', 
'pt_reason', 'NOT NULL', true ],
                        [ 'addPgField', 'protected_titles', 'pt_reason_id', 
'INTEGER NOT NULL DEFAULT 0' ],
                        [ 'addTable', 'comment', 'patch-comment-table.sql' ],
+                       [ 'addIndex', 'site_stats', 'PRIMARY', 
'patch-site_stats-pk.sql' ],
                ];
        }
 
diff --git a/maintenance/mssql/archives/patch-site_stats-pk.sql 
b/maintenance/mssql/archives/patch-site_stats-pk.sql
new file mode 100644
index 0000000..7533719
--- /dev/null
+++ b/maintenance/mssql/archives/patch-site_stats-pk.sql
@@ -0,0 +1,2 @@
+DROP INDEX ss_row_id ON site_stats;
+ALTER TABLE /*_*/site_stats ADD CONSTRAINT /*i*/ss_row_id PRIMARY KEY 
(ss_row_id);
diff --git a/maintenance/mssql/tables.sql b/maintenance/mssql/tables.sql
index 2a67294..119cd5b 100644
--- a/maintenance/mssql/tables.sql
+++ b/maintenance/mssql/tables.sql
@@ -450,7 +450,7 @@
 --
 CREATE TABLE /*_*/site_stats (
   -- The single row should contain 1 here.
-  ss_row_id int NOT NULL,
+  ss_row_id int NOT NULL CONSTRAINT /*i*/ss_row_id PRIMARY KEY,
 
   -- Total number of edits performed.
   ss_total_edits bigint default 0,
@@ -474,9 +474,6 @@
   -- Number of images, equivalent to SELECT COUNT(*) FROM image
   ss_images int default 0
 );
-
--- Pointless index to assuage developer superstitions
-CREATE UNIQUE INDEX /*i*/ss_row_id ON /*_*/site_stats (ss_row_id);
 
 
 --
diff --git a/maintenance/oracle/archives/patch-site_stats-pk.sql 
b/maintenance/oracle/archives/patch-site_stats-pk.sql
new file mode 100644
index 0000000..a288c08
--- /dev/null
+++ b/maintenance/oracle/archives/patch-site_stats-pk.sql
@@ -0,0 +1,4 @@
+define mw_prefix='{$wgDBprefix}';
+
+ALTER TABLE &mw_prefix.site_stats DROP CONSTRAINT &mw_prefix.site_stats_u01;
+ALTER TABLE &mw_prefix.site_stats ADD CONSTRAINT &mw_prefix.site_stats_pk 
PRIMARY KEY(ss_row_id);
diff --git a/maintenance/oracle/tables.sql b/maintenance/oracle/tables.sql
index 44c907c..e6e2e56 100644
--- a/maintenance/oracle/tables.sql
+++ b/maintenance/oracle/tables.sql
@@ -321,7 +321,7 @@
 CREATE UNIQUE INDEX &mw_prefix.iwlinks_ui02 ON &mw_prefix.iwlinks (iwl_prefix, 
iwl_title, iwl_from);
 
 CREATE TABLE &mw_prefix.site_stats (
-  ss_row_id         NUMBER  NOT NULL ,
+  ss_row_id         NUMBER  NOT NULL PRIMARY KEY,
   ss_total_edits    NUMBER            DEFAULT 0,
   ss_good_articles  NUMBER            DEFAULT 0,
   ss_total_pages    NUMBER            DEFAULT -1,
@@ -329,7 +329,6 @@
   ss_active_users   NUMBER            DEFAULT -1,
   ss_images         NUMBER            DEFAULT 0
 );
-CREATE UNIQUE INDEX &mw_prefix.site_stats_u01 ON &mw_prefix.site_stats 
(ss_row_id);
 
 CREATE SEQUENCE ipblocks_ipb_id_seq;
 CREATE TABLE &mw_prefix.ipblocks (
diff --git a/maintenance/postgres/archives/patch-site_stats-pk.sql 
b/maintenance/postgres/archives/patch-site_stats-pk.sql
new file mode 100644
index 0000000..faa5e9f
--- /dev/null
+++ b/maintenance/postgres/archives/patch-site_stats-pk.sql
@@ -0,0 +1,3 @@
+ALTER TABLE site_stats DROP CONSTRAINT site_stats_ss_row_id_key;
+ALTER TABLE site_stats ADD PRIMARY KEY (ss_row_id);
+ALTER TABLE site_stats ALTER ss_row_id SET DEFAULT 0;
diff --git a/maintenance/postgres/tables.sql b/maintenance/postgres/tables.sql
index eea9e68..d6d2f24 100644
--- a/maintenance/postgres/tables.sql
+++ b/maintenance/postgres/tables.sql
@@ -296,7 +296,7 @@
 
 
 CREATE TABLE site_stats (
-  ss_row_id         INTEGER  NOT NULL  UNIQUE,
+  ss_row_id         INTEGER  NOT NULL  PRIMARY KEY DEFAULT 0,
   ss_total_edits    INTEGER            DEFAULT 0,
   ss_good_articles  INTEGER            DEFAULT 0,
   ss_total_pages    INTEGER            DEFAULT -1,

-- 
To view, visit https://gerrit.wikimedia.org/r/384706
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Id10e221f0dc120bc09afc22596fd1dbecbf6a61d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: REL1_30
Gerrit-Owner: EddieGP <wikimedia....@eddie-sh.de>
Gerrit-Reviewer: EddieGP <wikimedia....@eddie-sh.de>
Gerrit-Reviewer: Jjanes <jeff.ja...@gmail.com>
Gerrit-Reviewer: Legoktm <lego...@member.fsf.org>
Gerrit-Reviewer: MaxSem <maxsem.w...@gmail.com>
Gerrit-Reviewer: Parent5446 <tylerro...@gmail.com>
Gerrit-Reviewer: Skizzerz <skizz...@skizzerz.net>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to