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).

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

Reply via email to