[
https://issues.apache.org/jira/browse/CALCITE-3086?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16850475#comment-16850475
]
Feng Zhu commented on CALCITE-3086:
-----------------------------------
Hi, [~hyuan], I make a thorough investigation on
*Mapping&Mappings&MappingType*, and find that we need to make big changes even
adding minor features.
(1) Mistakes in comments. For example, in *MappingType* class, "_A surjection
is a mapping if every target has at least one source_", but the source column
is marked as "<=1".
(2) *MappingType* defines the constraints on Mapping behaviors, but some
implementations ignore it. Take getMapping method in *Project* class as
instance: "_The mapping is an inverse surjection. Every target has a source
field, but a source field may appear as zero, one, or more target fields._"
However, *SurjectionWithInverse* has no check on _getSource_ method. In
addition, it seems over-designed with too many confusing mapping types but
limited use in Calcite.
(3) Curent Mapping interface cannot cover general (_1->many&many<->many_) case.
Therefore, is it necessary to refactor this module? General mapping types
(e.g., MULTI_FUNCTION) do not seem to be used in Calcite. I'm curious in the
scenario you use MULTI_FUNCTION mapping.
> MULTI_FUNCTION mapping is not implemented
> -----------------------------------------
>
> Key: CALCITE-3086
> URL: https://issues.apache.org/jira/browse/CALCITE-3086
> Project: Calcite
> Issue Type: Improvement
> Reporter: Haisheng Yuan
> Assignee: Feng Zhu
> Priority: Major
>
> When I create a Mapping with MULTI_FUNCTION type, it throws an exception. It
> is not implemented.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)