Page names are compared case insensitively within queries
Closed, ResolvedPublic


Author: sergey.chernyshev

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, 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

bzimport added a subscriber: wikibugs-l.
bzimport set Reference to bz11689.
bzimport created this task.Via LegacyOct 17 2007, 5:32 AM
mkroetzsch added a comment.Via ConduitDec 28 2007, 2:21 PM

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.

Add Comment

Column Prototype
This is a very early prototype of a persistent column. It is not expected to work yet, and leaving it open will activate other new features which will break things. Press "\" (backslash) on your keyboard to close it now.