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)