You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Xurenhe (Jira)" <ji...@apache.org> on 2022/03/29 15:17:00 UTC

[jira] [Created] (CALCITE-5069) Method of minus's getRowCount has not consider 'except all'

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)