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

Reply via email to