chunfeng pei created CALCITE-4281:
-------------------------------------

             Summary: fix getMaxRowCount for RelSubset to return reasonable 
values 
                 Key: CALCITE-4281
                 URL: https://issues.apache.org/jira/browse/CALCITE-4281
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.25.0
            Reporter: chunfeng pei
             Fix For: next


currently getMaxRowCount(RelSubset rel, RelMetadataQuery mq) only have a short 
term fix for CALCITE-1018.  https://issues.apache.org/jira/browse/CALCITE-1018

we need a complete solution for this, as suggested in 
https://issues.apache.org/jira/browse/CALCITE-1048

quotes: Clearly RelMdMaxRowCount of a RelSubset should be the lowest 
max-row-count of any relational expression in that subset. Each kind of 
metadata should have a way of deriving a subset's value from the constituent 
rel values; in the case of RelMdMaxRowCount the roll-up function is "min".

also a sample solution provided by [~weijie] : 
 public Double getMaxRowCount(RelSubset rel, RelMetadataQuery mq) {    Double 
lowest = Double.POSITIVE_INFINITY;    for (RelNode node : rel.getRels()) {      
Double maxRowCount = mq.getMaxRowCount(node);      if (maxRowCount == null) {   
     continue;
      }      if (lowest.compareTo(maxRowCount) > 0) \{
        lowest = maxRowCount;
      }
    }    return lowest;
  }
then comments from [~jhyde] :

quote: I was thinking of doing the same thing in a more abstract way, namely 
providing a "[fold|https://en.wikipedia.org/wiki/Fold_(higher-order_function)]" 
function.

this ticket is opened to address this issue. this is also related to the 
following ticket:

https://issues.apache.org/jira/browse/CALCITE-3963



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to