Last modified: 2007-12-28 14:21:52 UTC
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).
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.