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

Julian Hyde commented on OPTIQ-401:
-----------------------------------

It's a reasonable request, and I'll do it.

However, make sure that you are not masking out errors due to missing 
providers, like this one in {{HepRelVertex}}:

{code:java}
  public RelOptCost computeSelfCost(RelOptPlanner planner) {
    // HepRelMetadataProvider is supposed to intercept this
    // and redirect to the real rels.
    throw Util.newInternal("should never get here");
  }
{code}

There must always be a provider, even if it returns null for some or all 
requested metadata because it is "switched off". You should fix asserts like 
the one above, generally by putting {{new DefaultRelMetadataProvider()}} on the 
list of providers.

> New SqlExplainLevel ALL_ATTRIBUTES_COST_IF_AVAILABLE
> ----------------------------------------------------
>
>                 Key: OPTIQ-401
>                 URL: https://issues.apache.org/jira/browse/OPTIQ-401
>             Project: Optiq
>          Issue Type: Improvement
>            Reporter: Ashutosh Chauhan
>            Assignee: Julian Hyde
>
> We want to use ALL_ATTRIBUTES because it prints cost, which is helpful in 
> debugging. But in certain systems (eg Hive) stats are fetched only on demand. 
> So, its possible that stats are not fetched and are thus not available for 
> few columns because they were not referred in query. Now, if you do 
> {{RelOptUtil.toString(optiqPlan, SqlExplainLevel.ALL_ATTRIBUTES)}} It results 
> in following stack trace:
> {code}
>         at com.sun.proxy.$Proxy18.getRowCount(Unknown Source)
>         at 
> org.eigenbase.rel.metadata.RelMetadataQuery.getRowCount(RelMetadataQuery.java:95)
>         at org.eigenbase.rel.RelWriterImpl.explain_(RelWriterImpl.java:103)
>         at org.eigenbase.rel.RelWriterImpl.done(RelWriterImpl.java:171)
>         at org.eigenbase.rel.AbstractRelNode.explain(AbstractRelNode.java:280)
>         at org.eigenbase.relopt.RelOptUtil.toString(RelOptUtil.java:1694)
> Caused by: java.lang.AssertionError
>         at 
> org.eigenbase.rel.metadata.RelMetadataQuery.isNonNegative(RelMetadataQuery.java:381)
>         at 
> org.eigenbase.rel.metadata.RelMetadataQuery.validateResult(RelMetadataQuery.java:400)
>         at 
> org.eigenbase.rel.metadata.RelMetadataQuery.getRowCount(RelMetadataQuery.java:96)
>         at 
> org.eigenbase.rel.metadata.RelMdRowCount.getRowCount(RelMdRowCount.java:61)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to