Add SQL for postgres, and fail gracefully in populateIpChanges

If the ip_changes table doesn't exist, the populateIpChanges maintenance
script will fail gracefully, throwing a descriptive error.

The postgres SQL is untested.

Bug: T177258
Change-Id: Ic11c64813ee04e8520771bfa156f8e51404273e7
This commit is contained in:
MusikAnimal 2017-11-13 13:52:55 -05:00 committed by Reedy
parent 744f4c11b0
commit 70a602dde4
3 changed files with 17 additions and 1 deletions

View file

@ -482,6 +482,7 @@ class PostgresUpdater extends DatabaseUpdater {
[ 'addPgField', 'protected_titles', 'pt_reason_id', 'INTEGER NOT NULL DEFAULT 0' ],
[ 'addTable', 'comment', 'patch-comment-table.sql' ],
[ 'addIndex', 'site_stats', 'site_stats_pkey', 'patch-site_stats-pk.sql' ],
[ 'addTable', 'ip_changes', 'patch-ip_changes.sql' ],
];
}

View file

@ -62,9 +62,14 @@ TEXT
}
public function doDBUpdates() {
$dbw = $this->getDB( DB_MASTER );
if ( !$dbw->tableExists( 'ip_changes' ) ) {
$this->fatalError( 'ip_changes table does not exist' );
}
$lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
$dbr = $this->getDB( DB_REPLICA, [ 'vslow' ] );
$dbw = $this->getDB( DB_MASTER );
$throttle = intval( $this->getOption( 'throttle', 0 ) );
$maxRevId = intval( $this->getOption( 'max-rev-id', 0 ) );
$start = $this->getOption( 'rev-id', 0 );

View file

@ -0,0 +1,10 @@
CREATE SEQUENCE ip_changes_ipc_rev_id_seq;
CREATE TABLE ip_changes (
ipc_rev_id INTEGER PRIMARY KEY NOT NULL DEFAULT nextval('ip_changes_ipc_rev_id_seq'),
ipc_rev_timestamp TIMESTAMPTZ NOT NULL DEFAULT '',
ipc_hex BYTEA NOT NULL DEFAULT ''
);
CREATE INDEX ipc_rev_timestamp ON ip_changes (ipc_rev_timestamp);
CREATE INDEX ipc_hex_time ON ip_changes (ipc_hex,ipc_rev_timestamp);