You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "godfrey he (JIRA)" <ji...@apache.org> on 2017/11/28 12:59:00 UTC
[jira] [Updated] (CALCITE-2068) throws NPE in
RelMdPercentageOriginalRows when getPercentageOriginalRows returns null
[ https://issues.apache.org/jira/browse/CALCITE-2068?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
godfrey he updated CALCITE-2068:
--------------------------------
Description:
these two methods will get NEP:
{code:title=RelMdPercentageOriginalRows.java|borderStyle=solid}
public Double getPercentageOriginalRows(Union rel, RelMetadataQuery mq) {
double numerator = 0.0;
double denominator = 0.0;
for (RelNode input : rel.getInputs()) {
double rowCount = mq.getRowCount(input);
double percentage = mq.getPercentageOriginalRows(input);
if (percentage != 0.0) {
denominator += rowCount / percentage;
numerator += rowCount;
}
}
return quotientForPercentage(numerator, denominator);
}
public Double getPercentageOriginalRows(Join rel, RelMetadataQuery mq) {
double left = mq.getPercentageOriginalRows(rel.getLeft());
double right = mq.getPercentageOriginalRows(rel.getRight());
return left * right;
}
{code}
getPercentageOriginalRows maybe return null, and assigning null to double will get NPE.
was:
these two method will get NEP:
{code:title=RelMdPercentageOriginalRows.java|borderStyle=solid}
public Double getPercentageOriginalRows(Union rel, RelMetadataQuery mq) {
double numerator = 0.0;
double denominator = 0.0;
for (RelNode input : rel.getInputs()) {
double rowCount = mq.getRowCount(input);
double percentage = mq.getPercentageOriginalRows(input);
if (percentage != 0.0) {
denominator += rowCount / percentage;
numerator += rowCount;
}
}
return quotientForPercentage(numerator, denominator);
}
public Double getPercentageOriginalRows(Join rel, RelMetadataQuery mq) {
double left = mq.getPercentageOriginalRows(rel.getLeft());
double right = mq.getPercentageOriginalRows(rel.getRight());
return left * right;
}
{code}
getPercentageOriginalRows maybe return null, and assigning null to double will get NPE.
> throws NPE in RelMdPercentageOriginalRows when getPercentageOriginalRows returns null
> -------------------------------------------------------------------------------------
>
> Key: CALCITE-2068
> URL: https://issues.apache.org/jira/browse/CALCITE-2068
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.13.0
> Reporter: godfrey he
> Assignee: Julian Hyde
>
> these two methods will get NEP:
> {code:title=RelMdPercentageOriginalRows.java|borderStyle=solid}
> public Double getPercentageOriginalRows(Union rel, RelMetadataQuery mq) {
> double numerator = 0.0;
> double denominator = 0.0;
> for (RelNode input : rel.getInputs()) {
> double rowCount = mq.getRowCount(input);
> double percentage = mq.getPercentageOriginalRows(input);
> if (percentage != 0.0) {
> denominator += rowCount / percentage;
> numerator += rowCount;
> }
> }
> return quotientForPercentage(numerator, denominator);
> }
> public Double getPercentageOriginalRows(Join rel, RelMetadataQuery mq) {
> double left = mq.getPercentageOriginalRows(rel.getLeft());
> double right = mq.getPercentageOriginalRows(rel.getRight());
> return left * right;
> }
> {code}
> getPercentageOriginalRows maybe return null, and assigning null to double will get NPE.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)