Yaron Koren has uploaded a new change for review. https://gerrit.wikimedia.org/r/50710
Change subject: Added support for SMW's SQLStore3 (finally) for remote autocompletion ...................................................................... Added support for SMW's SQLStore3 (finally) for remote autocompletion Change-Id: Ic8c57ccdf5347dfb7670b371734e7f6abec3b746 --- M includes/SF_AutocompleteAPI.php 1 file changed, 44 insertions(+), 13 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/SemanticForms refs/changes/10/50710/1 diff --git a/includes/SF_AutocompleteAPI.php b/includes/SF_AutocompleteAPI.php index ec947d5..1757e6a 100644 --- a/includes/SF_AutocompleteAPI.php +++ b/includes/SF_AutocompleteAPI.php @@ -135,6 +135,7 @@ private static function getAllValuesForProperty( $property_name, $substring, $base_property_name = null, $base_value = null ) { global $sfgMaxAutocompleteValues, $sfgCacheAutocompleteValues, $sfgAutocompleteCacheTimeout; + global $smwgDefaultStore; $values = array(); $db = wfGetDB( DB_SLAVE ); @@ -164,11 +165,26 @@ } if ( $is_relation ) { - $value_field = 'o_ids.smw_title'; - $from_clause = $db->tableName( 'smw_rels2' ) . " r JOIN " . $db->tableName( 'smw_ids' ) . " p_ids ON r.p_id = p_ids.smw_id JOIN " . $db->tableName( 'smw_ids' ) . " o_ids ON r.o_id = o_ids.smw_id"; + $valueField = 'o_ids.smw_title'; + if ( $smwgDefaultStore === 'SMWSQLStore3' ) { + $idsTable = $db->tableName( 'smw_object_ids' ); + $propsTable = $db->tableName( 'smw_di_wikipage' ); + } else { + $idsTable = $db->tableName( 'smw_ids' ); + $propsTable = $db->tableName( 'smw_rels2' ); + } + $from_clause = "$propsTable p JOIN $idsTable p_ids ON p.p_id = p_ids.smw_id JOIN $idsTable o_ids ON p.o_id = o_ids.smw_id"; } else { - $value_field = 'a.value_xsd'; - $from_clause = $db->tableName( 'smw_atts2' ) . " a JOIN " . $db->tableName( 'smw_ids' ) . " p_ids ON a.p_id = p_ids.smw_id"; + if ( $smwgDefaultStore === 'SMWSQLStore3' ) { + $valueField = 'p.o_hash'; + $idsTable = $db->tableName( 'smw_object_ids' ); + $propsTable = $db->tableName( 'smw_di_blob' ); + } else { + $valueField = 'p.value_xsd'; + $idsTable = $db->tableName( 'smw_ids' ); + $propsTable = $db->tableName( 'smw_atts2' ); + } + $from_clause = "$propsTable p JOIN $idsTable p_ids ON p.p_id = p_ids.smw_id"; } if ( !is_null( $base_property_name ) ) { @@ -177,25 +193,40 @@ $base_property_name = str_replace( ' ', '_', $base_property_name ); $conditions['base_p_ids.smw_title'] = $base_property_name; - $main_prop_alias = ( $is_relation ) ? 'r' : 'a'; if ( $base_is_relation ) { - $from_clause .= " JOIN " . $db->tableName( 'smw_rels2' ) . " r_base ON $main_prop_alias.s_id = r_base.s_id"; - $from_clause .= " JOIN " . $db->tableName( 'smw_ids' ) . " base_p_ids ON r_base.p_id = base_p_ids.smw_id JOIN " . $db->tableName( 'smw_ids' ) . " base_o_ids ON r_base.o_id = base_o_ids.smw_id"; + if ( $smwgDefaultStore === 'SMWSQLStore3' ) { + $idsTable = $db->tableName( 'smw_object_ids' ); + $propsTable = $db->tableName( 'smw_di_wikipage' ); + } else { + $idsTable = $db->tableName( 'smw_ids' ); + $propsTable = $db->tableName( 'smw_rels2' ); + } + $from_clause .= " JOIN $propsTable p_base ON p.s_id = p_base.s_id"; + $from_clause .= " JOIN $idsTable base_p_ids ON p_base.p_id = base_p_ids.smw_id JOIN $idsTable base_o_ids ON p_base.o_id = base_o_ids.smw_id"; $base_value = str_replace( ' ', '_', $base_value ); $conditions['base_o_ids.smw_title'] = $base_value; } else { - $from_clause .= " JOIN " . $db->tableName( 'smw_atts2' ) . " a_base ON $main_prop_alias.s_id = a_base.s_id"; - $from_clause .= " JOIN " . $db->tableName( 'smw_ids' ) . " base_p_ids ON a_base.p_id = base_p_ids.smw_id"; - $conditions['a_base.value_xsd'] = $base_value; + if ( $smwgDefaultStore === 'SMWSQLStore3' ) { + $baseValueField = 'p_base.o_hash'; + $idsTable = $db->tableName( 'smw_object_ids' ); + $propsTable = $db->tableName( 'smw_di_blob' ); + } else { + $baseValueField = 'p_base.value_xsd'; + $idsTable = $db->tableName( 'smw_ids' ); + $propsTable = $db->tableName( 'smw_atts2' ); + } + $from_clause .= " JOIN $propsTable p_base ON p.s_id = p_base.s_id"; + $from_clause .= " JOIN $idsTable base_p_ids ON p_base.p_id = base_p_ids.smw_id"; + $conditions[$baseValueField] = $base_value; } } if ( !is_null( $substring ) ) { - $conditions[] = SFUtils::getSQLConditionForAutocompleteInColumn( $value_field, $substring ); + $conditions[] = SFUtils::getSQLConditionForAutocompleteInColumn( $valueField, $substring ); } - $sql_options['ORDER BY'] = $value_field; - $res = $db->select( $from_clause, "DISTINCT $value_field", + $sql_options['ORDER BY'] = $valueField; + $res = $db->select( $from_clause, "DISTINCT $valueField", $conditions, __METHOD__, $sql_options ); while ( $row = $db->fetchRow( $res ) ) { -- To view, visit https://gerrit.wikimedia.org/r/50710 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic8c57ccdf5347dfb7670b371734e7f6abec3b746 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/SemanticForms Gerrit-Branch: master Gerrit-Owner: Yaron Koren <yaro...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits