You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by Vladimir Ozerov <vo...@gridgain.com> on 2017/05/23 19:15:41 UTC

Remove/deprecate CacheConfiguration.sqlEscapeAll property

Igniters,

We have a property "CacheConfiguration.sqlEscapeAll". When enabled, all
database objects belonging to the cache will be case-sensitive and allow
special characters. Two problems here:

1) It doesn't allow me to decouple schemas from cache easily since I it
force me to refer to cache context everywhere, exactly what I am trying to
avoid.

2) It doesn't work with DDL at all. E.g. how should I process "MyIndex" if
cache has "sqlEscapeAll=false"?
CREATE INDEX "MyIndex" ON TABLE MY_TABLE;

It appears, that we should do the following:
1) Remove/deprecate this property;
2) Add "escaped" property to QueryEntity and QueryIndex, so that decision
can be made on per-object basis, rather than on per-cache.
3) In DDL we should decide whether object name is case-sensitive based on
quotes around it's name:

CREATE INDEX MyIndex;   // Insensitive
CREATE INDEX "MyIndex"; // Sensitive

E.g. this is precisely how Oracle and probably other databases work.

Thoughts?

Re: Remove/deprecate CacheConfiguration.sqlEscapeAll property

Posted by Vladimir Ozerov <vo...@gridgain.com>.
I found the solution - no changes to public API, just rework how we treat
this flag internally.

On Tue, May 23, 2017 at 10:15 PM, Vladimir Ozerov <vo...@gridgain.com>
wrote:

> Igniters,
>
> We have a property "CacheConfiguration.sqlEscapeAll". When enabled, all
> database objects belonging to the cache will be case-sensitive and allow
> special characters. Two problems here:
>
> 1) It doesn't allow me to decouple schemas from cache easily since I it
> force me to refer to cache context everywhere, exactly what I am trying to
> avoid.
>
> 2) It doesn't work with DDL at all. E.g. how should I process "MyIndex" if
> cache has "sqlEscapeAll=false"?
> CREATE INDEX "MyIndex" ON TABLE MY_TABLE;
>
> It appears, that we should do the following:
> 1) Remove/deprecate this property;
> 2) Add "escaped" property to QueryEntity and QueryIndex, so that decision
> can be made on per-object basis, rather than on per-cache.
> 3) In DDL we should decide whether object name is case-sensitive based on
> quotes around it's name:
>
> CREATE INDEX MyIndex;   // Insensitive
> CREATE INDEX "MyIndex"; // Sensitive
>
> E.g. this is precisely how Oracle and probably other databases work.
>
> Thoughts?
>