Hi,

You can check it in 1.6.0 release or checkout master and check on it.

On Tue, Nov 15, 2016 at 5:05 PM, Anil <anilk...@gmail.com> wrote:

> Thank you. You saved my time.
>
> May i know working ignite version ? i see it is issue in h2 db itself.
>
> Thanks.
>
> On 15 November 2016 at 19:30, Vladislav Pyatkov <vldpyat...@gmail.com>
> wrote:
>
>> Hi Anil,
>>
>> You are right. I have checked this on not released version, but in 7.0.0
>> indexes are not used by some strange reason.
>> You can check the case in master or previous version, it worked earlier
>> and will work after (but 7.0.0 have bug).
>>
>> On Tue, Nov 15, 2016 at 2:36 PM, Anil <anilk...@gmail.com> wrote:
>>
>>> HI,
>>>
>>> i am still seeing no index used. Can you verify the below query please?
>>>
>>> explain select * from (
>>>
>>> ( select * from Person p join table(joinId varchar(10) =
>>> ('anilkd1','anilkd2')) i on p.id = i.joinId)
>>> UNION
>>> (select * from Person p join table(name varchar(10) = ('Anil1',
>>> 'Anil5')) i on p.name = i.name)
>>>
>>> ) order by id
>>>
>>> and explain plan -
>>>
>>> [[SELECT
>>>     _0._KEY AS __C0,
>>>     _0._VAL AS __C1,
>>>     _0.NAME AS __C2,
>>>     _0.ID AS __C3,
>>>     _0.COMPANYID AS __C4,
>>>     _0.JOINID AS __C5
>>> FROM (
>>>     (SELECT
>>>         P._KEY,
>>>         P._VAL,
>>>         P.NAME,
>>>         P.ID,
>>>         P.COMPANYID,
>>>         I.JOINID
>>>     FROM "person-map".PERSON P
>>>     INNER JOIN TABLE(JOINID VARCHAR(10)=('anilkd1', 'anilkd2')) I
>>>         ON 1=1
>>>     WHERE P.ID = I.JOINID)
>>>     UNION
>>>     (SELECT
>>>         P._KEY,
>>>         P._VAL,
>>>         P.NAME,
>>>         P.ID,
>>>         P.COMPANYID,
>>>         I.NAME
>>>     FROM "person-map".PERSON P
>>>     INNER JOIN TABLE(NAME VARCHAR(10)=('Anil1', 'Anil5')) I
>>>         ON 1=1
>>>     WHERE P.ID = I.NAME)
>>> ) _0
>>>     /* (SELECT
>>>         P._KEY,
>>>         P._VAL,
>>>         P.NAME,
>>>         P.ID,
>>>         P.COMPANYID,
>>>         I.JOINID
>>>     FROM "person-map".PERSON P
>>>    *     /++ "person-map".PERSON.__SCAN_ ++/*
>>>     INNER JOIN TABLE(JOINID VARCHAR(10)=('anilkd1', 'anilkd2')) I
>>>         /++ function: JOINID = P.ID ++/
>>>         ON 1=1
>>>     WHERE P.ID = I.JOINID)
>>>     UNION
>>>     (SELECT
>>>         P._KEY,
>>>         P._VAL,
>>>         P.NAME,
>>>         P.ID,
>>>         P.COMPANYID,
>>>         I.NAME
>>>     FROM "person-map".PERSON P
>>>        * /++ "person-map".PERSON.__SCAN_ ++/*
>>>     INNER JOIN TABLE(NAME VARCHAR(10)=('Anil1', 'Anil5')) I
>>>         /++ function: NAME = P.ID ++/
>>>         ON 1=1
>>>     WHERE P.ID = I.NAME)
>>>      */
>>> ORDER BY 4], [SELECT
>>>     __C0 AS _KEY,
>>>     __C1 AS _VAL,
>>>     __C2 AS NAME,
>>>     __C3 AS ID,
>>>     __C4 AS COMPANYID,
>>>     __C5 AS JOINID
>>> FROM PUBLIC.__T0
>>>     /* "person-map"."merge_scan" */
>>> ORDER BY 4]]
>>>
>>> Cache configuration :
>>>
>>> CacheConfiguration<String , Person> pCache = new
>>> CacheConfiguration<>("person-map");
>>> pCache.setIndexedTypes(String.class, Person.class);
>>> pCache.setBackups(0);
>>> pCache.setCacheMode(CacheMode.PARTITIONED);
>>> pCache.setCopyOnRead(false);
>>> pCache.setSwapEnabled(true);
>>> pCache.setOffHeapMaxMemory(100);
>>> pCache.setMemoryMode(CacheMemoryMode.OFFHEAP_TIERED);
>>>
>>>
>>> public class Person{
>>> @QuerySqlField(index = true)
>>> private String name;
>>> @QuerySqlField(index = true)
>>> private String id;
>>> @QuerySqlField
>>> private String companyId;
>>> private String value;
>>>
>>> // removed the getters and setters
>>> }
>>>
>>> SqlFieldsQuery sqlQuery = new SqlFieldsQuery("explain select * from ((
>>> select * from Person p join table(joinId varchar(10) =
>>> ('anilkd1','anilkd2')) i on p.id = i.joinId) UNION (select * from
>>> Person p join table(name varchar(10) = ('Anil1', 'Anil5')) i on p.name
>>> = i.name)) order by id");
>>>
>>> List<List<?>> all = testMap.query(sqlQuery).getAll();
>>>
>>> Thanks
>>>
>>
>>
>>
>> --
>> Vladislav Pyatkov
>>
>
>


-- 
Vladislav Pyatkov

Reply via email to