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)