Xurenhe created CALCITE-5069:
--------------------------------

             Summary: Method of minus's getRowCount has not consider 'except 
all'
                 Key: CALCITE-5069
                 URL: https://issues.apache.org/jira/browse/CALCITE-5069
             Project: Calcite
          Issue Type: Improvement
          Components: core
            Reporter: Xurenhe
            Assignee: Xurenhe


Current code of *RelMdRowCount* has not consider 'except all', it should be 
double.

It's similar to 
[CALCITE-3287|https://issues.apache.org/jira/browse/CALCITE-3287] and 
[CALCITE-3988|https://issues.apache.org/jira/browse/CALCITE-3988]

CODE: *RelMdRowCount#getRowCount(Minus, RelMetadataQuery)*

 
{code:java}
// now
public @Nullable Double getRowCount(Minus rel, RelMetadataQuery mq) {
  Double rowCount = null;
  for (RelNode input : rel.getInputs()) {
    Double partialRowCount = mq.getRowCount(input);
    if (rowCount == null
        || partialRowCount != null && partialRowCount < rowCount) {
      rowCount = partialRowCount;
    }
  }
  return rowCount;
}

// right 
public @Nullable Double getRowCount(Minus rel, RelMetadataQuery mq) {
  Double rowCount = null;
  for (RelNode input : rel.getInputs()) {
    Double partialRowCount = mq.getRowCount(input);
    if (rowCount == null
        || partialRowCount != null && partialRowCount < rowCount) {
      rowCount = partialRowCount;
    }
  }
  if (rowCount == null || !rel.all) {
    return rowCount;
  } else {
    return rowCount * 2;
  }
}{code}
 

 



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to