[Fix](variance) Fix sample variance/stddev NaN res for single value (#63605)

Problem Summary:

Fix `VAR_SAMP`, `VARIANCE_SAMP`, and `STDDEV_SAMP` to return `NaN` when
the number of valid input values is less than or equal to 1. Sample
variance/stddev are undefined for `n <= 1`, so returning `0.0` is
misleading.

before:
```sql
CREATE TABLE t (id INT, v DOUBLE) DUPLICATE KEY(id) DISTRIBUTED BY HASH(id) BUCKETS 1 PROPERTIES('replication_num'='1');
INSERT INTO t VALUES (1, 5.0);  -- 单行

SELECT VAR_SAMP(v), STDDEV_SAMP(v) FROM t;
+-------------+----------------+
| VAR_SAMP(v) | STDDEV_SAMP(v) |
+-------------+----------------+
|           0 |              0 |
+-------------+----------------+
```

now:
```sql
SELECT VAR_SAMP(v), STDDEV_SAMP(v) FROM t;
+-------------+----------------+
| VAR_SAMP(v) | STDDEV_SAMP(v) |
+-------------+----------------+
|         NaN |            NaN |
+-------------+----------------+
```

doc: https://github.com/apache/doris-website/pull/3765
This commit is contained in:
linrrarity authored and GitHub committed 2026-05-30 14:32:01 +08:00
1 parent 3c9c40fa5f
commit d7c033f7f3
11 files changed
+962 -980

No files matched your search

@@ -21,13 +21,11 @@
#include <cmath>
#include <cstddef>
#include <cstdint>
#include <limits>
#include <memory>
#include <type_traits>
#include "core/assert_cast.h"
#include "core/column/column.h"
#include "core/column/column_nullable.h"
#include "core/data_type/data_type_decimal.h"
#include "core/data_type/data_type_number.h"
#include "core/types.h"
#include "exprs/aggregate/aggregate_function.h"
@@ -37,8 +35,6 @@ class Arena;
class BufferReadable;
class BufferWritable;
template <PrimitiveType T>
class ColumnDecimal;
template <PrimitiveType T>
class ColumnVector;
template <PrimitiveType T, bool is_stddev>
@@ -71,7 +67,7 @@ struct BaseData {
// In MySQL, this will directly result in an error due to exceeding the double range.
// For performance reasons, we are uniformly changing it to nan
if (std::isinf(val)) {
return std::nan("");
return std::numeric_limits<double>::quiet_NaN();
}
return val;
};
@@ -125,14 +121,9 @@ struct BaseData {
template <PrimitiveType T, typename Name, bool is_stddev>
struct PopData : BaseData<T, is_stddev>, Name {
using ColVecResult = std::conditional_t<is_decimal(T), ColumnDecimal128V2, ColumnFloat64>;
void insert_result_into(IColumn& to) const {
auto& col = assert_cast<ColVecResult&>(to);
if constexpr (is_decimal(T)) {
col.get_data().push_back(this->get_pop_result().value());
} else {
col.get_data().push_back(this->get_pop_result());
}
auto& col = assert_cast<ColumnFloat64&>(to);
col.get_data().push_back(this->get_pop_result());
}
static DataTypePtr get_return_type() { return std::make_shared<DataTypeFloat64>(); }
@@ -144,17 +135,12 @@ struct PopData : BaseData<T, is_stddev>, Name {
template <PrimitiveType T, typename Name, bool is_stddev>
struct SampData : BaseData<T, is_stddev>, Name {
using ColVecResult = std::conditional_t<is_decimal(T), ColumnDecimal128V2, ColumnFloat64>;
void insert_result_into(IColumn& to) const {
auto& col = assert_cast<ColVecResult&>(to);
auto& col = assert_cast<ColumnFloat64&>(to);
if (this->count == 1 || this->count == 0) {
col.insert_default();
col.get_data().push_back(std::numeric_limits<double>::quiet_NaN());
} else {
if constexpr (is_decimal(T)) {
col.get_data().push_back(this->get_samp_result().value());
} else {
col.get_data().push_back(this->get_samp_result());
}
col.get_data().push_back(this->get_samp_result());
}
}
File diff suppressed because it is too large. Load diff
@@ -3,7 +3,7 @@
[1, 2, 3] [1, 2, 3] [100, 2, 3] [100, 2, 3] [40.33333333333334, 2, 3] [85.95867768595042, 2, 3]
-- !sql --
[121, 4, 3] [42.89781139198388, 0, 0] [52.53887449625594, 0, 0] [1840.222222222222, 0, 0] [2760.333333333333, 0, 0]
[121, 4, 3] [42.89781139198388, 0, 0] [52.53887449625594, 0, NaN] [1840.222222222222, 0, 0] [2760.333333333333, 0, NaN]
-- !sql --
[1840.222222222222, 0, 0] [2760.333333333333, 0, 0] [1, 0, 0]
@@ -19,4 +19,3 @@
-- !sql --
["{"num_buckets":3,"buckets":[{"lower":"1","upper":"1","ndv":1,"count":1,"pre_sum":0},{"lower":"20","upper":"20","ndv":1,"count":1,"pre_sum":1},{"lower":"100","upper":"100","ndv":1,"count":1,"pre_sum":2}]}", "{"num_buckets":1,"buckets":[{"lower":"2","upper":"2","ndv":1,"count":2,"pre_sum":0}]}", "{"num_buckets":1,"buckets":[{"lower":"3","upper":"3","ndv":1,"count":1,"pre_sum":0}]}"]
@@ -3,7 +3,7 @@
[1, 2, 3] [1, 2, 3] [100, 2, 3] [100, 2, 3] [40.33333333333334, 2, 3] [85.95867768595042, 2, 3]
-- !sql --
[121, 4, 3] [42.89781139198388, 0, 0] [52.53887449625594, 0, 0] [1840.222222222222, 0, 0] [2760.333333333333, 0, 0]
[121, 4, 3] [42.89781139198388, 0, 0] [52.53887449625594, 0, NaN] [1840.222222222222, 0, 0] [2760.333333333333, 0, NaN]
-- !sql --
[1840.222222222222, 0, 0] [2760.333333333333, 0, 0] [1, 0, 0]
@@ -13,4 +13,3 @@
-- !sql --
["{"num_buckets":3,"buckets":[{"lower":"1","upper":"1","ndv":1,"count":1,"pre_sum":0},{"lower":"20","upper":"20","ndv":1,"count":1,"pre_sum":1},{"lower":"100","upper":"100","ndv":1,"count":1,"pre_sum":2}]}", "{"num_buckets":1,"buckets":[{"lower":"2","upper":"2","ndv":1,"count":2,"pre_sum":0}]}", "{"num_buckets":1,"buckets":[{"lower":"3","upper":"3","ndv":1,"count":1,"pre_sum":0}]}"]
@@ -4233,18 +4233,18 @@ true
-- !sql_stddev_samp_TinyInt_agg_phase_1 --
0 \N
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_stddev_samp_TinyInt_agg_phase_2 --
12 3.605551275463989
@@ -4265,18 +4265,18 @@ true
3.6055512754639896
-- !sql_stddev_samp_TinyInt_agg_phase_1_notnull --
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_stddev_samp_TinyInt_agg_phase_2_notnull --
12 3.6055512754639896
@@ -4299,18 +4299,18 @@ true
-- !sql_stddev_samp_SmallInt_agg_phase_1 --
0 \N
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_stddev_samp_SmallInt_agg_phase_2 --
12 3.6055512754639896
@@ -4331,18 +4331,18 @@ true
3.605551275463989
-- !sql_stddev_samp_SmallInt_agg_phase_1_notnull --
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_stddev_samp_SmallInt_agg_phase_2_notnull --
12 3.605551275463989
@@ -4365,18 +4365,18 @@ true
-- !sql_stddev_samp_Integer_agg_phase_1 --
0 \N
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_stddev_samp_Integer_agg_phase_2 --
12 3.605551275463989
@@ -4397,18 +4397,18 @@ true
3.605551275463989
-- !sql_stddev_samp_Integer_agg_phase_1_notnull --
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_stddev_samp_Integer_agg_phase_2_notnull --
12 3.605551275463989
@@ -4431,18 +4431,18 @@ true
-- !sql_stddev_samp_BigInt_agg_phase_1 --
0 \N
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_stddev_samp_BigInt_agg_phase_2 --
12 3.605551275463989
@@ -4463,18 +4463,18 @@ true
3.6055512754639896
-- !sql_stddev_samp_BigInt_agg_phase_1_notnull --
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_stddev_samp_BigInt_agg_phase_2_notnull --
12 3.605551275463989
@@ -4497,18 +4497,18 @@ true
-- !sql_stddev_samp_Float_agg_phase_1 --
0 \N
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_stddev_samp_Float_agg_phase_2 --
12 0.3605551333887302
@@ -4529,18 +4529,18 @@ true
0.3605551333887302
-- !sql_stddev_samp_Float_agg_phase_1_notnull --
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_stddev_samp_Float_agg_phase_2_notnull --
12 0.3605551333887302
@@ -4563,18 +4563,18 @@ true
-- !sql_stddev_samp_Double_agg_phase_1 --
0 \N
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_stddev_samp_Double_agg_phase_2 --
12 0.36055512754639896
@@ -4595,18 +4595,18 @@ true
0.36055512754639896
-- !sql_stddev_samp_Double_agg_phase_1_notnull --
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_stddev_samp_Double_agg_phase_2_notnull --
12 0.36055512754639896
@@ -4621,18 +4621,18 @@ true
-- !sql_stddev_samp_DecimalV2_agg_phase_1 --
0 \N
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_stddev_samp_DecimalV2_agg_phase_2 --
12 0.36055512754639896
@@ -4646,18 +4646,18 @@ true
12 0.36055512754639896
-- !sql_stddev_samp_DecimalV2_agg_phase_1_notnull --
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_stddev_samp_DecimalV2_agg_phase_2_notnull --
12 0.36055512754639896
@@ -6366,18 +6366,18 @@ true
-- !sql_variance_samp_TinyInt_agg_phase_1 --
0 \N
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_variance_samp_TinyInt_agg_phase_2 --
12 13.0
@@ -6398,18 +6398,18 @@ true
13.000000000000002
-- !sql_variance_samp_TinyInt_agg_phase_1_notnull --
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_variance_samp_TinyInt_agg_phase_2_notnull --
12 13.0
@@ -6432,18 +6432,18 @@ true
-- !sql_variance_samp_SmallInt_agg_phase_1 --
0 \N
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_variance_samp_SmallInt_agg_phase_2 --
12 13.000000000000002
@@ -6464,18 +6464,18 @@ true
13.0
-- !sql_variance_samp_SmallInt_agg_phase_1_notnull --
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_variance_samp_SmallInt_agg_phase_2_notnull --
12 12.999999999999998
@@ -6498,18 +6498,18 @@ true
-- !sql_variance_samp_Integer_agg_phase_1 --
0 \N
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_variance_samp_Integer_agg_phase_2 --
12 13.0
@@ -6530,18 +6530,18 @@ true
13.000000000000002
-- !sql_variance_samp_Integer_agg_phase_1_notnull --
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_variance_samp_Integer_agg_phase_2_notnull --
12 13.000000000000002
@@ -6564,18 +6564,18 @@ true
-- !sql_variance_samp_BigInt_agg_phase_1 --
0 \N
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_variance_samp_BigInt_agg_phase_2 --
12 13.0
@@ -6596,18 +6596,18 @@ true
13.000000000000002
-- !sql_variance_samp_BigInt_agg_phase_1_notnull --
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_variance_samp_BigInt_agg_phase_2_notnull --
12 13.0
@@ -6630,18 +6630,18 @@ true
-- !sql_variance_samp_Float_agg_phase_1 --
0 \N
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_variance_samp_Float_agg_phase_2 --
12 0.130000004212965
@@ -6662,18 +6662,18 @@ true
0.130000004212965
-- !sql_variance_samp_Float_agg_phase_1_notnull --
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_variance_samp_Float_agg_phase_2_notnull --
12 0.13000000421296498
@@ -6696,18 +6696,18 @@ true
-- !sql_variance_samp_Double_agg_phase_1 --
0 \N
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_variance_samp_Double_agg_phase_2 --
12 0.12999999999999998
@@ -6728,18 +6728,18 @@ true
0.12999999999999998
-- !sql_variance_samp_Double_agg_phase_1_notnull --
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_variance_samp_Double_agg_phase_2_notnull --
12 0.13
@@ -6754,18 +6754,18 @@ true
-- !sql_variance_samp_DecimalV2_agg_phase_1 --
0 \N
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_variance_samp_DecimalV2_agg_phase_2 --
12 0.13
@@ -6779,18 +6779,18 @@ true
12 0.13
-- !sql_variance_samp_DecimalV2_agg_phase_1_notnull --
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 0.0
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
1 NaN
-- !sql_variance_samp_DecimalV2_agg_phase_2_notnull --
12 0.12999999999999998
@@ -122,7 +122,7 @@
-- !variance_samp --
\N
0.0
NaN
0.5
0.0
0.5
@@ -166,7 +166,7 @@
-- !stddev_samp --
\N
0.0
NaN
0.7071067811865476
0.0
0.7071067811865476
@@ -294,4 +294,3 @@ false
-- !fold_window --
0 false 0 be
9999-12-31 23:59:59 false 9999-12-31 23:59:59 b
@@ -1200,34 +1200,34 @@
11 0.0
-- !select_stddev_samp --
\N 0.0
0 0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
10 0.0
11 0.0
\N NaN
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
-- !select_stddev_samp_mv --
\N 0.0
0 0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
10 0.0
11 0.0
\N NaN
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
-- !select_sum0 --
\N 1
@@ -1410,64 +1410,64 @@
11 0.0
-- !select_variance_samp --
\N 0.0
0 0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
10 0.0
11 0.0
\N NaN
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
-- !select_variance_samp_mv --
\N 0.0
0 0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
10 0.0
11 0.0
\N NaN
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
-- !select_var_samp --
\N 0.0
0 0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
10 0.0
11 0.0
\N NaN
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
-- !select_var_samp_mv --
\N 0.0
0 0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
10 0.0
11 0.0
\N NaN
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
-- !select_window_funnel --
\N 1
@@ -1603,4 +1603,3 @@
10 {9:"string1"}
11 {10:"string2"}
12 {11:"string3"}
@@ -378,13 +378,13 @@ false
0.0
-- !select_stddev_samp --
0.0
NaN
-- !select_stddev_samp2 --
0.0
NaN
-- !select_stddev_samp_n --
0.0
NaN
-- !select_sum0 --
50
@@ -441,22 +441,22 @@ false
0.0
-- !select_variance_samp --
0.0
NaN
-- !select_variance_samp2 --
0.0
NaN
-- !select_variance_samp_n --
0.0
NaN
-- !select_var_samp --
0.0
NaN
-- !select_var_samp2 --
0.0
NaN
-- !select_var_samp_n --
0.0
NaN
-- !select_window_funnel --
0
@@ -493,4 +493,3 @@ false
-- !select_retention_n --
[0, 0]
@@ -77,6 +77,9 @@ TESTING AGAIN
-- !aggregate --
9882691.114285713 1808.1659023775
-- !aggregate --
NaN NaN NaN NaN
-- !aggregate --
9223845.040000001 1239.763326955734
@@ -723,4 +726,3 @@ TESTING AGAIN
-- !four_phase_full_distribute --
hello 1 1
world 1 1
@@ -121,9 +121,9 @@
-- !select_default --
1 \N
2 \N
3 0
3 NaN
4 2.121320343559642
5 0
5 NaN
6 2.82842712474619
7 2.516611478423584
8 17770.84139820059
@@ -153,21 +153,21 @@
15 867.8342295623053
-- !select_default --
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 0
13 0
14 0
15 0
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
10 NaN
11 NaN
12 NaN
13 NaN
14 NaN
15 NaN
-- !select_default --
1 11759.93243623287
@@ -183,12 +183,12 @@
11 2.121320343559642
12 32767.33074267723
13 23350.08012834217
14 0
15 0
14 NaN
15 NaN
-- !select_default --
1 0
2 0
1 NaN
2 NaN
3 2.121320343559642
4 2.516611478423584
5 2.82842712474619
@@ -325,9 +325,9 @@
-- !select_default --
1 \N
2 \N
3 0
3 NaN
4 4.5
5 0
5 NaN
6 8
7 6.333333333333334
8 315802804
@@ -357,21 +357,21 @@
15 753136.25
-- !select_default --
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 0
13 0
14 0
15 0
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
10 NaN
11 NaN
12 NaN
13 NaN
14 NaN
15 NaN
-- !select_default --
1 138296010.9047619
@@ -387,12 +387,12 @@
11 4.5
12 1073697964
13 545226242
14 0
15 0
14 NaN
15 NaN
-- !select_default --
1 0
2 0
1 NaN
2 NaN
3 4.5
4 6.333333333333334
5 8
@@ -529,9 +529,9 @@
-- !select_default --
1 \N
2 \N
3 0
3 NaN
4 2.121320343559642
5 0
5 NaN
6 2.82842712474619
7 2.516611478423584
8 17770.84139820059
@@ -561,21 +561,21 @@
15 867.8342295623053
-- !select_default --
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 0
13 0
14 0
15 0
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
10 NaN
11 NaN
12 NaN
13 NaN
14 NaN
15 NaN
-- !select_default --
1 11759.93243623287
@@ -591,12 +591,12 @@
11 2.121320343559642
12 32767.33074267723
13 23350.08012834217
14 0
15 0
14 NaN
15 NaN
-- !select_default --
1 0
2 0
1 NaN
2 NaN
3 2.121320343559642
4 2.516611478423584
5 2.82842712474619
@@ -733,9 +733,9 @@
-- !select_default --
1 \N
2 \N
3 0
3 NaN
4 4.5
5 0
5 NaN
6 8
7 6.333333333333334
8 315802804
@@ -765,21 +765,21 @@
15 753136.25
-- !select_default --
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 0
13 0
14 0
15 0
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
10 NaN
11 NaN
12 NaN
13 NaN
14 NaN
15 NaN
-- !select_default --
1 138296010.9047619
@@ -795,12 +795,12 @@
11 4.5
12 1073697964
13 545226242
14 0
15 0
14 NaN
15 NaN
-- !select_default --
1 0
2 0
1 NaN
2 NaN
3 4.5
4 6.333333333333334
5 8
@@ -1052,4 +1052,3 @@
1 1991 false
1 1992 true
1 32767 false
@@ -133,6 +133,7 @@ suite("aggregate") {
qt_aggregate """ select var_samp(c_bigint), var_samp(c_double) from ${tableName} """
qt_aggregate """ select var_samp(distinct c_bigint), var_samp(c_double) from ${tableName} """
qt_aggregate """ select var_samp(c_bigint), var_samp(distinct c_double) from ${tableName} """
qt_aggregate """ select var_samp(c_bigint), var_samp(c_double), stddev_samp(c_bigint), stddev_samp(c_double) from ${tableName2} """
qt_aggregate """ select variance(c_bigint), variance(c_double) from ${tableName} """
qt_aggregate """ select variance(distinct c_bigint), variance(c_double) from ${tableName} """
qt_aggregate """ select variance(c_bigint), variance(distinct c_double) from ${tableName} """