Hi Igniters,
There is an issue to add ability to specify INLINE_SIZE for sorted index on
the primary key and index on affinite fields [1].
Please take a look at the last comment (proposal).
I duplicate the proposal here.
*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:
class MyKey{
@QuerySqlField
int id0;
@QuerySqlField
int id1;
int hiddenId;
}
In this case two objects MyKey(0, 0, 0) & MyKey(0,0,1) are different and
may be put into cache as a two different keys.
But they are 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.
[1]. https://issues.apache.org/jira/browse/IGNITE-11402