[
https://issues.apache.org/jira/browse/IGNITE-19789?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Maksim Zhuravkov updated IGNITE-19789:
--------------------------------------
Affects Version/s: 3.0.0-beta1
> Sql. Introduce RowSchema for RowFactory
> ---------------------------------------
>
> Key: IGNITE-19789
> URL: https://issues.apache.org/jira/browse/IGNITE-19789
> Project: Ignite
> Issue Type: Improvement
> Components: sql
> Affects Versions: 3.0.0-beta1
> Reporter: Konstantin Orlov
> Assignee: Maksim Zhuravkov
> Priority: Major
> Labels: ignite-3
> Time Spent: 1h 40m
> Remaining Estimate: 0h
>
> 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)