Page MenuHomePhabricator

Implement DatabaseTermIdsResolver::resolveTermsViaJoin
Closed, ResolvedPublic

Description

To enable more performant joins in Database implementations of new terms store when being searched against starting from specific externally linked records, we want to support passing join information instead of term ids that DatabaseTermIdsResolver can use to determine which term ids to select.

Use case was discovered in parent task. Suggested solution comes from a comment on it T225003#5256375:

	// in DatabaseTermIdsResolver

	public function resolveGroupedTermConditions( array $groupedWhatevers ) {
		foreach ( $groupedWhatevers as $groupedWhatever ) {
			list ( $tables, $conditions ) = $groupedWhatever;

			$result = $db->select(
				array_merge( 
					[ 'wbt_term_in_lang', 'wbt_text_in_lang', 'wbt_text' ],
					$tables
				),
				[ 'wbtl_id', 'wbtl_type_id', 'wbxl_language', 'wbx_text' ],
				array_merge( [
					'wbtl_text_in_lang_id=wbxl_id',
					'wbxl_text_id=wbx_id',
				], $conditions ),
				__METHOD__
			);
			$this->preloadTypes( $result );
			foreach ( $result as $row ) {
				foreach ( $groupNamesByTermIds[$row->wbtl_id] as $groupName ) {
					$this->addResultTerms( $groupedTerms[$groupName], $row );
				}
			}
			return $groupedTerms;
		}
	}

	// in DatabasePropertyTermStore

	$this->resolver->resolveGroupedTermConditions( [
		'P1' => [
			// extra tables
			[ 'wbt_property_terms' ],
			// extra conditions
			[
				'wbpt_term_in_lang_id=wbtl_id',
				'wbpt_property_id' => $numericPropertyIds,
			],
		],
	] );

Event Timeline

Restricted Application removed a project: Patch-For-Review. · View Herald TranscriptJun 13 2019, 11:48 AM
alaa_wmde removed hoo as the assignee of this task.Jun 13 2019, 11:50 AM
alaa_wmde added a subscriber: hoo.
Lucas_Werkmeister_WMDE updated the task description. (Show Details)
alaa_wmde updated the task description. (Show Details)Jun 13 2019, 1:20 PM
alaa_wmde updated the task description. (Show Details)

Change 516781 had a related patch set uploaded (by Alaa Sarhan; owner: Alaa Sarhan):
[mediawiki/extensions/Wikibase@master] Add DatabaseTermIdsResolver::resolveTermsViaJoin method

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

alaa_wmde renamed this task from Implement DatabaseTermIdsResolver::resolveGroupedTermConditions to Implement DatabaseTermIdsResolver::resolveTermsViaJoin.Jun 15 2019, 7:05 AM

Change 516781 merged by jenkins-bot:
[mediawiki/extensions/Wikibase@master] Add DatabaseTermIdsResolver::resolveTermsViaJoin method

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

hoo closed this task as Resolved.Jun 19 2019, 8:57 AM
hoo moved this task from In Review to Done on the Wikidata wb_terms Trailblazing board.
hoo removed a project: Patch-For-Review.