[ 
https://issues.apache.org/jira/browse/CALCITE-4927?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17455917#comment-17455917
 ] 

Julian Hyde commented on CALCITE-4927:
--------------------------------------

Makes sense. It was I who added the new API. The upcasting is a clever hack (it 
gets around Java's type erasure) but I agree that it's confusing and 
inconvenient. Please also fix the call sites that use upcasting. 

> Remove deprecated RelBuilder#groupKey(ImmutableBitSet, ImmutableList) 
> clashing with new replacement API
> -------------------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-4927
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4927
>             Project: Calcite
>          Issue Type: Task
>          Components: core
>    Affects Versions: 1.28.0
>            Reporter: Stamatis Zampetakis
>            Assignee: Stamatis Zampetakis
>            Priority: Major
>             Fix For: 1.29.0
>
>
> The {{RelBuilder#groupKey(ImmutableBitSet, ImmutableList)}} API is marked for 
> removal before 2.0. 
> {code:java}
> /** @deprecated Use {@link #groupKey(ImmutableBitSet)}
>    * or {@link #groupKey(ImmutableBitSet, Iterable)}. */
>   @Deprecated // to be removed before 2.0
>   public GroupKey groupKey(ImmutableBitSet groupSet,
>       @Nullable ImmutableList<ImmutableBitSet> groupSets)
> {code}
> I would suggest to remove it ASAP due to the fact that it clashes with the 
> new replacement API.
> {code:java}
> public GroupKey groupKey(ImmutableBitSet groupSet,
>       Iterable<? extends ImmutableBitSet> groupSets)
> {code}
> Leaving it as is creates ambiguity and requires everybody to upcast to 
> {{Iterable}} if they want to use the new API.
> Removing it on the other hand does not seem to affect much backward 
> compatibility since callers will automatically use the new API with no 
> changes required in their code.
> The main difference is that the deprecated API allows {{groupSets}} to be 
> null but if we care so much we can also make the new API to be more 
> permissive. 



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to