w w created IGNITE-15871:
----------------------------

             Summary: when use affinity_key and two fields as primary key, 
key-value api can't get the data of sql insert ,and binary write data can't get 
primary key fields value with sql
                 Key: IGNITE-15871
                 URL: https://issues.apache.org/jira/browse/IGNITE-15871
             Project: Ignite
          Issue Type: Bug
          Components: binary, cache, sql
    Affects Versions: 2.10
            Reporter: w w
         Attachments: image-2021-11-04-17-59-07-391.png, 
image-2021-11-04-18-05-13-766.png, image-2021-11-04-18-06-16-270.png

# I use sql create table like this;  
{code:java}
CREATE TABLE IF NOT EXISTS Person (
  id int,
  name varchar,
  test int,
  test2 varchar,
  companyId Long,
  PRIMARY KEY (id, companyId)
) WITH 
"template=partitioned,backups=1,affinity_key=companyId,KEY_TYPE=AffinityKey,VALUE_TYPE=Person";
{code}
 

 # insert data with sql;
{code:java}
insert into Public.Person(id,companyId,test,test2,name) 
values(1,1,1,'test11','test1');
insert into Public.Person(id,companyId,test,test2,name) 
values(2,1,1,'test1','test');
insert into Public.Person(id,companyId,test,test2,name) 
values(3,1,1,'test3','test3');
{code}

 # now Binary_metadata view like this :  
!image-2021-11-04-17-59-07-391.png|width=1888,height=1015!
 # then I use key-value api add data and query data:
 # code like this:
{code:java}
Ignite ignite = Ignition.ignite();
IgniteCache<AffinityKey, Person> personCache = 
ignite.getOrCreateCache("SQL_PUBLIC_PERSON");
IgniteCache<AffinityKey, BinaryObject> binaryCache = 
ignite.cache("SQL_PUBLIC_PERSON").withKeepBinary();
IgniteCache<AffinityKey, Object> objCache = ignite.cache("SQL_PUBLIC_PERSON");
var akey= new AffinityKey<Integer>(7,1L);
IgniteBinary binary = ignite.binary();
BinaryObjectBuilder bldr = binary.builder("Person");
bldr.setField("ID",7,Integer.class);
bldr.setField("COMPANYID",1L );
bldr.setField("TEST",1 );
bldr.setField("TEST2","test21");
bldr.setField("NAME","test7");
//   Person p3=new Person(5,1L,"test3");
binaryCache.put(akey, bldr.build());
if(personCache.containsKey(akey))
{
    BinaryObject bo=binaryCache.get(akey);
    System.out.println("id:"+bo.field("id"));
    System.out.println("companyId:"+bo.field("COMPANYID"));
}
akey= new AffinityKey(1, 1L);
if(personCache.containsKey(akey))
{
    System.out.println("ok2");
}
if(binaryCache.containsKey(akey))
{
    System.out.println(" binaryCache ok");
}
if(objCache.containsKey(akey))
{
    System.out.println("objCache ok");
}
{code}
but can't find the row of ( id=1 and companyId=1 )
 and binaryCache.put(akey, bldr.build()); with sql query like this:  
!image-2021-11-04-18-05-13-766.png!
 now view of binary_metadata: !image-2021-11-04-18-06-16-270.png!



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to