Page MenuHomePhabricator

Page names are compared case insensitively within queries
Closed, ResolvedPublic

Description

Author: sergey.chernyshev

Description:
In SMW 1.0 page names are not compared case sensitively withing queries.

When Page1 defines [[Some page property::CAPITALIZED]] and Page2 defines [[Some page property::DeCaPiTaLiZeD]] when "Property:Some page property" has type Type:Page, following query:

<ask>[[Some page property::Capitalized]]</ask>

returns both Page1 and Page2 as a result.

While it might be fine to compare strings case insensitively, comparing page names must follow MediaWiki configuration described at http://meta.wikimedia.org/wiki/Help:Page_name#Case-sensitivity, which means that (according to *current* functionality) it must work case sensitively (including first letter if $wgCapitalLinks is set to false).


Version: unspecified
Severity: major

Details

Reference
bz11689

Event Timeline

bzimport raised the priority of this task from to Medium.Nov 21 2014, 9:55 PM
bzimport set Reference to bz11689.
bzimport added a subscriber: Unknown Object (MLST).

I agree that this is a bug, though I do not see why exactly this problem is "major" ...

I have now changed all SMW created database tables to use "binary" for their VARCHAR fields, just as MediaWiki does. This should force collations to be case-sensitive on new installations.

Some old installations may not have this setting for their tables yet. To change this, these sites can now make a "full" refresh of their semantic data, which involves a complete rebuild of the DB tables. The following command should be issued to do that:

% php SMW_refreshData.php -vpf && php SMW_refreshData.php -v

This full refresh can also be used to repair/modify the collation of all SMW tables according to a changed dfault setting of the DB. It is of course also possible to issue the two command separately, or to use start (-s) and end (-e) settings to do refreshing in parallel or in smaller chunks.