You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Stamatis Zampetakis (Jira)" <ji...@apache.org> on 2021/12/08 15:29:00 UTC

[jira] [Created] (CALCITE-4927) Remove deprecated RelBuilder#groupKey(ImmutableBitSet, ImmutableList) clashing with new replacement API

Stamatis Zampetakis created CALCITE-4927:
--------------------------------------------

             Summary: 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
             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)