[
https://issues.apache.org/jira/browse/IGNITE-19789?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Yury Gerzhedovich updated IGNITE-19789:
---------------------------------------
Epic Link: IGNITE-19860
> 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)