Hoo man has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/229487

Change subject: Update Wikibase: Fix the dumpJson and the rebuildItemsPerSite 
maintenance scripts
......................................................................

Update Wikibase: Fix the dumpJson and the rebuildItemsPerSite maintenance 
scripts

Change-Id: I58cb4cfe4df7a1dc35c53b53d25c1790e662b23b
---
M composer.lock
M extensions/Wikibase/lib/includes/serialization/CallbackFactory.php
M extensions/Wikibase/lib/includes/store/sql/SiteLinkTable.php
M extensions/Wikibase/lib/tests/phpunit/store/Sql/SiteLinkTableTest.php
M vendor/composer/installed.json
5 files changed, 37 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata 
refs/changes/87/229487/1

diff --git a/composer.lock b/composer.lock
index da6ed65..e8c1a25 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1325,7 +1325,7 @@
             "source": {
                 "type": "git",
                 "url": 
"https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Wikibase.git";,
-                "reference": "dd964136cd6127dc5bfd74a9c46dce75c2d09ea5"
+                "reference": "42fb0141a267d5ed4fc7593b3b29e0102377facd"
             },
             "require": {
                 "data-values/common": "~0.2.0",
@@ -1403,7 +1403,7 @@
                 "issues": "https://phabricator.wikimedia.org/";,
                 "irc": "irc://irc.freenode.net/wikidata"
             },
-            "time": "2015-08-04 16:45:24"
+            "time": "2015-08-05 19:57:02"
         },
         {
             "name": "wikibase/wikimedia-badges",
diff --git a/extensions/Wikibase/lib/includes/serialization/CallbackFactory.php 
b/extensions/Wikibase/lib/includes/serialization/CallbackFactory.php
index 61e6b5d..00b4e2f 100644
--- a/extensions/Wikibase/lib/includes/serialization/CallbackFactory.php
+++ b/extensions/Wikibase/lib/includes/serialization/CallbackFactory.php
@@ -5,6 +5,7 @@
 use ApiResult;
 use Wikibase\DataModel\Entity\PropertyDataTypeLookup;
 use Wikibase\DataModel\Entity\PropertyId;
+use Wikibase\DataModel\Services\Lookup\PropertyNotFoundException;
 
 /**
  * @since 0.5
@@ -52,9 +53,13 @@
        ) {
                return function ( $array ) use ( $dataTypeLookup ) {
                        foreach ( $array as $propertyIdGroupKey => &$snakGroup 
) {
-                               $dataType = 
$dataTypeLookup->getDataTypeIdForProperty( new PropertyId( $propertyIdGroupKey 
) );
-                               foreach ( $snakGroup as &$snak ) {
-                                       $snak['datatype'] = $dataType;
+                               try{
+                                       $dataType = 
$dataTypeLookup->getDataTypeIdForProperty( new PropertyId( $propertyIdGroupKey 
) );
+                                       foreach ( $snakGroup as &$snak ) {
+                                               $snak['datatype'] = $dataType;
+                                       }
+                               } catch ( PropertyNotFoundException $e ) {
+                                       //XXX: shall we set 
$serialization['datatype'] = 'bad' ??
                                }
                        }
                        return $array;
@@ -63,8 +68,12 @@
 
        public function getCallbackToAddDataTypeToSnak( PropertyDataTypeLookup 
$dataTypeLookup ) {
                return function ( $array ) use ( $dataTypeLookup ) {
-                       $dataType = $dataTypeLookup->getDataTypeIdForProperty( 
new PropertyId( $array['property'] ) );
-                       $array['datatype'] = $dataType;
+                       try{
+                               $dataType = 
$dataTypeLookup->getDataTypeIdForProperty( new PropertyId( $array['property'] ) 
);
+                               $array['datatype'] = $dataType;
+                       } catch ( PropertyNotFoundException $e ) {
+                               //XXX: shall we set $serialization['datatype'] 
= 'bad' ??
+                       }
                        return $array;
                };
        }
diff --git a/extensions/Wikibase/lib/includes/store/sql/SiteLinkTable.php 
b/extensions/Wikibase/lib/includes/store/sql/SiteLinkTable.php
index f34516f..bb71d58 100644
--- a/extensions/Wikibase/lib/includes/store/sql/SiteLinkTable.php
+++ b/extensions/Wikibase/lib/includes/store/sql/SiteLinkTable.php
@@ -151,9 +151,12 @@
                                        'ips_site_id' => $link->getSiteId(),
                                        'ips_site_page' => $link->getPageName()
                                ),
-                               __METHOD__
+                               __METHOD__,
+                               array( 'IGNORE' )
                        );
 
+                       $success = $success && $dbw->affectedRows();
+
                        if ( !$success ) {
                                break;
                        }
diff --git 
a/extensions/Wikibase/lib/tests/phpunit/store/Sql/SiteLinkTableTest.php 
b/extensions/Wikibase/lib/tests/phpunit/store/Sql/SiteLinkTableTest.php
index d19bbda..b04beac 100644
--- a/extensions/Wikibase/lib/tests/phpunit/store/Sql/SiteLinkTableTest.php
+++ b/extensions/Wikibase/lib/tests/phpunit/store/Sql/SiteLinkTableTest.php
@@ -66,6 +66,21 @@
        }
 
        /**
+        * @depends testSaveLinksOfItem
+        */
+       public function testSaveLinksOfItem_duplicate() {
+               if ( wfGetDB( DB_MASTER )->getType() === 'sqlite' ) {
+                       $this->markTestSkipped( "Duplicated tables don't have 
indexes on them in SQLite, thus we can't test uniqueness handling." );
+               }
+
+               $item = new Item( new ItemId( 'Q2' ) );
+               $item->getSiteLinkList()->addNewSiteLink( 'enwiki', 'Beer' );
+
+               $res = $this->siteLinkTable->saveLinksOfItem( $item );
+               $this->assertFalse( $res );
+       }
+
+       /**
         * @dataProvider itemProvider
         */
        public function testUpdateLinksOfItem() {
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 9ed5df7..6e98d64 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1417,7 +1417,7 @@
         "source": {
             "type": "git",
             "url": 
"https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Wikibase.git";,
-            "reference": "dd964136cd6127dc5bfd74a9c46dce75c2d09ea5"
+            "reference": "42fb0141a267d5ed4fc7593b3b29e0102377facd"
         },
         "require": {
             "data-values/common": "~0.2.0",
@@ -1446,7 +1446,7 @@
         "require-dev": {
             "squizlabs/php_codesniffer": "~2.1"
         },
-        "time": "2015-08-04 13:42:17",
+        "time": "2015-08-05 14:29:05",
         "type": "mediawiki-extension",
         "installation-source": "source",
         "autoload": {

-- 
To view, visit https://gerrit.wikimedia.org/r/229487
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I58cb4cfe4df7a1dc35c53b53d25c1790e662b23b
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: wmf/1.26wmf16
Gerrit-Owner: Hoo man <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to