[ 
https://issues.apache.org/jira/browse/IGNITE-19789?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yury Gerzhedovich updated IGNITE-19789:
---------------------------------------
    Description: 
There are three way to create 
{{{}org.apache.ignite.internal.sql.engine.exec.RowHandler.RowFactory{}}}:
{code:java}
RowFactory<RowT> factory(IgniteTypeFactory typeFactory, RelDataType rowType);
RowFactory<RowT> factory(IgniteTypeFactory typeFactory, List<RelDataType> 
fieldTypes);
RowFactory<RowT> factory(Type... types);
{code}
The first two create unnecessary dependency on {{calcite}} library, the last 
one doesn't provide required type's parameters, like decimal scale, for 
instance.

Let's replace all three methods with a single {{{}RowFactory<RowT> 
factory(RowSchema schema){}}}, where {{RowSchema}} is a class that should be 
introduced.
h4. Implementation Notes:

Although {{org.apache.ignite.internal.schema.BinaryTupleSchemas}} might seem 
like a good candidate on the role of RowSchema, it doesn't have exhaustive 
type's support. Besides, introducing new type to binary tuple is much complex 
procedure since it will affect every module. Thus, it's better to implement 
distinct schema optimised for RowHandler|RowFactory use case.

RowSchema should support complex/nested objects

  was:
There are three way to create 
{{{}org.apache.ignite.internal.sql.engine.exec.RowHandler.RowFactory{}}}:
{code:java}
RowFactory<RowT> factory(IgniteTypeFactory typeFactory, RelDataType rowType);
RowFactory<RowT> factory(IgniteTypeFactory typeFactory, List<RelDataType> 
fieldTypes);
RowFactory<RowT> factory(Type... types);
{code}
The first two create unnecessary dependency on {{calcite}} library, the last 
one doesn't provide required type's parameters, like decimal scale, for 
instance.

Let's replace all three methods with a single {{{}RowFactory<RowT> 
factory(RowSchema schema){}}}, where {{RowSchema}} is a class that should be 
introduced.
h4. Implementation Notes

Although {{org.apache.ignite.internal.schema.BinaryTupleSchemas}} might seem 
like a good candidate on the role of RowSchema, it doesn't have exhaustive 
type's support. Besides, introducing new type to binary tuple is much complex 
procedure since it will affect every module. Thus, it's better to implement 
distinct schema optimised for RowHandler|RowFactory use case.

RowSchema should support complex/nested objects


> Sql. Introduce RowSchema for RowFactory
> ---------------------------------------
>
>                 Key: IGNITE-19789
>                 URL: https://issues.apache.org/jira/browse/IGNITE-19789
>             Project: Ignite
>          Issue Type: Improvement
>          Components: sql
>            Reporter: Konstantin Orlov
>            Priority: Major
>              Labels: ignite-3
>
> There are three way to create 
> {{{}org.apache.ignite.internal.sql.engine.exec.RowHandler.RowFactory{}}}:
> {code:java}
> RowFactory<RowT> factory(IgniteTypeFactory typeFactory, RelDataType rowType);
> RowFactory<RowT> factory(IgniteTypeFactory typeFactory, List<RelDataType> 
> fieldTypes);
> RowFactory<RowT> factory(Type... types);
> {code}
> The first two create unnecessary dependency on {{calcite}} library, the last 
> one doesn't provide required type's parameters, like decimal scale, for 
> instance.
> Let's replace all three methods with a single {{{}RowFactory<RowT> 
> factory(RowSchema schema){}}}, where {{RowSchema}} is a class that should be 
> introduced.
> h4. Implementation Notes:
> Although {{org.apache.ignite.internal.schema.BinaryTupleSchemas}} might seem 
> like a good candidate on the role of RowSchema, it doesn't have exhaustive 
> type's support. Besides, introducing new type to binary tuple is much complex 
> procedure since it will affect every module. Thus, it's better to implement 
> distinct schema optimised for RowHandler|RowFactory use case.
> RowSchema should support complex/nested objects



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to