diff --git a/presto-main/src/main/java/com/facebook/presto/operator/aggregation/DoubleRegressionAggregation.java b/presto-main/src/main/java/com/facebook/presto/operator/aggregation/DoubleRegressionAggregation.java index e42699f2a86c5..24d1c6e61fcf5 100644 --- a/presto-main/src/main/java/com/facebook/presto/operator/aggregation/DoubleRegressionAggregation.java +++ b/presto-main/src/main/java/com/facebook/presto/operator/aggregation/DoubleRegressionAggregation.java @@ -84,7 +84,8 @@ public static void regrIntercept(@AggregationState RegressionState state, BlockB public static void regrSxy(@AggregationState RegressionState state, BlockBuilder out) { double result = getRegressionSxy(state); - if (Double.isFinite(result)) { + double count = getRegressionCount(state); + if (Double.isFinite(result) && Double.isFinite(count) && count > 0) { DOUBLE.writeDouble(out, result); } else { @@ -97,7 +98,8 @@ public static void regrSxy(@AggregationState RegressionState state, BlockBuilder public static void regrSxx(@AggregationState RegressionState state, BlockBuilder out) { double result = getRegressionSxx(state); - if (Double.isFinite(result)) { + double count = getRegressionCount(state); + if (Double.isFinite(result) && Double.isFinite(count) && count > 0) { DOUBLE.writeDouble(out, result); } else { @@ -110,7 +112,8 @@ public static void regrSxx(@AggregationState RegressionState state, BlockBuilder public static void regrSyy(@AggregationState RegressionState state, BlockBuilder out) { double result = getRegressionSyy(state); - if (Double.isFinite(result)) { + double count = getRegressionCount(state); + if (Double.isFinite(result) && Double.isFinite(count) && count > 0) { DOUBLE.writeDouble(out, result); } else { @@ -136,7 +139,7 @@ public static void regrR2(@AggregationState RegressionState state, BlockBuilder public static void regrCount(@AggregationState RegressionState state, BlockBuilder out) { double result = getRegressionCount(state); - if (Double.isFinite(result)) { + if (Double.isFinite(result) && result > 0) { DOUBLE.writeDouble(out, result); } else { @@ -149,7 +152,8 @@ public static void regrCount(@AggregationState RegressionState state, BlockBuild public static void regrAvgy(@AggregationState RegressionState state, BlockBuilder out) { double result = getRegressionAvgy(state); - if (Double.isFinite(result)) { + double count = getRegressionCount(state); + if (Double.isFinite(result) && Double.isFinite(count) && count > 0) { DOUBLE.writeDouble(out, result); } else { @@ -162,7 +166,8 @@ public static void regrAvgy(@AggregationState RegressionState state, BlockBuilde public static void regrAvgx(@AggregationState RegressionState state, BlockBuilder out) { double result = getRegressionAvgx(state); - if (Double.isFinite(result)) { + double count = getRegressionCount(state); + if (Double.isFinite(result) && Double.isFinite(count) && count > 0) { DOUBLE.writeDouble(out, result); } else { diff --git a/presto-main/src/main/java/com/facebook/presto/operator/aggregation/RealRegressionAggregation.java b/presto-main/src/main/java/com/facebook/presto/operator/aggregation/RealRegressionAggregation.java index 7b2943f8fac2b..1fe5d006da1a9 100644 --- a/presto-main/src/main/java/com/facebook/presto/operator/aggregation/RealRegressionAggregation.java +++ b/presto-main/src/main/java/com/facebook/presto/operator/aggregation/RealRegressionAggregation.java @@ -84,7 +84,8 @@ public static void regrIntercept(@AggregationState RegressionState state, BlockB public static void regrSxy(@AggregationState RegressionState state, BlockBuilder out) { double result = getRegressionSxy(state); - if (Double.isFinite(result)) { + double count = getRegressionCount(state); + if (Double.isFinite(result) && Double.isFinite(count) && count > 0) { REAL.writeLong(out, floatToRawIntBits((float) result)); } else { @@ -97,7 +98,8 @@ public static void regrSxy(@AggregationState RegressionState state, BlockBuilder public static void regrSxx(@AggregationState RegressionState state, BlockBuilder out) { double result = getRegressionSxx(state); - if (Double.isFinite(result)) { + double count = getRegressionCount(state); + if (Double.isFinite(result) && Double.isFinite(count) && count > 0) { REAL.writeLong(out, floatToRawIntBits((float) result)); } else { @@ -110,7 +112,8 @@ public static void regrSxx(@AggregationState RegressionState state, BlockBuilder public static void regrSyy(@AggregationState RegressionState state, BlockBuilder out) { double result = getRegressionSyy(state); - if (Double.isFinite(result)) { + double count = getRegressionCount(state); + if (Double.isFinite(result) && Double.isFinite(count) && count > 0) { REAL.writeLong(out, floatToRawIntBits((float) result)); } else { @@ -136,7 +139,7 @@ public static void regrR2(@AggregationState RegressionState state, BlockBuilder public static void regrCount(@AggregationState RegressionState state, BlockBuilder out) { double result = getRegressionCount(state); - if (Double.isFinite(result)) { + if (Double.isFinite(result) && result > 0) { REAL.writeLong(out, floatToRawIntBits((float) result)); } else { @@ -149,7 +152,8 @@ public static void regrCount(@AggregationState RegressionState state, BlockBuild public static void regrAvgy(@AggregationState RegressionState state, BlockBuilder out) { double result = getRegressionAvgy(state); - if (Double.isFinite(result)) { + double count = getRegressionCount(state); + if (Double.isFinite(result) && Double.isFinite(count) && count > 0) { REAL.writeLong(out, floatToRawIntBits((float) result)); } else { @@ -162,7 +166,8 @@ public static void regrAvgy(@AggregationState RegressionState state, BlockBuilde public static void regrAvgx(@AggregationState RegressionState state, BlockBuilder out) { double result = getRegressionAvgx(state); - if (Double.isFinite(result)) { + double count = getRegressionCount(state); + if (Double.isFinite(result) && Double.isFinite(count) && count > 0) { REAL.writeLong(out, floatToRawIntBits((float) result)); } else { diff --git a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrAvgxAggregation.java b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrAvgxAggregation.java index 22c39514c64c6..a16feba9528ce 100644 --- a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrAvgxAggregation.java +++ b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrAvgxAggregation.java @@ -29,7 +29,7 @@ protected String getFunctionName() public Object getExpectedValue(int start, int length) { if (length == 0) { - return 0.0; + return null; } double expected = 0.0; diff --git a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrAvgyAggregation.java b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrAvgyAggregation.java index 02446f7e716e1..028385fc60504 100644 --- a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrAvgyAggregation.java +++ b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrAvgyAggregation.java @@ -29,7 +29,7 @@ protected String getFunctionName() public Object getExpectedValue(int start, int length) { if (length == 0) { - return 0.0; + return null; } double expected = 0.0; diff --git a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrCountAggregation.java b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrCountAggregation.java index 8a471cfd8c829..e7e253d92024e 100644 --- a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrCountAggregation.java +++ b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrCountAggregation.java @@ -30,7 +30,10 @@ protected String getFunctionName() @Override public Object getExpectedValue(int start, int length) { - if (length <= 1) { + if (length == 0) { + return null; + } + else if (length == 1) { return (double) length; } else { diff --git a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrSxxAggregation.java b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrSxxAggregation.java index 7d07463e06033..ac185912c4351 100644 --- a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrSxxAggregation.java +++ b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrSxxAggregation.java @@ -30,7 +30,10 @@ protected String getFunctionName() @Override public Object getExpectedValue(int start, int length) { - if (length <= 1) { + if (length == 0) { + return null; + } + else if (length == 1) { return (double) 0; } else { diff --git a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrSxyAggregation.java b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrSxyAggregation.java index d7b37ad9ac1a9..2d83d8d65e4b9 100644 --- a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrSxyAggregation.java +++ b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrSxyAggregation.java @@ -30,7 +30,10 @@ protected String getFunctionName() @Override public Object getExpectedValue(int start, int length) { - if (length <= 1) { + if (length == 0) { + return null; + } + else if (length == 1) { return (double) 0; } else { diff --git a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrSyyAggregation.java b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrSyyAggregation.java index 49de8dbe1d63a..4fcfdf8f31b12 100644 --- a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrSyyAggregation.java +++ b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestDoubleRegrSyyAggregation.java @@ -30,7 +30,10 @@ protected String getFunctionName() @Override public Object getExpectedValue(int start, int length) { - if (length <= 1) { + if (length == 0) { + return null; + } + else if (length <= 1) { return (double) 0; } else { diff --git a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrAvgxAggregation.java b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrAvgxAggregation.java index 8b2500874f1a8..71eaf42287211 100644 --- a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrAvgxAggregation.java +++ b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrAvgxAggregation.java @@ -29,7 +29,7 @@ protected String getFunctionName() public Object getExpectedValue(int start, int length) { if (length == 0) { - return 0.0f; + return null; } float expected = 0.0f; diff --git a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrAvgyAggregation.java b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrAvgyAggregation.java index 6bb7e1ca203b4..6582f6d95b25e 100644 --- a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrAvgyAggregation.java +++ b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrAvgyAggregation.java @@ -29,7 +29,7 @@ protected String getFunctionName() public Object getExpectedValue(int start, int length) { if (length == 0) { - return 0.0f; + return null; } float expected = 0.0f; diff --git a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrCountAggregation.java b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrCountAggregation.java index cb4f9148d33e5..eceb7bbb941b1 100644 --- a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrCountAggregation.java +++ b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrCountAggregation.java @@ -30,7 +30,10 @@ protected String getFunctionName() @Override public Object getExpectedValue(int start, int length) { - if (length <= 1) { + if (length == 0) { + return null; + } + else if (length == 1) { return (float) length; } else { diff --git a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrSxxAggregation.java b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrSxxAggregation.java index 6bf77d3b114d7..d72fbfba72e38 100644 --- a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrSxxAggregation.java +++ b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrSxxAggregation.java @@ -30,7 +30,10 @@ protected String getFunctionName() @Override public Object getExpectedValue(int start, int length) { - if (length <= 1) { + if (length == 0) { + return null; + } + else if (length == 1) { return (float) 0; } else { diff --git a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrSxyAggregation.java b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrSxyAggregation.java index ff4a8b94cab7f..f83ec729c19f5 100644 --- a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrSxyAggregation.java +++ b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrSxyAggregation.java @@ -30,7 +30,10 @@ protected String getFunctionName() @Override public Object getExpectedValue(int start, int length) { - if (length <= 1) { + if (length == 0) { + return null; + } + else if (length == 1) { return (float) 0; } else { diff --git a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrSyyAggregation.java b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrSyyAggregation.java index cefe9eb547412..115d0ced316a1 100644 --- a/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrSyyAggregation.java +++ b/presto-main/src/test/java/com/facebook/presto/operator/aggregation/TestRealRegrSyyAggregation.java @@ -30,7 +30,10 @@ protected String getFunctionName() @Override public Object getExpectedValue(int start, int length) { - if (length <= 1) { + if (length == 0) { + return null; + } + else if (length <= 1) { return (float) 0; } else {