[ 
https://issues.apache.org/jira/browse/IGNITE-11402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17453067#comment-17453067
 ] 

Taras Ledkov commented on IGNITE-11402:
---------------------------------------

*Proposal:*
- add to the public {{QueryEntity}} properties:
-- Integer {{primaryKeyInlineSize}}  - use wrapper object to compatibility 
(null value - default behavior);
-- Integer {{affinityFieldInlineSize}} - use wrapper object to compatibility 
(null value - default behavior);

The approach has a contradiction with cache API behavior.
Now there is no ability to specify PK sorted index with unwrapped PK fields by 
cache API + {{QueryEntity}}. This functionality is available only from SQL 
command 'CREATE TABLE' (see {{H2TableDescriptor#extractKeyColumns}})

So, 
- by SQL command we cannot create 'wrapped' PK sorted index for composite PK;
- by cache API we cannot create  'unwrapped' PK sorted index for composite PK.

I propose to add the public property: 
{{Boolean  QueryEntity#unwrapPrimaryKeyFieldsForSortedIndex}}
to make SQL & cache API symmetrical.

*There is a pitfall here*
User may specify the key class like below:
{code}
class MyKey{
  @QuerySqlField
  int id0;

  @QuerySqlField
  int id1;

  int hiddenId;
}
{code}

In this case two object MyKey(0, 0, 0) & MyKey(0,0,1) are different and may be 
put into cache as a two different keys.
But they are logical similar for SQL PK.
But this scenario now may be produced by SQL command  CREATE TABLE + cache API.

I propose to add key schema validation to the 
{{QueryTypeDescriptorImpl#validateKeyAndValue}}.


> SQL: Add ability to specify inline size of PK and affinity key indexes from 
> CREATE TABLE and QueryEntity
> --------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-11402
>                 URL: https://issues.apache.org/jira/browse/IGNITE-11402
>             Project: Ignite
>          Issue Type: Task
>          Components: sql
>            Reporter: Vladimir Ozerov
>            Assignee: Taras Ledkov
>            Priority: Major
>              Labels: newbie
>             Fix For: 2.13
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently it is not possible to set inline size for automatically created 
> indexes easily. We need to make sure that user has a convenient way to set 
> them both programmatically and from DDL.
> Start point for automatically created indexes is 
> org.apache.ignite.internal.processors.query.h2.H2TableDescriptor#createSystemIndexes
>  where passed parameter inlineSize as -1 for 
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing#createSortedIndex



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to