WikidataBuilder has uploaded a new change for review. https://gerrit.wikimedia.org/r/132787
Change subject: New Wikidata Build - 11/05/2014 10:00 ...................................................................... New Wikidata Build - 11/05/2014 10:00 Change-Id: Icec5762829fd130d09786e9c8874876c43f161d3 --- M composer.lock M extensions/Wikibase/repo/Wikibase.hooks.php M extensions/Wikibase/repo/Wikibase.php M extensions/Wikibase/repo/includes/store/sql/EntityPerPageTable.php M extensions/Wikibase/repo/tests/phpunit/includes/store/sql/EntityPerPageTableTest.php M vendor/autoload.php M vendor/composer/autoload_real.php M vendor/composer/installed.json 8 files changed, 78 insertions(+), 20 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata refs/changes/87/132787/1 diff --git a/composer.lock b/composer.lock index c59bef1..764a0bf 100644 --- a/composer.lock +++ b/composer.lock @@ -869,12 +869,12 @@ "source": { "type": "git", "url": "https://github.com/wikimedia/mediawiki-extensions-Wikibase.git", - "reference": "0bde25d160b68ae8e9ec2611ed6cccc66e220916" + "reference": "6d9387ea98e3de2c13961482e067d30593d62980" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/0bde25d160b68ae8e9ec2611ed6cccc66e220916", - "reference": "0bde25d160b68ae8e9ec2611ed6cccc66e220916", + "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/6d9387ea98e3de2c13961482e067d30593d62980", + "reference": "6d9387ea98e3de2c13961482e067d30593d62980", "shasum": "" }, "require": { @@ -937,7 +937,7 @@ "wikibaserepo", "wikidata" ], - "time": "2014-05-09 22:24:08" + "time": "2014-05-10 20:02:04" } ], "packages-dev": [ diff --git a/extensions/Wikibase/repo/Wikibase.hooks.php b/extensions/Wikibase/repo/Wikibase.hooks.php index 3c78015..6082c32 100644 --- a/extensions/Wikibase/repo/Wikibase.hooks.php +++ b/extensions/Wikibase/repo/Wikibase.hooks.php @@ -1277,4 +1277,55 @@ return new PropertyHandler( $validators ); } + /** + * Helper for onAPIQuerySiteInfoStatisticsInfo + * @param object $row + * @return array + */ + private static function formatDispatchRow( $row ) { + $data = array( + 'pending' => $row->chd_pending, + 'lag' => $row->chd_lag, + ); + if ( isset( $row->chd_site ) ) { + $data['site'] = $row->chd_site; + } + if ( isset( $row->chd_seen ) ) { + $data['position'] = $row->chd_seen; + } + if ( isset( $row->chd_touched ) ) { + $data['touched'] = $row->chd_touched; + } + + return $data; + } + + /** + * Adds DispatchStats info to the API + * @param array $data + * @return bool + */ + public static function onAPIQuerySiteInfoStatisticsInfo( array &$data ) { + $stats = new DispatchStats(); + $stats->load(); + if ( $stats->hasStats() ) { + $data['dispatch'] = array( + 'oldest' => array( + 'id' => $stats->getMinChangeId(), + 'timestamp' => $stats->getMinChangeTimestamp(), + ), + 'newest' => array( + 'id' => $stats->getMaxChangeId(), + 'timestamp' => $stats->getMaxChangeTimestamp(), + ), + 'freshest' => self::formatDispatchRow( $stats->getFreshest() ), + 'median' => self::formatDispatchRow( $stats->getMedian() ), + 'stalest' => self::formatDispatchRow( $stats->getStalest() ), + 'average' => self::formatDispatchRow( $stats->getAverage() ), + ); + } + + return true; + } + } diff --git a/extensions/Wikibase/repo/Wikibase.php b/extensions/Wikibase/repo/Wikibase.php index b83aeb9..10fd985 100644 --- a/extensions/Wikibase/repo/Wikibase.php +++ b/extensions/Wikibase/repo/Wikibase.php @@ -180,6 +180,7 @@ $wgHooks['OutputPageBeforeHTML'][] = 'Wikibase\RepoHooks::onOutputPageBeforeHtmlRegisterConfig'; $wgHooks['MakeGlobalVariablesScript'][] = 'Wikibase\RepoHooks::onMakeGlobalVariablesScript'; $wgHooks['ContentHandlerForModelID'][] = 'Wikibase\RepoHooks::onContentHandlerForModelID'; + $wgHooks['APIQuerySiteInfoStatisticsInfo'][] = 'Wikibase\RepoHooks::onAPIQuerySiteInfoStatisticsInfo'; // Resource Loader Modules: $wgResourceModules = array_merge( $wgResourceModules, include( __DIR__ . "/resources/Resources.php" ) ); diff --git a/extensions/Wikibase/repo/includes/store/sql/EntityPerPageTable.php b/extensions/Wikibase/repo/includes/store/sql/EntityPerPageTable.php index 7170de5..8eceab1 100644 --- a/extensions/Wikibase/repo/includes/store/sql/EntityPerPageTable.php +++ b/extensions/Wikibase/repo/includes/store/sql/EntityPerPageTable.php @@ -3,7 +3,6 @@ namespace Wikibase; use InvalidArgumentException; -use Iterator; use Wikibase\DataModel\Entity\BasicEntityIdParser; use Wikibase\DataModel\Entity\ItemId; @@ -245,10 +244,16 @@ public function listEntities( $entityType, $limit, EntityId $after = null ) { if ( $entityType == null ) { $where = array(); + //NOTE: needs to be id/type, not type/id, according to the definition of the relevant + // index in wikibase.sql: wb_entity_per_page (epp_entity_id, epp_entity_type); + $orderBy = array( 'epp_entity_id', 'epp_entity_type' ); } elseif ( !is_string( $entityType ) ) { throw new InvalidArgumentException( '$entityType must be a string (or null)' ); } else { $where = array( 'epp_entity_type' => $entityType ); + // NOTE: If the type is fixed, don't use the type in the order; + // before changing this, check index usage. + $orderBy = array( 'epp_entity_id' ); } if ( !is_int( $limit ) || $limit < 1 ) { @@ -260,9 +265,10 @@ if ( $after ) { if ( $entityType === null ) { // Ugly. About time we switch to qualified, string based IDs! - $where[] = '( ( epp_entity_type = ' . $dbr->addQuotes( $after->getEntityType() ) . - 'AND epp_entity_id > ' . $after->getNumericId() . ' ) ' . - ' OR epp_entity_type > ' . $dbr->addQuotes( $after->getEntityType() ) . ' )'; + // NOTE: this must be consistent with the sort order, see above! + $where[] = '( ( epp_entity_type > ' . $dbr->addQuotes( $after->getEntityType() ) . + 'AND epp_entity_id = ' . $after->getNumericId() . ' ) ' . + ' OR epp_entity_id > ' . $after->getNumericId() . ' )'; } else { $where[] = 'epp_entity_id > ' . $after->getNumericId(); } @@ -274,7 +280,7 @@ $where, __METHOD__, array( - 'ORDER BY' => array( 'epp_entity_type', 'epp_entity_id' ), + 'ORDER BY' => $orderBy, 'LIMIT' => $limit ) ); diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/EntityPerPageTableTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/EntityPerPageTableTest.php index acf79c1..73dc203 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/EntityPerPageTableTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/EntityPerPageTableTest.php @@ -106,7 +106,7 @@ $expectedIds = $this->getIdStrings( $expected ); $actualIds = $this->getIdStrings( $actual ); - $this->assertArrayEquals( $expectedIds, $actualIds, $msg ); + $this->assertArrayEquals( $expectedIds, $actualIds, false ); } /** diff --git a/vendor/autoload.php b/vendor/autoload.php index 25cf840..1d14c9a 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer' . '/autoload_real.php'; -return ComposerAutoloaderInitf82899569e5001c1e2867d6eeeee90cc::getLoader(); +return ComposerAutoloaderInit5eaf4872d60c70030410d914cbc97820::getLoader(); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 8027099..8f6fc4d 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInitf82899569e5001c1e2867d6eeeee90cc +class ComposerAutoloaderInit5eaf4872d60c70030410d914cbc97820 { private static $loader; @@ -19,9 +19,9 @@ return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInitf82899569e5001c1e2867d6eeeee90cc', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit5eaf4872d60c70030410d914cbc97820', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInitf82899569e5001c1e2867d6eeeee90cc', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit5eaf4872d60c70030410d914cbc97820', 'loadClassLoader')); $vendorDir = dirname(__DIR__); $baseDir = dirname($vendorDir); @@ -45,14 +45,14 @@ $includeFiles = require __DIR__ . '/autoload_files.php'; foreach ($includeFiles as $file) { - composerRequiref82899569e5001c1e2867d6eeeee90cc($file); + composerRequire5eaf4872d60c70030410d914cbc97820($file); } return $loader; } } -function composerRequiref82899569e5001c1e2867d6eeeee90cc($file) +function composerRequire5eaf4872d60c70030410d914cbc97820($file) { require $file; } diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index f4fd8a5..77fea99 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -896,12 +896,12 @@ "source": { "type": "git", "url": "https://github.com/wikimedia/mediawiki-extensions-Wikibase.git", - "reference": "0bde25d160b68ae8e9ec2611ed6cccc66e220916" + "reference": "6d9387ea98e3de2c13961482e067d30593d62980" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/0bde25d160b68ae8e9ec2611ed6cccc66e220916", - "reference": "0bde25d160b68ae8e9ec2611ed6cccc66e220916", + "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/6d9387ea98e3de2c13961482e067d30593d62980", + "reference": "6d9387ea98e3de2c13961482e067d30593d62980", "shasum": "" }, "require": { @@ -924,7 +924,7 @@ "conflict": { "mediawiki/mediawiki": "<1.23" }, - "time": "2014-05-09 22:24:08", + "time": "2014-05-10 20:02:04", "type": "mediawiki-extension", "installation-source": "dist", "autoload": { -- To view, visit https://gerrit.wikimedia.org/r/132787 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icec5762829fd130d09786e9c8874876c43f161d3 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikidata Gerrit-Branch: master Gerrit-Owner: WikidataBuilder <wikidata-servi...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits