Aude has uploaded a new change for review. https://gerrit.wikimedia.org/r/207375
Change subject: Update Wikidata - fixes for subscription table script, dumps, and entering statements ...................................................................... Update Wikidata - fixes for subscription table script, dumps, and entering statements Change-Id: I4622fb55aa9f6e1be9e5f1298ccaa96f2a24b3d5 --- M composer.lock M extensions/Wikibase/repo/includes/Dumpers/DumpGenerator.php M extensions/Wikibase/repo/includes/store/sql/ChangesSubscriptionTableBuilder.php M extensions/Wikibase/repo/maintenance/populateChangesSubscription.php M extensions/Wikibase/repo/tests/phpunit/includes/store/sql/ChangesSubscriptionTableBuilderTest.php M extensions/Wikibase/view/resources/jquery/wikibase/snakview/snakview.js M vendor/composer/autoload_files.php M vendor/composer/installed.json 8 files changed, 142 insertions(+), 117 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata refs/changes/75/207375/1 diff --git a/composer.lock b/composer.lock index afbc955..cba2749 100644 --- a/composer.lock +++ b/composer.lock @@ -1209,12 +1209,12 @@ "source": { "type": "git", "url": "https://github.com/wikimedia/mediawiki-extensions-Wikibase.git", - "reference": "74e802a19e4f3e0e072ea18320fe7dd567982f02" + "reference": "3a3d6746de1d3b6581197b1ef955879a2840dd6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/74e802a19e4f3e0e072ea18320fe7dd567982f02", - "reference": "74e802a19e4f3e0e072ea18320fe7dd567982f02", + "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/3a3d6746de1d3b6581197b1ef955879a2840dd6c", + "reference": "3a3d6746de1d3b6581197b1ef955879a2840dd6c", "shasum": "" }, "require": { @@ -1282,7 +1282,7 @@ "wikibaserepo", "wikidata" ], - "time": "2015-04-15 13:52:19" + "time": "2015-04-29 03:37:40" }, { "name": "wikibase/wikimedia-badges", diff --git a/extensions/Wikibase/repo/includes/Dumpers/DumpGenerator.php b/extensions/Wikibase/repo/includes/Dumpers/DumpGenerator.php index 1a27798..e5208e5 100644 --- a/extensions/Wikibase/repo/includes/Dumpers/DumpGenerator.php +++ b/extensions/Wikibase/repo/includes/Dumpers/DumpGenerator.php @@ -290,7 +290,7 @@ $toLoad[] = $entityId; } } - $this->entityPrefetcher->prefetch( $entityIds ); + $this->entityPrefetcher->prefetch( $toLoad ); foreach ( $toLoad as $entityId ) { try { diff --git a/extensions/Wikibase/repo/includes/store/sql/ChangesSubscriptionTableBuilder.php b/extensions/Wikibase/repo/includes/store/sql/ChangesSubscriptionTableBuilder.php index 3e1472b..3b27835 100644 --- a/extensions/Wikibase/repo/includes/store/sql/ChangesSubscriptionTableBuilder.php +++ b/extensions/Wikibase/repo/includes/store/sql/ChangesSubscriptionTableBuilder.php @@ -43,13 +43,24 @@ private $progressReporter; /** + * @var string 'verbose' or 'standard' + */ + private $verbosity; + + /** * @param LoadBalancer $loadBalancer * @param string $tableName * @param int $batchSize + * @param string $verbosity Either 'standard' or 'verbose' * * @throws InvalidArgumentException */ - public function __construct( LoadBalancer $loadBalancer, $tableName, $batchSize = 1000 ) { + public function __construct( + LoadBalancer $loadBalancer, + $tableName, + $batchSize, + $verbosity = 'standard' + ) { if ( !is_string( $tableName ) ) { throw new InvalidArgumentException( '$tableName must be a string' ); } @@ -58,9 +69,15 @@ throw new InvalidArgumentException( '$batchSize must be an integer >= 1' ); } + if ( $verbosity !== 'standard' && $verbosity !== 'verbose' ) { + throw new InvalidArgumentException( '$verbosity must be either "verbose"' + . ' or "standard".' ); + } + $this->loadBalancer = $loadBalancer; $this->tableName = $tableName; $this->batchSize = $batchSize; + $this->verbosity = $verbosity; $this->exceptionHandler = new LogWarningExceptionHandler(); $this->progressReporter = new NullMessageReporter(); @@ -100,7 +117,7 @@ * @param ItemId $startItem The item to start with. */ public function fillSubscriptionTable( ItemId $startItem = null ) { - $continuation = $startItem === null ? null : array( $startItem->getNumericId(), '' ); + $continuation = $startItem === null ? null : array( $startItem->getNumericId(), 0 ); while ( true ) { $count = $this->processSubscriptionBatch( $continuation ); @@ -157,6 +174,11 @@ ) ); + if ( $this->verbosity === 'verbose' ) { + $this->progressReporter->reportMessage( 'Inserted ' . $db->affectedRows() + . ' into wb_changes_subscription' ); + } + $c+= count( $rows ); } @@ -171,29 +193,33 @@ * @return array[] An associative array mapping item IDs to lists of site IDs. */ private function getSubscriptionsPerItemBatch( DatabaseBase $db, &$continuation = array() ) { - if ( empty( $continuation ) ) { $continuationCondition = '1'; } else { - list( $fromItemId, $fromSiteId ) = $continuation; + list( $fromItemId, $fromRowId ) = $continuation; $continuationCondition = 'ips_item_id > ' . (int)$fromItemId . ' OR ( ' . 'ips_item_id = ' . (int)$fromItemId . ' AND ' - . 'ips_site_id > ' . $db->addQuotes( $fromSiteId ) + . 'ips_row_id > ' . $fromRowId . ' )'; } $res = $db->select( 'wb_items_per_site', - array( 'ips_item_id', 'ips_site_id' ), + array( 'ips_row_id', 'ips_item_id', 'ips_site_id' ), $continuationCondition, __METHOD__, array( 'LIMIT' => $this->batchSize, - 'ORDER BY' => 'ips_item_id, ips_site_id' + 'ORDER BY' => 'ips_item_id, ips_row_id' ) ); + + if ( $this->verbosity === 'verbose' ) { + $this->progressReporter->reportMessage( 'Selected ' . $res->numRows() . ' wb_item_per_site records' + . ' with continuation: ' . $continuationCondition ); + } return $this->getSubscriptionsPerItemFromRows( $res, $continuation ); } @@ -211,17 +237,17 @@ ) { $subscriptionsPerItem = array(); - $currentId = 0; + $currentItemId = 0; $itemId = null; foreach ( $res as $row ) { - if ( $row->ips_item_id != $currentId ) { + if ( $row->ips_item_id != $currentItemId ) { $currentItemId = $row->ips_item_id; $itemId = ItemId::newFromNumber( $currentItemId )->getSerialization(); } $subscriptionsPerItem[$itemId][] = $row->ips_site_id; - $continuation = array( $currentItemId, $row->ips_site_id ); + $continuation = array( $currentItemId, $row->ips_row_id ); } return $subscriptionsPerItem; diff --git a/extensions/Wikibase/repo/maintenance/populateChangesSubscription.php b/extensions/Wikibase/repo/maintenance/populateChangesSubscription.php index 49e957c..478d650 100644 --- a/extensions/Wikibase/repo/maintenance/populateChangesSubscription.php +++ b/extensions/Wikibase/repo/maintenance/populateChangesSubscription.php @@ -26,6 +26,7 @@ $this->mDescription = 'Populate the wb_changes_subscription table based on entries in wb_items_per_site.'; $this->addOption( 'start-item', "The item ID to start from.", false, true ); + $this->addOption( 'verbose', 'Report more detailed script progress.' ); parent::__construct(); @@ -52,6 +53,8 @@ throw new EntityIdParsingException( 'Not an Item ID: ' . $startItemOption ); } + $verbose = (bool) $this->getOption( 'verbose', false ); + $reporter = new ObservableMessageReporter(); $reporter->registerReporterCallback( array( $this, 'report' ) @@ -60,7 +63,8 @@ $builder = new ChangesSubscriptionTableBuilder( wfGetLB(), 'wb_changes_subscription', - $this->mBatchSize + $this->mBatchSize, + $verbose ? 'verbose' : 'standard' ); $builder->setProgressReporter( $reporter ); @@ -85,7 +89,7 @@ * @param string $msg */ public function report( $msg ) { - $this->output( "$msg\n" ); + $this->output( date( 'H:i:s' ) . ": $msg\n" ); } } diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/ChangesSubscriptionTableBuilderTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/ChangesSubscriptionTableBuilderTest.php index efb08df..94795d1 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/ChangesSubscriptionTableBuilderTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/store/sql/ChangesSubscriptionTableBuilderTest.php @@ -40,13 +40,19 @@ /** * @param int $batchSize + * @param string $verbosity * * @return ChangesSubscriptionTableBuilder */ - private function getChangesSubscriptionTableBuilder( $batchSize = 10 ) { + private function getChangesSubscriptionTableBuilder( $batchSize, $verbosity ) { $loadBalancer = wfGetLB(); - return new ChangesSubscriptionTableBuilder( $loadBalancer, self::TABLE_NAME, $batchSize ); + return new ChangesSubscriptionTableBuilder( + $loadBalancer, + self::TABLE_NAME, + $batchSize, + $verbosity + ); } public function testFillSubscriptionTable() { @@ -58,7 +64,7 @@ array( 22, 'frwiki' ), ) ); - $primer = $this->getChangesSubscriptionTableBuilder( 3 ); + $primer = $this->getChangesSubscriptionTableBuilder( 3, 'standard' ); $primer->setProgressReporter( $this->getMessageReporter( $this->exactly( 2 ) ) ); $primer->setExceptionHandler( $this->getExceptionHandler( $this->exactly( 0 ) ) ); @@ -86,8 +92,8 @@ array( 22, 'frwiki' ), ) ); - $primer = $this->getChangesSubscriptionTableBuilder( 3 ); - $primer->setProgressReporter( $this->getMessageReporter( $this->exactly( 1 ) ) ); + $primer = $this->getChangesSubscriptionTableBuilder( 3, 'verbose' ); + $primer->setProgressReporter( $this->getMessageReporter( $this->exactly( 4 ) ) ); $primer->setExceptionHandler( $this->getExceptionHandler( $this->exactly( 0 ) ) ); $primer->fillSubscriptionTable( new ItemId( 'Q20' ) ); diff --git a/extensions/Wikibase/view/resources/jquery/wikibase/snakview/snakview.js b/extensions/Wikibase/view/resources/jquery/wikibase/snakview/snakview.js index c870021..2a1bd71 100644 --- a/extensions/Wikibase/view/resources/jquery/wikibase/snakview/snakview.js +++ b/extensions/Wikibase/view/resources/jquery/wikibase/snakview/snakview.js @@ -248,17 +248,6 @@ self._trigger( 'change' ); } } ) - .on( 'keydown', function( event ) { - // When pressing TAB, ENTER or clicking in the property input element while the value - // input element does not yet exist, we assume that the user wants to - // auto-complete/select the currently suggested property and tab into the value - // element. Since the API needs to be queried to construct the correct value input, - // the intended action needs to be cached and triggered as soon as the value input - // has been created. - if ( event.keyCode === $.ui.keyCode.TAB || event.keyCode === $.ui.keyCode.ENTER ) { - self._selectProperty(); - } - } ) .on( 'entityselectorselected', function( event, entityId ) { self._selectProperty(); } ); diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index 51e312c..25187cc 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -22,6 +22,6 @@ $baseDir . '/extensions/ValueView/ValueView.php', $vendorDir . '/data-values/data-types/DataTypes.php', $vendorDir . '/data-values/validators/Validators.php', - $baseDir . '/extensions/Wikibase/Wikibase.composer.php', $baseDir . '/extensions/WikimediaBadges/WikimediaBadges.php', + $baseDir . '/extensions/Wikibase/Wikibase.composer.php', ); diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 6994134..86457af 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1193,89 +1193,6 @@ ] }, { - "name": "wikibase/wikibase", - "version": "dev-wmf/1.26wmf2", - "version_normalized": "dev-wmf/1.26wmf2", - "source": { - "type": "git", - "url": "https://github.com/wikimedia/mediawiki-extensions-Wikibase.git", - "reference": "74e802a19e4f3e0e072ea18320fe7dd567982f02" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/74e802a19e4f3e0e072ea18320fe7dd567982f02", - "reference": "74e802a19e4f3e0e072ea18320fe7dd567982f02", - "shasum": "" - }, - "require": { - "data-values/common": "~0.2.0", - "data-values/data-types": "~0.4.0", - "data-values/data-values": "~1.0.0", - "data-values/geo": "~1.0", - "data-values/interfaces": "^0.1.5", - "data-values/javascript": "~0.6.0", - "data-values/number": "~0.4.0", - "data-values/serialization": "~1.0", - "data-values/time": "~0.6.0", - "data-values/validators": "~0.1.0", - "data-values/value-view": "~0.14.0", - "diff/diff": "~1.0", - "php": ">=5.3.2", - "wikibase/data-model": "~2.5", - "wikibase/data-model-javascript": "~1.0", - "wikibase/data-model-serialization": "~1.2", - "wikibase/internal-serialization": "~1.3", - "wikibase/javascript-api": "~1.0", - "wikibase/serialization-javascript": "~2.0" - }, - "conflict": { - "mediawiki/mediawiki": "<1.23" - }, - "time": "2015-04-15 13:52:19", - "type": "mediawiki-extension", - "installation-source": "dist", - "autoload": { - "files": [ - "Wikibase.composer.php" - ], - "classmap": [ - "client/includes/", - "client/WikibaseClient.hooks.php", - "client/tests/phpunit/", - "lib/includes/", - "lib/WikibaseLib.hooks.php", - "lib/tests/phpunit/", - "repo/includes/", - "repo/maintenance/", - "repo/tests/phpunit/", - "repo/Wikibase.hooks.php" - ], - "psr-4": { - "Wikibase\\View\\": "view/src", - "Wikimedia\\Purtle\\": "purtle/src", - "Wikimedia\\Purtle\\Tests\\": "purtle/tests/phpunit" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "The Wikidata team" - } - ], - "description": "Structured data repository for MediaWiki", - "homepage": "http://wikiba.se", - "keywords": [ - "wikibase", - "wikibaseclient", - "wikibaselib", - "wikibaserepo", - "wikidata" - ] - }, - { "name": "wikibase/wikimedia-badges", "version": "dev-master", "version_normalized": "9999999-dev", @@ -1374,5 +1291,88 @@ "irc": "irc://irc.freenode.net/wikidata", "source": "https://github.com/wmde/Wikidata.org/tree/master" } + }, + { + "name": "wikibase/wikibase", + "version": "dev-wmf/1.26wmf2", + "version_normalized": "dev-wmf/1.26wmf2", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/mediawiki-extensions-Wikibase.git", + "reference": "3a3d6746de1d3b6581197b1ef955879a2840dd6c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/3a3d6746de1d3b6581197b1ef955879a2840dd6c", + "reference": "3a3d6746de1d3b6581197b1ef955879a2840dd6c", + "shasum": "" + }, + "require": { + "data-values/common": "~0.2.0", + "data-values/data-types": "~0.4.0", + "data-values/data-values": "~1.0.0", + "data-values/geo": "~1.0", + "data-values/interfaces": "^0.1.5", + "data-values/javascript": "~0.6.0", + "data-values/number": "~0.4.0", + "data-values/serialization": "~1.0", + "data-values/time": "~0.6.0", + "data-values/validators": "~0.1.0", + "data-values/value-view": "~0.14.0", + "diff/diff": "~1.0", + "php": ">=5.3.2", + "wikibase/data-model": "~2.5", + "wikibase/data-model-javascript": "~1.0", + "wikibase/data-model-serialization": "~1.2", + "wikibase/internal-serialization": "~1.3", + "wikibase/javascript-api": "~1.0", + "wikibase/serialization-javascript": "~2.0" + }, + "conflict": { + "mediawiki/mediawiki": "<1.23" + }, + "time": "2015-04-29 03:37:40", + "type": "mediawiki-extension", + "installation-source": "dist", + "autoload": { + "files": [ + "Wikibase.composer.php" + ], + "classmap": [ + "client/includes/", + "client/WikibaseClient.hooks.php", + "client/tests/phpunit/", + "lib/includes/", + "lib/WikibaseLib.hooks.php", + "lib/tests/phpunit/", + "repo/includes/", + "repo/maintenance/", + "repo/tests/phpunit/", + "repo/Wikibase.hooks.php" + ], + "psr-4": { + "Wikibase\\View\\": "view/src", + "Wikimedia\\Purtle\\": "purtle/src", + "Wikimedia\\Purtle\\Tests\\": "purtle/tests/phpunit" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "The Wikidata team" + } + ], + "description": "Structured data repository for MediaWiki", + "homepage": "http://wikiba.se", + "keywords": [ + "wikibase", + "wikibaseclient", + "wikibaselib", + "wikibaserepo", + "wikidata" + ] } ] -- To view, visit https://gerrit.wikimedia.org/r/207375 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4622fb55aa9f6e1be9e5f1298ccaa96f2a24b3d5 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikidata Gerrit-Branch: wmf/1.26wmf2 Gerrit-Owner: Aude <aude.w...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits