On Mon, Nov 10, 2014 at 12:12 PM, Thomas Mortagne
<[email protected]> wrote:
> On Mon, Nov 10, 2014 at 12:03 PM, Eduard Moraru <[email protected]> wrote:
>> Hi Marius,
>>
>> On Mon, Nov 10, 2014 at 12:24 PM, Marius Dumitru Florea <
>> [email protected]> wrote:
>>
>>> I'm undecided. As a technical Linux user I prefer case sensitivity, but I
>>> can see why this is sometimes unexpected for non-technical users. I'm not
>>> sure how you plan to implement this. I know this thread is not about the
>>> technical aspects but still I think it's important to consider the cost
>>> that this change will imply.
>>>
>>> First, even for a case insensitive system, I think it's very important to
>>> preserve the case entered by the user. For instance, If I create a user
>>> with the alias 'myCoolAlias' then I wouldn't like to see 'mycoolalias'
>>> displayed in the UI. Same, if I attach a file named
>>> 'myCoolPresentation.odp' then I want to see precisely that name on the list
>>> of attachments. So we need to store case sensitive values in the database.
>>>
>> The difference from now will be:
>>>
>>> * when creating an entity: check that there's no other entity that has the
>>> same normalized reference (toLowerCase/toUpperCase)
>>>
>>> * when retrieving an entity: look for normalized references
>>>
>>> This means we'll have to call toLowerCase/toUpperCase very often so we need
>>> proper database indexes. Otherwise we'll have a performance impact.
>>>
>>
>> Right. I posted a similar comment on the Jira issue.
>>
>> Another interesting idea I was just thinking about would be to add
>> uniqueness constraints in the database on lower(doc.fullName) for instance.
>> That would cover the creation step.
>>
>> Regarding performance, I have found in some quick searches that uniqueness
>> constraints are also achievable through unique function-based indexes [1].
>>
>> On both cases, we would have to investigate on the database support or
>> solutions for using a function like lower() for the database unique
>> constraint or the unique index.
>>
>> ----------
>> [1]
>> http://stackoverflow.com/questions/3944840/create-unqiue-case-insensitive-constraint-on-two-varchar-fields
>>
>>
>>> Second, we have lots of places that query the database and since we have to
>>> store the raw case-sensitive values then we need to update all this places.
>>> Moreover, since it's not about a single field/column I'm not sure we can
>>> write a query filter to lower the case automatically. Then we also have a
>>> lot of extensions that query the database and that create entities. Those
>>> will have to be updated too.
>>>
>>
>> Not sure a filter would be the solution, since queries should be
>> application-specific.
>>
>>
>>>
>>> Lastly, AFAIK lower case and upper case are locale dependent. The 'lower'
>>> query function doesn't have a locale parameter so it depends on the locale
>>> the database has been configured with. So there can be cases when a user
>>> won't be able to retrieve an entity using some locale dependent lowercase
>>> version of the reference because the database computes the lower case
>>> differently than what the user expects (because it uses a different
>>> locale).
>>>
>>
>> Well, as long as we do something like lower(myValue) = lower(dbValue)
>> instead of myValue = lower(dbValue), we should be good, right? (i. e. apply
>> the same databse collation/logic on both the searched value and the db
>> value so that we never get a missmatch).
>
> Not really, the problem you will have is that lower is not going to do
> it's job because you are not in the right locale. That means that you
> might end up with the request thinking that two values are not equals
> while if lower did its job properly it would have been. In XWiki side
> we will apply the locale to String.toLower and we will get a different
> result which means that you have cases where in the require two
> document name are not equals but they are when you compare two
> DocumentReference which might create many issues.

s/require/request/

>
>>
>> Thanks,
>> Eduard
>>
>>
>>>
>>> Thanks,
>>>
>>> Marius
>>>
>>>
>>> On Nov 7, 2014 12:34 PM, "Eduard Moraru" <[email protected]> wrote:
>>> >
>>> > Hi users and devs,
>>> >
>>> > I would like to have your opinion on the topic of case sensitive vs case
>>> > insensitive and which one you prefer in XWiki.
>>> >
>>> > Currently, XWiki is case sensitive. This means the same resource name
>>> > (document name, space name, etc) can be written with either small letters
>>> > or big letters or a mix.
>>> >
>>> > Examples: You can have both "Main.Test" and "Main.test" as 2 different
>>> > documents. Also, you can have "XWiki.Admin" and "XWiki.admin" as 2
>>> > different users. This also applies to URLs, as "/Main/Test" is different
>>> > from "/Main/test" or "/main/test", so all these 3 are different
>>> resources.
>>> >
>>> > Even from this short description, one can already identify possible
>>> > problems of this approach.
>>> >
>>> > From the top 3 operating systems (Linux, Mac an Windows), only Linux is
>>> > case sensitive, the other two (more user-focused Operating Systems) are
>>> > both case insensitive.
>>> >
>>> > Since XWiki has one of its main targets the Enterprise users, it is safe
>>> to
>>> > assume that the correct approach would be to also be more user-focused
>>> and
>>> > simplify things and avoid confusions by being case insensitive as well.
>>> >
>>> > Also, a quick search on existing issues validates the need for this
>>> > improvement:
>>> > http://jira.xwiki.org/issues/?jql=text%20~%20%22case%20insensitive%22
>>> >
>>> > What do you think? Is it OK to keep XWiki case sensitive, or would you
>>> > prefer it case insensitive? Bring arguments.
>>> >
>>> > I have also created a jira issue for this idea:
>>> > http://jira.xwiki.org/browse/XWIKI-11412 to track it in the future.
>>> >
>>> > Thanks,
>>> > Eduard
>>> > _______________________________________________
>>> > devs mailing list
>>> > [email protected]
>>> > http://lists.xwiki.org/mailman/listinfo/devs
>>> _______________________________________________
>>> devs mailing list
>>> [email protected]
>>> http://lists.xwiki.org/mailman/listinfo/devs
>>>
>> _______________________________________________
>> devs mailing list
>> [email protected]
>> http://lists.xwiki.org/mailman/listinfo/devs
>
>
>
> --
> Thomas Mortagne



-- 
Thomas Mortagne
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to