[
https://issues.apache.org/jira/browse/CALCITE-506?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14239908#comment-14239908
]
Julian Hyde commented on CALCITE-506:
-------------------------------------
Public APIs can only be changed in major versions. That is a high bar. We
haven't explicitly stated what are our public APIs, but it's possible to guess.
EnumerableRelImplementor is not a public API, by the following reasoning. We
don't expect the public to build classes that implement EnumerableRel outside
of the Calcite code base. If you change EnumerableRelImplementor you can
reasonably assume that you are changing all of the code in the world that uses
that API.
> Update EnumerableRelImplementor.stash so it is suitable for all kinds of
> classes
> --------------------------------------------------------------------------------
>
> Key: CALCITE-506
> URL: https://issues.apache.org/jira/browse/CALCITE-506
> Project: Calcite
> Issue Type: Bug
> Affects Versions: 1.0.0-incubating
> Reporter: Vladimir Sitnikov
> Assignee: Julian Hyde
> Labels: newbie
>
> {code:java}
> public Expression stash(RelNode child, Class clazz) {
> final ParameterExpression x = register(child, clazz);
> final Expression e = Expressions.call(getRootExpression(),
> BuiltInMethod.DATA_CONTEXT_GET.method, Expressions.constant(x.name));
> return Expressions.convert_(e, clazz);
> }
> {code}
> I would like to make two corrections here:
> 1) I think {{public <T> Expression st(T x, Class<? super T> clazz) \{}}
> should be better signature.
> 2) It makes sense to translate {{DATA_CONTEXT_GET}} as a store to a {{final}}
> local variable at the very start of {{public
> org.apache.calcite.linq4j.Enumerable bind(final
> org.apache.calcite.DataContext root0)}} method (see {{implementRoot}}), so at
> the usage time it is just a load of local variable, not a {{map.get}}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)