You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Maksim Zhuravkov (Jira)" <ji...@apache.org> on 2023/07/31 08:03:00 UTC
[jira] [Assigned] (IGNITE-19789) Sql. Introduce RowSchema for RowFactory
[ https://issues.apache.org/jira/browse/IGNITE-19789?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Maksim Zhuravkov reassigned IGNITE-19789:
-----------------------------------------
Assignee: Maksim Zhuravkov
> 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
> Assignee: Maksim Zhuravkov
> 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)