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

Vladimir Sitnikov commented on CALCITE-506:
-------------------------------------------

{quote}(ParameterExpression)implementor.stash{quote}
You might get class cast exceptions in future versions of Calcite since javadoc 
does not specify that return value is of ParameterExpression type.

Why don't you just use the simplest implementation? (not sure why you need the 
static helper method then)
It should work without DATA_CONTEXT_GET, etc, etc.
{code:java}
static Expression stash(EnumerableRelImplementor implementor, QueryPlan o, 
Class<QueryPlan> clazz) {
        return implementor.stash(o, clazz);
}
{code}

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

Reply via email to