Daniel Kinzler has uploaded a new change for review. https://gerrit.wikimedia.org/r/72515
Change subject: Auto-populate wb_property_info in updater. ...................................................................... Auto-populate wb_property_info in updater. Change-Id: I7ba72849258d26a106eb39b9ac91de9b800042fc --- M lib/includes/store/sql/PropertyInfoTable.php M repo/includes/store/sql/PropertyInfoTableBuilder.php 2 files changed, 54 insertions(+), 2 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/15/72515/1 diff --git a/lib/includes/store/sql/PropertyInfoTable.php b/lib/includes/store/sql/PropertyInfoTable.php index 8c1c3e0..cd8b99d 100644 --- a/lib/includes/store/sql/PropertyInfoTable.php +++ b/lib/includes/store/sql/PropertyInfoTable.php @@ -83,10 +83,40 @@ } $updater->addExtensionTable( $table, $file ); + + // populate the table after creating it + $updater->addExtensionUpdate( array( + array( 'Wikibase\PropertyInfoTable', 'rebuildPropertyInfo' ) + ) ); } } /** + * Wrapper for invoking PropertyInfoTableBuilder from DatabaseUpdater + * during a database update. + * + * @param \DatabaseUpdater $updater + */ + public static function rebuildPropertyInfo( \DatabaseUpdater $updater ) { + $reporter = new \ObservableMessageReporter(); + $reporter->registerReporterCallback( + function ( $msg ) use ( $updater ) { + $updater->output( "..." . $msg . "\n" ); + } + ); + + $table = new PropertyInfoTable( false ); + $entityLookup = new WikiPageEntityLookup( false ); + + $builder = new PropertyInfoTableBuilder( $table, $entityLookup ); + $builder->setReporter( $reporter ); + $builder->setUseTransactions( false ); + + $updater->output( 'Populating ' . $table->getTableName() . "\n" ); + $builder->rebuildPropertyInfo(); + } + + /** * @see PropertyInfoStore::getPropertyInfo * * @param EntityId $propertyId diff --git a/repo/includes/store/sql/PropertyInfoTableBuilder.php b/repo/includes/store/sql/PropertyInfoTableBuilder.php index 0bd53ac..f183adc 100644 --- a/repo/includes/store/sql/PropertyInfoTableBuilder.php +++ b/repo/includes/store/sql/PropertyInfoTableBuilder.php @@ -52,6 +52,13 @@ protected $reporter; /** + * @since 0.4 + * + * @var bool + */ + protected $useTransactions = true; + + /** * Whether all entries should be updated, or only missing entries * * @var bool @@ -136,6 +143,17 @@ } /** + * Enables or disables transactions. + * The only good reason to disable transactions is to be able to + * run the rebuild inside an already existing transaction. + * + * @param bool $useTransactions + */ + public function setUseTransactions( $useTransactions ) { + $this->useTransactions = $useTransactions; + } + + /** * Rebuild the property info entries. * Use the rebuildPropertyInfo.php maintenance script to invoke this from the command line. * @@ -173,7 +191,9 @@ // as that would cause the site to be rendered read only. $this->waitForSlaves( $dbw ); - $dbw->begin(); + if ( $this->useTransactions ) { + $dbw->begin(); + } $props = $dbw->select( $tables, @@ -208,7 +228,9 @@ $c+= 1; } - $dbw->commit(); + if ( $this->useTransactions ) { + $dbw->commit(); + } $this->report( "Updated $c properties, up to ID $rowId." ); $total += $c; -- To view, visit https://gerrit.wikimedia.org/r/72515 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7ba72849258d26a106eb39b9ac91de9b800042fc Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Daniel Kinzler <daniel.kinz...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits