Schema change for reading ct_tag_id instead of ct_tag
Adding unique index on ct_tag_id and making indexes on ct_tag non unique Bug: T193874 Change-Id: I24609c57e47308d1330a97527f4ea374d0d307ba
This commit is contained in:
parent
0ecfe75502
commit
da9d5c2188
17 changed files with 179 additions and 24 deletions
|
|
@ -9028,7 +9028,7 @@ $wgExpiryWidgetNoDatePicker = false;
|
|||
* @since 1.32
|
||||
* @var int One of the MIGRATION_* constants
|
||||
*/
|
||||
$wgChangeTagsSchemaMigrationStage = MIGRATION_OLD;
|
||||
$wgChangeTagsSchemaMigrationStage = MIGRATION_WRITE_BOTH;
|
||||
|
||||
/**
|
||||
* Temporarily flag to use change_tag_def table as backend of change tag statistics.
|
||||
|
|
|
|||
|
|
@ -146,6 +146,9 @@ class MssqlUpdater extends DatabaseUpdater {
|
|||
[ 'addIndex', 'site_identifiers', 'PRIMARY', 'patch-site_identifiers-pk.sql' ],
|
||||
[ 'addIndex', 'recentchanges', 'rc_this_oldid', 'patch-recentchanges-rc_this_oldid-index.sql' ],
|
||||
[ 'dropTable', 'transcache' ],
|
||||
[ 'runMaintenance', PopulateChangeTagDef::class, 'maintenance/populateChangeTagDef.php' ],
|
||||
[ 'addIndex', 'change_tag', 'change_tag_rc_tag_id',
|
||||
'patch-change_tag-change_tag_rc_tag_id.sql' ],
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ class MysqlUpdater extends DatabaseUpdater {
|
|||
[ 'doLogUsertextPopulation' ],
|
||||
[ 'doLogSearchPopulation' ],
|
||||
[ 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ],
|
||||
[ 'addIndex', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ],
|
||||
[ 'addIndex', 'tag_summary', 'tag_summary_rc_id', 'patch-change_tag-indexes.sql' ],
|
||||
[ 'addField', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ],
|
||||
[ 'doUpdateMimeMinorField' ],
|
||||
|
||||
|
|
@ -366,6 +366,9 @@ class MysqlUpdater extends DatabaseUpdater {
|
|||
'patch-site_identifiers-fix-pk.sql' ],
|
||||
[ 'addIndex', 'recentchanges', 'rc_this_oldid', 'patch-recentchanges-rc_this_oldid-index.sql' ],
|
||||
[ 'dropTable', 'transcache' ],
|
||||
[ 'runMaintenance', PopulateChangeTagDef::class, 'maintenance/populateChangeTagDef.php' ],
|
||||
[ 'addIndex', 'change_tag', 'change_tag_rc_tag_id',
|
||||
'patch-change_tag-change_tag_rc_tag_id.sql' ],
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -157,6 +157,9 @@ class OracleUpdater extends DatabaseUpdater {
|
|||
[ 'populateContentTables' ],
|
||||
[ 'addIndex', 'recentchanges', 'rc_this_oldid', 'patch-recentchanges-rc_this_oldid-index.sql' ],
|
||||
[ 'dropTable', 'transcache' ],
|
||||
[ 'runMaintenance', PopulateChangeTagDef::class, 'maintenance/populateChangeTagDef.php' ],
|
||||
[ 'addIndex', 'change_tag', 'change_tag_i03',
|
||||
'patch-change_tag-change_tag_rc_tag_id.sql' ],
|
||||
|
||||
// KEEP THIS AT THE BOTTOM!!
|
||||
[ 'doRebuildDuplicateFunction' ],
|
||||
|
|
|
|||
|
|
@ -592,6 +592,9 @@ class PostgresUpdater extends DatabaseUpdater {
|
|||
[ 'addIndex', 'site_identifiers', 'site_identifiers_pkey', 'patch-site_identifiers-pk.sql' ],
|
||||
[ 'addPgIndex', 'recentchanges', 'rc_this_oldid', '(rc_this_oldid)' ],
|
||||
[ 'dropTable', 'transcache' ],
|
||||
[ 'runMaintenance', PopulateChangeTagDef::class, 'maintenance/populateChangeTagDef.php' ],
|
||||
[ 'addIndex', 'change_tag', 'change_tag_rc_tag_id',
|
||||
'patch-change_tag-change_tag_rc_tag_id.sql' ],
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ class SqliteUpdater extends DatabaseUpdater {
|
|||
[ 'doLogUsertextPopulation' ],
|
||||
[ 'doLogSearchPopulation' ],
|
||||
[ 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ],
|
||||
[ 'addIndex', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ],
|
||||
[ 'addIndex', 'tag_summary', 'tag_summary_rc_id', 'patch-change_tag-indexes.sql' ],
|
||||
[ 'addField', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ],
|
||||
[ 'sqliteSetupSearchindex' ],
|
||||
|
||||
|
|
@ -231,6 +231,9 @@ class SqliteUpdater extends DatabaseUpdater {
|
|||
'patch-site_identifiers-fix-pk.sql' ],
|
||||
[ 'addIndex', 'recentchanges', 'rc_this_oldid', 'patch-recentchanges-rc_this_oldid-index.sql' ],
|
||||
[ 'dropTable', 'transcache' ],
|
||||
[ 'runMaintenance', PopulateChangeTagDef::class, 'maintenance/populateChangeTagDef.php' ],
|
||||
[ 'addIndex', 'change_tag', 'change_tag_rc_tag_id',
|
||||
'patch-change_tag-change_tag_rc_tag_id.sql' ],
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
-- T193874: Add new indexes to change_tag table using ct_tag_id instead of ct_tag
|
||||
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_rc_tag_id ON /*_*/change_tag (ct_rc_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_log_tag_id ON /*_*/change_tag (ct_log_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_rev_tag_id ON /*_*/change_tag (ct_rev_id,ct_tag_id);
|
||||
|
||||
CREATE INDEX /*i*/change_tag_rc_tag_nonuniq ON /*_*/change_tag (ct_rc_id,ct_tag);
|
||||
CREATE INDEX /*i*/change_tag_log_tag_nonuniq ON /*_*/change_tag (ct_log_id,ct_tag);
|
||||
CREATE INDEX /*i*/change_tag_rev_tag_nonuniq ON /*_*/change_tag (ct_rev_id,ct_tag);
|
||||
|
||||
DROP INDEX /*i*/change_tag_rc_tag ON /*_*/change_tag;
|
||||
DROP INDEX /*i*/change_tag_log_tag ON /*_*/change_tag;
|
||||
DROP INDEX /*i*/change_tag_rev_tag ON /*_*/change_tag;
|
||||
|
||||
ALTER TABLE /*i*/change_tag
|
||||
ALTER COLUMN ct_tag SET DEFAULT '';
|
||||
16
maintenance/mssql/patch-change_tag-change_tag_rc_tag_id.sql
Normal file
16
maintenance/mssql/patch-change_tag-change_tag_rc_tag_id.sql
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
-- T193874: Add new indexes to change_tag table using ct_tag_id instead of ct_tag
|
||||
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_rc_tag_id ON /*_*/change_tag (ct_rc_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_log_tag_id ON /*_*/change_tag (ct_log_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_rev_tag_id ON /*_*/change_tag (ct_rev_id,ct_tag_id);
|
||||
|
||||
CREATE INDEX /*i*/change_tag_rc_tag_nonuniq ON /*_*/change_tag (ct_rc_id,ct_tag);
|
||||
CREATE INDEX /*i*/change_tag_log_tag_nonuniq ON /*_*/change_tag (ct_log_id,ct_tag);
|
||||
CREATE INDEX /*i*/change_tag_rev_tag_nonuniq ON /*_*/change_tag (ct_rev_id,ct_tag);
|
||||
|
||||
DROP INDEX /*i*/change_tag_rc_tag ON /*_*/change_tag;
|
||||
DROP INDEX /*i*/change_tag_log_tag ON /*_*/change_tag;
|
||||
DROP INDEX /*i*/change_tag_rev_tag ON /*_*/change_tag;
|
||||
|
||||
ALTER TABLE /*i*/change_tag
|
||||
ADD CONSTRAINT DF_ct_tag DEFAULT '' FOR ct_tag;
|
||||
|
|
@ -1387,16 +1387,21 @@ CREATE TABLE /*_*/change_tag (
|
|||
-- REVID for the change
|
||||
ct_rev_id int NULL REFERENCES /*_*/revision(rev_id),
|
||||
-- Tag applied
|
||||
ct_tag nvarchar(255) NOT NULL,
|
||||
ct_tag nvarchar(255) NOT NULL default '',
|
||||
-- Parameters for the tag, presently unused
|
||||
ct_params nvarchar(max) NULL,
|
||||
-- Foreign key to change_tag_def row
|
||||
ct_tag_id int NULL CONSTRAINT ctd_tag_id__fk FOREIGN KEY REFERENCES /*_*/change_tag_def(ctd_id)
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_rc_tag ON /*_*/change_tag (ct_rc_id,ct_tag);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_log_tag ON /*_*/change_tag (ct_log_id,ct_tag);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_rev_tag ON /*_*/change_tag (ct_rev_id,ct_tag);
|
||||
CREATE INDEX /*i*/change_tag_rc_tag_nonuniq ON /*_*/change_tag (ct_rc_id,ct_tag);
|
||||
CREATE INDEX /*i*/change_tag_log_tag_nonuniq ON /*_*/change_tag (ct_log_id,ct_tag);
|
||||
CREATE INDEX /*i*/change_tag_rev_tag_nonuniq ON /*_*/change_tag (ct_rev_id,ct_tag);
|
||||
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_rc_tag_id ON /*_*/change_tag (ct_rc_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_log_tag_id ON /*_*/change_tag (ct_log_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_rev_tag_id ON /*_*/change_tag (ct_rev_id,ct_tag_id);
|
||||
|
||||
-- Covering index, so we can pull all the info only out of the index.
|
||||
CREATE INDEX /*i*/change_tag_tag_id ON /*_*/change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
|
||||
CREATE INDEX /*i*/change_tag_tag_id_id ON /*_*/change_tag (ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
-- T193874: Add new indexes to change_tag table using ct_tag_id instead of ct_tag
|
||||
|
||||
define mw_prefix='{$wgDBprefix}';
|
||||
|
||||
CREATE UNIQUE INDEX &mw_prefix.change_tag_u04 ON &mw_prefix.change_tag (ct_rc_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX &mw_prefix.change_tag_u05 ON &mw_prefix.change_tag (ct_log_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX &mw_prefix.change_tag_u06 ON &mw_prefix.change_tag (ct_rev_id,ct_tag_id);
|
||||
|
||||
CREATE INDEX &mw_prefix.change_tag_i03 ON &mw_prefix.change_tag (ct_rc_id,ct_tag);
|
||||
CREATE INDEX &mw_prefix.change_tag_i04 ON &mw_prefix.change_tag (ct_log_id,ct_tag);
|
||||
CREATE INDEX &mw_prefix.change_tag_i05 ON &mw_prefix.change_tag (ct_rev_id,ct_tag);
|
||||
|
||||
DROP INDEX &mw_prefix.change_tag_u01;
|
||||
DROP INDEX &mw_prefix.change_tag_u02;
|
||||
DROP INDEX &mw_prefix.change_tag_u03;
|
||||
|
||||
ALTER TABLE &mw_prefix.change_tag
|
||||
MODIFY ct_tag DEFAULT '///invalid///';
|
||||
|
|
@ -935,14 +935,20 @@ CREATE TABLE &mw_prefix.change_tag (
|
|||
ct_rc_id NUMBER NULL,
|
||||
ct_log_id NUMBER NULL,
|
||||
ct_rev_id NUMBER NULL,
|
||||
ct_tag VARCHAR2(255) NOT NULL,
|
||||
ct_tag VARCHAR2(255) DEFAULT '///invalid///' NOT NULL,
|
||||
ct_params BLOB NULL,
|
||||
ct_tag_id NUMBER NULL,
|
||||
ct_tag_id NUMBER NULL
|
||||
);
|
||||
ALTER TABLE &mw_prefix.change_tag ADD CONSTRAINT &mw_prefix.change_tag_pk PRIMARY KEY (ct_id);
|
||||
CREATE UNIQUE INDEX &mw_prefix.change_tag_u01 ON &mw_prefix.change_tag (ct_rc_id,ct_tag);
|
||||
CREATE UNIQUE INDEX &mw_prefix.change_tag_u02 ON &mw_prefix.change_tag (ct_log_id,ct_tag);
|
||||
CREATE UNIQUE INDEX &mw_prefix.change_tag_u03 ON &mw_prefix.change_tag (ct_rev_id,ct_tag);
|
||||
|
||||
CREATE INDEX &mw_prefix.change_tag_i03 ON &mw_prefix.change_tag (ct_rc_id,ct_tag);
|
||||
CREATE INDEX &mw_prefix.change_tag_i04 ON &mw_prefix.change_tag (ct_log_id,ct_tag);
|
||||
CREATE INDEX &mw_prefix.change_tag_i05 ON &mw_prefix.change_tag (ct_rev_id,ct_tag);
|
||||
|
||||
CREATE UNIQUE INDEX &mw_prefix.change_tag_u04 ON &mw_prefix.change_tag (ct_rc_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX &mw_prefix.change_tag_u05 ON &mw_prefix.change_tag (ct_log_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX &mw_prefix.change_tag_u06 ON &mw_prefix.change_tag (ct_rev_id,ct_tag_id);
|
||||
|
||||
CREATE INDEX &mw_prefix.change_tag_i01 ON &mw_prefix.change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
|
||||
CREATE INDEX &mw_prefix.change_tag_i02 ON &mw_prefix.change_tag (ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id);
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ require_once __DIR__ . '/Maintenance.php';
|
|||
*
|
||||
* @ingroup Maintenance
|
||||
*/
|
||||
class PopulateChangeTagDef extends Maintenance {
|
||||
class PopulateChangeTagDef extends LoggedUpdateMaintenance {
|
||||
/** @var Wikimedia\Rdbms\ILBFactory */
|
||||
protected $lbFactory;
|
||||
|
||||
|
|
@ -43,11 +43,24 @@ class PopulateChangeTagDef extends Maintenance {
|
|||
|
||||
public function execute() {
|
||||
global $wgChangeTagsSchemaMigrationStage;
|
||||
if ( $wgChangeTagsSchemaMigrationStage === MIGRATION_OLD ) {
|
||||
// Return "success", but don't flag it as done so the next run will retry
|
||||
$this->output( '... Not run, $wgChangeTagsSchemaMigrationStage === MIGRATION_OLD' . "\n" );
|
||||
return true;
|
||||
}
|
||||
return parent::execute();
|
||||
}
|
||||
|
||||
protected function doDBUpdates() {
|
||||
$this->lbFactory = MediaWiki\MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
|
||||
$this->setBatchSize( $this->getOption( 'batch-size', $this->getBatchSize() ) );
|
||||
|
||||
$this->countDown( 5 );
|
||||
if ( $wgChangeTagsSchemaMigrationStage < MIGRATION_NEW ) {
|
||||
if ( $this->lbFactory->getMainLB()->getConnection( DB_REPLICA )->fieldExists(
|
||||
'change_tag',
|
||||
'ct_tag',
|
||||
__METHOD__
|
||||
)
|
||||
) {
|
||||
if ( !$this->hasOption( 'populate-only' ) ) {
|
||||
$this->updateCountTag();
|
||||
}
|
||||
|
|
@ -58,6 +71,8 @@ class PopulateChangeTagDef extends Maintenance {
|
|||
|
||||
// TODO: Implement
|
||||
// $this->cleanZeroCountRows();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private function updateCountTagId() {
|
||||
|
|
@ -195,6 +210,9 @@ class PopulateChangeTagDef extends Maintenance {
|
|||
$this->output( "Finished adding ct_tag_id = {$tagId} for ct_tag = {$tagName}\n" );
|
||||
}
|
||||
|
||||
protected function getUpdateKey() {
|
||||
return __CLASS__;
|
||||
}
|
||||
}
|
||||
|
||||
$maintClass = PopulateChangeTagDef::class;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
-- T193874: Add new indexes to change_tag table using ct_tag_id instead of ct_tag
|
||||
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_rc_tag_id ON /*_*/change_tag (ct_rc_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_log_tag_id ON /*_*/change_tag (ct_log_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_rev_tag_id ON /*_*/change_tag (ct_rev_id,ct_tag_id);
|
||||
|
||||
CREATE INDEX /*i*/change_tag_rc_tag_nonuniq ON /*_*/change_tag (ct_rc_id,ct_tag);
|
||||
CREATE INDEX /*i*/change_tag_log_tag_nonuniq ON /*_*/change_tag (ct_log_id,ct_tag);
|
||||
CREATE INDEX /*i*/change_tag_rev_tag_nonuniq ON /*_*/change_tag (ct_rev_id,ct_tag);
|
||||
|
||||
DROP INDEX /*i*/change_tag_rc_tag;
|
||||
DROP INDEX /*i*/change_tag_log_tag;
|
||||
DROP INDEX /*i*/change_tag_rev_tag;
|
||||
|
||||
ALTER TABLE /*i*/change_tag
|
||||
ALTER COLUMN ct_tag SET DEFAULT '';
|
||||
|
|
@ -802,14 +802,20 @@ CREATE TABLE change_tag (
|
|||
ct_rc_id INTEGER NULL,
|
||||
ct_log_id INTEGER NULL,
|
||||
ct_rev_id INTEGER NULL,
|
||||
ct_tag TEXT NOT NULL,
|
||||
ct_tag TEXT NOT NULL DEFAULT '',
|
||||
ct_params TEXT NULL,
|
||||
ct_tag_id INTEGER NULL
|
||||
);
|
||||
ALTER SEQUENCE change_tag_ct_id_seq OWNED BY change_tag.ct_id;
|
||||
CREATE UNIQUE INDEX change_tag_rc_tag ON change_tag(ct_rc_id,ct_tag);
|
||||
CREATE UNIQUE INDEX change_tag_log_tag ON change_tag(ct_log_id,ct_tag);
|
||||
CREATE UNIQUE INDEX change_tag_rev_tag ON change_tag(ct_rev_id,ct_tag);
|
||||
|
||||
CREATE INDEX change_tag_rc_tag_nonuniq ON change_tag(ct_rc_id,ct_tag);
|
||||
CREATE INDEX change_tag_log_tag_nonuniq ON change_tag(ct_log_id,ct_tag);
|
||||
CREATE INDEX change_tag_rev_tag_nonuniq ON change_tag(ct_rev_id,ct_tag);
|
||||
|
||||
CREATE UNIQUE INDEX change_tag_rc_tag_id ON change_tag(ct_rc_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX change_tag_log_tag_id ON change_tag(ct_log_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX change_tag_rev_tag_id ON change_tag(ct_rev_id,ct_tag_id);
|
||||
|
||||
CREATE INDEX change_tag_tag_id ON change_tag(ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
|
||||
CREATE INDEX change_tag_tag_id_id ON change_tag(ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id);
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
-- T193874: Add new indexes to change_tag table using ct_tag_id instead of ct_tag
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
DROP TABLE IF EXISTS /*_*/change_tag_tmp;
|
||||
|
||||
CREATE TABLE /*_*/change_tag_tmp (
|
||||
ct_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
ct_rc_id int NULL,
|
||||
ct_log_id int unsigned NULL,
|
||||
ct_rev_id int unsigned NULL,
|
||||
ct_tag varchar(255) NOT NULL default '',
|
||||
ct_params blob NULL,
|
||||
ct_tag_id int unsigned NULL
|
||||
) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=1024;
|
||||
|
||||
INSERT OR IGNORE INTO /*_*/change_tag_tmp (ct_id, ct_rc_id, ct_log_id, ct_rev_id, ct_tag, ct_params, ct_tag_id)
|
||||
SELECT
|
||||
ct_id, ct_rc_id, ct_log_id, ct_rev_id, ct_tag, ct_params, ct_tag_id
|
||||
FROM /*_*/change_tag;
|
||||
|
||||
DROP TABLE /*_*/change_tag;
|
||||
|
||||
ALTER TABLE /*_*/change_tag_tmp RENAME TO /*_*/change_tag;
|
||||
|
||||
CREATE INDEX /*i*/change_tag_rc_tag_nonuniq ON /*_*/change_tag (ct_rc_id,ct_tag);
|
||||
CREATE INDEX /*i*/change_tag_log_tag_nonuniq ON /*_*/change_tag (ct_log_id,ct_tag);
|
||||
CREATE INDEX /*i*/change_tag_rev_tag_nonuniq ON /*_*/change_tag (ct_rev_id,ct_tag);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_rc_tag_id ON /*_*/change_tag (ct_rc_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_log_tag_id ON /*_*/change_tag (ct_log_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_rev_tag_id ON /*_*/change_tag (ct_rev_id,ct_tag_id);
|
||||
CREATE INDEX /*i*/change_tag_tag_id ON /*_*/change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
|
||||
CREATE INDEX /*i*/change_tag_tag_id_id ON /*_*/change_tag (ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id);
|
||||
|
||||
COMMIT;
|
||||
|
|
@ -1837,16 +1837,20 @@ CREATE TABLE /*_*/change_tag (
|
|||
-- REVID for the change
|
||||
ct_rev_id int unsigned NULL,
|
||||
-- Tag applied, this will go away and be replaced with ct_tag_id
|
||||
ct_tag varchar(255) NOT NULL,
|
||||
ct_tag varchar(255) NOT NULL default '',
|
||||
-- Parameters for the tag; used by some extensions
|
||||
ct_params blob NULL,
|
||||
-- Foreign key to change_tag_def row, this will be "NOT NULL" once populated
|
||||
ct_tag_id int unsigned NULL
|
||||
) /*$wgDBTableOptions*/;
|
||||
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_rc_tag ON /*_*/change_tag (ct_rc_id,ct_tag);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_log_tag ON /*_*/change_tag (ct_log_id,ct_tag);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_rev_tag ON /*_*/change_tag (ct_rev_id,ct_tag);
|
||||
CREATE INDEX /*i*/change_tag_rc_tag_nonuniq ON /*_*/change_tag (ct_rc_id,ct_tag);
|
||||
CREATE INDEX /*i*/change_tag_log_tag_nonuniq ON /*_*/change_tag (ct_log_id,ct_tag);
|
||||
CREATE INDEX /*i*/change_tag_rev_tag_nonuniq ON /*_*/change_tag (ct_rev_id,ct_tag);
|
||||
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_rc_tag_id ON /*_*/change_tag (ct_rc_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_log_tag_id ON /*_*/change_tag (ct_log_id,ct_tag_id);
|
||||
CREATE UNIQUE INDEX /*i*/change_tag_rev_tag_id ON /*_*/change_tag (ct_rev_id,ct_tag_id);
|
||||
-- Covering index, so we can pull all the info only out of the index.
|
||||
CREATE INDEX /*i*/change_tag_tag_id ON /*_*/change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
|
||||
CREATE INDEX /*i*/change_tag_tag_id_id ON /*_*/change_tag (ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id);
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ class PopulateChangeTagDefTest extends MaintenanceBaseTestCase {
|
|||
|
||||
public function setUp() {
|
||||
parent::setUp();
|
||||
$this->tablesUsed = [ 'change_tag', 'change_tag_def' ];
|
||||
$this->tablesUsed = [ 'change_tag', 'change_tag_def', 'updatelog' ];
|
||||
|
||||
$this->cleanChangeTagTables();
|
||||
$this->insertChangeTagData();
|
||||
|
|
@ -25,6 +25,7 @@ class PopulateChangeTagDefTest extends MaintenanceBaseTestCase {
|
|||
private function cleanChangeTagTables() {
|
||||
wfGetDB( DB_MASTER )->delete( 'change_tag', '*' );
|
||||
wfGetDB( DB_MASTER )->delete( 'change_tag_def', '*' );
|
||||
wfGetDB( DB_MASTER )->delete( 'updatelog', '*' );
|
||||
}
|
||||
|
||||
private function insertChangeTagData() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue