Aude has uploaded a new change for review. https://gerrit.wikimedia.org/r/235262
Change subject: Don't include statements diff in wb_changes ...................................................................... Don't include statements diff in wb_changes These are unused by the change dispatcher and by change handling in the client. Serializing and deserializing of statements is costly, performance-wise, and if we don't need them then we can omit them. Bug: T110996 Change-Id: I8f646c16fb24b6f12e22991cb28470eb533427e2 (cherry picked from commit 3160ff902fa06041ecb9e13340352d51afd48844) --- M lib/includes/changes/EntityChangeFactory.php M lib/tests/phpunit/changes/EntityChangeFactoryTest.php 2 files changed, 33 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/62/235262/1 diff --git a/lib/includes/changes/EntityChangeFactory.php b/lib/includes/changes/EntityChangeFactory.php index 06d9638..20b186a 100644 --- a/lib/includes/changes/EntityChangeFactory.php +++ b/lib/includes/changes/EntityChangeFactory.php @@ -8,6 +8,7 @@ use Wikibase\DataModel\Entity\EntityDocument; use Wikibase\DataModel\Entity\EntityId; use Wikibase\DataModel\Services\Diff\EntityDiffer; +use Wikibase\DataModel\Statement\StatementList; use Wikibase\EntityChange; use Wikibase\EntityFactory; @@ -131,6 +132,11 @@ $theEntity = $newEntity; } + // don't include statements diff, since those are unused and not helpful + // performance-wise to the dispatcher and change handling. + $oldEntity->setStatements( new StatementList() ); + $newEntity->setStatements( new StatementList() ); + $diff = $this->entityDiffer->diffEntities( $oldEntity, $newEntity ); /** diff --git a/lib/tests/phpunit/changes/EntityChangeFactoryTest.php b/lib/tests/phpunit/changes/EntityChangeFactoryTest.php index 50be804..80530d8 100644 --- a/lib/tests/phpunit/changes/EntityChangeFactoryTest.php +++ b/lib/tests/phpunit/changes/EntityChangeFactoryTest.php @@ -15,6 +15,8 @@ use Wikibase\DataModel\Services\Diff\EntityDiffer; use Wikibase\DataModel\SiteLink; use Wikibase\DataModel\Snak\PropertyNoValueSnak; +use Wikibase\DataModel\Statement\Statement; +use Wikibase\DataModel\Statement\StatementList; use Wikibase\EntityChange; use Wikibase\EntityFactory; use Wikibase\Lib\Changes\EntityChangeFactory; @@ -173,4 +175,29 @@ ); } + public function testNewFromUpdate_excludeStatementsInDiffs() { + $factory = $this->getEntityChangeFactory(); + + $item = new Item( new ItemId( 'Q3' ) ); + $statementList = new StatementList( array( + new Statement( new PropertyNoValueSnak( 9000 ) ) + ) ); + + $item->setStatements( $statementList ); + + $updatedItem = new Item( new ItemId( 'Q3' ) ); + $statementList = new StatementList( array( + new Statement( new PropertyNoValueSnak( 10 ) ) + ) ); + + $updatedItem->setStatements( $statementList ); + + $change = $factory->newFromUpdate( EntityChange::UPDATE, $item, $updatedItem ); + + $this->assertTrue( + $change->getDiff()->isEmpty(), + 'Diff excludes statement changes and is empty' + ); + } + } -- To view, visit https://gerrit.wikimedia.org/r/235262 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8f646c16fb24b6f12e22991cb28470eb533427e2 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: wmf/1.26wmf20 Gerrit-Owner: Aude <aude.w...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits