[ASTERIXDB-2459][FUN] Add sttdev_pop() aggregate function
- user model changes: yes
- storage format changes: no
- interface changes: no
Details:
1. Add stddev_pop aggregation function and test cases
2. Add stddev and stddev_pop distinct functions
3. Fix some stddev test case comments
4. Add documentation for stddev_pop
Change-Id: I1732d8d70eba26e12a6e68d0e0c621491ed6b3ae
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2997
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Dmitry Lychagin <dmitry.lychagin@couchbase.com>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_null/agg_null.3.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_null/agg_null.3.query.aql
index db3e6c1..51d6069 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_null/agg_null.3.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_null/agg_null.3.query.aql
@@ -24,4 +24,4 @@
let $l1 := [null]
let $l2 := {{null, null}}
-return { "sql-count1": sql-count($l1), "average1": sql-avg($l1), "sql-sum1": sql-sum($l1), "sql-min1": sql-min($l1), "sql-max1": sql-max($l1), "sql-stddev1": sql-stddev($l1), "sql-count2": sql-count($l2), "average2": sql-avg($l2), "sql-sum2": sql-sum($l2), "sql-min2": sql-min($l2), "sql-max2": sql-max($l2), "sql-stddev2": sql-stddev($l2)}
+return { "sql-count1": sql-count($l1), "average1": sql-avg($l1), "sql-sum1": sql-sum($l1), "sql-min1": sql-min($l1), "sql-max1": sql-max($l1), "sql-stddev1": sql-stddev($l1), "sql-stddev_pop1": sql-stddev_pop($l1), "sql-count2": sql-count($l2), "average2": sql-avg($l2), "sql-sum2": sql-sum($l2), "sql-min2": sql-min($l2), "sql-max2": sql-max($l2), "sql-stddev2": sql-stddev($l2), "sql-stddev_pop2": sql-stddev_pop($l2) }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_null_rec/agg_null_rec.3.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_null_rec/agg_null_rec.3.query.aql
index 0e9081a..6fcde5c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_null_rec/agg_null_rec.3.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_null_rec/agg_null_rec.3.query.aql
@@ -25,4 +25,4 @@
use dataverse test;
let $l := for $t in dataset Test return $t.valplus
-return { "sql-count": sql-count($l), "average": sql-avg($l), "sql-stddev": sql-stddev($l), "sql-sum": sql-sum($l), "sql-min": sql-min($l), "sql-max": sql-max($l) }
+return { "sql-count": sql-count($l), "average": sql-avg($l), "sql-stddev": sql-stddev($l), "sql-stddev_pop": sql-stddev_pop($l), "sql-sum": sql-sum($l), "sql-min": sql-min($l), "sql-max": sql-max($l) }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_null_rec_1/agg_null_rec_1.3.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_null_rec_1/agg_null_rec_1.3.query.aql
index 121264d..fbdaa58 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_null_rec_1/agg_null_rec_1.3.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_null_rec_1/agg_null_rec_1.3.query.aql
@@ -27,4 +27,5 @@
let $l := for $t in dataset Test return $t
return { "sql-count": sql-count($l), "average": sql-avg(for $i in $l return $i.val), "sql-sum":
sql-sum(for $i in $l return $i.val), "sql-stddev": sql-stddev(for $i in $l return $i.valplus),
-"sql-min": sql-min(for $i in $l return $i.valplus), "sql-max": sql-max(for $i in $l return $i.valplus) }
+"sql-stddev_pop": sql-stddev_pop(for $i in $l return $i.valplus), "sql-min": sql-min(for $i in $l return $i.valplus),
+"sql-max": sql-max(for $i in $l return $i.valplus) }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_number/agg_number.3.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_number/agg_number.3.query.aql
index ea1db8a..eeab6ad 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_number/agg_number.3.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_number/agg_number.3.query.aql
@@ -30,5 +30,6 @@
let $a4 := sql-min($l2)
let $a5 := sql-max($l2)
let $a6 := sql-stddev($l2)
-return { "sql-count1": sql-count($l1), "average1": sql-avg($l1), "sql-stddev1": sql-stddev($l1), "sql-sum1": sql-sum($l1), "sql-min1": sql-min($l1), "sql-max1": sql-max($l1), "sql-count2": $a1, "average2": $a2, "sql-stddev2": $a6, "sql-sum2": $a3, "sql-min2": $a4, "sql-max2": $a5 }
+let $a7 := sql-stddev_pop($l2)
+return { "sql-count1": sql-count($l1), "average1": sql-avg($l1), "sql-stddev1": sql-stddev($l1), "sql-stddev_pop1": sql-stddev_pop($l1), "sql-sum1": sql-sum($l1), "sql-min1": sql-min($l1), "sql-max1": sql-max($l1), "sql-count2": $a1, "average2": $a2, "sql-stddev2": $a6, "sql-stddev_pop2": $a7, "sql-sum2": $a3, "sql-min2": $a4, "sql-max2": $a5 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_number_rec/agg_number_rec.3.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_number_rec/agg_number_rec.3.query.aql
index 522b50e..cd93b51 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_number_rec/agg_number_rec.3.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate-sql/agg_number_rec/agg_number_rec.3.query.aql
@@ -25,4 +25,4 @@
use dataverse test;
let $l := for $t in dataset Test return $t.valplus
-return { "sql-count": sql-count($l), "average": sql-avg($l), "sql-stddev": sql-stddev($l), "sql-sum": sql-sum($l), "sql-min": sql-min($l), "sql-max": sql-max($l) }
+return { "sql-count": sql-count($l), "average": sql-avg($l), "sql-stddev": sql-stddev($l), "sql-stddev_pop": sql-stddev_pop($l), "sql-sum": sql-sum($l), "sql-min": sql-min($l), "sql-max": sql-max($l) }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_null/agg_null.3.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_null/agg_null.3.query.aql
index 5f39d47..92fc08f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_null/agg_null.3.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_null/agg_null.3.query.aql
@@ -24,4 +24,4 @@
let $l1 := [null]
let $l2 := {{null, null}}
-return { "count1": count($l1), "average1": avg($l1), "sum1": sum($l1), "min1": min($l1), "max1": max($l1),"stddev1": stddev($l1), "count2": count($l2), "average2": avg($l2), "sum2": sum($l2), "min2": min($l2), "max2": max($l2), "stddev2": stddev($l2) }
+return { "count1": count($l1), "average1": avg($l1), "sum1": sum($l1), "min1": min($l1), "max1": max($l1),"stddev1": stddev($l1), "stddev_pop1": stddev_pop($l1), "count2": count($l2), "average2": avg($l2), "sum2": sum($l2), "min2": min($l2), "max2": max($l2), "stddev2": stddev($l2), "stddev_pop2": stddev_pop($l2) }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_null_rec/agg_null_rec.3.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_null_rec/agg_null_rec.3.query.aql
index 5b14f2d..238fb4e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_null_rec/agg_null_rec.3.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_null_rec/agg_null_rec.3.query.aql
@@ -25,4 +25,4 @@
use dataverse test;
let $l := for $t in dataset Test return $t.valplus
-return { "count": count($l), "average": avg($l), "stddev": stddev($l), "sum": sum($l), "min": min($l), "max": max($l) }
+return { "count": count($l), "average": avg($l), "stddev": stddev($l), "stddev_pop": stddev_pop($l), "sum": sum($l), "min": min($l), "max": max($l) }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_null_rec_1/agg_null_rec_1.3.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_null_rec_1/agg_null_rec_1.3.query.aql
index 5b8a017..1e2dcd2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_null_rec_1/agg_null_rec_1.3.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_null_rec_1/agg_null_rec_1.3.query.aql
@@ -27,4 +27,5 @@
let $l := for $t in dataset Test return $t
return { "count": count($l), "average": avg(for $i in $l return $i.val), "sum":
sum(for $i in $l return $i.val), "stddev": stddev(for $i in $l return $i.val),
-"min": min(for $i in $l return $i.valplus), "max": max(for $i in $l return $i.valplus) }
+"stddev_pop": stddev_pop(for $i in $l return $i.val), "min": min(for $i in $l return $i.valplus),
+"max": max(for $i in $l return $i.valplus) }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_number/agg_number.3.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_number/agg_number.3.query.aql
index 3ece422..98e996e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_number/agg_number.3.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_number/agg_number.3.query.aql
@@ -30,5 +30,6 @@
let $a4 := min($l2)
let $a5 := max($l2)
let $a6 := stddev($l2)
-return { "count1": count($l1), "average1": avg($l1), "stddev1": stddev($l1), "sum1": sum($l1), "min1": min($l1), "max1": max($l1), "count2": $a1, "average2": $a2, "stddev2": $a6, "sum2": $a3, "min2": $a4, "max2": $a5 }
+let $a7 := stddev_pop($l2)
+return { "count1": count($l1), "average1": avg($l1), "stddev1": stddev($l1), "stddev_pop1": stddev_pop($l1), "sum1": sum($l1), "min1": min($l1), "max1": max($l1), "count2": $a1, "average2": $a2, "stddev2": $a6, "stddev_pop2": $a7, "sum2": $a3, "min2": $a4, "max2": $a5 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_number_rec/agg_number_rec.3.query.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_number_rec/agg_number_rec.3.query.aql
index 220ff31..8dbb4d3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_number_rec/agg_number_rec.3.query.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/aggregate/agg_number_rec/agg_number_rec.3.query.aql
@@ -25,4 +25,4 @@
use dataverse test;
let $l := for $t in dataset Test return $t.valplus
-return { "count": count($l), "average": avg($l), "stddev": stddev($l), "sum": sum($l), "min": min($l), "max": max($l) }
+return { "count": count($l), "average": avg($l), "stddev": stddev($l), "stddev_pop": stddev_pop($l), "sum": sum($l), "min": min($l), "max": max($l) }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_null/agg_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_null/agg_null.3.query.sqlpp
index 9fd31d1..547b555 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_null/agg_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_null/agg_null.3.query.sqlpp
@@ -22,4 +22,4 @@
* Date : Feb 7th 2014
*/
-{'sql-count1':array_count([null]),'average1':array_avg([null]),'sql-sum1':array_sum([null]),'sql-min1':array_min([null]),'sql-max1':array_max([null]),'sql-stddev1':array_stddev([null]),'sql-count2':array_count({{null,null}}),'average2':array_avg({{null,null}}),'sql-sum2':array_sum({{null,null}}),'sql-min2':array_min({{null,null}}),'sql-max2':array_max({{null,null}}),'sql-stddev2':array_stddev({{null,null}})};
+{'sql-count1':array_count([null]),'average1':array_avg([null]),'sql-sum1':array_sum([null]),'sql-min1':array_min([null]),'sql-max1':array_max([null]),'sql-stddev1':array_stddev([null]),'sql-stddev_pop1':array_stddev_pop([null]),'sql-count2':array_count({{null,null}}),'average2':array_avg({{null,null}}),'sql-sum2':array_sum({{null,null}}),'sql-min2':array_min({{null,null}}),'sql-max2':array_max({{null,null}}),'sql-stddev2':array_stddev({{null,null}}),'sql-stddev_pop2':array_stddev_pop({{null,null}})};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_null_rec/agg_null_rec.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_null_rec/agg_null_rec.3.query.sqlpp
index b5bdd81..1831367 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_null_rec/agg_null_rec.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_null_rec/agg_null_rec.3.query.sqlpp
@@ -43,4 +43,7 @@
)),'sql-stddev':test.array_stddev((
select element t.valplus
from Test as t
+)),'sql-stddev_pop':test.array_stddev_pop((
+ select element t.valplus
+ from Test as t
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_null_rec_1/agg_null_rec_1.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_null_rec_1/agg_null_rec_1.3.query.sqlpp
index 13c8be1..9a56d93 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_null_rec_1/agg_null_rec_1.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_null_rec_1/agg_null_rec_1.3.query.sqlpp
@@ -58,4 +58,10 @@
select element t
from Test as t
) as i
+)),'sql-stddev_pop':test.array_stddev_pop((
+ select element i.valplus
+ from (
+ select element t
+ from Test as t
+ ) as i
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_number/agg_number.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_number/agg_number.3.query.sqlpp
index 4776925..f76f7d6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_number/agg_number.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_number/agg_number.3.query.sqlpp
@@ -22,4 +22,4 @@
* Date : Feb 7th 2014
*/
-{'sql-count1':array_count([float('2.0'),double('3.0'),93847382783847382,1]),'average1':array_avg([float('2.0'),double('3.0'),93847382783847382,1]),'sql-sum1':array_sum([float('2.0'),double('3.0'),93847382783847382,1]),'sql-min1':array_min([float('2.0'),double('3.0'),93847382783847382,1]),'sql-max1':array_max([float('2.0'),double('3.0'),93847382783847382,1]),'sql-stddev1':array_stddev([float('2.0'),double('3.0'),93847382783847382,1]),'sql-count2':array_count({{float('2.0'),double('3.0'),93847382783847382,1}}),'average2':array_avg({{float('2.0'),double('3.0'),93847382783847382,1}}),'sql-sum2':array_sum({{float('2.0'),double('3.0'),93847382783847382,1}}),'sql-min2':array_min({{float('2.0'),double('3.0'),93847382783847382,1}}),'sql-max2':array_max({{float('2.0'),double('3.0'),93847382783847382,1}}),'sql-stddev2':array_stddev({{float('2.0'),double('3.0'),93847382783847382,1}})};
+{'sql-count1':array_count([float('2.0'),double('3.0'),93847382783847382,1]),'average1':array_avg([float('2.0'),double('3.0'),93847382783847382,1]),'sql-sum1':array_sum([float('2.0'),double('3.0'),93847382783847382,1]),'sql-min1':array_min([float('2.0'),double('3.0'),93847382783847382,1]),'sql-max1':array_max([float('2.0'),double('3.0'),93847382783847382,1]),'sql-stddev1':array_stddev([float('2.0'),double('3.0'),93847382783847382,1]),'sql-stddev_pop1':array_stddev_pop([float('2.0'),double('3.0'),93847382783847382,1]),'sql-count2':array_count({{float('2.0'),double('3.0'),93847382783847382,1}}),'average2':array_avg({{float('2.0'),double('3.0'),93847382783847382,1}}),'sql-sum2':array_sum({{float('2.0'),double('3.0'),93847382783847382,1}}),'sql-min2':array_min({{float('2.0'),double('3.0'),93847382783847382,1}}),'sql-max2':array_max({{float('2.0'),double('3.0'),93847382783847382,1}}),'sql-stddev2':array_stddev({{float('2.0'),double('3.0'),93847382783847382,1}}),'sql-stddev_pop2':array_stddev_pop({{float('2.0'),double('3.0'),93847382783847382,1}})};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_number_rec/agg_number_rec.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_number_rec/agg_number_rec.3.query.sqlpp
index faec87a..790e567 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_number_rec/agg_number_rec.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/agg_number_rec/agg_number_rec.3.query.sqlpp
@@ -43,4 +43,7 @@
)),'sql-stddev':test.array_stddev((
select element t.valplus
from Test as t
+)),'sql-stddev_pop':test.array_stddev_pop((
+ select element t.valplus
+ from Test as t
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev/scalar_stddev.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev/scalar_stddev.1.ddl.sqlpp
index fbd4e19..7049419 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev/scalar_stddev.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev/scalar_stddev.1.ddl.sqlpp
@@ -17,7 +17,7 @@
* under the License.
*/
/*
- * Description : Tests the scalar version of array_avg without nulls.
+ * Description : Tests the scalar version of stddev and stddev_pop without nulls.
* Success : Yes
*/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev/scalar_stddev.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev/scalar_stddev.3.query.sqlpp
index 8a4ed23..061da60 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev/scalar_stddev.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev/scalar_stddev.3.query.sqlpp
@@ -17,19 +17,26 @@
* under the License.
*/
/*
- * Description : Tests the scalar version of array_stddev without nulls.
+ * Description : Tests the scalar version of stddev and stddev_pop without nulls.
* Success : Yes
*/
use test;
-
-with i8 as test.array_stddev([test.tinyint('1'),test.tinyint('2'),test.tinyint('3')]),
+{'stddev': (with i8 as test.array_stddev([test.tinyint('1'),test.tinyint('2'),test.tinyint('3')]),
i16 as test.array_stddev([test.smallint('1'),test.smallint('2'),test.smallint('3')]),
i32 as test.array_stddev([test.integer('1'),test.integer('2'),test.integer('3')]),
i64 as test.array_stddev([test.bigint('1'),test.bigint('2'),test.bigint('3')]),
f as test.array_stddev([test.float('1'),test.float('2'),test.float('3')]),
d as test.array_stddev([test.double('1'),test.double('2'),test.double('3')])
select element i
-from [i8,i16,i32,i64,f,d] as i
-;
+from [i8,i16,i32,i64,f,d] as i),
+'stddev_pop': (with i8 as test.array_stddev_pop([test.tinyint('1'),test.tinyint('2'),test.tinyint('3')]),
+ i16 as test.array_stddev_pop([test.smallint('1'),test.smallint('2'),test.smallint('3')]),
+ i32 as test.array_stddev_pop([test.integer('1'),test.integer('2'),test.integer('3')]),
+ i64 as test.array_stddev_pop([test.bigint('1'),test.bigint('2'),test.bigint('3')]),
+ f as test.array_stddev_pop([test.float('1'),test.float('2'),test.float('3')]),
+ d as test.array_stddev_pop([test.double('1'),test.double('2'),test.double('3')])
+select element i
+from [i8,i16,i32,i64,f,d] as i)
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev_empty/scalar_stddev_empty.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev_empty/scalar_stddev_empty.1.ddl.sqlpp
index 430406c..63c85db 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev_empty/scalar_stddev_empty.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev_empty/scalar_stddev_empty.1.ddl.sqlpp
@@ -17,7 +17,7 @@
* under the License.
*/
/*
- * Description : Tests the scalar version of array_avg with an empty list.
+ * Description : Tests the scalar version of stddev and stddev_pop with an empty list.
* Success : Yes
*/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev_empty/scalar_stddev_empty.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev_empty/scalar_stddev_empty.3.query.sqlpp
index 2b01753..f29f59a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev_empty/scalar_stddev_empty.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev_empty/scalar_stddev_empty.3.query.sqlpp
@@ -17,8 +17,9 @@
* under the License.
*/
/*
- * Description : Tests the scalar version of array_stddev with an empty list.
+ * Description : Tests the scalar version of stddev and stddev_pop with an empty list.
* Success : Yes
*/
-select element array_stddev([]);
+{'stddev': (select element array_stddev([])),
+'stddev_pop': (select element array_stddev_pop([]))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev_null/scalar_stddev_null.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev_null/scalar_stddev_null.1.ddl.sqlpp
index 87b10c9..487d166 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev_null/scalar_stddev_null.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev_null/scalar_stddev_null.1.ddl.sqlpp
@@ -17,7 +17,7 @@
* under the License.
*/
/*
- * Description : Tests the scalar version of array_avg with nulls.
+ * Description : Tests the scalar version of stddev and stddev_pop with nulls.
* Success : Yes
*/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev_null/scalar_stddev_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev_null/scalar_stddev_null.3.query.sqlpp
index e49076d..8a2db99 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev_null/scalar_stddev_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/scalar_stddev_null/scalar_stddev_null.3.query.sqlpp
@@ -17,19 +17,26 @@
* under the License.
*/
/*
- * Description : Tests the scalar version of array_stddev with nulls.
+ * Description : Tests the scalar version of stddev and stddev_pop with nulls.
* Success : Yes
*/
use test;
-
-with i8 as test.array_stddev([test.tinyint('1'),test.tinyint('2'),test.tinyint('3'),null]),
+{'stddev': (with i8 as test.array_stddev([test.tinyint('1'),test.tinyint('2'),test.tinyint('3'),null]),
i16 as test.array_stddev([test.smallint('1'),test.smallint('2'),test.smallint('3'),null]),
i32 as test.array_stddev([test.integer('1'),test.integer('2'),test.integer('3'),null]),
i64 as test.array_stddev([test.bigint('1'),test.bigint('2'),test.bigint('3'),null]),
f as test.array_stddev([test.float('1'),test.float('2'),test.float('3'),null]),
d as test.array_stddev([test.double('1'),test.double('2'),test.double('3'),null])
select element i
-from [i8,i16,i32,i64,f,d] as i
-;
+from [i8,i16,i32,i64,f,d] as i),
+'stddev_pop': (with i8 as test.array_stddev_pop([test.tinyint('1'),test.tinyint('2'),test.tinyint('3'),null]),
+ i16 as test.array_stddev_pop([test.smallint('1'),test.smallint('2'),test.smallint('3'),null]),
+ i32 as test.array_stddev_pop([test.integer('1'),test.integer('2'),test.integer('3'),null]),
+ i64 as test.array_stddev_pop([test.bigint('1'),test.bigint('2'),test.bigint('3'),null]),
+ f as test.array_stddev_pop([test.float('1'),test.float('2'),test.float('3'),null]),
+ d as test.array_stddev_pop([test.double('1'),test.double('2'),test.double('3'),null])
+select element i
+from [i8,i16,i32,i64,f,d] as i)
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_double/serial_stddev_double.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_double/serial_stddev_double.3.query.sqlpp
index 1219f2e..d20e7c9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_double/serial_stddev_double.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_double/serial_stddev_double.3.query.sqlpp
@@ -19,7 +19,7 @@
use test;
-select gid, stddev(t.val) as stddev
+select gid, stddev(t.val) as stddev, stddev_pop(t.val) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_double_null/serial_stddev_double_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_double_null/serial_stddev_double_null.3.query.sqlpp
index 2125b05..eb4bc56 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_double_null/serial_stddev_double_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_double_null/serial_stddev_double_null.3.query.sqlpp
@@ -19,7 +19,7 @@
use test;
-select gid, stddev(t.valplus) as stddev
+select gid, stddev(t.valplus) as stddev, stddev_pop(t.valplus) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_empty/serial_stddev_empty.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_empty/serial_stddev_empty.3.query.sqlpp
index 1219f2e..d20e7c9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_empty/serial_stddev_empty.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_empty/serial_stddev_empty.3.query.sqlpp
@@ -19,7 +19,7 @@
use test;
-select gid, stddev(t.val) as stddev
+select gid, stddev(t.val) as stddev, stddev_pop(t.val) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_float/serial_stddev_float.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_float/serial_stddev_float.3.query.sqlpp
index 1219f2e..d20e7c9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_float/serial_stddev_float.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_float/serial_stddev_float.3.query.sqlpp
@@ -19,7 +19,7 @@
use test;
-select gid, stddev(t.val) as stddev
+select gid, stddev(t.val) as stddev, stddev_pop(t.val) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_float_null/serial_stddev_float_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_float_null/serial_stddev_float_null.3.query.sqlpp
index 2125b05..eb4bc56 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_float_null/serial_stddev_float_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_float_null/serial_stddev_float_null.3.query.sqlpp
@@ -19,7 +19,7 @@
use test;
-select gid, stddev(t.valplus) as stddev
+select gid, stddev(t.valplus) as stddev, stddev_pop(t.valplus) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int16/serial_stddev_int16.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int16/serial_stddev_int16.3.query.sqlpp
index 1219f2e..d20e7c9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int16/serial_stddev_int16.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int16/serial_stddev_int16.3.query.sqlpp
@@ -19,7 +19,7 @@
use test;
-select gid, stddev(t.val) as stddev
+select gid, stddev(t.val) as stddev, stddev_pop(t.val) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int16_null/serial_stddev_int16_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int16_null/serial_stddev_int16_null.3.query.sqlpp
index 2125b05..eb4bc56 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int16_null/serial_stddev_int16_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int16_null/serial_stddev_int16_null.3.query.sqlpp
@@ -19,7 +19,7 @@
use test;
-select gid, stddev(t.valplus) as stddev
+select gid, stddev(t.valplus) as stddev, stddev_pop(t.valplus) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int32/serial_stddev_int32.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int32/serial_stddev_int32.3.query.sqlpp
index 1219f2e..d20e7c9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int32/serial_stddev_int32.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int32/serial_stddev_int32.3.query.sqlpp
@@ -19,7 +19,7 @@
use test;
-select gid, stddev(t.val) as stddev
+select gid, stddev(t.val) as stddev, stddev_pop(t.val) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int32_null/serial_stddev_int32_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int32_null/serial_stddev_int32_null.3.query.sqlpp
index 2125b05..eb4bc56 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int32_null/serial_stddev_int32_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int32_null/serial_stddev_int32_null.3.query.sqlpp
@@ -19,7 +19,7 @@
use test;
-select gid, stddev(t.valplus) as stddev
+select gid, stddev(t.valplus) as stddev, stddev_pop(t.valplus) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int64/serial_stddev_int64.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int64/serial_stddev_int64.3.query.sqlpp
index 1219f2e..d20e7c9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int64/serial_stddev_int64.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int64/serial_stddev_int64.3.query.sqlpp
@@ -19,7 +19,7 @@
use test;
-select gid, stddev(t.val) as stddev
+select gid, stddev(t.val) as stddev, stddev_pop(t.val) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int64_null/serial_stddev_int64_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int64_null/serial_stddev_int64_null.3.query.sqlpp
index 2125b05..eb4bc56 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int64_null/serial_stddev_int64_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int64_null/serial_stddev_int64_null.3.query.sqlpp
@@ -19,7 +19,7 @@
use test;
-select gid, stddev(t.valplus) as stddev
+select gid, stddev(t.valplus) as stddev, stddev_pop(t.valplus) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int8/serial_stddev_int8.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int8/serial_stddev_int8.3.query.sqlpp
index 1219f2e..d20e7c9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int8/serial_stddev_int8.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int8/serial_stddev_int8.3.query.sqlpp
@@ -19,7 +19,7 @@
use test;
-select gid, stddev(t.val) as stddev
+select gid, stddev(t.val) as stddev, stddev_pop(t.val) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int8_null/serial_stddev_int8_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int8_null/serial_stddev_int8_null.3.query.sqlpp
index 2125b05..eb4bc56 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int8_null/serial_stddev_int8_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_int8_null/serial_stddev_int8_null.3.query.sqlpp
@@ -19,7 +19,7 @@
use test;
-select gid, stddev(t.valplus) as stddev
+select gid, stddev(t.valplus) as stddev, stddev_pop(t.valplus) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_mixed.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_mixed.1.ddl.sqlpp
new file mode 100644
index 0000000..da0bd7b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_mixed.1.ddl.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+
+create type test.TestType as
+{
+ id : bigint,
+ gid : bigint,
+ val : double
+};
+
+create dataset Test(TestType) primary key id;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_mixed.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_mixed.2.update.sqlpp
new file mode 100644
index 0000000..8c0b731
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_mixed.2.update.sqlpp
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+use test;
+
+insert into Test
+select element {'id':0,'gid':1,'val':double(4.32),'valplus':float('2.0')};
+insert into Test
+select element {'id':1,'gid':1,'val':double(5.32)};
+insert into Test
+select element {'id':2,'gid':1,'val':double(6.32),'valplus':'hello world'};
+insert into Test
+select element {'id':3,'gid':1,'val':double(4.32),'valplus':double('3.0')};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_mixed.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_mixed.3.query.sqlpp
new file mode 100644
index 0000000..207b139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_mixed.3.query.sqlpp
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+ /*
+ * Description : Run serial-stddev over an ordered list with mixed types
+ * Expected Res : Failure
+ * Date : March 5th 2018
+ */
+
+use test;
+
+select gid, array_stddev_pop((select value g.valplus from g)) as stddev_pop
+from Test as t
+/* +hash */
+group by t.gid as gid group as g(valplus as valplus);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_distinct/stddev_distinct.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_distinct/stddev_distinct.1.query.sqlpp
new file mode 100644
index 0000000..37606a1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_distinct/stddev_distinct.1.query.sqlpp
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+ {
+ 't1': to_bigint(array_stddev(distinct [10,20,30,10,20,30,10])),
+ 't2': to_bigint(array_stddev(distinct [null,missing,null,missing])),
+ 't3': to_bigint(array_stddev(distinct [40,null,missing,50,40,null,missing,50,40])),
+ 't4': to_bigint(array_stddev(distinct [])),
+ 't5': to_bigint(array_stddev_pop(distinct [10,20,30,10,20,30,10])),
+ 't6': to_bigint(array_stddev_pop(distinct [null,missing,null,missing])),
+ 't7': to_bigint(array_stddev_pop(distinct [40,null,missing,50,40,null,missing,50,40])),
+ 't8': to_bigint(array_stddev_pop(distinct []))
+ };
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_double/stddev_double.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_double/stddev_double.3.query.sqlpp
index 4a539ed..ff20386 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_double/stddev_double.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_double/stddev_double.3.query.sqlpp
@@ -17,7 +17,10 @@
* under the License.
*/
-select element array_stddev((
+{'stddev': (select element array_stddev((
select element x
from [1.0,2.0,double('3.0')] as x
-));
+))), 'stddev_pop': (select element array_stddev_pop((
+ select element x
+ from [1.0,2.0,double('3.0')] as x
+)))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_double_null/stddev_double_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_double_null/stddev_double_null.3.query.sqlpp
index c06f58d..3899ca2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_double_null/stddev_double_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_double_null/stddev_double_null.3.query.sqlpp
@@ -23,4 +23,7 @@
{'stddev':test.array_stddev((
select element x.doubleField
from Numeric as x
+)), 'stddev_pop':test.array_stddev_pop((
+ select element x.doubleField
+ from Numeric as x
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_empty_01/stddev_empty_01.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_empty_01/stddev_empty_01.1.ddl.sqlpp
index a6590c5..e2d346b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_empty_01/stddev_empty_01.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_empty_01/stddev_empty_01.1.ddl.sqlpp
@@ -17,7 +17,7 @@
* under the License.
*/
/*
- * Description : Tests that array_avg aggregation correctly returns null for an empty stream,
+ * Description : Tests that array_stddev aggregation correctly returns null for an empty stream,
* without an aggregate combiner.
* Success : Yes
*/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_empty_01/stddev_empty_01.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_empty_01/stddev_empty_01.3.query.sqlpp
index 8331de0..988b1e6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_empty_01/stddev_empty_01.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_empty_01/stddev_empty_01.3.query.sqlpp
@@ -17,7 +17,7 @@
* under the License.
*/
/*
- * Description : Tests that array_stddev aggregation correctly returns null for an empty stream,
+ * Description : Tests that stddev and stddev_pop aggregation correctly returns null for an empty stream,
* without an aggregate combiner.
* Success : Yes
*/
@@ -25,8 +25,12 @@
use test;
-select element test.array_stddev((
+{'stddev': (select element test.array_stddev((
select element x
from [1,2,3] as x
where (x > 10)
-));
+))), 'stddev_pop': (select element test.array_stddev_pop((
+ select element x
+ from [1,2,3] as x
+ where (x > 10)
+)))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_empty_02/stddev_empty_02.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_empty_02/stddev_empty_02.1.ddl.sqlpp
index b9cd662..444cfb2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_empty_02/stddev_empty_02.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_empty_02/stddev_empty_02.1.ddl.sqlpp
@@ -17,7 +17,7 @@
* under the License.
*/
/*
- * Description : Tests that array_avg aggregation correctly returns null for an empty stream,
+ * Description : Tests that array_stddev aggregation correctly returns null for an empty stream,
* with an aggregate combiner.
* Success : Yes
*/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_empty_02/stddev_empty_02.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_empty_02/stddev_empty_02.3.query.sqlpp
index bfbe1b1..3ad8d1b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_empty_02/stddev_empty_02.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_empty_02/stddev_empty_02.3.query.sqlpp
@@ -17,7 +17,7 @@
* under the License.
*/
/*
- * Description : Tests that array_stddev aggregation correctly returns null for an empty stream,
+ * Description : Tests that stddev and stddev_pop aggregation correctly returns null for an empty stream,
* with an aggregate combiner.
* Success : Yes
*/
@@ -25,7 +25,10 @@
use test;
-select element test.array_stddev((
+{'stddev': (select element test.array_stddev((
select element x.val
from Test as x
-));
+))), 'stddev_pop': (select element test.array_stddev_pop((
+ select element x.val
+ from Test as x
+)))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_float/stddev_float.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_float/stddev_float.3.query.sqlpp
index cb51c3d..a4baabb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_float/stddev_float.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_float/stddev_float.3.query.sqlpp
@@ -20,7 +20,10 @@
use test;
-select element test.array_stddev((
+{'stddev': (select element test.array_stddev((
select element x
from [test.float('1'),test.float('2'),test.float('3')] as x
-));
+))), 'stddev_pop': (select element test.array_stddev_pop((
+ select element x
+ from [test.float('1'),test.float('2'),test.float('3')] as x
+)))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_float_null/stddev_float_nu.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_float_null/stddev_float_nu.3.query.sqlpp
index c85ce12..8a1abff 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_float_null/stddev_float_nu.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_float_null/stddev_float_nu.3.query.sqlpp
@@ -23,4 +23,7 @@
{'stddev':test.array_stddev((
select element x.floatField
from Numeric as x
+)), 'stddev_pop':test.array_stddev_pop((
+ select element x.floatField
+ from Numeric as x
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int16/stddev_int16.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int16/stddev_int16.3.query.sqlpp
index c5360e9..2ad24ab 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int16/stddev_int16.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int16/stddev_int16.3.query.sqlpp
@@ -20,7 +20,10 @@
use test;
-select element test.array_stddev((
+{'stddev': (select element test.array_stddev((
select element x
from [test.smallint('1'),test.smallint('2'),test.smallint('3')] as x
-));
+))), 'stddev_pop': (select element test.array_stddev_pop((
+ select element x
+ from [test.smallint('1'),test.smallint('2'),test.smallint('3')] as x
+)))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int16_null/stddev_int16_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int16_null/stddev_int16_null.3.query.sqlpp
index f89e1ec..2da44d4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int16_null/stddev_int16_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int16_null/stddev_int16_null.3.query.sqlpp
@@ -23,4 +23,7 @@
{'stddev':test.array_stddev((
select element x.int16Field
from Numeric as x
+)), 'stddev_pop':test.array_stddev_pop((
+ select element x.int16Field
+ from Numeric as x
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int32/stddev_int32.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int32/stddev_int32.3.query.sqlpp
index afbe777..b8a59c3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int32/stddev_int32.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int32/stddev_int32.3.query.sqlpp
@@ -20,7 +20,10 @@
use test;
-select element test.array_stddev((
+{'stddev': (select element test.array_stddev((
select element x
from [test.integer('1'),test.integer('2'),test.integer('3')] as x
-));
+))), 'stddev_pop': (select element test.array_stddev_pop((
+ select element x
+ from [test.integer('1'),test.integer('2'),test.integer('3')] as x
+)))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int32_null/stddev_int32_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int32_null/stddev_int32_null.3.query.sqlpp
index a76ea4a..4d0ff58 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int32_null/stddev_int32_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int32_null/stddev_int32_null.3.query.sqlpp
@@ -23,4 +23,7 @@
{'stddev':test.array_stddev((
select element x.int32Field
from Numeric as x
+)), 'stddev_pop':test.array_stddev_pop((
+ select element x.int32Field
+ from Numeric as x
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int64/stddev_int64.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int64/stddev_int64.3.query.sqlpp
index 17e2285..cf0fa59 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int64/stddev_int64.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int64/stddev_int64.3.query.sqlpp
@@ -20,7 +20,10 @@
use test;
-select element test.array_stddev((
+{'stddev': (select element test.array_stddev((
select element x
from [test.bigint('1'),test.bigint('2'),test.bigint('3')] as x
-));
+))), 'stddev_pop': (select element test.array_stddev_pop((
+ select element x
+ from [test.bigint('1'),test.bigint('2'),test.bigint('3')] as x
+)))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int64_null/stddev_int64_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int64_null/stddev_int64_null.3.query.sqlpp
index 5ed6db6..7aa502c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int64_null/stddev_int64_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int64_null/stddev_int64_null.3.query.sqlpp
@@ -23,4 +23,7 @@
{'stddev':test.array_stddev((
select element x.int64Field
from Numeric as x
+)), 'stddev_pop':test.array_stddev_pop((
+ select element x.int64Field
+ from Numeric as x
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int8/stddev_int8.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int8/stddev_int8.3.query.sqlpp
index 6efdcaf..016b368 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int8/stddev_int8.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int8/stddev_int8.3.query.sqlpp
@@ -20,7 +20,10 @@
use test;
-select element test.array_stddev((
+{'stddev': (select element test.array_stddev((
select element x
from [test.tinyint('1'),test.tinyint('2'),test.tinyint('3')] as x
-));
+))), 'stddev_pop': (select element test.array_stddev_pop((
+ select element x
+ from [test.tinyint('1'),test.tinyint('2'),test.tinyint('3')] as x
+)))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int8_null/stddev_int8_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int8_null/stddev_int8_null.3.query.sqlpp
index 1001843..f7e4dbe 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int8_null/stddev_int8_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_int8_null/stddev_int8_null.3.query.sqlpp
@@ -23,4 +23,7 @@
{'stddev':test.array_stddev((
select element x.int8Field
from Numeric as x
+)), 'stddev_pop':test.array_stddev_pop((
+ select element x.int8Field
+ from Numeric as x
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_mixed/stddev_mixed.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_mixed/stddev_mixed.3.query.sqlpp
index 69ad38c..9eb1323 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_mixed/stddev_mixed.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_mixed/stddev_mixed.3.query.sqlpp
@@ -17,7 +17,7 @@
* under the License.
*/
/*
-* Description : Run array_avg over an ordered list with mixed types
+* Description : Run array_stddev over an ordered list with mixed types
* Expected Res : Failure
* Date : March 5th 2018
*/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_pop_mixed/stddev_pop_mixed.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_pop_mixed/stddev_pop_mixed.3.query.sqlpp
new file mode 100644
index 0000000..64538e8
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate-sql/stddev_pop_mixed/stddev_pop_mixed.3.query.sqlpp
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/*
+* Description : Run array_stddev_pop over an ordered list with mixed types
+* Expected Res : Failure
+* Date : Feb 7th 2014
+*/
+
+select element array_stddev_pop((
+ select element x
+ from [float('2.0'),'hello world',93847382783847382,date('2013-01-01')] as x
+));
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_null/agg_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_null/agg_null.3.query.sqlpp
index 062cb48..f1eb9dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_null/agg_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_null/agg_null.3.query.sqlpp
@@ -22,4 +22,4 @@
* Date : Jun 2nd 2013
*/
-{'count1':strict_count([null]),'average1':strict_avg([null]),'sum1':strict_sum([null]),'min1':strict_min([null]),'max1':strict_max([null]),'stddev1':strict_stddev([null]),'count2':strict_count({{null,null}}),'average2':strict_avg({{null,null}}),'sum2':strict_sum({{null,null}}),'min2':strict_min({{null,null}}),'max2':strict_max({{null,null}}),'stddev2':strict_stddev({{null,null}})};
+{'count1':strict_count([null]),'average1':strict_avg([null]),'sum1':strict_sum([null]),'min1':strict_min([null]),'max1':strict_max([null]),'stddev1':strict_stddev([null]),'stddev_pop1':strict_stddev_pop([null]),'count2':strict_count({{null,null}}),'average2':strict_avg({{null,null}}),'sum2':strict_sum({{null,null}}),'min2':strict_min({{null,null}}),'max2':strict_max({{null,null}}),'stddev2':strict_stddev({{null,null}}),'stddev_pop2':strict_stddev_pop({{null,null}})};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_null_rec/agg_null_rec.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_null_rec/agg_null_rec.3.query.sqlpp
index 88c86f5..6796570 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_null_rec/agg_null_rec.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_null_rec/agg_null_rec.3.query.sqlpp
@@ -43,4 +43,7 @@
)), 'stddev':test.strict_stddev((
select element t.valplus
from Test as t
+)), 'stddev_pop':test.strict_stddev_pop((
+ select element t.valplus
+ from Test as t
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_null_rec_1/agg_null_rec_1.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_null_rec_1/agg_null_rec_1.3.query.sqlpp
index bf316da..e58aefb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_null_rec_1/agg_null_rec_1.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_null_rec_1/agg_null_rec_1.3.query.sqlpp
@@ -58,4 +58,10 @@
select element t
from Test as t
) as i
+)),'stddev_pop':test.strict_stddev_pop((
+ select element i.val
+ from (
+ select element t
+ from Test as t
+ ) as i
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_number/agg_number.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_number/agg_number.3.query.sqlpp
index e8385ca..680f5c9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_number/agg_number.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_number/agg_number.3.query.sqlpp
@@ -22,4 +22,4 @@
* Date : Jun 2nd 2013
*/
-{'count1':strict_count([float('2.0'),double('3.0'),93847382783847382,1]),'average1':strict_avg([float('2.0'),double('3.0'),93847382783847382,1]),'sum1':strict_sum([float('2.0'),double('3.0'),93847382783847382,1]),'min1':strict_min([float('2.0'),double('3.0'),93847382783847382,1]),'max1':strict_max([float('2.0'),double('3.0'),93847382783847382,1]),'stddev1':strict_stddev([float('2.0'),double('3.0'),93847382783847382,1]),'count2':strict_count({{float('2.0'),double('3.0'),93847382783847382,1}}),'average2':strict_avg({{float('2.0'),double('3.0'),93847382783847382,1}}),'sum2':strict_sum({{float('2.0'),double('3.0'),93847382783847382,1}}),'min2':strict_min({{float('2.0'),double('3.0'),93847382783847382,1}}),'max2':strict_max({{float('2.0'),double('3.0'),93847382783847382,1}}),'stddev2':strict_stddev([float('2.0'),double('3.0'),93847382783847382,1])};
\ No newline at end of file
+{'count1':strict_count([float('2.0'),double('3.0'),93847382783847382,1]),'average1':strict_avg([float('2.0'),double('3.0'),93847382783847382,1]),'sum1':strict_sum([float('2.0'),double('3.0'),93847382783847382,1]),'min1':strict_min([float('2.0'),double('3.0'),93847382783847382,1]),'max1':strict_max([float('2.0'),double('3.0'),93847382783847382,1]),'stddev1':strict_stddev([float('2.0'),double('3.0'),93847382783847382,1]),'stddev_pop1':strict_stddev_pop([float('2.0'),double('3.0'),93847382783847382,1]),'count2':strict_count({{float('2.0'),double('3.0'),93847382783847382,1}}),'average2':strict_avg({{float('2.0'),double('3.0'),93847382783847382,1}}),'sum2':strict_sum({{float('2.0'),double('3.0'),93847382783847382,1}}),'min2':strict_min({{float('2.0'),double('3.0'),93847382783847382,1}}),'max2':strict_max({{float('2.0'),double('3.0'),93847382783847382,1}}),'stddev2':strict_stddev([float('2.0'),double('3.0'),93847382783847382,1]),'stddev_pop2':strict_stddev_pop([float('2.0'),double('3.0'),93847382783847382,1])};
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_number_rec/agg_number_rec.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_number_rec/agg_number_rec.3.query.sqlpp
index 391e49d..1144a95 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_number_rec/agg_number_rec.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/agg_number_rec/agg_number_rec.3.query.sqlpp
@@ -43,4 +43,7 @@
)),'stddev':test.strict_stddev((
select element t.valplus
from Test as t
+)),'stddev_pop':test.strict_stddev_pop((
+ select element t.valplus
+ from Test as t
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev/scalar_stddev.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev/scalar_stddev.1.ddl.sqlpp
index bc2d063..7049419 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev/scalar_stddev.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev/scalar_stddev.1.ddl.sqlpp
@@ -17,7 +17,7 @@
* under the License.
*/
/*
- * Description : Tests the scalar version of avg without nulls.
+ * Description : Tests the scalar version of stddev and stddev_pop without nulls.
* Success : Yes
*/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev/scalar_stddev.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev/scalar_stddev.3.query.sqlpp
index e1d9437..a7c1497 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev/scalar_stddev.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev/scalar_stddev.3.query.sqlpp
@@ -17,19 +17,26 @@
* under the License.
*/
/*
- * Description : Tests the scalar version of stddev without nulls.
+ * Description : Tests the scalar version of stddev and stddev_pop without nulls.
* Success : Yes
*/
use test;
-
-with i8 as test.strict_stddev([test.tinyint('1'),test.tinyint('2'),test.tinyint('3')]),
+{'stddev': (with i8 as test.strict_stddev([test.tinyint('1'),test.tinyint('2'),test.tinyint('3')]),
i16 as test.strict_stddev([test.smallint('1'),test.smallint('2'),test.smallint('3')]),
i32 as test.strict_stddev([test.integer('1'),test.integer('2'),test.integer('3')]),
i64 as test.strict_stddev([test.bigint('1'),test.bigint('2'),test.bigint('3')]),
f as test.strict_stddev([test.float('1'),test.float('2'),test.float('3')]),
d as test.strict_stddev([test.double('1'),test.double('2'),test.double('3')])
select element i
-from [i8,i16,i32,i64,f,d] as i
-;
+from [i8,i16,i32,i64,f,d] as i),
+'stddev_pop': (with i8 as test.strict_stddev_pop([test.tinyint('1'),test.tinyint('2'),test.tinyint('3')]),
+ i16 as test.strict_stddev_pop([test.smallint('1'),test.smallint('2'),test.smallint('3')]),
+ i32 as test.strict_stddev_pop([test.integer('1'),test.integer('2'),test.integer('3')]),
+ i64 as test.strict_stddev_pop([test.bigint('1'),test.bigint('2'),test.bigint('3')]),
+ f as test.strict_stddev_pop([test.float('1'),test.float('2'),test.float('3')]),
+ d as test.strict_stddev_pop([test.double('1'),test.double('2'),test.double('3')])
+select element i
+from [i8,i16,i32,i64,f,d] as i)
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev_empty/scalar_stddev_empty.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev_empty/scalar_stddev_empty.1.ddl.sqlpp
index cb061c2..63c85db 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev_empty/scalar_stddev_empty.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev_empty/scalar_stddev_empty.1.ddl.sqlpp
@@ -17,7 +17,7 @@
* under the License.
*/
/*
- * Description : Tests the scalar version of avg with an empty list.
+ * Description : Tests the scalar version of stddev and stddev_pop with an empty list.
* Success : Yes
*/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev_empty/scalar_stddev_empty.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev_empty/scalar_stddev_empty.3.query.sqlpp
index 9dedcbd..bdccf51 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev_empty/scalar_stddev_empty.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev_empty/scalar_stddev_empty.3.query.sqlpp
@@ -17,8 +17,9 @@
* under the License.
*/
/*
- * Description : Tests the scalar version of stddev with an empty list.
+ * Description : Tests the scalar version of stddev and stddev_pop with an empty list.
* Success : Yes
*/
-select element strict_stddev([]);
+{'stddev': (select element strict_stddev([])),
+'stddev_pop': (select element strict_stddev_pop([]))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev_null/scalar_stddev_null.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev_null/scalar_stddev_null.1.ddl.sqlpp
index 03230ec..487d166 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev_null/scalar_stddev_null.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev_null/scalar_stddev_null.1.ddl.sqlpp
@@ -17,7 +17,7 @@
* under the License.
*/
/*
- * Description : Tests the scalar version of avg with nulls.
+ * Description : Tests the scalar version of stddev and stddev_pop with nulls.
* Success : Yes
*/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev_null/scalar_stddev_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev_null/scalar_stddev_null.3.query.sqlpp
index e8a3d18..d486633 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev_null/scalar_stddev_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/scalar_stddev_null/scalar_stddev_null.3.query.sqlpp
@@ -17,19 +17,26 @@
* under the License.
*/
/*
- * Description : Tests the scalar version of stddev with nulls.
+ * Description : Tests the scalar version of stddev and stddev_pop with nulls.
* Success : Yes
*/
use test;
-
-with i8 as test.strict_stddev([test.tinyint('1'),test.tinyint('2'),test.tinyint('3'),null]),
+{'stddev': (with i8 as test.strict_stddev([test.tinyint('1'),test.tinyint('2'),test.tinyint('3'),null]),
i16 as test.strict_stddev([test.smallint('1'),test.smallint('2'),test.smallint('3'),null]),
i32 as test.strict_stddev([test.integer('1'),test.integer('2'),test.integer('3'),null]),
i64 as test.strict_stddev([test.bigint('1'),test.bigint('2'),test.bigint('3'),null]),
f as test.strict_stddev([test.float('1'),test.float('2'),test.float('3'),null]),
d as test.strict_stddev([test.double('1'),test.double('2'),test.double('3'),null])
select element i
-from [i8,i16,i32,i64,f,d] as i
-;
+from [i8,i16,i32,i64,f,d] as i),
+'stddev_pop': (with i8 as test.strict_stddev_pop([test.tinyint('1'),test.tinyint('2'),test.tinyint('3'),null]),
+ i16 as test.strict_stddev_pop([test.smallint('1'),test.smallint('2'),test.smallint('3'),null]),
+ i32 as test.strict_stddev_pop([test.integer('1'),test.integer('2'),test.integer('3'),null]),
+ i64 as test.strict_stddev_pop([test.bigint('1'),test.bigint('2'),test.bigint('3'),null]),
+ f as test.strict_stddev_pop([test.float('1'),test.float('2'),test.float('3'),null]),
+ d as test.strict_stddev_pop([test.double('1'),test.double('2'),test.double('3'),null])
+select element i
+from [i8,i16,i32,i64,f,d] as i)
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_double/serial_stddev_double.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_double/serial_stddev_double.3.query.sqlpp
index c142973..ad787f5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_double/serial_stddev_double.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_double/serial_stddev_double.3.query.sqlpp
@@ -19,7 +19,8 @@
use test;
-select gid, strict_stddev((select value g.val from g)) as stddev
+select gid, strict_stddev((select value g.val from g)) as stddev,
+ strict_stddev_pop((select value g.val from g)) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid group as g(val as val);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_double_null/serial_stddev_double_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_double_null/serial_stddev_double_null.3.query.sqlpp
index 9d62353..3ca4fec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_double_null/serial_stddev_double_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_double_null/serial_stddev_double_null.3.query.sqlpp
@@ -19,7 +19,8 @@
use test;
-select gid, strict_stddev((select value g.valplus from g)) as stddev
+select gid, strict_stddev((select value g.valplus from g)) as stddev,
+ strict_stddev_pop((select value g.valplus from g)) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid group as g(valplus as valplus);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_empty/serial_stddev_empty.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_empty/serial_stddev_empty.3.query.sqlpp
index c142973..ad787f5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_empty/serial_stddev_empty.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_empty/serial_stddev_empty.3.query.sqlpp
@@ -19,7 +19,8 @@
use test;
-select gid, strict_stddev((select value g.val from g)) as stddev
+select gid, strict_stddev((select value g.val from g)) as stddev,
+ strict_stddev_pop((select value g.val from g)) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid group as g(val as val);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_float/serial_stddev_float.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_float/serial_stddev_float.3.query.sqlpp
index c142973..ad787f5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_float/serial_stddev_float.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_float/serial_stddev_float.3.query.sqlpp
@@ -19,7 +19,8 @@
use test;
-select gid, strict_stddev((select value g.val from g)) as stddev
+select gid, strict_stddev((select value g.val from g)) as stddev,
+ strict_stddev_pop((select value g.val from g)) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid group as g(val as val);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_float_null/serial_stddev_float_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_float_null/serial_stddev_float_null.3.query.sqlpp
index 9d62353..3ca4fec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_float_null/serial_stddev_float_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_float_null/serial_stddev_float_null.3.query.sqlpp
@@ -19,7 +19,8 @@
use test;
-select gid, strict_stddev((select value g.valplus from g)) as stddev
+select gid, strict_stddev((select value g.valplus from g)) as stddev,
+ strict_stddev_pop((select value g.valplus from g)) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid group as g(valplus as valplus);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int16/serial_stddev_int16.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int16/serial_stddev_int16.3.query.sqlpp
index c142973..ad787f5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int16/serial_stddev_int16.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int16/serial_stddev_int16.3.query.sqlpp
@@ -19,7 +19,8 @@
use test;
-select gid, strict_stddev((select value g.val from g)) as stddev
+select gid, strict_stddev((select value g.val from g)) as stddev,
+ strict_stddev_pop((select value g.val from g)) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid group as g(val as val);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int16_null/serial_stddev_int16_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int16_null/serial_stddev_int16_null.3.query.sqlpp
index 9d62353..3ca4fec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int16_null/serial_stddev_int16_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int16_null/serial_stddev_int16_null.3.query.sqlpp
@@ -19,7 +19,8 @@
use test;
-select gid, strict_stddev((select value g.valplus from g)) as stddev
+select gid, strict_stddev((select value g.valplus from g)) as stddev,
+ strict_stddev_pop((select value g.valplus from g)) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid group as g(valplus as valplus);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int32/serial_stddev_int32.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int32/serial_stddev_int32.3.query.sqlpp
index c142973..ad787f5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int32/serial_stddev_int32.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int32/serial_stddev_int32.3.query.sqlpp
@@ -19,7 +19,8 @@
use test;
-select gid, strict_stddev((select value g.val from g)) as stddev
+select gid, strict_stddev((select value g.val from g)) as stddev,
+ strict_stddev_pop((select value g.val from g)) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid group as g(val as val);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int32_null/serial_stddev_int32_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int32_null/serial_stddev_int32_null.3.query.sqlpp
index 9d62353..3ca4fec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int32_null/serial_stddev_int32_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int32_null/serial_stddev_int32_null.3.query.sqlpp
@@ -19,7 +19,8 @@
use test;
-select gid, strict_stddev((select value g.valplus from g)) as stddev
+select gid, strict_stddev((select value g.valplus from g)) as stddev,
+ strict_stddev_pop((select value g.valplus from g)) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid group as g(valplus as valplus);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int64/serial_stddev_int64.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int64/serial_stddev_int64.3.query.sqlpp
index c142973..ad787f5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int64/serial_stddev_int64.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int64/serial_stddev_int64.3.query.sqlpp
@@ -19,7 +19,8 @@
use test;
-select gid, strict_stddev((select value g.val from g)) as stddev
+select gid, strict_stddev((select value g.val from g)) as stddev,
+ strict_stddev_pop((select value g.val from g)) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid group as g(val as val);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int64_null/serial_stddev_int64_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int64_null/serial_stddev_int64_null.3.query.sqlpp
index 9d62353..3ca4fec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int64_null/serial_stddev_int64_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int64_null/serial_stddev_int64_null.3.query.sqlpp
@@ -19,7 +19,8 @@
use test;
-select gid, strict_stddev((select value g.valplus from g)) as stddev
+select gid, strict_stddev((select value g.valplus from g)) as stddev,
+ strict_stddev_pop((select value g.valplus from g)) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid group as g(valplus as valplus);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int8/serial_stddev_int8.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int8/serial_stddev_int8.3.query.sqlpp
index c142973..ad787f5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int8/serial_stddev_int8.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int8/serial_stddev_int8.3.query.sqlpp
@@ -19,7 +19,8 @@
use test;
-select gid, strict_stddev((select value g.val from g)) as stddev
+select gid, strict_stddev((select value g.val from g)) as stddev,
+ strict_stddev_pop((select value g.val from g)) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid group as g(val as val);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int8_null/serial_stddev_int8_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int8_null/serial_stddev_int8_null.3.query.sqlpp
index 9d62353..3ca4fec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int8_null/serial_stddev_int8_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_int8_null/serial_stddev_int8_null.3.query.sqlpp
@@ -19,7 +19,8 @@
use test;
-select gid, strict_stddev((select value g.valplus from g)) as stddev
+select gid, strict_stddev((select value g.valplus from g)) as stddev,
+ strict_stddev_pop((select value g.valplus from g)) as stddev_pop
from Test as t
/* +hash */
group by t.gid as gid group as g(valplus as valplus);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.1.ddl.sqlpp
new file mode 100644
index 0000000..da0bd7b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.1.ddl.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+
+create type test.TestType as
+{
+ id : bigint,
+ gid : bigint,
+ val : double
+};
+
+create dataset Test(TestType) primary key id;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.2.update.sqlpp
new file mode 100644
index 0000000..1b4eac9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.2.update.sqlpp
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+use test;
+
+insert into Test
+select element {'id':0,'gid':1,'val':double(4.32),'valplus':float('2.0')};
+insert into Test
+select element {'id':1,'gid':1,'val':double(5.32),'valplus':float('1.0')};
+insert into Test
+select element {'id':2,'gid':1,'val':double(6.32),'valplus':'hello world'};
+insert into Test
+select element {'id':3,'gid':1,'val':double(4.32),'valplus':double('3.0')};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.3.query.sqlpp
new file mode 100644
index 0000000..329fc59
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.3.query.sqlpp
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+ /*
+ * Description : Run serial-stddev_pop over an ordered list with mixed types
+ * Expected Res : Failure
+ * Date : March 5th 2018
+ */
+
+use test;
+
+select gid, strict_stddev_pop((select value g.valplus from g)) as stddev_pop
+from Test as t
+/* +hash */
+group by t.gid as gid group as g(valplus as valplus);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_distinct/stddev_distinct.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_distinct/stddev_distinct.1.query.sqlpp
new file mode 100644
index 0000000..ee5b28c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_distinct/stddev_distinct.1.query.sqlpp
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+ {
+ 't1': to_bigint(strict_stddev(distinct [10,20,30,10,20,30,10])),
+ 't2': to_bigint(strict_stddev(distinct [null,missing,null,missing])),
+ 't3': to_bigint(strict_stddev(distinct [40,null,missing,50,40,null,missing,50,40])),
+ 't4': to_bigint(strict_stddev(distinct [])),
+ 't5': to_bigint(strict_stddev_pop(distinct [10,20,30,10,20,30,10])),
+ 't6': to_bigint(strict_stddev_pop(distinct [null,missing,null,missing])),
+ 't7': to_bigint(strict_stddev_pop(distinct [40,null,missing,50,40,null,missing,50,40])),
+ 't8': to_bigint(strict_stddev_pop(distinct []))
+ };
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_double/stddev_double.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_double/stddev_double.3.query.sqlpp
index c39ca57..6ec48bd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_double/stddev_double.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_double/stddev_double.3.query.sqlpp
@@ -17,7 +17,10 @@
* under the License.
*/
-select element strict_stddev((
+{'stddev':(select element strict_stddev((
select element x
from [1.0,2.0,double('3.0')] as x
-));
+))), 'stddev_pop': (select element strict_stddev_pop((
+ select element x
+ from [1.0,2.0,double('3.0')] as x
+)))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_double_null/stddev_double_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_double_null/stddev_double_null.3.query.sqlpp
index b86d514..b8970f0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_double_null/stddev_double_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_double_null/stddev_double_null.3.query.sqlpp
@@ -19,8 +19,10 @@
use test;
-
{'stddev':test.strict_stddev((
select element x.doubleField
from Numeric as x
+)), 'stddev_pop':test.strict_stddev_pop((
+ select element x.doubleField
+ from Numeric as x
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_empty_01/stddev_empty_01.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_empty_01/stddev_empty_01.1.ddl.sqlpp
index 2ae248a..8ec3e08 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_empty_01/stddev_empty_01.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_empty_01/stddev_empty_01.1.ddl.sqlpp
@@ -17,7 +17,7 @@
* under the License.
*/
/*
- * Description : Tests that avg aggregation correctly returns null for an empty stream,
+ * Description : Tests that stddev aggregation correctly returns null for an empty stream,
* without an aggregate combiner.
* Success : Yes
*/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_empty_01/stddev_empty_01.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_empty_01/stddev_empty_01.3.query.sqlpp
index 4dd9c6c..7c02b5d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_empty_01/stddev_empty_01.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_empty_01/stddev_empty_01.3.query.sqlpp
@@ -17,16 +17,19 @@
* under the License.
*/
/*
- * Description : Tests that avg aggregation correctly returns null for an empty stream,
+ * Description : Tests that stddev aggregation correctly returns null for an empty stream,
* without an aggregate combiner.
* Success : Yes
*/
use test;
-
-select element test.strict_stddev((
+{'stddev': (select element test.strict_stddev((
select element x
from [1,2,3] as x
where (x > 10)
-));
+))), 'stddev_pop': (select element test.strict_stddev_pop((
+ select element x
+ from [1,2,3] as x
+ where (x > 10)
+)))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_empty_02/stddev_empty_02.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_empty_02/stddev_empty_02.1.ddl.sqlpp
index c65aa35..ac9ee8f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_empty_02/stddev_empty_02.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_empty_02/stddev_empty_02.1.ddl.sqlpp
@@ -17,7 +17,7 @@
* under the License.
*/
/*
- * Description : Tests that avg aggregation correctly returns null for an empty stream,
+ * Description : Tests that stddev aggregation correctly returns null for an empty stream,
* with an aggregate combiner.
* Success : Yes
*/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_empty_02/stddev_empty_02.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_empty_02/stddev_empty_02.3.query.sqlpp
index c874bee..00ef2a5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_empty_02/stddev_empty_02.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_empty_02/stddev_empty_02.3.query.sqlpp
@@ -17,15 +17,17 @@
* under the License.
*/
/*
- * Description : Tests that avg aggregation correctly returns null for an empty stream,
+ * Description : Tests that stddev aggregation correctly returns null for an empty stream,
* with an aggregate combiner.
* Success : Yes
*/
use test;
-
-select element test.strict_stddev((
+{'stddev': (select element test.strict_stddev((
select element x.val
from Test as x
-));
+))), 'stddev_pop': (select element test.strict_stddev_pop((
+ select element x.val
+ from Test as x
+)))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_float/stddev_float.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_float/stddev_float.3.query.sqlpp
index 4639508..7d93d5f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_float/stddev_float.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_float/stddev_float.3.query.sqlpp
@@ -20,7 +20,10 @@
use test;
-select element test.strict_stddev((
+{'stddev': (select element test.strict_stddev((
select element x
from [test.float('1'),test.float('2'),test.float('3')] as x
-));
+))), 'stddev_pop': (select element test.strict_stddev_pop((
+ select element x
+ from [test.float('1'),test.float('2'),test.float('3')] as x
+)))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_float_null/stddev_float_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_float_null/stddev_float_null.3.query.sqlpp
index 0efd9c5..8953da9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_float_null/stddev_float_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_float_null/stddev_float_null.3.query.sqlpp
@@ -23,4 +23,7 @@
{'stddev':test.strict_stddev((
select element x.floatField
from Numeric as x
+)), 'stddev_pop':test.strict_stddev_pop((
+ select element x.floatField
+ from Numeric as x
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int16/stddev_int16.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int16/stddev_int16.3.query.sqlpp
index 58f3e41..3c8b633 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int16/stddev_int16.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int16/stddev_int16.3.query.sqlpp
@@ -20,7 +20,10 @@
use test;
-select element test.strict_stddev((
+{'stddev': (select element test.strict_stddev((
select element x
from [test.smallint('1'),test.smallint('2'),test.smallint('3')] as x
-));
+))), 'stddev_pop': (select element test.strict_stddev_pop((
+ select element x
+ from [test.smallint('1'),test.smallint('2'),test.smallint('3')] as x
+)))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int16_null/stddev_int16_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int16_null/stddev_int16_null.3.query.sqlpp
index 7608be6..314b28f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int16_null/stddev_int16_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int16_null/stddev_int16_null.3.query.sqlpp
@@ -23,4 +23,7 @@
{'stddev':test.strict_stddev((
select element x.int16Field
from Numeric as x
+)), 'stddev_pop':test.strict_stddev_pop((
+ select element x.int16Field
+ from Numeric as x
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int32/stddev_int32.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int32/stddev_int32.3.query.sqlpp
index 90dd3b3..9f4fd0d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int32/stddev_int32.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int32/stddev_int32.3.query.sqlpp
@@ -20,7 +20,10 @@
use test;
-select element test.strict_stddev((
+{'stddev': (select element test.strict_stddev((
select element x
from [1,2,3] as x
-));
+))), 'stddev_pop': (select element test.strict_stddev_pop((
+ select element x
+ from [1,2,3] as x
+)))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int32_null/stddev_int32_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int32_null/stddev_int32_null.3.query.sqlpp
index 42ea3a4..404532c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int32_null/stddev_int32_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int32_null/stddev_int32_null.3.query.sqlpp
@@ -23,4 +23,7 @@
{'stddev':test.strict_stddev((
select element x.int32Field
from Numeric as x
+)), 'stddev_pop':test.strict_stddev_pop((
+ select element x.int32Field
+ from Numeric as x
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int64/stddev_int64.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int64/stddev_int64.3.query.sqlpp
index 3c7269a..4d42043 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int64/stddev_int64.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int64/stddev_int64.3.query.sqlpp
@@ -20,7 +20,10 @@
use test;
-select element test.strict_stddev((
+{'stddev': (select element test.strict_stddev((
select element x
from [test.bigint('1'),test.bigint('2'),test.bigint('3')] as x
-));
+))), 'stddev_pop': (select element test.strict_stddev_pop((
+ select element x
+ from [test.bigint('1'),test.bigint('2'),test.bigint('3')] as x
+)))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int64_null/stddev_int64_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int64_null/stddev_int64_null.3.query.sqlpp
index 1304170..a5808a8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int64_null/stddev_int64_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int64_null/stddev_int64_null.3.query.sqlpp
@@ -23,4 +23,7 @@
{'stddev':test.strict_stddev((
select element x.int64Field
from Numeric as x
+)), 'stddev_pop':test.strict_stddev_pop((
+ select element x.int64Field
+ from Numeric as x
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int8/stddev_int8.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int8/stddev_int8.3.query.sqlpp
index 310f840..ba6d178 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int8/stddev_int8.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int8/stddev_int8.3.query.sqlpp
@@ -20,7 +20,10 @@
use test;
-select element test.strict_stddev((
+{'stddev': (select element test.strict_stddev((
select element x
from [test.tinyint('1'),test.tinyint('2'),test.tinyint('3')] as x
-));
+))), 'stddev_pop': (select element test.strict_stddev_pop((
+ select element x
+ from [test.tinyint('1'),test.tinyint('2'),test.tinyint('3')] as x
+)))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int8_null/stddev_int8_null.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int8_null/stddev_int8_null.3.query.sqlpp
index 25f0fee..f1d1c9b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int8_null/stddev_int8_null.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_int8_null/stddev_int8_null.3.query.sqlpp
@@ -23,4 +23,7 @@
{'stddev':test.strict_stddev((
select element x.int8Field
from Numeric as x
+)), 'stddev_pop':test.strict_stddev_pop((
+ select element x.int8Field
+ from Numeric as x
))};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_pop_mixed/stddev_pop_mixed.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_pop_mixed/stddev_pop_mixed.3.query.sqlpp
new file mode 100644
index 0000000..d068bb2
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/aggregate/stddev_pop_mixed/stddev_pop_mixed.3.query.sqlpp
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/*
+* Description : Run stddev_pop over an ordered list with mixed types
+* Expected Res : Failure
+* Date : Jun 2nd 2013
+*/
+
+select element strict_stddev_pop((
+ select element x
+ from [float('2.0'),'hello world',93847382783847382,date('2013-01-01')] as x
+));
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_null/agg_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_null/agg_null.1.adm
index 53910f3..a8c918b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_null/agg_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_null/agg_null.1.adm
@@ -1 +1 @@
-{ "sql-count1": 0, "average1": null, "sql-sum1": null, "sql-min1": null, "sql-max1": null, "sql-stddev1": null, "sql-count2": 0, "average2": null, "sql-sum2": null, "sql-min2": null, "sql-max2": null, "sql-stddev2": null }
+{ "sql-count1": 0, "average1": null, "sql-sum1": null, "sql-min1": null, "sql-max1": null, "sql-stddev1": null, "sql-stddev_pop1": null, "sql-count2": 0, "average2": null, "sql-sum2": null, "sql-min2": null, "sql-max2": null, "sql-stddev2": null, "sql-stddev_pop2": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_null_rec/agg_null_rec.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_null_rec/agg_null_rec.1.adm
index 425ca45..99d052a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_null_rec/agg_null_rec.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_null_rec/agg_null_rec.1.adm
@@ -1 +1 @@
-{ "sql-count": 2, "average": 26.0, "sql-stddev": 7.0710678118654755, "sql-sum": 52, "sql-min": 21, "sql-max": 31 }
+{ "sql-count": 2, "average": 26.0, "sql-stddev": 7.0710678118654755, "sql-stddev_pop": 5.0, "sql-sum": 52, "sql-min": 21, "sql-max": 31 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_null_rec_1/agg_null_rec.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_null_rec_1/agg_null_rec.1.adm
index 4d9b33d..988d2e4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_null_rec_1/agg_null_rec.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_null_rec_1/agg_null_rec.1.adm
@@ -1 +1 @@
-{ "sql-count": 3, "average": 5.32, "sql-sum": 15.96, "sql-stddev": 2.720510431232472E16, "sql-min": 473847, "sql-max": 38473827484738239 }
+{ "sql-count": 3, "average": 5.32, "sql-sum": 15.96, "sql-stddev": 2.720510431232472E16, "sql-stddev_pop": 1.9236913742132196E16, "sql-min": 473847, "sql-max": 38473827484738239 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_number/agg_number.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_number/agg_number.1.adm
index 2ea1357..37f109c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_number/agg_number.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_number/agg_number.1.adm
@@ -1 +1 @@
-{ "sql-count1": 4, "average1": 2.3461845695961844E16, "sql-stddev1": 4.6923691391923688E16, "sql-count2": 4, "average2": 2.3461845695961844E16, "sql-stddev2": 4.6923691391923688E16, "sql-sum1": 9.3847382783847376E16, "sql-min1": 1.0, "sql-max1": 9.3847382783847376E16, "sql-sum2": 9.3847382783847376E16, "sql-min2": 1.0, "sql-max2": 9.3847382783847376E16 }
+{ "sql-count1": 4, "average1": 2.3461845695961844E16, "sql-stddev1": 4.6923691391923688E16, "sql-stddev_pop1": 4.0637108784747104E16, "sql-count2": 4, "average2": 2.3461845695961844E16, "sql-stddev2": 4.6923691391923688E16, "sql-stddev_pop2": 4.0637108784747104E16, "sql-sum1": 9.3847382783847376E16, "sql-min1": 1.0, "sql-max1": 9.3847382783847376E16, "sql-sum2": 9.3847382783847376E16, "sql-min2": 1.0, "sql-max2": 9.3847382783847376E16 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_number_rec/agg_number_rec.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_number_rec/agg_number_rec.1.adm
index fdc01c8..19f61fd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_number_rec/agg_number_rec.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/agg_number_rec/agg_number_rec.1.adm
@@ -1 +1 @@
-{ "sql-count": 3, "average": 1.2824609161579424E16, "sql-stddev": 2.2212874655068836E16, "sql-sum": 3.8473827484738272E16, "sql-min": 2.0, "sql-max": 3.847382748473824E16 }
+{ "sql-count": 3, "average": 1.2824609161579424E16, "sql-stddev": 2.2212874655068836E16, "sql-stddev_pop": 1.8136736208439848E16, "sql-sum": 3.8473827484738272E16, "sql-min": 2.0, "sql-max": 3.847382748473824E16 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/scalar_stddev/scalar_stddev.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/scalar_stddev/scalar_stddev.1.adm
index 325ebd5..16c838c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/scalar_stddev/scalar_stddev.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/scalar_stddev/scalar_stddev.1.adm
@@ -1,6 +1 @@
-1.0
-1.0
-1.0
-1.0
-1.0
-1.0
+{ "stddev": [ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ], "stddev_pop": [ 0.816496580927726, 0.816496580927726, 0.816496580927726, 0.816496580927726, 0.816496580927726, 0.816496580927726 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/scalar_stddev_empty/scalar_stddev_empty.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/scalar_stddev_empty/scalar_stddev_empty.1.adm
index 19765bd..eb24dcb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/scalar_stddev_empty/scalar_stddev_empty.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/scalar_stddev_empty/scalar_stddev_empty.1.adm
@@ -1 +1 @@
-null
+{ "stddev": [ null ], "stddev_pop": [ null ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/scalar_stddev_null/scalar_stddev_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/scalar_stddev_null/scalar_stddev_null.1.adm
index 325ebd5..16c838c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/scalar_stddev_null/scalar_stddev_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/scalar_stddev_null/scalar_stddev_null.1.adm
@@ -1,6 +1 @@
-1.0
-1.0
-1.0
-1.0
-1.0
-1.0
+{ "stddev": [ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ], "stddev_pop": [ 0.816496580927726, 0.816496580927726, 0.816496580927726, 0.816496580927726, 0.816496580927726, 0.816496580927726 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_double/serial_stddev_double.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_double/serial_stddev_double.1.adm
index d2bef52..4e89687 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_double/serial_stddev_double.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_double/serial_stddev_double.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 0.8944271909999159 }
+{ "gid": 1, "stddev": 0.8944271909999159, "stddev_pop": 0.8 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_double_null/serial_stddev_double_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_double_null/serial_stddev_double_null.1.adm
index c6fb3a0..c71ba21 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_double_null/serial_stddev_double_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_double_null/serial_stddev_double_null.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 2.2212874654736076E16 }
+{ "gid": 1, "stddev": 2.2212874654736076E16, "stddev_pop": 1.8136736208168148E16 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_float/serial_stddev_float.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_float/serial_stddev_float.1.adm
index d2bef52..4e89687 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_float/serial_stddev_float.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_float/serial_stddev_float.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 0.8944271909999159 }
+{ "gid": 1, "stddev": 0.8944271909999159, "stddev_pop": 0.8 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_float_null/serial_stddev_float_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_float_null/serial_stddev_float_null.1.adm
index 81fb89a..daa09e6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_float_null/serial_stddev_float_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_float_null/serial_stddev_float_null.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 1.0 }
+{ "gid": 1, "stddev": 1.0, "stddev_pop": 0.816496580927726 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int16/serial_stddev_int16.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int16/serial_stddev_int16.1.adm
index d2bef52..4e89687 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int16/serial_stddev_int16.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int16/serial_stddev_int16.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 0.8944271909999159 }
+{ "gid": 1, "stddev": 0.8944271909999159, "stddev_pop": 0.8 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int16_null/serial_stddev_int16_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int16_null/serial_stddev_int16_null.1.adm
index 81fb89a..daa09e6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int16_null/serial_stddev_int16_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int16_null/serial_stddev_int16_null.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 1.0 }
+{ "gid": 1, "stddev": 1.0, "stddev_pop": 0.816496580927726 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int32/serial_stddev_int32.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int32/serial_stddev_int32.1.adm
index d2bef52..4e89687 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int32/serial_stddev_int32.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int32/serial_stddev_int32.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 0.8944271909999159 }
+{ "gid": 1, "stddev": 0.8944271909999159, "stddev_pop": 0.8 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int32_null/serial_stddev_int32_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int32_null/serial_stddev_int32_null.1.adm
index 81fb89a..daa09e6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int32_null/serial_stddev_int32_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int32_null/serial_stddev_int32_null.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 1.0 }
+{ "gid": 1, "stddev": 1.0, "stddev_pop": 0.816496580927726 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int64/serial_stddev_int64.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int64/serial_stddev_int64.1.adm
index d2bef52..4e89687 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int64/serial_stddev_int64.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int64/serial_stddev_int64.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 0.8944271909999159 }
+{ "gid": 1, "stddev": 0.8944271909999159, "stddev_pop": 0.8 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int64_null/serial_stddev_int64_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int64_null/serial_stddev_int64_null.1.adm
index 81fb89a..daa09e6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int64_null/serial_stddev_int64_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int64_null/serial_stddev_int64_null.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 1.0 }
+{ "gid": 1, "stddev": 1.0, "stddev_pop": 0.816496580927726 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int8/serial_stddev_int8.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int8/serial_stddev_int8.1.adm
index d2bef52..4e89687 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int8/serial_stddev_int8.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int8/serial_stddev_int8.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 0.8944271909999159 }
+{ "gid": 1, "stddev": 0.8944271909999159, "stddev_pop": 0.8 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int8_null/serial_stddev_int8_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int8_null/serial_stddev_int8_null.1.adm
index 81fb89a..daa09e6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int8_null/serial_stddev_int8_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_int8_null/serial_stddev_int8_null.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 1.0 }
+{ "gid": 1, "stddev": 1.0, "stddev_pop": 0.816496580927726 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_mixed.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_mixed.1.adm
new file mode 100644
index 0000000..e3b97f5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_mixed.1.adm
@@ -0,0 +1 @@
+[ ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_distinct/stddev_distinct.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_distinct/stddev_distinct.1.adm
new file mode 100644
index 0000000..51a2ce7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_distinct/stddev_distinct.1.adm
@@ -0,0 +1 @@
+{ "t1": 10, "t2": null, "t3": 7, "t4": null, "t5": 8, "t6": null, "t7": 5, "t8": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_double/stddev_double.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_double/stddev_double.1.adm
index d3827e7..653259d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_double/stddev_double.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_double/stddev_double.1.adm
@@ -1 +1 @@
-1.0
+{ "stddev": [ 1.0 ], "stddev_pop": [ 0.816496580927726 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_double_null/stddev_double_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_double_null/stddev_double_null.1.adm
index 74efe52..4f788be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_double_null/stddev_double_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_double_null/stddev_double_null.1.adm
@@ -1 +1 @@
-{ "stddev": 0.0 }
+{ "stddev": 0.0, "stddev_pop": 0.0 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_empty_01/stddev_empty_01.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_empty_01/stddev_empty_01.1.adm
index 19765bd..eb24dcb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_empty_01/stddev_empty_01.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_empty_01/stddev_empty_01.1.adm
@@ -1 +1 @@
-null
+{ "stddev": [ null ], "stddev_pop": [ null ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_empty_02/stddev_empty_02.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_empty_02/stddev_empty_02.1.adm
index 19765bd..eb24dcb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_empty_02/stddev_empty_02.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_empty_02/stddev_empty_02.1.adm
@@ -1 +1 @@
-null
+{ "stddev": [ null ], "stddev_pop": [ null ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_float/stddev_float.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_float/stddev_float.1.adm
index d3827e7..653259d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_float/stddev_float.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_float/stddev_float.1.adm
@@ -1 +1 @@
-1.0
+{ "stddev": [ 1.0 ], "stddev_pop": [ 0.816496580927726 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_float_null/stddev_float_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_float_null/stddev_float_null.1.adm
index 74efe52..4f788be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_float_null/stddev_float_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_float_null/stddev_float_null.1.adm
@@ -1 +1 @@
-{ "stddev": 0.0 }
+{ "stddev": 0.0, "stddev_pop": 0.0 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int16/stddev_int16.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int16/stddev_int16.1.adm
index d3827e7..653259d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int16/stddev_int16.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int16/stddev_int16.1.adm
@@ -1 +1 @@
-1.0
+{ "stddev": [ 1.0 ], "stddev_pop": [ 0.816496580927726 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int16_null/stddev_int16_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int16_null/stddev_int16_null.1.adm
index 74efe52..4f788be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int16_null/stddev_int16_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int16_null/stddev_int16_null.1.adm
@@ -1 +1 @@
-{ "stddev": 0.0 }
+{ "stddev": 0.0, "stddev_pop": 0.0 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int32/stddev_int32.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int32/stddev_int32.1.adm
index d3827e7..653259d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int32/stddev_int32.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int32/stddev_int32.1.adm
@@ -1 +1 @@
-1.0
+{ "stddev": [ 1.0 ], "stddev_pop": [ 0.816496580927726 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int32_null/stddev_int32_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int32_null/stddev_int32_null.1.adm
index 74efe52..4f788be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int32_null/stddev_int32_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int32_null/stddev_int32_null.1.adm
@@ -1 +1 @@
-{ "stddev": 0.0 }
+{ "stddev": 0.0, "stddev_pop": 0.0 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int64/stddev_int64.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int64/stddev_int64.1.adm
index d3827e7..653259d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int64/stddev_int64.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int64/stddev_int64.1.adm
@@ -1 +1 @@
-1.0
+{ "stddev": [ 1.0 ], "stddev_pop": [ 0.816496580927726 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int64_null/stddev_int64_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int64_null/stddev_int64_null.1.adm
index 74efe52..4f788be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int64_null/stddev_int64_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int64_null/stddev_int64_null.1.adm
@@ -1 +1 @@
-{ "stddev": 0.0 }
+{ "stddev": 0.0, "stddev_pop": 0.0 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int8/stddev_int8.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int8/stddev_int8.1.adm
index d3827e7..653259d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int8/stddev_int8.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int8/stddev_int8.1.adm
@@ -1 +1 @@
-1.0
+{ "stddev": [ 1.0 ], "stddev_pop": [ 0.816496580927726 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int8_null/stddev_int8_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int8_null/stddev_int8_null.1.adm
index 43cef5a..20dd54a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int8_null/stddev_int8_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_int8_null/stddev_int8_null.1.adm
@@ -1 +1 @@
-{ "stddev": 26.0 }
+{ "stddev": 26.0, "stddev_pop": 21.228911104120876 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_pop_mixed/stddev_pop_mixed.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_pop_mixed/stddev_pop_mixed.1.adm
new file mode 100644
index 0000000..e3b97f5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/stddev_pop_mixed/stddev_pop_mixed.1.adm
@@ -0,0 +1 @@
+[ ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_null/agg_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_null/agg_null.1.adm
index 979beb0..78a89a3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_null/agg_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_null/agg_null.1.adm
@@ -1 +1 @@
-{ "count1": 1, "average1": null, "sum1": null, "min1": null, "max1": null, "stddev1": null, "count2": 2, "average2": null, "sum2": null, "min2": null, "max2": null, "stddev2": null }
+{ "count1": 1, "average1": null, "sum1": null, "min1": null, "max1": null, "stddev1": null, "stddev_pop1": null, "count2": 2, "average2": null, "sum2": null, "min2": null, "max2": null, "stddev2": null, "stddev_pop2": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_null_rec/agg_null_rec.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_null_rec/agg_null_rec.1.adm
index 7f18cac..054e601 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_null_rec/agg_null_rec.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_null_rec/agg_null_rec.1.adm
@@ -1 +1 @@
-{ "count": 3, "average": null, "stddev": null, "sum": null, "min": null, "max": null }
\ No newline at end of file
+{ "count": 3, "average": null, "stddev": null, "stddev_pop": null, "sum": null, "min": null, "max": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_null_rec_1/agg_null_rec.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_null_rec_1/agg_null_rec.1.adm
index 683f829..4be73ca 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_null_rec_1/agg_null_rec.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_null_rec_1/agg_null_rec.1.adm
@@ -1 +1 @@
-{ "count": 3, "average": 5.32, "sum": 15.96, "stddev": 1.0, "min": null, "max": null }
+{ "count": 3, "average": 5.32, "sum": 15.96, "stddev": 1.0, "stddev_pop": 0.816496580927726, "min": null, "max": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_number/agg_number.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_number/agg_number.1.adm
index 7ac56d4..d6c4363 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_number/agg_number.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_number/agg_number.1.adm
@@ -1 +1 @@
-{ "count1": 4, "average1": 2.3461845695961844E16, "stddev1": 4.6923691391923688E16, "count2": 4, "average2": 2.3461845695961844E16, "stddev2": 4.6923691391923688E16, "sum1": 9.3847382783847376E16, "min1": 1.0, "max1": 9.3847382783847376E16, "sum2": 9.3847382783847376E16, "min2": 1.0, "max2": 9.3847382783847376E16 }
+{ "count1": 4, "average1": 2.3461845695961844E16, "stddev1": 4.6923691391923688E16, "stddev_pop1": 4.0637108784747104E16, "count2": 4, "average2": 2.3461845695961844E16, "stddev2": 4.6923691391923688E16, "stddev_pop2": 4.0637108784747104E16, "sum1": 9.3847382783847376E16, "min1": 1.0, "max1": 9.3847382783847376E16, "sum2": 9.3847382783847376E16, "min2": 1.0, "max2": 9.3847382783847376E16 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_number_rec/agg_number_rec.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_number_rec/agg_number_rec.1.adm
index 2e68a7b..633b714 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_number_rec/agg_number_rec.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/agg_number_rec/agg_number_rec.1.adm
@@ -1 +1 @@
-{ "count": 3, "average": 1.2824609161579424E16, "stddev": 2.2212874655068836E16, "sum": 3.8473827484738272E16, "min": 2.0, "max": 3.847382748473824E16 }
+{ "count": 3, "average": 1.2824609161579424E16, "stddev": 2.2212874655068836E16, "stddev_pop": 1.8136736208439848E16, "sum": 3.8473827484738272E16, "min": 2.0, "max": 3.847382748473824E16 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/scalar_stddev/scalar_stddev.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/scalar_stddev/scalar_stddev.1.adm
index 325ebd5..16c838c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/scalar_stddev/scalar_stddev.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/scalar_stddev/scalar_stddev.1.adm
@@ -1,6 +1 @@
-1.0
-1.0
-1.0
-1.0
-1.0
-1.0
+{ "stddev": [ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ], "stddev_pop": [ 0.816496580927726, 0.816496580927726, 0.816496580927726, 0.816496580927726, 0.816496580927726, 0.816496580927726 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/scalar_stddev_empty/scalar_stddev_empty.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/scalar_stddev_empty/scalar_stddev_empty.1.adm
index 19765bd..eb24dcb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/scalar_stddev_empty/scalar_stddev_empty.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/scalar_stddev_empty/scalar_stddev_empty.1.adm
@@ -1 +1 @@
-null
+{ "stddev": [ null ], "stddev_pop": [ null ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/scalar_stddev_null/scalar_stddev_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/scalar_stddev_null/scalar_stddev_null.1.adm
index aef8b7f..a8cdc43 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/scalar_stddev_null/scalar_stddev_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/scalar_stddev_null/scalar_stddev_null.1.adm
@@ -1,6 +1 @@
-null
-null
-null
-null
-null
-null
+{ "stddev": [ null, null, null, null, null, null ], "stddev_pop": [ null, null, null, null, null, null ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_double/serial_stddev_double.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_double/serial_stddev_double.1.adm
index d2bef52..4e89687 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_double/serial_stddev_double.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_double/serial_stddev_double.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 0.8944271909999159 }
+{ "gid": 1, "stddev": 0.8944271909999159, "stddev_pop": 0.8 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_double_null/serial_stddev_double_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_double_null/serial_stddev_double_null.1.adm
index c65635a..0405f84 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_double_null/serial_stddev_double_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_double_null/serial_stddev_double_null.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": null }
+{ "gid": 1, "stddev": null, "stddev_pop": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_float/serial_stddev_float.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_float/serial_stddev_float.1.adm
index d2bef52..4e89687 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_float/serial_stddev_float.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_float/serial_stddev_float.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 0.8944271909999159 }
+{ "gid": 1, "stddev": 0.8944271909999159, "stddev_pop": 0.8 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_float_null/serial_stddev_float_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_float_null/serial_stddev_float_null.1.adm
index c65635a..0405f84 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_float_null/serial_stddev_float_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_float_null/serial_stddev_float_null.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": null }
+{ "gid": 1, "stddev": null, "stddev_pop": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int16/serial_stddev_int16.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int16/serial_stddev_int16.1.adm
index d2bef52..4e89687 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int16/serial_stddev_int16.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int16/serial_stddev_int16.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 0.8944271909999159 }
+{ "gid": 1, "stddev": 0.8944271909999159, "stddev_pop": 0.8 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int16_null/serial_stddev_int16_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int16_null/serial_stddev_int16_null.1.adm
index c65635a..0405f84 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int16_null/serial_stddev_int16_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int16_null/serial_stddev_int16_null.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": null }
+{ "gid": 1, "stddev": null, "stddev_pop": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int32/serial_stddev_int32.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int32/serial_stddev_int32.1.adm
index d2bef52..4e89687 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int32/serial_stddev_int32.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int32/serial_stddev_int32.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 0.8944271909999159 }
+{ "gid": 1, "stddev": 0.8944271909999159, "stddev_pop": 0.8 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int32_null/serial_stddev_int32_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int32_null/serial_stddev_int32_null.1.adm
index c65635a..0405f84 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int32_null/serial_stddev_int32_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int32_null/serial_stddev_int32_null.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": null }
+{ "gid": 1, "stddev": null, "stddev_pop": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int64/serial_stddev_int64.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int64/serial_stddev_int64.1.adm
index d2bef52..4e89687 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int64/serial_stddev_int64.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int64/serial_stddev_int64.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 0.8944271909999159 }
+{ "gid": 1, "stddev": 0.8944271909999159, "stddev_pop": 0.8 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int64_null/serial_stddev_int64_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int64_null/serial_stddev_int64_null.1.adm
index c65635a..0405f84 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int64_null/serial_stddev_int64_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int64_null/serial_stddev_int64_null.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": null }
+{ "gid": 1, "stddev": null, "stddev_pop": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int8/serial_stddev_int8.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int8/serial_stddev_int8.1.adm
index d2bef52..4e89687 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int8/serial_stddev_int8.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int8/serial_stddev_int8.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": 0.8944271909999159 }
+{ "gid": 1, "stddev": 0.8944271909999159, "stddev_pop": 0.8 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int8_null/serial_stddev_int8_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int8_null/serial_stddev_int8_null.1.adm
index c65635a..0405f84 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int8_null/serial_stddev_int8_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_int8_null/serial_stddev_int8_null.1.adm
@@ -1 +1 @@
-{ "gid": 1, "stddev": null }
+{ "gid": 1, "stddev": null, "stddev_pop": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.1.adm
new file mode 100644
index 0000000..8ca0475
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.1.adm
@@ -0,0 +1 @@
+{ "gid": 1, "stddev_pop": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_distinct/stddev_distinct.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_distinct/stddev_distinct.1.adm
new file mode 100644
index 0000000..17f7b05
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_distinct/stddev_distinct.1.adm
@@ -0,0 +1 @@
+{ "t1": 10, "t2": null, "t3": null, "t4": null, "t5": 8, "t6": null, "t7": null, "t8": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_double/stddev_double.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_double/stddev_double.1.adm
index d3827e7..653259d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_double/stddev_double.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_double/stddev_double.1.adm
@@ -1 +1 @@
-1.0
+{ "stddev": [ 1.0 ], "stddev_pop": [ 0.816496580927726 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_double_null/stddev_double_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_double_null/stddev_double_null.1.adm
index f41cf92..07f36d3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_double_null/stddev_double_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_double_null/stddev_double_null.1.adm
@@ -1 +1 @@
-{ "stddev": null }
+{ "stddev": null, "stddev_pop": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_empty_01/stddev_empty_01.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_empty_01/stddev_empty_01.1.adm
index 19765bd..eb24dcb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_empty_01/stddev_empty_01.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_empty_01/stddev_empty_01.1.adm
@@ -1 +1 @@
-null
+{ "stddev": [ null ], "stddev_pop": [ null ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_empty_02/stddev_empty_02.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_empty_02/stddev_empty_02.1.adm
index 19765bd..eb24dcb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_empty_02/stddev_empty_02.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_empty_02/stddev_empty_02.1.adm
@@ -1 +1 @@
-null
+{ "stddev": [ null ], "stddev_pop": [ null ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_float/stddev_float.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_float/stddev_float.1.adm
index d3827e7..653259d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_float/stddev_float.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_float/stddev_float.1.adm
@@ -1 +1 @@
-1.0
+{ "stddev": [ 1.0 ], "stddev_pop": [ 0.816496580927726 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_float_null/stddev_float_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_float_null/stddev_float_null.1.adm
index f41cf92..07f36d3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_float_null/stddev_float_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_float_null/stddev_float_null.1.adm
@@ -1 +1 @@
-{ "stddev": null }
+{ "stddev": null, "stddev_pop": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int16/stddev_int16.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int16/stddev_int16.1.adm
index d3827e7..653259d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int16/stddev_int16.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int16/stddev_int16.1.adm
@@ -1 +1 @@
-1.0
+{ "stddev": [ 1.0 ], "stddev_pop": [ 0.816496580927726 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int16_null/stddev_int16_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int16_null/stddev_int16_null.1.adm
index f41cf92..07f36d3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int16_null/stddev_int16_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int16_null/stddev_int16_null.1.adm
@@ -1 +1 @@
-{ "stddev": null }
+{ "stddev": null, "stddev_pop": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int32/stddev_int32.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int32/stddev_int32.1.adm
index d3827e7..653259d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int32/stddev_int32.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int32/stddev_int32.1.adm
@@ -1 +1 @@
-1.0
+{ "stddev": [ 1.0 ], "stddev_pop": [ 0.816496580927726 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int32_null/stddev_int32_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int32_null/stddev_int32_null.1.adm
index f41cf92..07f36d3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int32_null/stddev_int32_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int32_null/stddev_int32_null.1.adm
@@ -1 +1 @@
-{ "stddev": null }
+{ "stddev": null, "stddev_pop": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int64/stddev_int64.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int64/stddev_int64.1.adm
index d3827e7..653259d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int64/stddev_int64.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int64/stddev_int64.1.adm
@@ -1 +1 @@
-1.0
+{ "stddev": [ 1.0 ], "stddev_pop": [ 0.816496580927726 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int64_null/stddev_int64_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int64_null/stddev_int64_null.1.adm
index f41cf92..07f36d3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int64_null/stddev_int64_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int64_null/stddev_int64_null.1.adm
@@ -1 +1 @@
-{ "stddev": null }
+{ "stddev": null, "stddev_pop": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int8/stddev_int8.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int8/stddev_int8.1.adm
index d3827e7..653259d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int8/stddev_int8.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int8/stddev_int8.1.adm
@@ -1 +1 @@
-1.0
+{ "stddev": [ 1.0 ], "stddev_pop": [ 0.816496580927726 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int8_null/stddev_int8_null.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int8_null/stddev_int8_null.1.adm
index f41cf92..07f36d3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int8_null/stddev_int8_null.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_int8_null/stddev_int8_null.1.adm
@@ -1 +1 @@
-{ "stddev": null }
+{ "stddev": null, "stddev_pop": null }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_pop_mixed/stddev_pop_mixed.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_pop_mixed/stddev_pop_mixed.1.adm
new file mode 100644
index 0000000..e3b97f5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/stddev_pop_mixed/stddev_pop_mixed.1.adm
@@ -0,0 +1 @@
+[ ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_null/agg_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_null/agg_null.3.ast
index 7405394..0e8f3ea 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_null/agg_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_null/agg_null.3.ast
@@ -55,6 +55,15 @@
]
)
(
+ LiteralExpr [STRING] [sql-stddev_pop1]
+ :
+ FunctionCall asterix.sql-stddev_pop@1[
+ OrderedListConstructor [
+ LiteralExpr [NULL]
+ ]
+ ]
+ )
+ (
LiteralExpr [STRING] [sql-count2]
:
FunctionCall asterix.sql-count@1[
@@ -114,4 +123,14 @@
]
]
)
+ (
+ LiteralExpr [STRING] [sql-stddev_pop2]
+ :
+ FunctionCall asterix.sql-stddev_pop@1[
+ UnorderedListConstructor [
+ LiteralExpr [NULL]
+ LiteralExpr [NULL]
+ ]
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_null_rec/agg_null_rec.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_null_rec/agg_null_rec.3.ast
index 167b753..96cbb48 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_null_rec/agg_null_rec.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_null_rec/agg_null_rec.3.ast
@@ -115,4 +115,23 @@
)
]
)
+ (
+ LiteralExpr [STRING] [sql-stddev_pop]
+ :
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$t ]
+ Field=valplus
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Test]
+ ]
+ AS Variable [ Name=$t ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_null_rec_1/agg_null_rec_1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_null_rec_1/agg_null_rec_1.3.ast
index 97c3cfa..c411817 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_null_rec_1/agg_null_rec_1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_null_rec_1/agg_null_rec_1.3.ast
@@ -147,4 +147,30 @@
)
]
)
+ (
+ LiteralExpr [STRING] [sql-stddev_pop]
+ :
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$i ]
+ Field=valplus
+ ]
+ ]
+ FROM [ (
+ SELECT ELEMENT [
+ Variable [ Name=$t ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Test]
+ ]
+ AS Variable [ Name=$t ]
+ ]
+ )
+ AS Variable [ Name=$i ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_number/agg_number.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_number/agg_number.3.ast
index bfa0267..cbaebaa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_number/agg_number.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_number/agg_number.3.ast
@@ -97,6 +97,22 @@
]
)
(
+ LiteralExpr [STRING] [sql-stddev_pop1]
+ :
+ FunctionCall asterix.sql-stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall null.float@1[
+ LiteralExpr [STRING] [2.0]
+ ]
+ FunctionCall null.double@1[
+ LiteralExpr [STRING] [3.0]
+ ]
+ LiteralExpr [LONG] [93847382783847382]
+ LiteralExpr [LONG] [1]
+ ]
+ ]
+ )
+ (
LiteralExpr [STRING] [sql-count2]
:
FunctionCall asterix.sql-count@1[
@@ -192,4 +208,20 @@
]
]
)
+ (
+ LiteralExpr [STRING] [sql-stddev_pop2]
+ :
+ FunctionCall asterix.sql-stddev_pop@1[
+ UnorderedListConstructor [
+ FunctionCall null.float@1[
+ LiteralExpr [STRING] [2.0]
+ ]
+ FunctionCall null.double@1[
+ LiteralExpr [STRING] [3.0]
+ ]
+ LiteralExpr [LONG] [93847382783847382]
+ LiteralExpr [LONG] [1]
+ ]
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_number_rec/agg_number_rec.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_number_rec/agg_number_rec.3.ast
index 167b753..96cbb48 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_number_rec/agg_number_rec.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_number_rec/agg_number_rec.3.ast
@@ -115,4 +115,23 @@
)
]
)
+ (
+ LiteralExpr [STRING] [sql-stddev_pop]
+ :
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$t ]
+ Field=valplus
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Test]
+ ]
+ AS Variable [ Name=$t ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_stddev/scalar_stddev.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_stddev/scalar_stddev.3.ast
index a206740..c9a7865 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_stddev/scalar_stddev.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_stddev/scalar_stddev.3.ast
@@ -1,105 +1,222 @@
DataverseUse test
Query:
-Let Variable [ Name=$i8 ]
- :=
- FunctionCall asterix.sql-stddev@1[
- OrderedListConstructor [
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [1]
+RecordConstructor [
+ (
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ Let Variable [ Name=$i8 ]
+ :=
+ FunctionCall asterix.sql-stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$i16 ]
+ :=
+ FunctionCall asterix.sql-stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$i32 ]
+ :=
+ FunctionCall asterix.sql-stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$i64 ]
+ :=
+ FunctionCall asterix.sql-stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$f ]
+ :=
+ FunctionCall asterix.sql-stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$d ]
+ :=
+ FunctionCall asterix.sql-stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ SELECT ELEMENT [
+ Variable [ Name=$i ]
]
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [2]
+ FROM [ OrderedListConstructor [
+ Variable [ Name=$i8 ]
+ Variable [ Name=$i16 ]
+ Variable [ Name=$i32 ]
+ Variable [ Name=$i64 ]
+ Variable [ Name=$f ]
+ Variable [ Name=$d ]
+ ]
+ AS Variable [ Name=$i ]
]
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [3]
+ )
+ )
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ Let Variable [ Name=$i8 ]
+ :=
+ FunctionCall asterix.sql-stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$i16 ]
+ :=
+ FunctionCall asterix.sql-stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$i32 ]
+ :=
+ FunctionCall asterix.sql-stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$i64 ]
+ :=
+ FunctionCall asterix.sql-stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$f ]
+ :=
+ FunctionCall asterix.sql-stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$d ]
+ :=
+ FunctionCall asterix.sql-stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ SELECT ELEMENT [
+ Variable [ Name=$i ]
]
- ]
- ]
-Let Variable [ Name=$i16 ]
- :=
- FunctionCall asterix.sql-stddev@1[
- OrderedListConstructor [
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [1]
+ FROM [ OrderedListConstructor [
+ Variable [ Name=$i8 ]
+ Variable [ Name=$i16 ]
+ Variable [ Name=$i32 ]
+ Variable [ Name=$i64 ]
+ Variable [ Name=$f ]
+ Variable [ Name=$d ]
+ ]
+ AS Variable [ Name=$i ]
]
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [3]
- ]
- ]
- ]
-Let Variable [ Name=$i32 ]
- :=
- FunctionCall asterix.sql-stddev@1[
- OrderedListConstructor [
- FunctionCall test.int32@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.int32@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int32@1[
- LiteralExpr [STRING] [3]
- ]
- ]
- ]
-Let Variable [ Name=$i64 ]
- :=
- FunctionCall asterix.sql-stddev@1[
- OrderedListConstructor [
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [3]
- ]
- ]
- ]
-Let Variable [ Name=$f ]
- :=
- FunctionCall asterix.sql-stddev@1[
- OrderedListConstructor [
- FunctionCall test.float@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.float@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.float@1[
- LiteralExpr [STRING] [3]
- ]
- ]
- ]
-Let Variable [ Name=$d ]
- :=
- FunctionCall asterix.sql-stddev@1[
- OrderedListConstructor [
- FunctionCall test.double@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.double@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.double@1[
- LiteralExpr [STRING] [3]
- ]
- ]
- ]
-SELECT ELEMENT [
-Variable [ Name=$i ]
-]
-FROM [ OrderedListConstructor [
- Variable [ Name=$i8 ]
- Variable [ Name=$i16 ]
- Variable [ Name=$i32 ]
- Variable [ Name=$i64 ]
- Variable [ Name=$f ]
- Variable [ Name=$d ]
- ]
- AS Variable [ Name=$i ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_stddev_empty/scalar_stddev_empty.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_stddev_empty/scalar_stddev_empty.3.ast
index 6954f95..3fd8fec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_stddev_empty/scalar_stddev_empty.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_stddev_empty/scalar_stddev_empty.3.ast
@@ -1,7 +1,27 @@
Query:
-SELECT ELEMENT [
-FunctionCall asterix.sql-stddev@1[
- OrderedListConstructor [
- ]
-]
+RecordConstructor [
+ (
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev@1[
+ OrderedListConstructor [
+ ]
+ ]
+ ]
+ )
+ )
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev_pop@1[
+ OrderedListConstructor [
+ ]
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_stddev_null/scalar_stddev_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_stddev_null/scalar_stddev_null.3.ast
index 61692e0..5615328 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_stddev_null/scalar_stddev_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_stddev_null/scalar_stddev_null.3.ast
@@ -1,111 +1,234 @@
DataverseUse test
Query:
-Let Variable [ Name=$i8 ]
- :=
- FunctionCall asterix.sql-stddev@1[
- OrderedListConstructor [
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [1]
+RecordConstructor [
+ (
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ Let Variable [ Name=$i8 ]
+ :=
+ FunctionCall asterix.sql-stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$i16 ]
+ :=
+ FunctionCall asterix.sql-stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$i32 ]
+ :=
+ FunctionCall asterix.sql-stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$i64 ]
+ :=
+ FunctionCall asterix.sql-stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$f ]
+ :=
+ FunctionCall asterix.sql-stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$d ]
+ :=
+ FunctionCall asterix.sql-stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ SELECT ELEMENT [
+ Variable [ Name=$i ]
]
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [2]
+ FROM [ OrderedListConstructor [
+ Variable [ Name=$i8 ]
+ Variable [ Name=$i16 ]
+ Variable [ Name=$i32 ]
+ Variable [ Name=$i64 ]
+ Variable [ Name=$f ]
+ Variable [ Name=$d ]
+ ]
+ AS Variable [ Name=$i ]
]
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [3]
+ )
+ )
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ Let Variable [ Name=$i8 ]
+ :=
+ FunctionCall asterix.sql-stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$i16 ]
+ :=
+ FunctionCall asterix.sql-stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$i32 ]
+ :=
+ FunctionCall asterix.sql-stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$i64 ]
+ :=
+ FunctionCall asterix.sql-stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$f ]
+ :=
+ FunctionCall asterix.sql-stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$d ]
+ :=
+ FunctionCall asterix.sql-stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ SELECT ELEMENT [
+ Variable [ Name=$i ]
]
- LiteralExpr [NULL]
- ]
- ]
-Let Variable [ Name=$i16 ]
- :=
- FunctionCall asterix.sql-stddev@1[
- OrderedListConstructor [
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [1]
+ FROM [ OrderedListConstructor [
+ Variable [ Name=$i8 ]
+ Variable [ Name=$i16 ]
+ Variable [ Name=$i32 ]
+ Variable [ Name=$i64 ]
+ Variable [ Name=$f ]
+ Variable [ Name=$d ]
+ ]
+ AS Variable [ Name=$i ]
]
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [3]
- ]
- LiteralExpr [NULL]
- ]
- ]
-Let Variable [ Name=$i32 ]
- :=
- FunctionCall asterix.sql-stddev@1[
- OrderedListConstructor [
- FunctionCall test.int32@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.int32@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int32@1[
- LiteralExpr [STRING] [3]
- ]
- LiteralExpr [NULL]
- ]
- ]
-Let Variable [ Name=$i64 ]
- :=
- FunctionCall asterix.sql-stddev@1[
- OrderedListConstructor [
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [3]
- ]
- LiteralExpr [NULL]
- ]
- ]
-Let Variable [ Name=$f ]
- :=
- FunctionCall asterix.sql-stddev@1[
- OrderedListConstructor [
- FunctionCall test.float@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.float@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.float@1[
- LiteralExpr [STRING] [3]
- ]
- LiteralExpr [NULL]
- ]
- ]
-Let Variable [ Name=$d ]
- :=
- FunctionCall asterix.sql-stddev@1[
- OrderedListConstructor [
- FunctionCall test.double@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.double@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.double@1[
- LiteralExpr [STRING] [3]
- ]
- LiteralExpr [NULL]
- ]
- ]
-SELECT ELEMENT [
-Variable [ Name=$i ]
-]
-FROM [ OrderedListConstructor [
- Variable [ Name=$i8 ]
- Variable [ Name=$i16 ]
- Variable [ Name=$i32 ]
- Variable [ Name=$i64 ]
- Variable [ Name=$f ]
- Variable [ Name=$d ]
- ]
- AS Variable [ Name=$i ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_double/serial_stddev_double.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_double/serial_stddev_double.3.ast
index 3bd59ff..d9e097b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_double/serial_stddev_double.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_double/serial_stddev_double.3.ast
@@ -20,6 +20,23 @@
)
]
stddev
+FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=t
+ ]
+ Field=val
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_double_null/serial_stddev_double_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_double_null/serial_stddev_double_null.3.ast
index 8dae584..923fc41 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_double_null/serial_stddev_double_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_double_null/serial_stddev_double_null.3.ast
@@ -20,6 +20,23 @@
)
]
stddev
+FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=t
+ ]
+ Field=valplus
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_empty/serial_stddev_empty.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_empty/serial_stddev_empty.3.ast
index 3bd59ff..d9e097b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_empty/serial_stddev_empty.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_empty/serial_stddev_empty.3.ast
@@ -20,6 +20,23 @@
)
]
stddev
+FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=t
+ ]
+ Field=val
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_float/serial_stddev_float.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_float/serial_stddev_float.3.ast
index 3bd59ff..d9e097b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_float/serial_stddev_float.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_float/serial_stddev_float.3.ast
@@ -20,6 +20,23 @@
)
]
stddev
+FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=t
+ ]
+ Field=val
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_float_null/serial_stddev_float_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_float_null/serial_stddev_float_null.3.ast
index 8dae584..923fc41 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_float_null/serial_stddev_float_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_float_null/serial_stddev_float_null.3.ast
@@ -20,6 +20,23 @@
)
]
stddev
+FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=t
+ ]
+ Field=valplus
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int16/serial_stddev_int16.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int16/serial_stddev_int16.3.ast
index 3bd59ff..d9e097b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int16/serial_stddev_int16.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int16/serial_stddev_int16.3.ast
@@ -20,6 +20,23 @@
)
]
stddev
+FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=t
+ ]
+ Field=val
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int16_null/serial_stddev_int16_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int16_null/serial_stddev_int16_null.3.ast
index 8dae584..923fc41 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int16_null/serial_stddev_int16_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int16_null/serial_stddev_int16_null.3.ast
@@ -20,6 +20,23 @@
)
]
stddev
+FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=t
+ ]
+ Field=valplus
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int32/serial_stddev_int32.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int32/serial_stddev_int32.3.ast
index 3bd59ff..d9e097b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int32/serial_stddev_int32.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int32/serial_stddev_int32.3.ast
@@ -20,6 +20,23 @@
)
]
stddev
+FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=t
+ ]
+ Field=val
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int32_null/serial_stddev_int32_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int32_null/serial_stddev_int32_null.3.ast
index 8dae584..923fc41 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int32_null/serial_stddev_int32_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int32_null/serial_stddev_int32_null.3.ast
@@ -20,6 +20,23 @@
)
]
stddev
+FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=t
+ ]
+ Field=valplus
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int64/serial_stddev_int64.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int64/serial_stddev_int64.3.ast
index 3bd59ff..d9e097b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int64/serial_stddev_int64.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int64/serial_stddev_int64.3.ast
@@ -20,6 +20,23 @@
)
]
stddev
+FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=t
+ ]
+ Field=val
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int64_null/serial_stddev_int64_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int64_null/serial_stddev_int64_null.3.ast
index 8dae584..923fc41 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int64_null/serial_stddev_int64_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int64_null/serial_stddev_int64_null.3.ast
@@ -20,6 +20,23 @@
)
]
stddev
+FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=t
+ ]
+ Field=valplus
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int8/serial_stddev_int8.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int8/serial_stddev_int8.3.ast
index 3bd59ff..d9e097b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int8/serial_stddev_int8.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int8/serial_stddev_int8.3.ast
@@ -20,6 +20,23 @@
)
]
stddev
+FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=t
+ ]
+ Field=val
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int8_null/serial_stddev_int8_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int8_null/serial_stddev_int8_null.3.ast
index 8dae584..923fc41 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int8_null/serial_stddev_int8_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_int8_null/serial_stddev_int8_null.3.ast
@@ -20,6 +20,23 @@
)
]
stddev
+FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=t
+ ]
+ Field=valplus
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_int64_null.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_int64_null.1.ast
new file mode 100644
index 0000000..a61c9df
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_int64_null.1.ast
@@ -0,0 +1,9 @@
+DataverseUse test
+TypeDecl TestType [
+ open RecordType {
+ id : bigint,
+ gid : bigint,
+ val : double
+ }
+]
+DatasetDecl Test(TestType) partitioned by [[id]]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_int64_null.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_int64_null.2.ast
new file mode 100644
index 0000000..916a59e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_int64_null.2.ast
@@ -0,0 +1 @@
+DataverseUse test
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_int64_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_int64_null.3.ast
new file mode 100644
index 0000000..2e6d6ae
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/serial_stddev_pop_mixed/serial_stddev_pop_int64_null.3.ast
@@ -0,0 +1,40 @@
+DataverseUse test
+Query:
+SELECT [
+Variable [ Name=$gid ]
+gid
+FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$g ]
+ Field=valplus
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=$g ]
+ ]
+ )
+]
+stddev_pop
+]
+FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Test]
+ ]
+ AS Variable [ Name=$t ]
+]
+Groupby
+ Variable [ Name=$gid ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$t ]
+ Field=gid
+ ]
+ GROUP AS Variable [ Name=$g ]
+ (
+ valplus:=FunctionCall asterix.field-access-by-name@2[
+ Variable [ Name=$t ]
+ LiteralExpr [STRING] [valplus]
+]
+ )
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_double/stddev_double.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_double/stddev_double.3.ast
index c0e7dac..a156d16 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_double/stddev_double.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_double/stddev_double.3.ast
@@ -1,19 +1,51 @@
Query:
-SELECT ELEMENT [
-FunctionCall asterix.sql-stddev@1[
+RecordConstructor [
(
- SELECT ELEMENT [
- Variable [ Name=$x ]
- ]
- FROM [ OrderedListConstructor [
- LiteralExpr [DOUBLE] [1.0]
- LiteralExpr [DOUBLE] [2.0]
- FunctionCall null.double@1[
- LiteralExpr [STRING] [3.0]
- ]
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ LiteralExpr [DOUBLE] [1.0]
+ LiteralExpr [DOUBLE] [2.0]
+ FunctionCall null.double@1[
+ LiteralExpr [STRING] [3.0]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
]
- AS Variable [ Name=$x ]
- ]
+ ]
+ )
)
-]
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ LiteralExpr [DOUBLE] [1.0]
+ LiteralExpr [DOUBLE] [2.0]
+ FunctionCall null.double@1[
+ LiteralExpr [STRING] [3.0]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_double_null/stddev_double_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_double_null/stddev_double_null.3.ast
index e01f5cc..02ccab8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_double_null/stddev_double_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_double_null/stddev_double_null.3.ast
@@ -20,4 +20,23 @@
)
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$x ]
+ Field=doubleField
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Numeric]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_empty_01/stddev_empty_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_empty_01/stddev_empty_01.3.ast
index f85f450..51a67dc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_empty_01/stddev_empty_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_empty_01/stddev_empty_01.3.ast
@@ -1,24 +1,60 @@
DataverseUse test
Query:
-SELECT ELEMENT [
-FunctionCall asterix.sql-stddev@1[
+RecordConstructor [
(
- SELECT ELEMENT [
- Variable [ Name=$x ]
- ]
- FROM [ OrderedListConstructor [
- LiteralExpr [LONG] [1]
- LiteralExpr [LONG] [2]
- LiteralExpr [LONG] [3]
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ LiteralExpr [LONG] [1]
+ LiteralExpr [LONG] [2]
+ LiteralExpr [LONG] [3]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ Where
+ OperatorExpr [
+ Variable [ Name=$x ]
+ >
+ LiteralExpr [LONG] [10]
+ ]
+ )
]
- AS Variable [ Name=$x ]
- ]
- Where
- OperatorExpr [
- Variable [ Name=$x ]
- >
- LiteralExpr [LONG] [10]
]
+ )
)
-]
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ LiteralExpr [LONG] [1]
+ LiteralExpr [LONG] [2]
+ LiteralExpr [LONG] [3]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ Where
+ OperatorExpr [
+ Variable [ Name=$x ]
+ >
+ LiteralExpr [LONG] [10]
+ ]
+ )
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_empty_02/stddev_empty_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_empty_02/stddev_empty_02.3.ast
index 1e74018..1fcdc77 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_empty_02/stddev_empty_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_empty_02/stddev_empty_02.3.ast
@@ -1,19 +1,50 @@
DataverseUse test
Query:
-SELECT ELEMENT [
-FunctionCall asterix.sql-stddev@1[
+RecordConstructor [
(
- SELECT ELEMENT [
- FieldAccessor [
- Variable [ Name=$x ]
- Field=val
- ]
- ]
- FROM [ FunctionCall asterix.dataset@1[
- LiteralExpr [STRING] [test.Test]
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$x ]
+ Field=val
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Test]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
]
- AS Variable [ Name=$x ]
- ]
+ ]
+ )
)
-]
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$x ]
+ Field=val
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Test]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_float/stddev_float.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_float/stddev_float.3.ast
index 139a799..3b9af93 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_float/stddev_float.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_float/stddev_float.3.ast
@@ -1,24 +1,60 @@
DataverseUse test
Query:
-SELECT ELEMENT [
-FunctionCall asterix.sql-stddev@1[
+RecordConstructor [
(
- SELECT ELEMENT [
- Variable [ Name=$x ]
- ]
- FROM [ OrderedListConstructor [
- FunctionCall test.float@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.float@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.float@1[
- LiteralExpr [STRING] [3]
- ]
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
]
- AS Variable [ Name=$x ]
- ]
+ ]
+ )
)
-]
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_float_null/stddev_float_nu.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_float_null/stddev_float_nu.3.ast
index 2fd1ef4..af4b678 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_float_null/stddev_float_nu.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_float_null/stddev_float_nu.3.ast
@@ -20,4 +20,23 @@
)
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$x ]
+ Field=floatField
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Numeric]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int16/stddev_int16.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int16/stddev_int16.3.ast
index e1d4be2..a3ae382 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int16/stddev_int16.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int16/stddev_int16.3.ast
@@ -1,24 +1,60 @@
DataverseUse test
Query:
-SELECT ELEMENT [
-FunctionCall asterix.sql-stddev@1[
+RecordConstructor [
(
- SELECT ELEMENT [
- Variable [ Name=$x ]
- ]
- FROM [ OrderedListConstructor [
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [3]
- ]
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
]
- AS Variable [ Name=$x ]
- ]
+ ]
+ )
)
-]
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int16_null/stddev_int16_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int16_null/stddev_int16_null.3.ast
index ee1fdc7..abfdf357 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int16_null/stddev_int16_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int16_null/stddev_int16_null.3.ast
@@ -20,4 +20,23 @@
)
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$x ]
+ Field=int16Field
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Numeric]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int32/stddev_int32.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int32/stddev_int32.3.ast
index d40a004..475d383 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int32/stddev_int32.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int32/stddev_int32.3.ast
@@ -1,24 +1,60 @@
DataverseUse test
Query:
-SELECT ELEMENT [
-FunctionCall asterix.sql-stddev@1[
+RecordConstructor [
(
- SELECT ELEMENT [
- Variable [ Name=$x ]
- ]
- FROM [ OrderedListConstructor [
- FunctionCall test.int32@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.int32@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int32@1[
- LiteralExpr [STRING] [3]
- ]
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
]
- AS Variable [ Name=$x ]
- ]
+ ]
+ )
)
-]
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int32_null/stddev_int32_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int32_null/stddev_int32_null.3.ast
index 55da89c..ae92087 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int32_null/stddev_int32_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int32_null/stddev_int32_null.3.ast
@@ -20,4 +20,23 @@
)
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$x ]
+ Field=int32Field
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Numeric]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int64/stddev_int64.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int64/stddev_int64.3.ast
index 0583b7f..aafffb8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int64/stddev_int64.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int64/stddev_int64.3.ast
@@ -1,24 +1,60 @@
DataverseUse test
Query:
-SELECT ELEMENT [
-FunctionCall asterix.sql-stddev@1[
+RecordConstructor [
(
- SELECT ELEMENT [
- Variable [ Name=$x ]
- ]
- FROM [ OrderedListConstructor [
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [3]
- ]
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
]
- AS Variable [ Name=$x ]
- ]
+ ]
+ )
)
-]
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int64_null/stddev_int64_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int64_null/stddev_int64_null.3.ast
index e8787dd..8726277 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int64_null/stddev_int64_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int64_null/stddev_int64_null.3.ast
@@ -20,4 +20,23 @@
)
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$x ]
+ Field=int64Field
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Numeric]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int8/stddev_int8.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int8/stddev_int8.3.ast
index 2ec6818..21b3171 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int8/stddev_int8.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int8/stddev_int8.3.ast
@@ -1,24 +1,60 @@
DataverseUse test
Query:
-SELECT ELEMENT [
-FunctionCall asterix.sql-stddev@1[
+RecordConstructor [
(
- SELECT ELEMENT [
- Variable [ Name=$x ]
- ]
- FROM [ OrderedListConstructor [
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [3]
- ]
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
]
- AS Variable [ Name=$x ]
- ]
+ ]
+ )
)
-]
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int8_null/stddev_int8_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int8_null/stddev_int8_null.3.ast
index a7c371c..f2c9bef 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int8_null/stddev_int8_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_int8_null/stddev_int8_null.3.ast
@@ -20,4 +20,23 @@
)
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$x ]
+ Field=int8Field
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Numeric]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_pop_mixed/stddev_pop_mixed.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_pop_mixed/stddev_pop_mixed.3.ast
new file mode 100644
index 0000000..7c39453
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/stddev_pop_mixed/stddev_pop_mixed.3.ast
@@ -0,0 +1,22 @@
+Query:
+SELECT ELEMENT [
+FunctionCall asterix.sql-stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall null.float@1[
+ LiteralExpr [STRING] [2.0]
+ ]
+ LiteralExpr [STRING] [hello world]
+ LiteralExpr [LONG] [93847382783847382]
+ FunctionCall null.date@1[
+ LiteralExpr [STRING] [2013-01-01]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+]
+]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_null/agg_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_null/agg_null.3.ast
index 42aab0a..53b7249 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_null/agg_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_null/agg_null.3.ast
@@ -55,6 +55,15 @@
]
)
(
+ LiteralExpr [STRING] [stddev_pop1]
+ :
+ FunctionCall asterix.stddev_pop@1[
+ OrderedListConstructor [
+ LiteralExpr [NULL]
+ ]
+ ]
+ )
+ (
LiteralExpr [STRING] [count2]
:
FunctionCall asterix.count@1[
@@ -114,4 +123,14 @@
]
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop2]
+ :
+ FunctionCall asterix.stddev_pop@1[
+ UnorderedListConstructor [
+ LiteralExpr [NULL]
+ LiteralExpr [NULL]
+ ]
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_null_rec/agg_null_rec.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_null_rec/agg_null_rec.3.ast
index ea96a9a..d92c399 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_null_rec/agg_null_rec.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_null_rec/agg_null_rec.3.ast
@@ -115,4 +115,23 @@
)
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$t ]
+ Field=valplus
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Test]
+ ]
+ AS Variable [ Name=$t ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_null_rec_1/agg_null_rec_1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_null_rec_1/agg_null_rec_1.3.ast
index 5668cdb..5d11b6e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_null_rec_1/agg_null_rec_1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_null_rec_1/agg_null_rec_1.3.ast
@@ -147,5 +147,31 @@
)
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$i ]
+ Field=val
+ ]
+ ]
+ FROM [ (
+ SELECT ELEMENT [
+ Variable [ Name=$t ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Test]
+ ]
+ AS Variable [ Name=$t ]
+ ]
+ )
+ AS Variable [ Name=$i ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_number/agg_number.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_number/agg_number.3.ast
index c3f8e5b..59c27d9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_number/agg_number.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_number/agg_number.3.ast
@@ -97,6 +97,22 @@
]
)
(
+ LiteralExpr [STRING] [stddev_pop1]
+ :
+ FunctionCall asterix.stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall null.float@1[
+ LiteralExpr [STRING] [2.0]
+ ]
+ FunctionCall null.double@1[
+ LiteralExpr [STRING] [3.0]
+ ]
+ LiteralExpr [LONG] [93847382783847382]
+ LiteralExpr [LONG] [1]
+ ]
+ ]
+ )
+ (
LiteralExpr [STRING] [count2]
:
FunctionCall asterix.count@1[
@@ -192,4 +208,20 @@
]
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop2]
+ :
+ FunctionCall asterix.stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall null.float@1[
+ LiteralExpr [STRING] [2.0]
+ ]
+ FunctionCall null.double@1[
+ LiteralExpr [STRING] [3.0]
+ ]
+ LiteralExpr [LONG] [93847382783847382]
+ LiteralExpr [LONG] [1]
+ ]
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_number_rec/agg_number_rec.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_number_rec/agg_number_rec.3.ast
index ea96a9a..d92c399 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_number_rec/agg_number_rec.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_number_rec/agg_number_rec.3.ast
@@ -115,4 +115,23 @@
)
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$t ]
+ Field=valplus
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Test]
+ ]
+ AS Variable [ Name=$t ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_stddev/scalar_stddev.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_stddev/scalar_stddev.3.ast
index 67d038e..4606161 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_stddev/scalar_stddev.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_stddev/scalar_stddev.3.ast
@@ -1,105 +1,222 @@
DataverseUse test
Query:
-Let Variable [ Name=$i8 ]
- :=
- FunctionCall asterix.stddev@1[
- OrderedListConstructor [
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [1]
+RecordConstructor [
+ (
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ Let Variable [ Name=$i8 ]
+ :=
+ FunctionCall asterix.stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$i16 ]
+ :=
+ FunctionCall asterix.stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$i32 ]
+ :=
+ FunctionCall asterix.stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$i64 ]
+ :=
+ FunctionCall asterix.stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$f ]
+ :=
+ FunctionCall asterix.stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$d ]
+ :=
+ FunctionCall asterix.stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ SELECT ELEMENT [
+ Variable [ Name=$i ]
]
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [2]
+ FROM [ OrderedListConstructor [
+ Variable [ Name=$i8 ]
+ Variable [ Name=$i16 ]
+ Variable [ Name=$i32 ]
+ Variable [ Name=$i64 ]
+ Variable [ Name=$f ]
+ Variable [ Name=$d ]
+ ]
+ AS Variable [ Name=$i ]
]
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [3]
+ )
+ )
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ Let Variable [ Name=$i8 ]
+ :=
+ FunctionCall asterix.stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$i16 ]
+ :=
+ FunctionCall asterix.stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$i32 ]
+ :=
+ FunctionCall asterix.stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$i64 ]
+ :=
+ FunctionCall asterix.stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$f ]
+ :=
+ FunctionCall asterix.stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ Let Variable [ Name=$d ]
+ :=
+ FunctionCall asterix.stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ ]
+ SELECT ELEMENT [
+ Variable [ Name=$i ]
]
- ]
- ]
-Let Variable [ Name=$i16 ]
- :=
- FunctionCall asterix.stddev@1[
- OrderedListConstructor [
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [1]
+ FROM [ OrderedListConstructor [
+ Variable [ Name=$i8 ]
+ Variable [ Name=$i16 ]
+ Variable [ Name=$i32 ]
+ Variable [ Name=$i64 ]
+ Variable [ Name=$f ]
+ Variable [ Name=$d ]
+ ]
+ AS Variable [ Name=$i ]
]
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [3]
- ]
- ]
- ]
-Let Variable [ Name=$i32 ]
- :=
- FunctionCall asterix.stddev@1[
- OrderedListConstructor [
- FunctionCall test.int32@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.int32@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int32@1[
- LiteralExpr [STRING] [3]
- ]
- ]
- ]
-Let Variable [ Name=$i64 ]
- :=
- FunctionCall asterix.stddev@1[
- OrderedListConstructor [
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [3]
- ]
- ]
- ]
-Let Variable [ Name=$f ]
- :=
- FunctionCall asterix.stddev@1[
- OrderedListConstructor [
- FunctionCall test.float@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.float@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.float@1[
- LiteralExpr [STRING] [3]
- ]
- ]
- ]
-Let Variable [ Name=$d ]
- :=
- FunctionCall asterix.stddev@1[
- OrderedListConstructor [
- FunctionCall test.double@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.double@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.double@1[
- LiteralExpr [STRING] [3]
- ]
- ]
- ]
-SELECT ELEMENT [
-Variable [ Name=$i ]
-]
-FROM [ OrderedListConstructor [
- Variable [ Name=$i8 ]
- Variable [ Name=$i16 ]
- Variable [ Name=$i32 ]
- Variable [ Name=$i64 ]
- Variable [ Name=$f ]
- Variable [ Name=$d ]
- ]
- AS Variable [ Name=$i ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_stddev_empty/scalar_stddev_empty.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_stddev_empty/scalar_stddev_empty.3.ast
index 9834bb3..cb2d59f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_stddev_empty/scalar_stddev_empty.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_stddev_empty/scalar_stddev_empty.3.ast
@@ -1,7 +1,27 @@
Query:
-SELECT ELEMENT [
-FunctionCall asterix.stddev@1[
- OrderedListConstructor [
- ]
-]
+RecordConstructor [
+ (
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev@1[
+ OrderedListConstructor [
+ ]
+ ]
+ ]
+ )
+ )
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev_pop@1[
+ OrderedListConstructor [
+ ]
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_stddev_null/scalar_stddev_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_stddev_null/scalar_stddev_null.3.ast
index eac0b48..a155c95 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_stddev_null/scalar_stddev_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_stddev_null/scalar_stddev_null.3.ast
@@ -1,111 +1,234 @@
DataverseUse test
Query:
-Let Variable [ Name=$i8 ]
- :=
- FunctionCall asterix.stddev@1[
- OrderedListConstructor [
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [1]
+RecordConstructor [
+ (
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ Let Variable [ Name=$i8 ]
+ :=
+ FunctionCall asterix.stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$i16 ]
+ :=
+ FunctionCall asterix.stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$i32 ]
+ :=
+ FunctionCall asterix.stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$i64 ]
+ :=
+ FunctionCall asterix.stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$f ]
+ :=
+ FunctionCall asterix.stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$d ]
+ :=
+ FunctionCall asterix.stddev@1[
+ OrderedListConstructor [
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ SELECT ELEMENT [
+ Variable [ Name=$i ]
]
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [2]
+ FROM [ OrderedListConstructor [
+ Variable [ Name=$i8 ]
+ Variable [ Name=$i16 ]
+ Variable [ Name=$i32 ]
+ Variable [ Name=$i64 ]
+ Variable [ Name=$f ]
+ Variable [ Name=$d ]
+ ]
+ AS Variable [ Name=$i ]
]
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [3]
+ )
+ )
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ Let Variable [ Name=$i8 ]
+ :=
+ FunctionCall asterix.stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$i16 ]
+ :=
+ FunctionCall asterix.stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$i32 ]
+ :=
+ FunctionCall asterix.stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int32@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$i64 ]
+ :=
+ FunctionCall asterix.stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$f ]
+ :=
+ FunctionCall asterix.stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ Let Variable [ Name=$d ]
+ :=
+ FunctionCall asterix.stddev_pop@1[
+ OrderedListConstructor [
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.double@1[
+ LiteralExpr [STRING] [3]
+ ]
+ LiteralExpr [NULL]
+ ]
+ ]
+ SELECT ELEMENT [
+ Variable [ Name=$i ]
]
- LiteralExpr [NULL]
- ]
- ]
-Let Variable [ Name=$i16 ]
- :=
- FunctionCall asterix.stddev@1[
- OrderedListConstructor [
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [1]
+ FROM [ OrderedListConstructor [
+ Variable [ Name=$i8 ]
+ Variable [ Name=$i16 ]
+ Variable [ Name=$i32 ]
+ Variable [ Name=$i64 ]
+ Variable [ Name=$f ]
+ Variable [ Name=$d ]
+ ]
+ AS Variable [ Name=$i ]
]
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [3]
- ]
- LiteralExpr [NULL]
- ]
- ]
-Let Variable [ Name=$i32 ]
- :=
- FunctionCall asterix.stddev@1[
- OrderedListConstructor [
- FunctionCall test.int32@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.int32@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int32@1[
- LiteralExpr [STRING] [3]
- ]
- LiteralExpr [NULL]
- ]
- ]
-Let Variable [ Name=$i64 ]
- :=
- FunctionCall asterix.stddev@1[
- OrderedListConstructor [
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [3]
- ]
- LiteralExpr [NULL]
- ]
- ]
-Let Variable [ Name=$f ]
- :=
- FunctionCall asterix.stddev@1[
- OrderedListConstructor [
- FunctionCall test.float@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.float@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.float@1[
- LiteralExpr [STRING] [3]
- ]
- LiteralExpr [NULL]
- ]
- ]
-Let Variable [ Name=$d ]
- :=
- FunctionCall asterix.stddev@1[
- OrderedListConstructor [
- FunctionCall test.double@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.double@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.double@1[
- LiteralExpr [STRING] [3]
- ]
- LiteralExpr [NULL]
- ]
- ]
-SELECT ELEMENT [
-Variable [ Name=$i ]
-]
-FROM [ OrderedListConstructor [
- Variable [ Name=$i8 ]
- Variable [ Name=$i16 ]
- Variable [ Name=$i32 ]
- Variable [ Name=$i64 ]
- Variable [ Name=$f ]
- Variable [ Name=$d ]
- ]
- AS Variable [ Name=$i ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_double/serial_stddev_double.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_double/serial_stddev_double.3.ast
index 43263e5..02388b6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_double/serial_stddev_double.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_double/serial_stddev_double.3.ast
@@ -17,6 +17,20 @@
)
]
stddev
+FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$g ]
+ Field=val
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=$g ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_double_null/serial_stddev_double_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_double_null/serial_stddev_double_null.3.ast
index f05d552..b8ce40c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_double_null/serial_stddev_double_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_double_null/serial_stddev_double_null.3.ast
@@ -17,6 +17,20 @@
)
]
stddev
+FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$g ]
+ Field=valplus
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=$g ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_empty/serial_stddev_empty.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_empty/serial_stddev_empty.3.ast
index 43263e5..02388b6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_empty/serial_stddev_empty.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_empty/serial_stddev_empty.3.ast
@@ -17,6 +17,20 @@
)
]
stddev
+FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$g ]
+ Field=val
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=$g ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_float/serial_stddev_float.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_float/serial_stddev_float.3.ast
index 43263e5..02388b6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_float/serial_stddev_float.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_float/serial_stddev_float.3.ast
@@ -17,6 +17,20 @@
)
]
stddev
+FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$g ]
+ Field=val
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=$g ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_float_null/serial_stddev_float_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_float_null/serial_stddev_float_null.3.ast
index f05d552..b8ce40c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_float_null/serial_stddev_float_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_float_null/serial_stddev_float_null.3.ast
@@ -17,6 +17,20 @@
)
]
stddev
+FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$g ]
+ Field=valplus
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=$g ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int16/serial_stddev_int16.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int16/serial_stddev_int16.3.ast
index 43263e5..02388b6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int16/serial_stddev_int16.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int16/serial_stddev_int16.3.ast
@@ -17,6 +17,20 @@
)
]
stddev
+FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$g ]
+ Field=val
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=$g ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int16_null/serial_stddev_int16_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int16_null/serial_stddev_int16_null.3.ast
index f05d552..b8ce40c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int16_null/serial_stddev_int16_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int16_null/serial_stddev_int16_null.3.ast
@@ -17,6 +17,20 @@
)
]
stddev
+FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$g ]
+ Field=valplus
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=$g ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int32/serial_stddev_int32.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int32/serial_stddev_int32.3.ast
index 43263e5..02388b6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int32/serial_stddev_int32.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int32/serial_stddev_int32.3.ast
@@ -17,6 +17,20 @@
)
]
stddev
+FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$g ]
+ Field=val
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=$g ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int32_null/serial_stddev_int32_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int32_null/serial_stddev_int32_null.3.ast
index f05d552..b8ce40c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int32_null/serial_stddev_int32_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int32_null/serial_stddev_int32_null.3.ast
@@ -17,6 +17,20 @@
)
]
stddev
+FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$g ]
+ Field=valplus
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=$g ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int64/serial_stddev_int64.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int64/serial_stddev_int64.3.ast
index 43263e5..02388b6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int64/serial_stddev_int64.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int64/serial_stddev_int64.3.ast
@@ -17,6 +17,20 @@
)
]
stddev
+FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$g ]
+ Field=val
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=$g ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int64_null/serial_stddev_int64_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int64_null/serial_stddev_int64_null.3.ast
index f05d552..b8ce40c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int64_null/serial_stddev_int64_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int64_null/serial_stddev_int64_null.3.ast
@@ -17,6 +17,20 @@
)
]
stddev
+FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$g ]
+ Field=valplus
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=$g ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int8/serial_stddev_int8.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int8/serial_stddev_int8.3.ast
index 43263e5..02388b6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int8/serial_stddev_int8.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int8/serial_stddev_int8.3.ast
@@ -17,6 +17,20 @@
)
]
stddev
+FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$g ]
+ Field=val
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=$g ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int8_null/serial_stddev_int8_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int8_null/serial_stddev_int8_null.3.ast
index f05d552..b8ce40c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int8_null/serial_stddev_int8_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_int8_null/serial_stddev_int8_null.3.ast
@@ -17,6 +17,20 @@
)
]
stddev
+FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$g ]
+ Field=valplus
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=$g ]
+ ]
+ )
+]
+stddev_pop
]
FROM [ FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [test.Test]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.1.ast
new file mode 100644
index 0000000..a61c9df
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.1.ast
@@ -0,0 +1,9 @@
+DataverseUse test
+TypeDecl TestType [
+ open RecordType {
+ id : bigint,
+ gid : bigint,
+ val : double
+ }
+]
+DatasetDecl Test(TestType) partitioned by [[id]]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.2.ast
new file mode 100644
index 0000000..916a59e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.2.ast
@@ -0,0 +1 @@
+DataverseUse test
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.3.ast
new file mode 100644
index 0000000..5edf9bd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/serial_stddev_pop_mixed/serial_stddev_pop_mixed.3.ast
@@ -0,0 +1,40 @@
+DataverseUse test
+Query:
+SELECT [
+Variable [ Name=$gid ]
+gid
+FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$g ]
+ Field=valplus
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=$g ]
+ ]
+ )
+]
+stddev_pop
+]
+FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Test]
+ ]
+ AS Variable [ Name=$t ]
+]
+Groupby
+ Variable [ Name=$gid ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$t ]
+ Field=gid
+ ]
+ GROUP AS Variable [ Name=$g ]
+ (
+ valplus:=FunctionCall asterix.field-access-by-name@2[
+ Variable [ Name=$t ]
+ LiteralExpr [STRING] [valplus]
+]
+ )
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_double/stddev_double.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_double/stddev_double.3.ast
index b2fcbe8..c2a0566 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_double/stddev_double.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_double/stddev_double.3.ast
@@ -1,19 +1,51 @@
Query:
-SELECT ELEMENT [
-FunctionCall asterix.stddev@1[
+RecordConstructor [
(
- SELECT ELEMENT [
- Variable [ Name=$x ]
- ]
- FROM [ OrderedListConstructor [
- LiteralExpr [DOUBLE] [1.0]
- LiteralExpr [DOUBLE] [2.0]
- FunctionCall null.double@1[
- LiteralExpr [STRING] [3.0]
- ]
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ LiteralExpr [DOUBLE] [1.0]
+ LiteralExpr [DOUBLE] [2.0]
+ FunctionCall null.double@1[
+ LiteralExpr [STRING] [3.0]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
]
- AS Variable [ Name=$x ]
- ]
+ ]
+ )
)
-]
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ LiteralExpr [DOUBLE] [1.0]
+ LiteralExpr [DOUBLE] [2.0]
+ FunctionCall null.double@1[
+ LiteralExpr [STRING] [3.0]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_double_null/stddev_double_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_double_null/stddev_double_null.3.ast
index 433f0bc..863ef3a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_double_null/stddev_double_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_double_null/stddev_double_null.3.ast
@@ -20,4 +20,23 @@
)
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$x ]
+ Field=doubleField
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Numeric]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_empty_01/stddev_empty_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_empty_01/stddev_empty_01.3.ast
index fe21498..6d6b228 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_empty_01/stddev_empty_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_empty_01/stddev_empty_01.3.ast
@@ -1,24 +1,60 @@
DataverseUse test
Query:
-SELECT ELEMENT [
-FunctionCall asterix.stddev@1[
+RecordConstructor [
(
- SELECT ELEMENT [
- Variable [ Name=$x ]
- ]
- FROM [ OrderedListConstructor [
- LiteralExpr [LONG] [1]
- LiteralExpr [LONG] [2]
- LiteralExpr [LONG] [3]
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ LiteralExpr [LONG] [1]
+ LiteralExpr [LONG] [2]
+ LiteralExpr [LONG] [3]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ Where
+ OperatorExpr [
+ Variable [ Name=$x ]
+ >
+ LiteralExpr [LONG] [10]
+ ]
+ )
]
- AS Variable [ Name=$x ]
- ]
- Where
- OperatorExpr [
- Variable [ Name=$x ]
- >
- LiteralExpr [LONG] [10]
]
+ )
)
-]
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ LiteralExpr [LONG] [1]
+ LiteralExpr [LONG] [2]
+ LiteralExpr [LONG] [3]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ Where
+ OperatorExpr [
+ Variable [ Name=$x ]
+ >
+ LiteralExpr [LONG] [10]
+ ]
+ )
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_empty_02/stddev_empty_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_empty_02/stddev_empty_02.3.ast
index 6cb121c..ee7f74f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_empty_02/stddev_empty_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_empty_02/stddev_empty_02.3.ast
@@ -1,19 +1,50 @@
DataverseUse test
Query:
-SELECT ELEMENT [
-FunctionCall asterix.stddev@1[
+RecordConstructor [
(
- SELECT ELEMENT [
- FieldAccessor [
- Variable [ Name=$x ]
- Field=val
- ]
- ]
- FROM [ FunctionCall asterix.dataset@1[
- LiteralExpr [STRING] [test.Test]
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$x ]
+ Field=val
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Test]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
]
- AS Variable [ Name=$x ]
- ]
+ ]
+ )
)
-]
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$x ]
+ Field=val
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Test]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_float/stddev_float.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_float/stddev_float.3.ast
index 07e5c1a..679b6a5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_float/stddev_float.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_float/stddev_float.3.ast
@@ -1,24 +1,60 @@
DataverseUse test
Query:
-SELECT ELEMENT [
-FunctionCall asterix.stddev@1[
+RecordConstructor [
(
- SELECT ELEMENT [
- Variable [ Name=$x ]
- ]
- FROM [ OrderedListConstructor [
- FunctionCall test.float@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.float@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.float@1[
- LiteralExpr [STRING] [3]
- ]
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
]
- AS Variable [ Name=$x ]
- ]
+ ]
+ )
)
-]
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.float@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_float_null/stddev_float_nu.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_float_null/stddev_float_nu.3.ast
index f78dba8..93e6093 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_float_null/stddev_float_nu.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_float_null/stddev_float_nu.3.ast
@@ -20,4 +20,23 @@
)
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$x ]
+ Field=floatField
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Numeric]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int16/stddev_int16.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int16/stddev_int16.3.ast
index 67d7880..00b7c98 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int16/stddev_int16.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int16/stddev_int16.3.ast
@@ -1,24 +1,60 @@
DataverseUse test
Query:
-SELECT ELEMENT [
-FunctionCall asterix.stddev@1[
+RecordConstructor [
(
- SELECT ELEMENT [
- Variable [ Name=$x ]
- ]
- FROM [ OrderedListConstructor [
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int16@1[
- LiteralExpr [STRING] [3]
- ]
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
]
- AS Variable [ Name=$x ]
- ]
+ ]
+ )
)
-]
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int16@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int16_null/stddev_int16_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int16_null/stddev_int16_null.3.ast
index 9f82ab2..bf1e0ad 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int16_null/stddev_int16_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int16_null/stddev_int16_null.3.ast
@@ -20,4 +20,23 @@
)
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$x ]
+ Field=int16Field
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Numeric]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int32/stddev_int32.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int32/stddev_int32.3.ast
index f8eb00d..626c894 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int32/stddev_int32.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int32/stddev_int32.3.ast
@@ -1,18 +1,48 @@
DataverseUse test
Query:
-SELECT ELEMENT [
-FunctionCall asterix.stddev@1[
+RecordConstructor [
(
- SELECT ELEMENT [
- Variable [ Name=$x ]
- ]
- FROM [ OrderedListConstructor [
- LiteralExpr [LONG] [1]
- LiteralExpr [LONG] [2]
- LiteralExpr [LONG] [3]
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ LiteralExpr [LONG] [1]
+ LiteralExpr [LONG] [2]
+ LiteralExpr [LONG] [3]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
]
- AS Variable [ Name=$x ]
- ]
+ ]
+ )
)
-]
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ LiteralExpr [LONG] [1]
+ LiteralExpr [LONG] [2]
+ LiteralExpr [LONG] [3]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int32_null/stddev_int32_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int32_null/stddev_int32_null.3.ast
index 8863b52..c76244c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int32_null/stddev_int32_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int32_null/stddev_int32_null.3.ast
@@ -20,4 +20,23 @@
)
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$x ]
+ Field=int32Field
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Numeric]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int64/stddev_int64.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int64/stddev_int64.3.ast
index 5ddf2ae..64f7c03 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int64/stddev_int64.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int64/stddev_int64.3.ast
@@ -1,24 +1,60 @@
DataverseUse test
Query:
-SELECT ELEMENT [
-FunctionCall asterix.stddev@1[
+RecordConstructor [
(
- SELECT ELEMENT [
- Variable [ Name=$x ]
- ]
- FROM [ OrderedListConstructor [
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int64@1[
- LiteralExpr [STRING] [3]
- ]
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
]
- AS Variable [ Name=$x ]
- ]
+ ]
+ )
)
-]
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int64@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int64_null/stddev_int64_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int64_null/stddev_int64_null.3.ast
index 490ab20..27c0067 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int64_null/stddev_int64_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int64_null/stddev_int64_null.3.ast
@@ -20,4 +20,23 @@
)
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$x ]
+ Field=int64Field
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Numeric]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int8/stddev_int8.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int8/stddev_int8.3.ast
index ca12465..c3eada1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int8/stddev_int8.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int8/stddev_int8.3.ast
@@ -1,24 +1,60 @@
DataverseUse test
Query:
-SELECT ELEMENT [
-FunctionCall asterix.stddev@1[
+RecordConstructor [
(
- SELECT ELEMENT [
- Variable [ Name=$x ]
- ]
- FROM [ OrderedListConstructor [
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [1]
- ]
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [2]
- ]
- FunctionCall test.int8@1[
- LiteralExpr [STRING] [3]
- ]
+ LiteralExpr [STRING] [stddev]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
]
- AS Variable [ Name=$x ]
- ]
+ ]
+ )
)
-]
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ (
+ SELECT ELEMENT [
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [1]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [2]
+ ]
+ FunctionCall test.int8@1[
+ LiteralExpr [STRING] [3]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ ]
+ )
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int8_null/stddev_int8_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int8_null/stddev_int8_null.3.ast
index 65e8156..db4982a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int8_null/stddev_int8_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int8_null/stddev_int8_null.3.ast
@@ -20,4 +20,23 @@
)
]
)
+ (
+ LiteralExpr [STRING] [stddev_pop]
+ :
+ FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=$x ]
+ Field=int8Field
+ ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.Numeric]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+ ]
+ )
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_pop_mixed/stddev_pop_mixed.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_pop_mixed/stddev_pop_mixed.3.ast
new file mode 100644
index 0000000..cc3e8fe
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_pop_mixed/stddev_pop_mixed.3.ast
@@ -0,0 +1,22 @@
+Query:
+SELECT ELEMENT [
+FunctionCall asterix.stddev_pop@1[
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$x ]
+ ]
+ FROM [ OrderedListConstructor [
+ FunctionCall null.float@1[
+ LiteralExpr [STRING] [2.0]
+ ]
+ LiteralExpr [STRING] [hello world]
+ LiteralExpr [LONG] [93847382783847382]
+ FunctionCall null.date@1[
+ LiteralExpr [STRING] [2013-01-01]
+ ]
+ ]
+ AS Variable [ Name=$x ]
+ ]
+ )
+]
+]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index f235d54..2016ea4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -218,6 +218,18 @@
</compilation-unit>
</test-case>
<test-case FilePath="aggregate">
+ <compilation-unit name="stddev_pop_mixed">
+ <output-dir compare="Text">stddev_pop_mixed</output-dir>
+ <expected-error>Type incompatibility: function agg-stddev_pop gets incompatible input values: string and float</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate">
+ <compilation-unit name="serial_stddev_pop_mixed">
+ <output-dir compare="Text">serial_stddev_pop_mixed</output-dir>
+ <expected-error>Type incompatibility: function agg-stddev_pop gets incompatible input values: string and float</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate">
<compilation-unit name="agg_number">
<output-dir compare="Text">agg_number</output-dir>
</compilation-unit>
@@ -699,6 +711,11 @@
</compilation-unit>
</test-case>
<test-case FilePath="aggregate">
+ <compilation-unit name="stddev_distinct">
+ <output-dir compare="Text">stddev_distinct</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate">
<compilation-unit name="sum_double">
<output-dir compare="Text">sum_double</output-dir>
</compilation-unit>
@@ -841,6 +858,18 @@
</compilation-unit>
</test-case>
<test-case FilePath="aggregate-sql">
+ <compilation-unit name="serial_stddev_pop_mixed">
+ <output-dir compare="Text">serial_stddev_pop_mixed</output-dir>
+ <expected-error>Invalid item type: function agg-stddev_pop cannot process item type string in an input array (or multiset)</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_pop_mixed">
+ <output-dir compare="Text">stddev_pop_mixed</output-dir>
+ <expected-error>Type incompatibility: function agg-stddev_pop gets incompatible input values: string and float</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
<compilation-unit name="agg_number">
<output-dir compare="Text">agg_number</output-dir>
</compilation-unit>
@@ -1251,6 +1280,11 @@
</compilation-unit>
</test-case>
<test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_distinct">
+ <output-dir compare="Text">stddev_distinct</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
<compilation-unit name="sum_double">
<output-dir compare="Text">sum_double</output-dir>
</compilation-unit>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml
index f1cf5bb..cd77828 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml
@@ -134,6 +134,18 @@
</compilation-unit>
</test-case>
<test-case FilePath="aggregate">
+ <compilation-unit name="stddev_pop_mixed">
+ <output-dir compare="AST">stddev_pop_mixed</output-dir>
+ <expected-error>org.apache.asterix.common.exceptions.AsterixException</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate">
+ <compilation-unit name="serial_stddev_pop_mixed">
+ <output-dir compare="AST">serial_stddev_pop_mixed</output-dir>
+ <expected-error>org.apache.asterix.common.exceptions.AsterixException</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate">
<compilation-unit name="agg_number">
<output-dir compare="AST">agg_number</output-dir>
</compilation-unit>
@@ -525,8 +537,8 @@
</compilation-unit>
</test-case>
<test-case FilePath="aggregate">
- <compilation-unit name="serial_stddev_pop_int8_null">
- <output-dir compare="AST">serial_stddev_pop_int8_null</output-dir>
+ <compilation-unit name="serial_stddev_int8_null">
+ <output-dir compare="AST">serial_stddev_int8_null</output-dir>
</compilation-unit>
</test-case>
<test-case FilePath="aggregate">
@@ -737,6 +749,18 @@
</compilation-unit>
</test-case>
<test-case FilePath="aggregate-sql">
+ <compilation-unit name="serial_stddev_pop_mixed">
+ <output-dir compare="AST">serial_stddev_pop_mixed</output-dir>
+ <expected-error>org.apache.asterix.common.exceptions.AsterixException</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_pop_mixed">
+ <output-dir compare="AST">stddev_pop_mixed</output-dir>
+ <expected-error>org.apache.asterix.common.exceptions.AsterixException</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
<compilation-unit name="agg_number">
<output-dir compare="AST">agg_number</output-dir>
</compilation-unit>
@@ -967,6 +991,21 @@
</compilation-unit>
</test-case>
<test-case FilePath="aggregate-sql">
+ <compilation-unit name="scalar_stddev_pop">
+ <output-dir compare="AST">scalar_stddev_pop</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="scalar_stddev_pop_empty">
+ <output-dir compare="AST">scalar_stddev_pop_empty</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="scalar_stddev_pop_null">
+ <output-dir compare="AST">scalar_stddev_pop_null</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
<compilation-unit name="scalar_sum">
<output-dir compare="AST">scalar_sum</output-dir>
</compilation-unit>
@@ -1047,6 +1086,71 @@
</compilation-unit>
</test-case>
<test-case FilePath="aggregate-sql">
+ <compilation-unit name="serial_stddev_pop_double">
+ <output-dir compare="AST">serial_stddev_pop_double</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="serial_stddev_pop_double_null">
+ <output-dir compare="AST">serial_stddev_pop_double_null</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="serial_stddev_pop_empty">
+ <output-dir compare="AST">serial_stddev_pop_empty</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="serial_stddev_pop_float">
+ <output-dir compare="AST">serial_stddev_pop_float</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="serial_stddev_pop_float_null">
+ <output-dir compare="AST">serial_stddev_pop_float_null</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="serial_stddev_pop_int16">
+ <output-dir compare="AST">serial_stddev_pop_int16</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="serial_stddev_pop_int16_null">
+ <output-dir compare="AST">serial_stddev_pop_int16_null</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="serial_stddev_pop_int32">
+ <output-dir compare="AST">serial_stddev_pop_int32</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="serial_stddev_pop_int32_null">
+ <output-dir compare="AST">serial_stddev_pop_int32_null</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="serial_stddev_pop_int64">
+ <output-dir compare="AST">serial_stddev_pop_int64</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="serial_stddev_pop_int64_null">
+ <output-dir compare="AST">serial_stddev_pop_int64_null</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="serial_stddev_pop_int8">
+ <output-dir compare="AST">serial_stddev_pop_int8</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="serial_stddev_pop_int8_null">
+ <output-dir compare="AST">serial_stddev_pop_int8_null</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
<compilation-unit name="stddev_double">
<output-dir compare="AST">stddev_double</output-dir>
</compilation-unit>
@@ -1117,6 +1221,76 @@
</compilation-unit>
</test-case>
<test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_pop_double">
+ <output-dir compare="AST">stddev_pop_double</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_pop_double_null">
+ <output-dir compare="AST">stddev_pop_double_null</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_pop_empty_01">
+ <output-dir compare="AST">stddev_pop_empty_01</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_pop_empty_02">
+ <output-dir compare="AST">stddev_pop_empty_02</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_pop_float">
+ <output-dir compare="AST">stddev_pop_float</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_pop_float_null">
+ <output-dir compare="AST">stddev_pop_float_null</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_pop_int16">
+ <output-dir compare="AST">stddev_pop_int16</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_pop_int16_null">
+ <output-dir compare="AST">stddev_pop_int16_null</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_pop_int32">
+ <output-dir compare="AST">stddev_pop_int32</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_pop_int32_null">
+ <output-dir compare="AST">stddev_pop_int32_null</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_pop_int64">
+ <output-dir compare="AST">stddev_pop_int64</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_pop_int64_null">
+ <output-dir compare="AST">stddev_pop_int64_null</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_pop_int8">
+ <output-dir compare="AST">stddev_pop_int8</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
+ <compilation-unit name="stddev_pop_int8_null">
+ <output-dir compare="AST">stddev_pop_int8_null</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="aggregate-sql">
<compilation-unit name="sum_double">
<output-dir compare="AST">sum_double</output-dir>
</compilation-unit>
diff --git a/asterixdb/asterix-doc/src/main/markdown/builtins/9_aggregate_sql.md b/asterixdb/asterix-doc/src/main/markdown/builtins/9_aggregate_sql.md
index 2036bc4..e9a5739 100644
--- a/asterixdb/asterix-doc/src/main/markdown/builtins/9_aggregate_sql.md
+++ b/asterixdb/asterix-doc/src/main/markdown/builtins/9_aggregate_sql.md
@@ -195,6 +195,32 @@
1.4591664287073858
+### array_stddev_pop ###
+
+ * Syntax:
+
+ array_stddev_pop(num_collection)
+
+ * Gets the standard deviation value of the non-null and non-missing numeric items in the given collection.
+ * Arguments:
+ * `num_collection` could be:
+ * an `array` or `multiset` containing numeric values, `null`s or `missing`s,
+ * or, a `null` value,
+ * or, a `missing` value.
+ * Return Value:
+ * a `double` value representing the average of the non-null and non-missing numbers in the given collection,
+ * `null` is returned if the input is `null` or `missing`,
+ * `null` is returned if the given collection does not contain any non-null and non-missing items,
+ * any other non-array and non-multiset input value will cause a type error,
+ * any other non-numeric value in the input collection will cause a type error.
+
+ * Example:
+
+ array_stddev_pop( [1.2, 2.3, 3.4, 0, null] );
+
+ * The expected result is:
+
+ 1.2636751956100112
### strict_count ###
* Syntax:
@@ -352,3 +378,28 @@
* The expected result is:
100.0
+
+### strict_stddev_pop ###
+ * Syntax:
+
+ strict_stddev_pop(num_collection)
+
+ * Gets the standard deviation value of the numeric items in the given collection.
+ * Arguments:
+ * `num_collection` could be:
+ * an `array` or `multiset` containing numeric values, `null`s or `missing`s,
+ * or, a `null` value,
+ * or, a `missing` value.
+ * Return Value:
+ * a `double` value representing the average of the numbers in the given collection,
+ * `null` is returned if the input is `null` or `missing`,
+ * `null` is returned if there is a `null` or `missing` in the input collection,
+ * any other non-numeric value in the input collection will cause a type error.
+
+ * Example:
+
+ strict_stddev_pop( [100, 200, 300] );
+
+ * The expected result is:
+
+ 81.64965809277261
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
index 1ff6e57..4813be9 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
@@ -482,6 +482,14 @@
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-local-sampling", FunctionIdentifier.VARARGS);
public static final FunctionIdentifier RANGE_MAP =
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-range-map", 1);
+ public static final FunctionIdentifier STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-stddev_pop", 1);
+ public static final FunctionIdentifier GLOBAL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-global-stddev_pop", 1);
+ public static final FunctionIdentifier INTERMEDIATE_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-intermediate-stddev_pop", 1);
+ public static final FunctionIdentifier LOCAL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-local-stddev_pop", 1);
public static final FunctionIdentifier SCALAR_AVG = new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "avg", 1);
public static final FunctionIdentifier SCALAR_COUNT =
@@ -501,6 +509,12 @@
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "global-stddev", 1);
public static final FunctionIdentifier SCALAR_LOCAL_STDDEV =
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "local-stddev", 1);
+ public static final FunctionIdentifier SCALAR_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "stddev_pop", 1);
+ public static final FunctionIdentifier SCALAR_GLOBAL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "global-stddev_pop", 1);
+ public static final FunctionIdentifier SCALAR_LOCAL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "local-stddev_pop", 1);
// serializable aggregate functions
public static final FunctionIdentifier SERIAL_AVG =
@@ -525,6 +539,14 @@
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "local-stddev-serial", 1);
public static final FunctionIdentifier SERIAL_INTERMEDIATE_STDDEV =
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "intermediate-stddev-serial", 1);
+ public static final FunctionIdentifier SERIAL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "stddev_pop-serial", 1);
+ public static final FunctionIdentifier SERIAL_GLOBAL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "global-stddev_pop-serial", 1);
+ public static final FunctionIdentifier SERIAL_LOCAL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "local-stddev_pop-serial", 1);
+ public static final FunctionIdentifier SERIAL_INTERMEDIATE_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "intermediate-stddev_pop-serial", 1);
// distinct aggregate functions
public static final FunctionIdentifier COUNT_DISTINCT =
@@ -547,6 +569,14 @@
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-min-distinct", 1);
public static final FunctionIdentifier SCALAR_MIN_DISTINCT =
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "min-distinct", 1);
+ public static final FunctionIdentifier STDDEV_DISTINCT =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-stddev-distinct", 1);
+ public static final FunctionIdentifier SCALAR_STDDEV_DISTINCT =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "stddev-distinct", 1);
+ public static final FunctionIdentifier STDDEV_POP_DISTINCT =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-stddev_pop-distinct", 1);
+ public static final FunctionIdentifier SCALAR_STDDEV_POP_DISTINCT =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "stddev_pop-distinct", 1);
// sql aggregate functions
public static final FunctionIdentifier SQL_AVG =
@@ -579,6 +609,14 @@
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-global-sql-stddev", 1);
public static final FunctionIdentifier LOCAL_SQL_STDDEV =
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-local-sql-stddev", 1);
+ public static final FunctionIdentifier SQL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-sql-stddev_pop", 1);
+ public static final FunctionIdentifier INTERMEDIATE_SQL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "intermediate-agg-sql-stddev_pop", 1);
+ public static final FunctionIdentifier GLOBAL_SQL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-global-sql-stddev_pop", 1);
+ public static final FunctionIdentifier LOCAL_SQL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-local-sql-stddev_pop", 1);
public static final FunctionIdentifier SCALAR_SQL_AVG =
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "sql-avg", 1);
@@ -600,6 +638,12 @@
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "global-sql-stddev", 1);
public static final FunctionIdentifier SCALAR_LOCAL_SQL_STDDEV =
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "local-sql-stddev", 1);
+ public static final FunctionIdentifier SCALAR_SQL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "sql-stddev_pop", 1);
+ public static final FunctionIdentifier SCALAR_GLOBAL_SQL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "global-sql-stddev_pop", 1);
+ public static final FunctionIdentifier SCALAR_LOCAL_SQL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "local-sql-stddev_pop", 1);
// serializable sql aggregate functions
public static final FunctionIdentifier SERIAL_SQL_AVG =
@@ -624,6 +668,14 @@
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "intermediate-sql-stddev-serial", 1);
public static final FunctionIdentifier SERIAL_LOCAL_SQL_STDDEV =
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "local-sql-stddev-serial", 1);
+ public static final FunctionIdentifier SERIAL_SQL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "sql-stddev_pop-serial", 1);
+ public static final FunctionIdentifier SERIAL_GLOBAL_SQL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "global-sql-stddev_pop-serial", 1);
+ public static final FunctionIdentifier SERIAL_INTERMEDIATE_SQL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "intermediate-sql-stddev_pop-serial", 1);
+ public static final FunctionIdentifier SERIAL_LOCAL_SQL_STDDEV_POP =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "local-sql-stddev_pop-serial", 1);
// distinct sql aggregate functions
public static final FunctionIdentifier SQL_COUNT_DISTINCT =
@@ -646,6 +698,14 @@
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-sql-min-distinct", 1);
public static final FunctionIdentifier SCALAR_SQL_MIN_DISTINCT =
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "sql-min-distinct", 1);
+ public static final FunctionIdentifier SQL_STDDEV_DISTINCT =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-sql-stddev-distinct", 1);
+ public static final FunctionIdentifier SCALAR_SQL_STDDEV_DISTINCT =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "sql-stddev-distinct", 1);
+ public static final FunctionIdentifier SQL_STDDEV_POP_DISTINCT =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "agg-sql-stddev_pop-distinct", 1);
+ public static final FunctionIdentifier SCALAR_SQL_STDDEV_POP_DISTINCT =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "sql-stddev_pop-distinct", 1);
// unnesting functions
public static final FunctionIdentifier SCAN_COLLECTION =
@@ -1388,6 +1448,9 @@
addPrivateFunction(GLOBAL_STDDEV, NullableDoubleTypeComputer.INSTANCE, true);
addPrivateFunction(LOCAL_SAMPLING, ListOfSamplesTypeComputer.INSTANCE, true);
addPrivateFunction(RANGE_MAP, ABinaryTypeComputer.INSTANCE, true);
+ addPrivateFunction(LOCAL_STDDEV_POP, LocalSingleVarStatisticsTypeComputer.INSTANCE, true);
+ addFunction(STDDEV_POP, NullableDoubleTypeComputer.INSTANCE, true);
+ addPrivateFunction(GLOBAL_STDDEV_POP, NullableDoubleTypeComputer.INSTANCE, true);
addPrivateFunction(SERIAL_SQL_AVG, NullableDoubleTypeComputer.INSTANCE, true);
addPrivateFunction(SERIAL_SQL_COUNT, AInt64TypeComputer.INSTANCE, true);
@@ -1412,6 +1475,14 @@
addPrivateFunction(SERIAL_GLOBAL_SQL_STDDEV, NullableDoubleTypeComputer.INSTANCE, true);
addPrivateFunction(SERIAL_LOCAL_SQL_STDDEV, LocalSingleVarStatisticsTypeComputer.INSTANCE, true);
addPrivateFunction(SERIAL_INTERMEDIATE_SQL_STDDEV, LocalSingleVarStatisticsTypeComputer.INSTANCE, true);
+ addFunction(SCALAR_STDDEV_POP, NullableDoubleTypeComputer.INSTANCE, true);
+ addPrivateFunction(SCALAR_GLOBAL_STDDEV_POP, NullableDoubleTypeComputer.INSTANCE, true);
+ addPrivateFunction(SCALAR_LOCAL_STDDEV_POP, NullableDoubleTypeComputer.INSTANCE, true);
+ addPrivateFunction(INTERMEDIATE_STDDEV_POP, LocalSingleVarStatisticsTypeComputer.INSTANCE, true);
+ addPrivateFunction(SERIAL_SQL_STDDEV_POP, NullableDoubleTypeComputer.INSTANCE, true);
+ addPrivateFunction(SERIAL_GLOBAL_SQL_STDDEV_POP, NullableDoubleTypeComputer.INSTANCE, true);
+ addPrivateFunction(SERIAL_LOCAL_SQL_STDDEV_POP, LocalSingleVarStatisticsTypeComputer.INSTANCE, true);
+ addPrivateFunction(SERIAL_INTERMEDIATE_SQL_STDDEV_POP, LocalSingleVarStatisticsTypeComputer.INSTANCE, true);
addFunction(SQL_AVG, NullableDoubleTypeComputer.INSTANCE, true);
addPrivateFunction(GLOBAL_SQL_AVG, NullableDoubleTypeComputer.INSTANCE, true);
@@ -1439,6 +1510,13 @@
addFunction(SCALAR_SQL_STDDEV, NullableDoubleTypeComputer.INSTANCE, true);
addPrivateFunction(SCALAR_GLOBAL_SQL_STDDEV, NullableDoubleTypeComputer.INSTANCE, true);
addPrivateFunction(SCALAR_LOCAL_SQL_STDDEV, NullableDoubleTypeComputer.INSTANCE, true);
+ addFunction(SQL_STDDEV_POP, NullableDoubleTypeComputer.INSTANCE, true);
+ addPrivateFunction(GLOBAL_SQL_STDDEV_POP, NullableDoubleTypeComputer.INSTANCE, true);
+ addPrivateFunction(LOCAL_SQL_STDDEV_POP, LocalSingleVarStatisticsTypeComputer.INSTANCE, true);
+ addPrivateFunction(INTERMEDIATE_SQL_STDDEV_POP, LocalSingleVarStatisticsTypeComputer.INSTANCE, true);
+ addFunction(SCALAR_SQL_STDDEV_POP, NullableDoubleTypeComputer.INSTANCE, true);
+ addPrivateFunction(SCALAR_GLOBAL_SQL_STDDEV_POP, NullableDoubleTypeComputer.INSTANCE, true);
+ addPrivateFunction(SCALAR_LOCAL_SQL_STDDEV_POP, NullableDoubleTypeComputer.INSTANCE, true);
addPrivateFunction(SERIAL_AVG, NullableDoubleTypeComputer.INSTANCE, true);
addPrivateFunction(SERIAL_COUNT, AInt64TypeComputer.INSTANCE, true);
@@ -1451,6 +1529,10 @@
addPrivateFunction(SERIAL_GLOBAL_STDDEV, NullableDoubleTypeComputer.INSTANCE, true);
addPrivateFunction(SERIAL_LOCAL_STDDEV, LocalSingleVarStatisticsTypeComputer.INSTANCE, true);
addPrivateFunction(SERIAL_INTERMEDIATE_STDDEV, LocalSingleVarStatisticsTypeComputer.INSTANCE, true);
+ addPrivateFunction(SERIAL_STDDEV_POP, NullableDoubleTypeComputer.INSTANCE, true);
+ addPrivateFunction(SERIAL_GLOBAL_STDDEV_POP, NullableDoubleTypeComputer.INSTANCE, true);
+ addPrivateFunction(SERIAL_LOCAL_STDDEV_POP, LocalSingleVarStatisticsTypeComputer.INSTANCE, true);
+ addPrivateFunction(SERIAL_INTERMEDIATE_STDDEV_POP, LocalSingleVarStatisticsTypeComputer.INSTANCE, true);
// Distinct aggregate functions
@@ -1479,6 +1561,16 @@
addFunction(SQL_MIN_DISTINCT, MinMaxAggTypeComputer.INSTANCE, true);
addFunction(SCALAR_SQL_MIN_DISTINCT, ScalarVersionOfAggregateResultType.INSTANCE, true);
+ addFunction(STDDEV_DISTINCT, NullableDoubleTypeComputer.INSTANCE, true);
+ addFunction(SCALAR_STDDEV_DISTINCT, NullableDoubleTypeComputer.INSTANCE, true);
+ addFunction(SQL_STDDEV_DISTINCT, NullableDoubleTypeComputer.INSTANCE, true);
+ addFunction(SCALAR_SQL_STDDEV_DISTINCT, NullableDoubleTypeComputer.INSTANCE, true);
+
+ addFunction(STDDEV_POP_DISTINCT, NullableDoubleTypeComputer.INSTANCE, true);
+ addFunction(SCALAR_STDDEV_POP_DISTINCT, NullableDoubleTypeComputer.INSTANCE, true);
+ addFunction(SQL_STDDEV_POP_DISTINCT, NullableDoubleTypeComputer.INSTANCE, true);
+ addFunction(SCALAR_SQL_STDDEV_POP_DISTINCT, NullableDoubleTypeComputer.INSTANCE, true);
+
// Similarity functions
addFunction(EDIT_DISTANCE_CONTAINS, OrderedListOfAnyTypeComputer.INSTANCE, true);
addFunction(SIMILARITY_JACCARD, AFloatTypeComputer.INSTANCE, true);
@@ -1828,6 +1920,43 @@
addIntermediateAgg(SERIAL_GLOBAL_STDDEV, SERIAL_INTERMEDIATE_STDDEV);
addGlobalAgg(SERIAL_STDDEV, SERIAL_GLOBAL_STDDEV);
+ // STDDEV DISTINCT
+
+ addDistinctAgg(STDDEV_DISTINCT, SCALAR_STDDEV);
+ addScalarAgg(STDDEV_DISTINCT, SCALAR_STDDEV_DISTINCT);
+
+ // STDDEV_POP
+
+ addAgg(STDDEV_POP);
+ addAgg(LOCAL_STDDEV_POP);
+ addAgg(GLOBAL_STDDEV_POP);
+ addLocalAgg(STDDEV_POP, LOCAL_STDDEV_POP);
+ addIntermediateAgg(STDDEV_POP, INTERMEDIATE_STDDEV_POP);
+ addIntermediateAgg(LOCAL_STDDEV_POP, INTERMEDIATE_STDDEV_POP);
+ addIntermediateAgg(GLOBAL_STDDEV_POP, INTERMEDIATE_STDDEV_POP);
+ addGlobalAgg(STDDEV_POP, GLOBAL_STDDEV_POP);
+
+ addScalarAgg(STDDEV_POP, SCALAR_STDDEV_POP);
+ addScalarAgg(GLOBAL_STDDEV_POP, SCALAR_GLOBAL_STDDEV_POP);
+ addScalarAgg(LOCAL_STDDEV_POP, SCALAR_LOCAL_STDDEV_POP);
+
+ addSerialAgg(STDDEV_POP, SERIAL_STDDEV_POP);
+ addSerialAgg(LOCAL_STDDEV_POP, SERIAL_LOCAL_STDDEV_POP);
+ addSerialAgg(GLOBAL_STDDEV_POP, SERIAL_GLOBAL_STDDEV_POP);
+ addAgg(SERIAL_STDDEV_POP);
+ addAgg(SERIAL_LOCAL_STDDEV_POP);
+ addAgg(SERIAL_GLOBAL_STDDEV_POP);
+ addLocalAgg(SERIAL_STDDEV_POP, SERIAL_LOCAL_STDDEV_POP);
+ addIntermediateAgg(SERIAL_STDDEV_POP, SERIAL_INTERMEDIATE_STDDEV_POP);
+ addIntermediateAgg(SERIAL_LOCAL_STDDEV_POP, SERIAL_INTERMEDIATE_STDDEV_POP);
+ addIntermediateAgg(SERIAL_GLOBAL_STDDEV_POP, SERIAL_INTERMEDIATE_STDDEV_POP);
+ addGlobalAgg(SERIAL_STDDEV_POP, SERIAL_GLOBAL_STDDEV_POP);
+
+ // STDDEV_POP DISTINCT
+
+ addDistinctAgg(STDDEV_POP_DISTINCT, SCALAR_STDDEV_POP);
+ addScalarAgg(STDDEV_POP_DISTINCT, SCALAR_STDDEV_POP_DISTINCT);
+
// FIRST_ELEMENT
addAgg(SCALAR_FIRST_ELEMENT);
@@ -1947,11 +2076,48 @@
addIntermediateAgg(SERIAL_GLOBAL_SQL_STDDEV, SERIAL_INTERMEDIATE_SQL_STDDEV);
addGlobalAgg(SERIAL_SQL_STDDEV, SERIAL_GLOBAL_SQL_STDDEV);
+ // SQL STDDEV_POP
+
+ addAgg(SQL_STDDEV_POP);
+ addAgg(LOCAL_SQL_STDDEV_POP);
+ addAgg(GLOBAL_SQL_STDDEV_POP);
+ addLocalAgg(SQL_STDDEV_POP, LOCAL_SQL_STDDEV_POP);
+ addIntermediateAgg(SQL_STDDEV_POP, INTERMEDIATE_SQL_STDDEV_POP);
+ addIntermediateAgg(LOCAL_SQL_STDDEV_POP, INTERMEDIATE_SQL_STDDEV_POP);
+ addIntermediateAgg(GLOBAL_SQL_STDDEV_POP, INTERMEDIATE_SQL_STDDEV_POP);
+ addGlobalAgg(SQL_STDDEV_POP, GLOBAL_SQL_STDDEV_POP);
+
+ addScalarAgg(SQL_STDDEV_POP, SCALAR_SQL_STDDEV_POP);
+ addScalarAgg(GLOBAL_SQL_STDDEV_POP, SCALAR_GLOBAL_SQL_STDDEV_POP);
+ addScalarAgg(LOCAL_SQL_STDDEV_POP, SCALAR_LOCAL_SQL_STDDEV_POP);
+
+ addSerialAgg(SQL_STDDEV_POP, SERIAL_SQL_STDDEV_POP);
+ addSerialAgg(LOCAL_SQL_STDDEV_POP, SERIAL_LOCAL_SQL_STDDEV_POP);
+ addSerialAgg(GLOBAL_SQL_STDDEV_POP, SERIAL_GLOBAL_SQL_STDDEV_POP);
+ addAgg(SERIAL_SQL_STDDEV_POP);
+ addAgg(SERIAL_LOCAL_SQL_STDDEV_POP);
+ addAgg(SERIAL_GLOBAL_SQL_STDDEV_POP);
+ addLocalAgg(SERIAL_SQL_STDDEV_POP, SERIAL_LOCAL_SQL_STDDEV_POP);
+ addIntermediateAgg(SERIAL_SQL_STDDEV_POP, SERIAL_INTERMEDIATE_SQL_STDDEV_POP);
+ addIntermediateAgg(SERIAL_LOCAL_SQL_STDDEV_POP, SERIAL_INTERMEDIATE_SQL_STDDEV_POP);
+ addIntermediateAgg(SERIAL_GLOBAL_SQL_STDDEV_POP, SERIAL_INTERMEDIATE_SQL_STDDEV_POP);
+ addGlobalAgg(SERIAL_SQL_STDDEV_POP, SERIAL_GLOBAL_SQL_STDDEV_POP);
+
// SQL AVG DISTINCT
addDistinctAgg(SQL_AVG_DISTINCT, SCALAR_SQL_AVG);
addScalarAgg(SQL_AVG_DISTINCT, SCALAR_SQL_AVG_DISTINCT);
+ // SQL STDDEV DISTINCT
+
+ addDistinctAgg(SQL_STDDEV_DISTINCT, SCALAR_SQL_STDDEV);
+ addScalarAgg(SQL_STDDEV_DISTINCT, SCALAR_SQL_STDDEV_DISTINCT);
+
+ // SQL STDDEV_POP DISTINCT
+
+ addDistinctAgg(SQL_STDDEV_POP_DISTINCT, SCALAR_SQL_STDDEV_POP);
+ addScalarAgg(SQL_STDDEV_POP_DISTINCT, SCALAR_SQL_STDDEV_POP_DISTINCT);
+
// SQL COUNT
addAgg(SQL_COUNT);
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/scalar/ScalarSqlStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/scalar/ScalarSqlStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..b880222
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/scalar/ScalarSqlStddevPopAggregateDescriptor.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.runtime.aggregates.scalar;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.std.SqlStddevPopAggregateDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+
+public class ScalarSqlStddevPopAggregateDescriptor extends AbstractScalarAggregateDescriptor {
+
+ private static final long serialVersionUID = 1L;
+
+ public final static FunctionIdentifier FID = BuiltinFunctions.SCALAR_SQL_STDDEV_POP;
+
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new ScalarSqlStddevPopAggregateDescriptor(
+ SqlStddevPopAggregateDescriptor.FACTORY.createFunctionDescriptor());
+ }
+ };
+
+ private ScalarSqlStddevPopAggregateDescriptor(IFunctionDescriptor aggFuncDesc) {
+ super(aggFuncDesc);
+ }
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return FID;
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/scalar/ScalarStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/scalar/ScalarStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..2a566a8
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/scalar/ScalarStddevPopAggregateDescriptor.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.runtime.aggregates.scalar;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.std.StddevPopAggregateDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+
+public class ScalarStddevPopAggregateDescriptor extends AbstractScalarAggregateDescriptor {
+
+ private static final long serialVersionUID = 1L;
+
+ public final static FunctionIdentifier FID = BuiltinFunctions.SCALAR_STDDEV_POP;
+
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new ScalarStddevPopAggregateDescriptor(
+ StddevPopAggregateDescriptor.FACTORY.createFunctionDescriptor());
+ }
+ };
+
+ private ScalarStddevPopAggregateDescriptor(IFunctionDescriptor aggFuncDesc) {
+ super(aggFuncDesc);
+ }
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return FID;
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableSingleVariableStatisticsAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableSingleVariableStatisticsAggregateFunction.java
index 0b16b68..d537043 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableSingleVariableStatisticsAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableSingleVariableStatisticsAggregateFunction.java
@@ -272,7 +272,7 @@
}
}
- protected void finishStddevFinalResults(byte[] state, int start, int len, DataOutput result)
+ protected void finishStddevFinalResults(byte[] state, int start, int len, DataOutput result, int delta)
throws HyracksDataException {
double m2 = BufferSerDeUtil.getDouble(state, start + M2_OFFSET);
long count = BufferSerDeUtil.getLong(state, start + COUNT_OFFSET);
@@ -281,7 +281,7 @@
if (count <= 1 || aggType == ATypeTag.NULL) {
nullSerde.serialize(ANull.NULL, result);
} else {
- aDouble.setValue(Math.sqrt(m2 / (count - 1)));
+ aDouble.setValue(Math.sqrt(m2 / (count - delta)));
doubleSerde.serialize(aDouble, result);
}
} catch (IOException e) {
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalSqlStddevAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalSqlStddevAggregateDescriptor.java
index d06c6aa..b3270d9 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalSqlStddevAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalSqlStddevAggregateDescriptor.java
@@ -55,7 +55,7 @@
@Override
public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx)
throws HyracksDataException {
- return new SerializableGlobalSqlStddevAggregateFunction(args, ctx, sourceLoc);
+ return new SerializableGlobalSqlStddevAggregateFunction(args, ctx, false, sourceLoc);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalSqlStddevAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalSqlStddevAggregateFunction.java
index 1be87f6..8bfd405 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalSqlStddevAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalSqlStddevAggregateFunction.java
@@ -32,9 +32,18 @@
public class SerializableGlobalSqlStddevAggregateFunction
extends AbstractSerializableSingleVariableStatisticsAggregateFunction {
+ private final boolean isPop;
+ private final int delta;
+
public SerializableGlobalSqlStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context,
- SourceLocation sourceLoc) throws HyracksDataException {
+ boolean isPop, SourceLocation sourceLoc) throws HyracksDataException {
super(args, context, sourceLoc);
+ this.isPop = isPop;
+ if (isPop) {
+ delta = 0;
+ } else {
+ delta = 1;
+ }
}
@Override
@@ -44,7 +53,7 @@
@Override
public void finish(byte[] state, int start, int len, DataOutput result) throws HyracksDataException {
- finishStddevFinalResults(state, start, len, result);
+ finishStddevFinalResults(state, start, len, result, delta);
}
@Override
@@ -58,7 +67,11 @@
@Override
protected FunctionIdentifier getFunctionIdentifier() {
- return BuiltinFunctions.STDDEV;
+ if (isPop) {
+ return BuiltinFunctions.STDDEV_POP;
+ } else {
+ return BuiltinFunctions.STDDEV;
+ }
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalSqlStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalSqlStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..1c080e2
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalSqlStddevPopAggregateDescriptor.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.aggregates.serializable.std;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.base.AbstractSerializableAggregateFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class SerializableGlobalSqlStddevPopAggregateDescriptor
+ extends AbstractSerializableAggregateFunctionDynamicDescriptor {
+
+ private static final long serialVersionUID = 1L;
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new SerializableGlobalSqlStddevPopAggregateDescriptor();
+ }
+ };
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.SERIAL_GLOBAL_SQL_STDDEV_POP;
+ }
+
+ @Override
+ public ISerializedAggregateEvaluatorFactory createSerializableAggregateEvaluatorFactory(
+ final IScalarEvaluatorFactory[] args) {
+ return new ISerializedAggregateEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx)
+ throws HyracksDataException {
+ return new SerializableGlobalSqlStddevAggregateFunction(args, ctx, true, sourceLoc);
+ }
+ };
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalStddevAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalStddevAggregateDescriptor.java
index f17ef2f..ae78504 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalStddevAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalStddevAggregateDescriptor.java
@@ -55,7 +55,7 @@
@Override
public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx)
throws HyracksDataException {
- return new SerializableGlobalStddevAggregateFunction(args, ctx, sourceLoc);
+ return new SerializableGlobalStddevAggregateFunction(args, ctx, false, sourceLoc);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalStddevAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalStddevAggregateFunction.java
index b15cffd..b83762d 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalStddevAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalStddevAggregateFunction.java
@@ -34,9 +34,18 @@
public class SerializableGlobalStddevAggregateFunction
extends AbstractSerializableSingleVariableStatisticsAggregateFunction {
+ private final boolean isPop;
+ private final int delta;
+
public SerializableGlobalStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context,
- SourceLocation sourceLoc) throws HyracksDataException {
+ boolean isPop, SourceLocation sourceLoc) throws HyracksDataException {
super(args, context, sourceLoc);
+ this.isPop = isPop;
+ if (isPop) {
+ delta = 0;
+ } else {
+ delta = 1;
+ }
}
@Override
@@ -46,7 +55,7 @@
@Override
public void finish(byte[] state, int start, int len, DataOutput result) throws HyracksDataException {
- finishStddevFinalResults(state, start, len, result);
+ finishStddevFinalResults(state, start, len, result, delta);
}
@Override
@@ -67,7 +76,11 @@
@Override
protected FunctionIdentifier getFunctionIdentifier() {
- return BuiltinFunctions.STDDEV;
+ if (isPop) {
+ return BuiltinFunctions.STDDEV_POP;
+ } else {
+ return BuiltinFunctions.STDDEV;
+ }
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..b40ff5c
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalStddevPopAggregateDescriptor.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.aggregates.serializable.std;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.base.AbstractSerializableAggregateFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class SerializableGlobalStddevPopAggregateDescriptor
+ extends AbstractSerializableAggregateFunctionDynamicDescriptor {
+
+ private static final long serialVersionUID = 1L;
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new SerializableGlobalStddevPopAggregateDescriptor();
+ }
+ };
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.SERIAL_GLOBAL_STDDEV_POP;
+ }
+
+ @Override
+ public ISerializedAggregateEvaluatorFactory createSerializableAggregateEvaluatorFactory(
+ final IScalarEvaluatorFactory[] args) {
+ return new ISerializedAggregateEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx)
+ throws HyracksDataException {
+ return new SerializableGlobalStddevAggregateFunction(args, ctx, true, sourceLoc);
+ }
+ };
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateSqlStddevAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateSqlStddevAggregateDescriptor.java
index e5d788a..094bc18 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateSqlStddevAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateSqlStddevAggregateDescriptor.java
@@ -55,7 +55,7 @@
@Override
public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx)
throws HyracksDataException {
- return new SerializableIntermediateSqlStddevAggregateFunction(args, ctx, sourceLoc);
+ return new SerializableIntermediateSqlStddevAggregateFunction(args, ctx, false, sourceLoc);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateSqlStddevAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateSqlStddevAggregateFunction.java
index 498801b..859cace 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateSqlStddevAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateSqlStddevAggregateFunction.java
@@ -32,9 +32,12 @@
public class SerializableIntermediateSqlStddevAggregateFunction
extends AbstractSerializableSingleVariableStatisticsAggregateFunction {
+ private final boolean isPop;
+
public SerializableIntermediateSqlStddevAggregateFunction(IScalarEvaluatorFactory[] args,
- IHyracksTaskContext context, SourceLocation sourceLoc) throws HyracksDataException {
+ IHyracksTaskContext context, boolean isPop, SourceLocation sourceLoc) throws HyracksDataException {
super(args, context, sourceLoc);
+ this.isPop = isPop;
}
@Override
@@ -58,6 +61,10 @@
@Override
protected FunctionIdentifier getFunctionIdentifier() {
- return BuiltinFunctions.STDDEV;
+ if (isPop) {
+ return BuiltinFunctions.STDDEV_POP;
+ } else {
+ return BuiltinFunctions.STDDEV;
+ }
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateSqlStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateSqlStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..10df14f
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateSqlStddevPopAggregateDescriptor.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.aggregates.serializable.std;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.base.AbstractSerializableAggregateFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class SerializableIntermediateSqlStddevPopAggregateDescriptor
+ extends AbstractSerializableAggregateFunctionDynamicDescriptor {
+
+ private static final long serialVersionUID = 1L;
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new SerializableIntermediateSqlStddevPopAggregateDescriptor();
+ }
+ };
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.SERIAL_INTERMEDIATE_SQL_STDDEV_POP;
+ }
+
+ @Override
+ public ISerializedAggregateEvaluatorFactory createSerializableAggregateEvaluatorFactory(
+ final IScalarEvaluatorFactory[] args) {
+ return new ISerializedAggregateEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx)
+ throws HyracksDataException {
+ return new SerializableIntermediateSqlStddevAggregateFunction(args, ctx, true, sourceLoc);
+ }
+ };
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateStddevAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateStddevAggregateDescriptor.java
index d17e5b7..346241c 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateStddevAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateStddevAggregateDescriptor.java
@@ -55,7 +55,7 @@
@Override
public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx)
throws HyracksDataException {
- return new SerializableIntermediateStddevAggregateFunction(args, ctx, sourceLoc);
+ return new SerializableIntermediateStddevAggregateFunction(args, ctx, false, sourceLoc);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateStddevAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateStddevAggregateFunction.java
index 8bc8e14..cea4625 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateStddevAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateStddevAggregateFunction.java
@@ -34,9 +34,12 @@
public class SerializableIntermediateStddevAggregateFunction
extends AbstractSerializableSingleVariableStatisticsAggregateFunction {
+ private final boolean isPop;
+
public SerializableIntermediateStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context,
- SourceLocation sourceLoc) throws HyracksDataException {
+ boolean isPop, SourceLocation sourceLoc) throws HyracksDataException {
super(args, context, sourceLoc);
+ this.isPop = isPop;
}
@Override
@@ -67,7 +70,11 @@
@Override
protected FunctionIdentifier getFunctionIdentifier() {
- return BuiltinFunctions.STDDEV;
+ if (isPop) {
+ return BuiltinFunctions.STDDEV_POP;
+ } else {
+ return BuiltinFunctions.STDDEV;
+ }
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..aa4a835
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateStddevPopAggregateDescriptor.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.aggregates.serializable.std;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.base.AbstractSerializableAggregateFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class SerializableIntermediateStddevPopAggregateDescriptor
+ extends AbstractSerializableAggregateFunctionDynamicDescriptor {
+
+ private static final long serialVersionUID = 1L;
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new SerializableIntermediateStddevPopAggregateDescriptor();
+ }
+ };
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.SERIAL_INTERMEDIATE_STDDEV_POP;
+ }
+
+ @Override
+ public ISerializedAggregateEvaluatorFactory createSerializableAggregateEvaluatorFactory(
+ final IScalarEvaluatorFactory[] args) {
+ return new ISerializedAggregateEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx)
+ throws HyracksDataException {
+ return new SerializableIntermediateStddevAggregateFunction(args, ctx, true, sourceLoc);
+ }
+ };
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalSqlStddevAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalSqlStddevAggregateDescriptor.java
index 9fd7381..41b64ed 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalSqlStddevAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalSqlStddevAggregateDescriptor.java
@@ -55,7 +55,7 @@
@Override
public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx)
throws HyracksDataException {
- return new SerializableLocalSqlStddevAggregateFunction(args, ctx, sourceLoc);
+ return new SerializableLocalSqlStddevAggregateFunction(args, ctx, false, sourceLoc);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalSqlStddevAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalSqlStddevAggregateFunction.java
index d0ef10e..6215511 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalSqlStddevAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalSqlStddevAggregateFunction.java
@@ -32,9 +32,12 @@
public class SerializableLocalSqlStddevAggregateFunction
extends AbstractSerializableSingleVariableStatisticsAggregateFunction {
+ private final boolean isPop;
+
public SerializableLocalSqlStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context,
- SourceLocation sourceLoc) throws HyracksDataException {
+ boolean isPop, SourceLocation sourceLoc) throws HyracksDataException {
super(args, context, sourceLoc);
+ this.isPop = isPop;
}
@Override
@@ -58,6 +61,10 @@
@Override
protected FunctionIdentifier getFunctionIdentifier() {
- return BuiltinFunctions.STDDEV;
+ if (isPop) {
+ return BuiltinFunctions.STDDEV_POP;
+ } else {
+ return BuiltinFunctions.STDDEV;
+ }
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalSqlStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalSqlStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..c1692c2
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalSqlStddevPopAggregateDescriptor.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.aggregates.serializable.std;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.base.AbstractSerializableAggregateFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class SerializableLocalSqlStddevPopAggregateDescriptor
+ extends AbstractSerializableAggregateFunctionDynamicDescriptor {
+
+ private static final long serialVersionUID = 1L;
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new SerializableLocalSqlStddevPopAggregateDescriptor();
+ }
+ };
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.SERIAL_LOCAL_SQL_STDDEV_POP;
+ }
+
+ @Override
+ public ISerializedAggregateEvaluatorFactory createSerializableAggregateEvaluatorFactory(
+ final IScalarEvaluatorFactory[] args) {
+ return new ISerializedAggregateEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx)
+ throws HyracksDataException {
+ return new SerializableLocalSqlStddevAggregateFunction(args, ctx, true, sourceLoc);
+ }
+ };
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalStddevAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalStddevAggregateDescriptor.java
index f4d3bd8..b8f36dd 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalStddevAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalStddevAggregateDescriptor.java
@@ -54,7 +54,7 @@
@Override
public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx)
throws HyracksDataException {
- return new SerializableLocalStddevAggregateFunction(args, ctx, sourceLoc);
+ return new SerializableLocalStddevAggregateFunction(args, ctx, false, sourceLoc);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalStddevAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalStddevAggregateFunction.java
index 3693d4b..bd5a80c 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalStddevAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalStddevAggregateFunction.java
@@ -34,9 +34,12 @@
public class SerializableLocalStddevAggregateFunction
extends AbstractSerializableSingleVariableStatisticsAggregateFunction {
+ private final boolean isPop;
+
public SerializableLocalStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context,
- SourceLocation sourceLoc) throws HyracksDataException {
+ boolean isPop, SourceLocation sourceLoc) throws HyracksDataException {
super(args, context, sourceLoc);
+ this.isPop = isPop;
}
@Override
@@ -67,6 +70,10 @@
@Override
protected FunctionIdentifier getFunctionIdentifier() {
- return BuiltinFunctions.STDDEV;
+ if (isPop) {
+ return BuiltinFunctions.STDDEV_POP;
+ } else {
+ return BuiltinFunctions.STDDEV;
+ }
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..1edfd92
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalStddevPopAggregateDescriptor.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.aggregates.serializable.std;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.base.AbstractSerializableAggregateFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class SerializableLocalStddevPopAggregateDescriptor
+ extends AbstractSerializableAggregateFunctionDynamicDescriptor {
+
+ private static final long serialVersionUID = 1L;
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new SerializableLocalStddevPopAggregateDescriptor();
+ }
+ };
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.SERIAL_LOCAL_STDDEV_POP;
+ }
+
+ @Override
+ public ISerializedAggregateEvaluatorFactory createSerializableAggregateEvaluatorFactory(
+ final IScalarEvaluatorFactory[] args) {
+ return new ISerializedAggregateEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx)
+ throws HyracksDataException {
+ return new SerializableLocalStddevAggregateFunction(args, ctx, true, sourceLoc);
+ }
+ };
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableSqlStddevAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableSqlStddevAggregateDescriptor.java
index a2c2a16..a046242 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableSqlStddevAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableSqlStddevAggregateDescriptor.java
@@ -53,7 +53,7 @@
@Override
public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx)
throws HyracksDataException {
- return new SerializableSqlStddevAggregateFunction(args, ctx, sourceLoc);
+ return new SerializableSqlStddevAggregateFunction(args, ctx, false, sourceLoc);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableSqlStddevAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableSqlStddevAggregateFunction.java
index 005eaad..299aa16 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableSqlStddevAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableSqlStddevAggregateFunction.java
@@ -31,9 +31,18 @@
public class SerializableSqlStddevAggregateFunction
extends AbstractSerializableSingleVariableStatisticsAggregateFunction {
+ private final boolean isPop;
+ private final int delta;
+
public SerializableSqlStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context,
- SourceLocation sourceLoc) throws HyracksDataException {
+ boolean isPop, SourceLocation sourceLoc) throws HyracksDataException {
super(args, context, sourceLoc);
+ this.isPop = isPop;
+ if (isPop) {
+ delta = 0;
+ } else {
+ delta = 1;
+ }
}
@Override
@@ -43,7 +52,7 @@
@Override
public void finish(byte[] state, int start, int len, DataOutput result) throws HyracksDataException {
- finishStddevFinalResults(state, start, len, result);
+ finishStddevFinalResults(state, start, len, result, delta);
}
@Override
@@ -57,7 +66,11 @@
@Override
protected FunctionIdentifier getFunctionIdentifier() {
- return BuiltinFunctions.STDDEV;
+ if (isPop) {
+ return BuiltinFunctions.STDDEV_POP;
+ } else {
+ return BuiltinFunctions.STDDEV;
+ }
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableSqlStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableSqlStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..24b84b9
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableSqlStddevPopAggregateDescriptor.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.runtime.aggregates.serializable.std;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.base.AbstractSerializableAggregateFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class SerializableSqlStddevPopAggregateDescriptor
+ extends AbstractSerializableAggregateFunctionDynamicDescriptor {
+
+ private static final long serialVersionUID = 1L;
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new SerializableSqlStddevPopAggregateDescriptor();
+ }
+ };
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.SERIAL_SQL_STDDEV_POP;
+ }
+
+ @Override
+ public ISerializedAggregateEvaluatorFactory createSerializableAggregateEvaluatorFactory(
+ final IScalarEvaluatorFactory[] args) {
+ return new ISerializedAggregateEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx)
+ throws HyracksDataException {
+ return new SerializableSqlStddevAggregateFunction(args, ctx, true, sourceLoc);
+ }
+ };
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableStddevAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableStddevAggregateDescriptor.java
index f20abc7..30a0d1e 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableStddevAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableStddevAggregateDescriptor.java
@@ -54,7 +54,7 @@
@Override
public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx)
throws HyracksDataException {
- return new SerializableStddevAggregateFunction(args, ctx, sourceLoc);
+ return new SerializableStddevAggregateFunction(args, ctx, false, sourceLoc);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableStddevAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableStddevAggregateFunction.java
index f30848d..c9df585 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableStddevAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableStddevAggregateFunction.java
@@ -32,9 +32,18 @@
public class SerializableStddevAggregateFunction extends AbstractSerializableSingleVariableStatisticsAggregateFunction {
+ private final boolean isPop;
+ private final int delta;
+
public SerializableStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context,
- SourceLocation sourceLoc) throws HyracksDataException {
+ boolean isPop, SourceLocation sourceLoc) throws HyracksDataException {
super(args, context, sourceLoc);
+ this.isPop = isPop;
+ if (isPop) {
+ delta = 0;
+ } else {
+ delta = 1;
+ }
}
@Override
@@ -44,7 +53,7 @@
@Override
public void finish(byte[] state, int start, int len, DataOutput result) throws HyracksDataException {
- finishStddevFinalResults(state, start, len, result);
+ finishStddevFinalResults(state, start, len, result, delta);
}
@Override
@@ -65,7 +74,11 @@
@Override
protected FunctionIdentifier getFunctionIdentifier() {
- return BuiltinFunctions.STDDEV;
+ if (isPop) {
+ return BuiltinFunctions.STDDEV_POP;
+ } else {
+ return BuiltinFunctions.STDDEV;
+ }
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..e645980
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableStddevPopAggregateDescriptor.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.runtime.aggregates.serializable.std;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.base.AbstractSerializableAggregateFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class SerializableStddevPopAggregateDescriptor extends AbstractSerializableAggregateFunctionDynamicDescriptor {
+
+ private static final long serialVersionUID = 1L;
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new SerializableStddevPopAggregateDescriptor();
+ }
+ };
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.SERIAL_STDDEV_POP;
+ }
+
+ @Override
+ public ISerializedAggregateEvaluatorFactory createSerializableAggregateEvaluatorFactory(
+ final IScalarEvaluatorFactory[] args) throws AlgebricksException {
+ return new ISerializedAggregateEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx)
+ throws HyracksDataException {
+ return new SerializableStddevAggregateFunction(args, ctx, true, sourceLoc);
+ }
+ };
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractSingleVarStatisticsAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractSingleVarStatisticsAggregateFunction.java
index 8141839..f4171bd 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractSingleVarStatisticsAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractSingleVarStatisticsAggregateFunction.java
@@ -238,13 +238,13 @@
}
}
- protected void finishStddevFinalResults(IPointable result) throws HyracksDataException {
+ protected void finishStddevFinalResults(IPointable result, int delta) throws HyracksDataException {
resultStorage.reset();
try {
if (moments.getCount() <= 1 || aggType == ATypeTag.NULL) {
nullSerde.serialize(ANull.NULL, resultStorage.getDataOutput());
} else {
- aDouble.setValue(Math.sqrt(moments.getM2() / (moments.getCount() - 1)));
+ aDouble.setValue(Math.sqrt(moments.getM2() / (moments.getCount() - delta)));
doubleSerde.serialize(aDouble, resultStorage.getDataOutput());
}
} catch (IOException e) {
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalSqlStddevAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalSqlStddevAggregateDescriptor.java
index 19d90b2..4a8607a 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalSqlStddevAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalSqlStddevAggregateDescriptor.java
@@ -54,7 +54,7 @@
@Override
public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx)
throws HyracksDataException {
- return new GlobalSqlStddevAggregateFunction(args, ctx, sourceLoc);
+ return new GlobalSqlStddevAggregateFunction(args, ctx, false, sourceLoc);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalSqlStddevAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalSqlStddevAggregateFunction.java
index 3728201..8ae5796 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalSqlStddevAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalSqlStddevAggregateFunction.java
@@ -30,9 +30,18 @@
public class GlobalSqlStddevAggregateFunction extends AbstractSingleVarStatisticsAggregateFunction {
- public GlobalSqlStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context,
+ private final boolean isPop;
+ private final int delta;
+
+ public GlobalSqlStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context, boolean isPop,
SourceLocation sourceLoc) throws HyracksDataException {
super(args, context, sourceLoc);
+ this.isPop = isPop;
+ if (isPop) {
+ delta = 0;
+ } else {
+ delta = 1;
+ }
}
@Override
@@ -42,7 +51,7 @@
@Override
public void finish(IPointable result) throws HyracksDataException {
- finishStddevFinalResults(result);
+ finishStddevFinalResults(result, delta);
}
@Override
@@ -56,7 +65,11 @@
@Override
protected FunctionIdentifier getFunctionIdentifier() {
- return BuiltinFunctions.STDDEV;
+ if (isPop) {
+ return BuiltinFunctions.STDDEV_POP;
+ } else {
+ return BuiltinFunctions.STDDEV;
+ }
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalSqlStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalSqlStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..b227f2d
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalSqlStddevPopAggregateDescriptor.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.aggregates.std;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.base.AbstractAggregateFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class GlobalSqlStddevPopAggregateDescriptor extends AbstractAggregateFunctionDynamicDescriptor {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new GlobalSqlStddevPopAggregateDescriptor();
+ }
+ };
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.GLOBAL_SQL_STDDEV_POP;
+ }
+
+ @Override
+ public IAggregateEvaluatorFactory createAggregateEvaluatorFactory(final IScalarEvaluatorFactory[] args) {
+ return new IAggregateEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx)
+ throws HyracksDataException {
+ return new GlobalSqlStddevAggregateFunction(args, ctx, true, sourceLoc);
+ }
+ };
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalStddevAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalStddevAggregateDescriptor.java
index 3ab204c..015abb5 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalStddevAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalStddevAggregateDescriptor.java
@@ -54,7 +54,7 @@
@Override
public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx)
throws HyracksDataException {
- return new GlobalStddevAggregateFunction(args, ctx, sourceLoc);
+ return new GlobalStddevAggregateFunction(args, ctx, false, sourceLoc);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalStddevAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalStddevAggregateFunction.java
index 5ceea4b..e459b6d 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalStddevAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalStddevAggregateFunction.java
@@ -31,9 +31,18 @@
public class GlobalStddevAggregateFunction extends AbstractSingleVarStatisticsAggregateFunction {
- public GlobalStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context,
+ private final boolean isPop;
+ private final int delta;
+
+ public GlobalStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context, boolean isPop,
SourceLocation sourceLoc) throws HyracksDataException {
super(args, context, sourceLoc);
+ this.isPop = isPop;
+ if (isPop) {
+ delta = 0;
+ } else {
+ delta = 1;
+ }
}
@Override
@@ -43,7 +52,7 @@
@Override
public void finish(IPointable result) throws HyracksDataException {
- finishStddevFinalResults(result);
+ finishStddevFinalResults(result, delta);
}
@Override
@@ -63,7 +72,11 @@
@Override
protected FunctionIdentifier getFunctionIdentifier() {
- return BuiltinFunctions.STDDEV;
+ if (isPop) {
+ return BuiltinFunctions.STDDEV_POP;
+ } else {
+ return BuiltinFunctions.STDDEV;
+ }
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..1dc3083
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalStddevPopAggregateDescriptor.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.aggregates.std;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.base.AbstractAggregateFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class GlobalStddevPopAggregateDescriptor extends AbstractAggregateFunctionDynamicDescriptor {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new GlobalStddevPopAggregateDescriptor();
+ }
+ };
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.GLOBAL_STDDEV_POP;
+ }
+
+ @Override
+ public IAggregateEvaluatorFactory createAggregateEvaluatorFactory(final IScalarEvaluatorFactory[] args) {
+ return new IAggregateEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx)
+ throws HyracksDataException {
+ return new GlobalStddevAggregateFunction(args, ctx, true, sourceLoc);
+ }
+ };
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateSqlStddevAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateSqlStddevAggregateDescriptor.java
index f96a757..6d979da 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateSqlStddevAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateSqlStddevAggregateDescriptor.java
@@ -53,7 +53,7 @@
@Override
public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx)
throws HyracksDataException {
- return new IntermediateSqlStddevAggregateFunction(args, ctx, sourceLoc);
+ return new IntermediateSqlStddevAggregateFunction(args, ctx, false, sourceLoc);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateSqlStddevAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateSqlStddevAggregateFunction.java
index 44a0315..5711d0a 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateSqlStddevAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateSqlStddevAggregateFunction.java
@@ -30,9 +30,12 @@
public class IntermediateSqlStddevAggregateFunction extends AbstractSingleVarStatisticsAggregateFunction {
+ private final boolean isPop;
+
public IntermediateSqlStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context,
- SourceLocation sourceLoc) throws HyracksDataException {
+ boolean isPop, SourceLocation sourceLoc) throws HyracksDataException {
super(args, context, sourceLoc);
+ this.isPop = isPop;
}
@Override
@@ -56,6 +59,10 @@
@Override
protected FunctionIdentifier getFunctionIdentifier() {
- return BuiltinFunctions.STDDEV;
+ if (isPop) {
+ return BuiltinFunctions.STDDEV_POP;
+ } else {
+ return BuiltinFunctions.STDDEV;
+ }
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateSqlStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateSqlStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..f568394
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateSqlStddevPopAggregateDescriptor.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.aggregates.std;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.base.AbstractAggregateFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class IntermediateSqlStddevPopAggregateDescriptor extends AbstractAggregateFunctionDynamicDescriptor {
+
+ private static final long serialVersionUID = 1L;
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new IntermediateSqlStddevPopAggregateDescriptor();
+ }
+ };
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.INTERMEDIATE_SQL_STDDEV_POP;
+ }
+
+ @Override
+ public IAggregateEvaluatorFactory createAggregateEvaluatorFactory(final IScalarEvaluatorFactory[] args) {
+ return new IAggregateEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx)
+ throws HyracksDataException {
+ return new IntermediateSqlStddevAggregateFunction(args, ctx, true, sourceLoc);
+ }
+ };
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateStddevAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateStddevAggregateDescriptor.java
index 503072b..34248d1 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateStddevAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateStddevAggregateDescriptor.java
@@ -54,7 +54,7 @@
@Override
public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx)
throws HyracksDataException {
- return new IntermediateStddevAggregateFunction(args, ctx, sourceLoc);
+ return new IntermediateStddevAggregateFunction(args, ctx, false, sourceLoc);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateStddevAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateStddevAggregateFunction.java
index 238a523..77b5bf0 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateStddevAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateStddevAggregateFunction.java
@@ -32,9 +32,12 @@
public class IntermediateStddevAggregateFunction extends AbstractSingleVarStatisticsAggregateFunction {
+ private final boolean isPop;
+
public IntermediateStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context,
- SourceLocation sourceLoc) throws HyracksDataException {
+ boolean isPop, SourceLocation sourceLoc) throws HyracksDataException {
super(args, context, sourceLoc);
+ this.isPop = isPop;
}
@Override
@@ -64,7 +67,11 @@
@Override
protected FunctionIdentifier getFunctionIdentifier() {
- return BuiltinFunctions.STDDEV;
+ if (isPop) {
+ return BuiltinFunctions.STDDEV_POP;
+ } else {
+ return BuiltinFunctions.STDDEV;
+ }
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..62a70f5
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateStddevPopAggregateDescriptor.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.aggregates.std;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.base.AbstractAggregateFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class IntermediateStddevPopAggregateDescriptor extends AbstractAggregateFunctionDynamicDescriptor {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new IntermediateStddevPopAggregateDescriptor();
+ }
+ };
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.INTERMEDIATE_STDDEV_POP;
+ }
+
+ @Override
+ public IAggregateEvaluatorFactory createAggregateEvaluatorFactory(final IScalarEvaluatorFactory[] args) {
+ return new IAggregateEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx)
+ throws HyracksDataException {
+ return new IntermediateStddevAggregateFunction(args, ctx, true, sourceLoc);
+ }
+ };
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalSqlStddevAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalSqlStddevAggregateDescriptor.java
index c89e71f..34d2e72 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalSqlStddevAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalSqlStddevAggregateDescriptor.java
@@ -53,7 +53,7 @@
@Override
public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx)
throws HyracksDataException {
- return new LocalSqlStddevAggregateFunction(args, ctx, sourceLoc);
+ return new LocalSqlStddevAggregateFunction(args, ctx, false, sourceLoc);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalSqlStddevAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalSqlStddevAggregateFunction.java
index b030b8e..205d931 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalSqlStddevAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalSqlStddevAggregateFunction.java
@@ -30,9 +30,12 @@
public class LocalSqlStddevAggregateFunction extends AbstractSingleVarStatisticsAggregateFunction {
- public LocalSqlStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context,
+ private final boolean isPop;
+
+ public LocalSqlStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context, boolean isPop,
SourceLocation sourceLoc) throws HyracksDataException {
super(args, context, sourceLoc);
+ this.isPop = isPop;
}
@Override
@@ -56,6 +59,10 @@
@Override
protected FunctionIdentifier getFunctionIdentifier() {
- return BuiltinFunctions.STDDEV;
+ if (isPop) {
+ return BuiltinFunctions.STDDEV_POP;
+ } else {
+ return BuiltinFunctions.STDDEV;
+ }
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalSqlStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalSqlStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..74eb2a7
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalSqlStddevPopAggregateDescriptor.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.aggregates.std;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.base.AbstractAggregateFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class LocalSqlStddevPopAggregateDescriptor extends AbstractAggregateFunctionDynamicDescriptor {
+
+ private static final long serialVersionUID = 1L;
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new LocalSqlStddevPopAggregateDescriptor();
+ }
+ };
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.LOCAL_SQL_STDDEV_POP;
+ }
+
+ @Override
+ public IAggregateEvaluatorFactory createAggregateEvaluatorFactory(final IScalarEvaluatorFactory[] args) {
+ return new IAggregateEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx)
+ throws HyracksDataException {
+ return new LocalSqlStddevAggregateFunction(args, ctx, true, sourceLoc);
+ }
+ };
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalStddevAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalStddevAggregateDescriptor.java
index 79bea48..9cd6b5d 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalStddevAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalStddevAggregateDescriptor.java
@@ -53,7 +53,7 @@
@Override
public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx)
throws HyracksDataException {
- return new LocalStddevAggregateFunction(args, ctx, sourceLoc);
+ return new LocalStddevAggregateFunction(args, ctx, false, sourceLoc);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalStddevAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalStddevAggregateFunction.java
index 7ebdb1f..c9cf9a7 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalStddevAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalStddevAggregateFunction.java
@@ -31,9 +31,12 @@
public class LocalStddevAggregateFunction extends AbstractSingleVarStatisticsAggregateFunction {
- public LocalStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context,
+ private final boolean isPop;
+
+ public LocalStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context, boolean isPop,
SourceLocation sourceLoc) throws HyracksDataException {
super(args, context, sourceLoc);
+ this.isPop = isPop;
}
@Override
@@ -63,7 +66,11 @@
@Override
protected FunctionIdentifier getFunctionIdentifier() {
- return BuiltinFunctions.STDDEV;
+ if (isPop) {
+ return BuiltinFunctions.STDDEV_POP;
+ } else {
+ return BuiltinFunctions.STDDEV;
+ }
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..d74cf7e
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalStddevPopAggregateDescriptor.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.aggregates.std;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.base.AbstractAggregateFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class LocalStddevPopAggregateDescriptor extends AbstractAggregateFunctionDynamicDescriptor {
+
+ private static final long serialVersionUID = 1L;
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new LocalStddevPopAggregateDescriptor();
+ }
+ };
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.LOCAL_STDDEV_POP;
+ }
+
+ @Override
+ public IAggregateEvaluatorFactory createAggregateEvaluatorFactory(final IScalarEvaluatorFactory[] args) {
+ return new IAggregateEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx)
+ throws HyracksDataException {
+ return new LocalStddevAggregateFunction(args, ctx, true, sourceLoc);
+ }
+ };
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/SqlStddevAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/SqlStddevAggregateDescriptor.java
index 41cc3ee..0124aec 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/SqlStddevAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/SqlStddevAggregateDescriptor.java
@@ -53,7 +53,7 @@
@Override
public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx)
throws HyracksDataException {
- return new SqlStddevAggregateFunction(args, ctx, sourceLoc);
+ return new SqlStddevAggregateFunction(args, ctx, false, sourceLoc);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/SqlStddevAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/SqlStddevAggregateFunction.java
index 962d351..97807a0 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/SqlStddevAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/SqlStddevAggregateFunction.java
@@ -30,9 +30,18 @@
public class SqlStddevAggregateFunction extends AbstractSingleVarStatisticsAggregateFunction {
- public SqlStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context,
+ private final boolean isPop;
+ private final int delta;
+
+ public SqlStddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context, boolean isPop,
SourceLocation sourceLoc) throws HyracksDataException {
super(args, context, sourceLoc);
+ this.isPop = isPop;
+ if (isPop) {
+ delta = 0;
+ } else {
+ delta = 1;
+ }
}
@Override
@@ -42,7 +51,7 @@
@Override
public void finish(IPointable result) throws HyracksDataException {
- finishStddevFinalResults(result);
+ finishStddevFinalResults(result, delta);
}
@Override
@@ -56,6 +65,10 @@
@Override
protected FunctionIdentifier getFunctionIdentifier() {
- return BuiltinFunctions.STDDEV;
+ if (isPop) {
+ return BuiltinFunctions.STDDEV_POP;
+ } else {
+ return BuiltinFunctions.STDDEV;
+ }
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/SqlStddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/SqlStddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..06b8cd4
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/SqlStddevPopAggregateDescriptor.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.aggregates.std;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.base.AbstractAggregateFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class SqlStddevPopAggregateDescriptor extends AbstractAggregateFunctionDynamicDescriptor {
+
+ private static final long serialVersionUID = 1L;
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new SqlStddevPopAggregateDescriptor();
+ }
+ };
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.SQL_STDDEV_POP;
+ }
+
+ @Override
+ public IAggregateEvaluatorFactory createAggregateEvaluatorFactory(final IScalarEvaluatorFactory[] args) {
+ return new IAggregateEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx)
+ throws HyracksDataException {
+ return new SqlStddevAggregateFunction(args, ctx, true, sourceLoc);
+ }
+ };
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/StddevAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/StddevAggregateDescriptor.java
index 0b6bb5b..07dcbd0 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/StddevAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/StddevAggregateDescriptor.java
@@ -53,7 +53,7 @@
@Override
public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx)
throws HyracksDataException {
- return new StddevAggregateFunction(args, ctx, sourceLoc);
+ return new StddevAggregateFunction(args, ctx, false, sourceLoc);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/StddevAggregateFunction.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/StddevAggregateFunction.java
index 7b5e423..553562e 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/StddevAggregateFunction.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/StddevAggregateFunction.java
@@ -31,9 +31,18 @@
public class StddevAggregateFunction extends AbstractSingleVarStatisticsAggregateFunction {
- public StddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context,
+ private final boolean isPop;
+ private final int delta;
+
+ public StddevAggregateFunction(IScalarEvaluatorFactory[] args, IHyracksTaskContext context, boolean isPop,
SourceLocation sourceLoc) throws HyracksDataException {
super(args, context, sourceLoc);
+ this.isPop = isPop;
+ if (isPop) {
+ delta = 0;
+ } else {
+ delta = 1;
+ }
}
@Override
@@ -43,7 +52,7 @@
@Override
public void finish(IPointable result) throws HyracksDataException {
- finishStddevFinalResults(result);
+ finishStddevFinalResults(result, delta);
}
@Override
@@ -63,7 +72,11 @@
@Override
protected FunctionIdentifier getFunctionIdentifier() {
- return BuiltinFunctions.STDDEV;
+ if (isPop) {
+ return BuiltinFunctions.STDDEV_POP;
+ } else {
+ return BuiltinFunctions.STDDEV;
+ }
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/StddevPopAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/StddevPopAggregateDescriptor.java
new file mode 100644
index 0000000..48dcea8
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/StddevPopAggregateDescriptor.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.runtime.aggregates.std;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.aggregates.base.AbstractAggregateFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class StddevPopAggregateDescriptor extends AbstractAggregateFunctionDynamicDescriptor {
+
+ private static final long serialVersionUID = 1L;
+ public static final IFunctionDescriptorFactory FACTORY = new IFunctionDescriptorFactory() {
+ @Override
+ public IFunctionDescriptor createFunctionDescriptor() {
+ return new StddevPopAggregateDescriptor();
+ }
+ };
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.STDDEV_POP;
+ }
+
+ @Override
+ public IAggregateEvaluatorFactory createAggregateEvaluatorFactory(final IScalarEvaluatorFactory[] args) {
+ return new IAggregateEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx)
+ throws HyracksDataException {
+ return new StddevAggregateFunction(args, ctx, true, sourceLoc);
+ }
+ };
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
index 5affbca..c8f1238 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
@@ -40,30 +40,40 @@
import org.apache.asterix.runtime.aggregates.scalar.ScalarSqlMaxAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.scalar.ScalarSqlMinAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.scalar.ScalarSqlStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.scalar.ScalarSqlStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.scalar.ScalarSqlSumAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.scalar.ScalarStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.scalar.ScalarStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.scalar.ScalarSumAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableAvgAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableCountAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableGlobalAvgAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableGlobalSqlAvgAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableGlobalSqlStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.serializable.std.SerializableGlobalSqlStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableGlobalStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.serializable.std.SerializableGlobalStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableIntermediateAvgAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableIntermediateSqlAvgAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableIntermediateSqlStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.serializable.std.SerializableIntermediateSqlStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableIntermediateStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.serializable.std.SerializableIntermediateStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableLocalAvgAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableLocalSqlAvgAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableLocalSqlStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.serializable.std.SerializableLocalSqlStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableLocalStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.serializable.std.SerializableLocalStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableLocalSqlSumAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableLocalSumAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableSqlAvgAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableSqlCountAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableSqlStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.serializable.std.SerializableSqlStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableSqlSumAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.serializable.std.SerializableStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.serializable.std.SerializableSumAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.AvgAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.CountAggregateDescriptor;
@@ -71,11 +81,15 @@
import org.apache.asterix.runtime.aggregates.std.RangeMapAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.GlobalSqlAvgAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.GlobalSqlStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.std.GlobalSqlStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.GlobalStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.std.GlobalStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.IntermediateAvgAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.IntermediateSqlAvgAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.IntermediateSqlStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.std.IntermediateSqlStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.IntermediateStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.std.IntermediateStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.LocalAvgAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.LocalMaxAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.LocalMinAggregateDescriptor;
@@ -84,8 +98,10 @@
import org.apache.asterix.runtime.aggregates.std.LocalSqlMaxAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.LocalSqlMinAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.LocalSqlStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.std.LocalSqlStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.LocalSqlSumAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.LocalStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.std.LocalStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.LocalSumAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.MaxAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.MinAggregateDescriptor;
@@ -94,8 +110,10 @@
import org.apache.asterix.runtime.aggregates.std.SqlMaxAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.SqlMinAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.SqlStddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.std.SqlStddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.SqlSumAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.StddevAggregateDescriptor;
+import org.apache.asterix.runtime.aggregates.std.StddevPopAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.std.SumAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.stream.EmptyStreamAggregateDescriptor;
import org.apache.asterix.runtime.aggregates.stream.NonEmptyStreamAggregateDescriptor;
@@ -462,6 +480,10 @@
fc.add(GlobalStddevAggregateDescriptor.FACTORY);
fc.add(LocalSamplingAggregateDescriptor.FACTORY);
fc.add(RangeMapAggregateDescriptor.FACTORY);
+ fc.add(StddevPopAggregateDescriptor.FACTORY);
+ fc.add(LocalStddevPopAggregateDescriptor.FACTORY);
+ fc.add(IntermediateStddevPopAggregateDescriptor.FACTORY);
+ fc.add(GlobalStddevPopAggregateDescriptor.FACTORY);
// serializable aggregates
fc.add(SerializableCountAggregateDescriptor.FACTORY);
@@ -475,6 +497,10 @@
fc.add(SerializableLocalStddevAggregateDescriptor.FACTORY);
fc.add(SerializableIntermediateStddevAggregateDescriptor.FACTORY);
fc.add(SerializableGlobalStddevAggregateDescriptor.FACTORY);
+ fc.add(SerializableStddevPopAggregateDescriptor.FACTORY);
+ fc.add(SerializableLocalStddevPopAggregateDescriptor.FACTORY);
+ fc.add(SerializableIntermediateStddevPopAggregateDescriptor.FACTORY);
+ fc.add(SerializableGlobalStddevPopAggregateDescriptor.FACTORY);
// scalar aggregates
fc.add(ScalarCountAggregateDescriptor.FACTORY);
@@ -485,6 +511,7 @@
fc.add(EmptyStreamAggregateDescriptor.FACTORY);
fc.add(NonEmptyStreamAggregateDescriptor.FACTORY);
fc.add(ScalarStddevAggregateDescriptor.FACTORY);
+ fc.add(ScalarStddevPopAggregateDescriptor.FACTORY);
// SQL aggregates
fc.add(SqlCountAggregateDescriptor.FACTORY);
@@ -502,6 +529,10 @@
fc.add(LocalSqlStddevAggregateDescriptor.FACTORY);
fc.add(IntermediateSqlStddevAggregateDescriptor.FACTORY);
fc.add(GlobalSqlStddevAggregateDescriptor.FACTORY);
+ fc.add(SqlStddevPopAggregateDescriptor.FACTORY);
+ fc.add(LocalSqlStddevPopAggregateDescriptor.FACTORY);
+ fc.add(IntermediateSqlStddevPopAggregateDescriptor.FACTORY);
+ fc.add(GlobalSqlStddevPopAggregateDescriptor.FACTORY);
// SQL serializable aggregates
fc.add(SerializableSqlCountAggregateDescriptor.FACTORY);
@@ -515,6 +546,10 @@
fc.add(SerializableLocalSqlStddevAggregateDescriptor.FACTORY);
fc.add(SerializableIntermediateSqlStddevAggregateDescriptor.FACTORY);
fc.add(SerializableGlobalSqlStddevAggregateDescriptor.FACTORY);
+ fc.add(SerializableSqlStddevPopAggregateDescriptor.FACTORY);
+ fc.add(SerializableLocalSqlStddevPopAggregateDescriptor.FACTORY);
+ fc.add(SerializableIntermediateSqlStddevPopAggregateDescriptor.FACTORY);
+ fc.add(SerializableGlobalSqlStddevPopAggregateDescriptor.FACTORY);
// SQL scalar aggregates
fc.add(ScalarSqlCountAggregateDescriptor.FACTORY);
@@ -523,6 +558,7 @@
fc.add(ScalarSqlMaxAggregateDescriptor.FACTORY);
fc.add(ScalarSqlMinAggregateDescriptor.FACTORY);
fc.add(ScalarSqlStddevAggregateDescriptor.FACTORY);
+ fc.add(ScalarSqlStddevPopAggregateDescriptor.FACTORY);
// boolean functions
fc.add(AndDescriptor.FACTORY);