From a7af6c3b7282b180f677ee41b690dd335b1ff7e1 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Thu, 10 Jul 2008 22:11:11 +0000 Subject: [PATCH] Hold back $wgTrackLinkChanges for a little bit; reverting r37322, 37430, 37432, 37435. Even disabled, it's started interfering with regular tasks like running the parser tests. --- RELEASE-NOTES | 4 +- includes/DefaultSettings.php | 5 - includes/LinksUpdate.php | 166 +----------------- maintenance/parserTests.inc | 2 +- .../archives/patch-recentlinkchanges.sql | 12 -- maintenance/postgres/tables.sql | 13 -- maintenance/tables.sql | 24 --- maintenance/updaters.inc | 1 - 8 files changed, 10 insertions(+), 217 deletions(-) delete mode 100644 maintenance/postgres/archives/patch-recentlinkchanges.sql diff --git a/RELEASE-NOTES b/RELEASE-NOTES index b95022e587..61ddb18ed7 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -185,9 +185,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN * Add a new hook NormalizeMessageKey to allow extensions to replace messages before the database is potentially queried * (bug 9736) Redirects on Special:Fewestrevisions are now marked as such. -* (bug 13588) Experimentally track link changes if $wgTrackLinkChanges is set - to true. Requires schema change. - + === Bug fixes in 1.13 === * (bug 10677) Add link to the file description page on the shared repository diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 43d4328e44..26fd3e9c60 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -3265,8 +3265,3 @@ $wgSitemapNamespaces = false; * ting this variable false. */ $wgUseAutomaticEditSummaries = true; - -/* - * Track link changes - */ -$wgTrackLinkChanges = false; diff --git a/includes/LinksUpdate.php b/includes/LinksUpdate.php index 957cceb4c3..bb192fb945 100644 --- a/includes/LinksUpdate.php +++ b/includes/LinksUpdate.php @@ -12,19 +12,12 @@ class LinksUpdate { var $mId, //!< Page ID of the article linked from $mTitle, //!< Title object of the article linked from $mLinks, //!< Map of title strings to IDs for the links in the document - $mExistingLinks, $mImages, //!< DB keys of the images used, in the array key only - $mExistingImages, $mTemplates, //!< Map of title strings to IDs for the template references, including broken ones - $mExistingTemplates, $mExternals, //!< URLs of external links, array key only - $mExistingExternals, $mCategories, //!< Map of category names to sort keys - $mExistingCategories, $mInterlangs, //!< Map of language codes to titles - $mExistingInterlangs, $mProperties, //!< Map of arbitrary name to value - $mExistingProperties, $mDb, //!< Database connection reference $mOptions, //!< SELECT options to be used (array) $mRecursive; //!< Whether to queue jobs for recursive updates @@ -82,7 +75,7 @@ class LinksUpdate { * Update link tables with outgoing links from an updated article */ function doUpdate() { - global $wgUseDumbLinkUpdate, $wgTrackLinkChanges; + global $wgUseDumbLinkUpdate; wfRunHooks( 'LinksUpdate', array( &$this ) ); if ( $wgUseDumbLinkUpdate ) { @@ -90,8 +83,6 @@ class LinksUpdate { } else { $this->doIncrementalUpdate(); } - if ( $wgTrackLinkChanges ) - $this->makeRecentlinkchanges(); wfRunHooks( 'LinksUpdateComplete', array( &$this ) ); } @@ -574,9 +565,6 @@ class LinksUpdate { * @private */ function getExistingLinks() { - if ( is_array( $this->mExistingLinks ) ) - return $this->mExistingLinks; - $res = $this->mDb->select( 'pagelinks', array( 'pl_namespace', 'pl_title' ), array( 'pl_from' => $this->mId ), __METHOD__, $this->mOptions ); $arr = array(); @@ -587,7 +575,7 @@ class LinksUpdate { $arr[$row->pl_namespace][$row->pl_title] = 1; } $this->mDb->freeResult( $res ); - return $this->mExistingLinks = $arr; + return $arr; } /** @@ -595,9 +583,6 @@ class LinksUpdate { * @private */ function getExistingTemplates() { - if ( is_array( $this->mExistingTemplates ) ) - return $this->mExistingTemplates; - $res = $this->mDb->select( 'templatelinks', array( 'tl_namespace', 'tl_title' ), array( 'tl_from' => $this->mId ), __METHOD__, $this->mOptions ); $arr = array(); @@ -608,7 +593,7 @@ class LinksUpdate { $arr[$row->tl_namespace][$row->tl_title] = 1; } $this->mDb->freeResult( $res ); - return $this->mExistingTemplates = $arr; + return $arr; } /** @@ -616,9 +601,6 @@ class LinksUpdate { * @private */ function getExistingImages() { - if ( is_array( $this->mExistingImages ) ) - return $this->mExistingImages; - $res = $this->mDb->select( 'imagelinks', array( 'il_to' ), array( 'il_from' => $this->mId ), __METHOD__, $this->mOptions ); $arr = array(); @@ -626,7 +608,7 @@ class LinksUpdate { $arr[$row->il_to] = 1; } $this->mDb->freeResult( $res ); - return $this->mExistingImages = $arr; + return $arr; } /** @@ -634,9 +616,6 @@ class LinksUpdate { * @private */ function getExistingExternals() { - if ( is_array( $this->mExistingExternals ) ) - return $this->mExistingExternals; - $res = $this->mDb->select( 'externallinks', array( 'el_to' ), array( 'el_from' => $this->mId ), __METHOD__, $this->mOptions ); $arr = array(); @@ -644,7 +623,7 @@ class LinksUpdate { $arr[$row->el_to] = 1; } $this->mDb->freeResult( $res ); - return $this->mExistingExternals = $arr; + return $arr; } /** @@ -652,9 +631,6 @@ class LinksUpdate { * @private */ function getExistingCategories() { - if ( is_array( $this->mExistingCategories ) ) - return $this->mExistingCategories; - $res = $this->mDb->select( 'categorylinks', array( 'cl_to', 'cl_sortkey' ), array( 'cl_from' => $this->mId ), __METHOD__, $this->mOptions ); $arr = array(); @@ -662,7 +638,7 @@ class LinksUpdate { $arr[$row->cl_to] = $row->cl_sortkey; } $this->mDb->freeResult( $res ); - return $this->mExistingCategories = $arr; + return $arr; } /** @@ -671,16 +647,13 @@ class LinksUpdate { * @private */ function getExistingInterlangs() { - if ( is_array( $this->mExistingInterlangs ) ) - return $this->mExistingInterlangs; - $res = $this->mDb->select( 'langlinks', array( 'll_lang', 'll_title' ), array( 'll_from' => $this->mId ), __METHOD__, $this->mOptions ); $arr = array(); while ( $row = $this->mDb->fetchObject( $res ) ) { $arr[$row->ll_lang] = $row->ll_title; } - return $this->mExistingInterlangs = $arr; + return $arr; } /** @@ -688,9 +661,6 @@ class LinksUpdate { * @private */ function getExistingProperties() { - if ( is_array( $this->mExistingProperties ) ) - return $this->mExistingProperties; - $res = $this->mDb->select( 'page_props', array( 'pp_propname', 'pp_value' ), array( 'pp_page' => $this->mId ), __METHOD__, $this->mOptions ); $arr = array(); @@ -698,7 +668,7 @@ class LinksUpdate { $arr[$row->pp_propname] = $row->pp_value; } $this->mDb->freeResult( $res ); - return $this->mExistingProperties = $arr; + return $arr; } @@ -728,124 +698,4 @@ class LinksUpdate { } } } - - // Recentlinkchanges constants - const INSERTION = 1; - const DELETION = 2; - private static $rlcFields = array( - 'rlc_type', - 'rlc_timestamp', - 'rlc_action', - 'rlc_from', - 'rlc_to_namespace', - 'rlc_to_title', - 'rlc_to_blob' - ); - /* - * Insert items to recentlinkchanges - */ - function makeRecentlinkchanges() { - $insert = array(); - $now = $this->mDb->timestamp(); - - // Category changes - $existing = array_keys( $this->getExistingCategories() ); - $current = array_keys( $this->mCategories ); - $this->simpleAddToLinkchanges( $insert, 'category', $now, $existing, $current, NS_CATEGORY ); - - // External links - $existing = array_keys( $this->getExistingExternals() ); - $current = array_keys( $this->mExternals ); - $insertions = array_diff( $current, $existing ); - foreach ( $insertions as $item ) - $insert[] = array( - 'external', $now, self::INSERTION, - $this->mId, null, null, $item ); - $deletions = array_diff( $existing, $current ); - foreach ( $deletions as $item ) - $insert[] = array( - 'external', $now, self::DELETION, - $this->mId, null, null, $item ); - - // Image changes - $existing = array_keys( $this->getExistingImages() ); - $current = array_keys( $this->mImages ); - $this->simpleAddToLinkchanges( $insert, 'image', $now, $existing, $current, NS_IMAGE ); - - // Interlangs - $existing = $this->getExistingInterlangs(); - $current = $this->mInterlangs; - $this->assocAddToLinkchanges( $insert, 'interlang', $existing, $current ); - - // Page links - $existing = $this->getExistingLinks(); - $current = $this->mLinks; - $this->addToLinkChangesByNamespace( $insert, 'page', $now, $existing, $current); - - // Properties - $existing = $this->getExistingProperties(); - $current = $this->mProperties; - $this->assocAddToLinkchanges( $insert, 'property', $existing, $current ); - - // Templates - $existing = $this->getExistingTemplates(); - $current = $this->mTemplates; - $this->addToLinkChangesByNamespace( $insert, 'template', $now, $existing, $current); - - $this->mDb->insert( 'recentlinkchanges', $insert, __METHOD__ ); - - } - - /* - * Compute the difference for arrays of titles with namespace $ns and add - * them to $insert. - */ - private function simpleAddToLinkchanges( &$insert, $type, $now, $existing, $current, $ns ) { - - $insertions = array_diff( $current, $existing ); - foreach ( $insertions as $item ) - $insert[] = array_combine(self::$rlcFields, array( - $type, $now, self::INSERTION, - $this->mId, $ns, $item, null - ) ); - $deletions = array_diff( $existing, $current ); - foreach ( $deletions as $item ) - $insert[] = array_combine(self::$rlcFields, array( - $type, $now, self::DELETION, - $this->mId, $ns, $item, null - ) ); - - } - - /* - * Compute the difference for associative arrays and insert them to - * $insert as title => blob. - */ - function assocAddToLinkChanges( &$insert, $type, $now, $existing, $current ) { - $insertions = array_diff_assoc( $current, $existing ); - foreach ( $insertions as $key => $value ) - $insert[] = array_combine(self::$rlcFields, array( - $type, $now, self::INSERTION, - $this->mId, null, $key, $value - ) ); - $deletions = array_diff_assoc( $existing, $current ); - foreach ( $deletions as $key => $value ) - $insert[] = array_combine(self::$rlcFields, array( - $type, $now, self::DELETION, - $this->mId, null, $key, $value - ) ); - } - - /* - * Format arrays in the form $namespace => $titleArray for use in - * simpleAddLinkLinkChanges - */ - function addToLinkChangesByNamespace( &$insert, $type, $now, $existing, $current ) { - $namespaces = array_merge( array_keys( $existing ), array_keys( $current ) ); - foreach ( $namespaces as $ns ) - $this->simpleAddToLinkchanges( $insert, $type, $now, - isset( $existing[$ns] ) ? array_keys( $existing[$ns] ) : array(), - isset( $current[$ns] ) ? array_keys( $current[$ns] ) : array(), - $ns ); - } } diff --git a/maintenance/parserTests.inc b/maintenance/parserTests.inc index c3f1b62fed..2cb85d2cc5 100644 --- a/maintenance/parserTests.inc +++ b/maintenance/parserTests.inc @@ -454,7 +454,7 @@ class ParserTest { 'protected_titles', 'revision', 'text', 'pagelinks', 'imagelinks', 'categorylinks', 'templatelinks', 'externallinks', 'langlinks', 'site_stats', 'hitcounter', 'ipblocks', 'image', 'oldimage', - 'recentchanges', 'recentlinkchanges', 'watchlist', 'math', 'interwiki', + 'recentchanges', 'watchlist', 'math', 'interwiki', 'querycache', 'objectcache', 'job', 'redirect', 'querycachetwo', 'archive', 'user_groups', 'page_props', 'category' ); diff --git a/maintenance/postgres/archives/patch-recentlinkchanges.sql b/maintenance/postgres/archives/patch-recentlinkchanges.sql deleted file mode 100644 index 96cc13adbc..0000000000 --- a/maintenance/postgres/archives/patch-recentlinkchanges.sql +++ /dev/null @@ -1,12 +0,0 @@ -CREATE SEQUENCE recentlinkchanges_rcl_id_seq; -CREATE TABLE recentlinkchanges ( - rlc_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('recentlinkchanges_rcl_id_seq'), - rlc_type TEXT NOT NULL, - rlc_timestamp TIMESTAMPTZ NOT NULL, - rlc_action SMALLINT NOT NULL DEFAULT 0, - rlc_from INTEGER NOT NULL, - rlc_to_namespace SMALLINT, - rlc_to_title TEXT, - rlc_to_blob TEXT -); -CREATE INDEX recentlinkchanges_type ON recentlinkchanges(rlc_type); diff --git a/maintenance/postgres/tables.sql b/maintenance/postgres/tables.sql index afabddec1a..40a948e2b3 100644 --- a/maintenance/postgres/tables.sql +++ b/maintenance/postgres/tables.sql @@ -538,19 +538,6 @@ CREATE TABLE updatelog ( ); -CREATE SEQUENCE recentlinkchanges_rcl_id_seq; -CREATE TABLE recentlinkchanges ( - rlc_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('recentlinkchanges_rcl_id_seq'), - rlc_type TEXT NOT NULL, - rlc_timestamp TIMESTAMPTZ NOT NULL, - rlc_action SMALLINT NOT NULL DEFAULT 0, - rlc_from INTEGER NOT NULL, - rlc_to_namespace SMALLINT, - rlc_to_title TEXT, - rlc_to_blob TEXT -); -CREATE INDEX recentlinkchanges_type ON recentlinkchanges(rlc_type); - CREATE SEQUENCE category_id_seq; CREATE TABLE category ( cat_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('category_id_seq'), diff --git a/maintenance/tables.sql b/maintenance/tables.sql index 08889b2031..11ed7cb253 100644 --- a/maintenance/tables.sql +++ b/maintenance/tables.sql @@ -1237,28 +1237,4 @@ CREATE TABLE /*$wgDBprefix*/updatelog ( PRIMARY KEY (ul_key) ) /*$wgDBTableOptions*/; --- A table to track link changes --- Experimental: enable using $wgTrackLinkChanges -CREATE TABLE /*$wgDBprefix*/recentlinkchanges ( - rlc_id int unsigned NOT NULL auto_increment, - - -- page, image, category, ... - rlc_type varchar(15) binary NOT NULL, - rlc_timestamp binary(14) NOT NULL default '', - -- 1: insert; 2: deletion; - -- should probably make this an enum... - rlc_action tinyint NOT NULL default 0, - - -- page where the links are on - rlc_from int NOT NULL, - - rlc_to_namespace int, - rlc_to_title varchar(255) binary, - rlc_to_blob blob, - - PRIMARY KEY (rlc_id), - KEY from_timestamp (rlc_type, rlc_timestamp), - KEY to_timestamp (rlc_to_namespace, rlc_to_title, rlc_timestamp) -) /*$wgDBTableOptions*/; - -- vim: sw=2 sts=2 et diff --git a/maintenance/updaters.inc b/maintenance/updaters.inc index 5e271bf501..67680c496b 100644 --- a/maintenance/updaters.inc +++ b/maintenance/updaters.inc @@ -1423,7 +1423,6 @@ function do_postgres_updates() { array("page_restrictions", "patch-page_restrictions.sql"), array("profiling", "patch-profiling.sql"), array("protected_titles", "patch-protected_titles.sql"), - array("recentlinkchanges", "patch-recentlinkchanges.sql"), array("redirect", "patch-redirect.sql"), array("updatelog", "patch-updatelog.sql"), ); -- 2.20.1