http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int32/stddev_int32.3.ast ---------------------------------------------------------------------- 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 ] + ] + ) + ] + ] + ) ) -] ]
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int32_null/stddev_int32_null.3.ast ---------------------------------------------------------------------- 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 @@ RecordConstructor [ ) ] ) + ( + 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 ] + ] + ) + ] + ) ] http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int64/stddev_int64.3.ast ---------------------------------------------------------------------- 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 ] + ] + ) + ] + ] + ) ) -] ] http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int64_null/stddev_int64_null.3.ast ---------------------------------------------------------------------- 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 @@ RecordConstructor [ ) ] ) + ( + 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 ] + ] + ) + ] + ) ] http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int8/stddev_int8.3.ast ---------------------------------------------------------------------- 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 ] + ] + ) + ] + ] + ) ) -] ] http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_int8_null/stddev_int8_null.3.ast ---------------------------------------------------------------------- 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 @@ RecordConstructor [ ) ] ) + ( + 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 ] + ] + ) + ] + ) ] http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/stddev_pop_mixed/stddev_pop_mixed.3.ast ---------------------------------------------------------------------- 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 ] + ] + ) +] +] http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml ---------------------------------------------------------------------- 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> http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml ---------------------------------------------------------------------- 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> http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-doc/src/main/markdown/builtins/9_aggregate_sql.md ---------------------------------------------------------------------- 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 @@ SQL++ builtin aggregate functions (e.g., `ARRAY_MIN`, `ARRAY_MAX`, 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 @@ SQL++ builtin aggregate functions (e.g., `ARRAY_MIN`, `ARRAY_MAX`, * 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 http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java ---------------------------------------------------------------------- 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 @@ public class BuiltinFunctions { 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 @@ public class BuiltinFunctions { 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 @@ public class BuiltinFunctions { 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 @@ public class BuiltinFunctions { 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 @@ public class BuiltinFunctions { 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 @@ public class BuiltinFunctions { 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 @@ public class BuiltinFunctions { 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 @@ public class BuiltinFunctions { 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 @@ public class BuiltinFunctions { 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 @@ public class BuiltinFunctions { 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 @@ public class BuiltinFunctions { 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 @@ public class BuiltinFunctions { 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 @@ public class BuiltinFunctions { 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 @@ public class BuiltinFunctions { 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 @@ public class BuiltinFunctions { 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); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/scalar/ScalarSqlStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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; + } +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/scalar/ScalarStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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; + } +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableSingleVariableStatisticsAggregateFunction.java ---------------------------------------------------------------------- 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 @@ public abstract class AbstractSerializableSingleVariableStatisticsAggregateFunct } } - 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 @@ public abstract class AbstractSerializableSingleVariableStatisticsAggregateFunct 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) { http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalSqlStddevAggregateDescriptor.java ---------------------------------------------------------------------- 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 @@ public class SerializableGlobalSqlStddevAggregateDescriptor @Override public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx) throws HyracksDataException { - return new SerializableGlobalSqlStddevAggregateFunction(args, ctx, sourceLoc); + return new SerializableGlobalSqlStddevAggregateFunction(args, ctx, false, sourceLoc); } }; } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalSqlStddevAggregateFunction.java ---------------------------------------------------------------------- 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 @@ import java.io.DataOutput; 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 @@ public class SerializableGlobalSqlStddevAggregateFunction @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 @@ public class SerializableGlobalSqlStddevAggregateFunction @Override protected FunctionIdentifier getFunctionIdentifier() { - return BuiltinFunctions.STDDEV; + if (isPop) { + return BuiltinFunctions.STDDEV_POP; + } else { + return BuiltinFunctions.STDDEV; + } } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalSqlStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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); + } + }; + } + +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalStddevAggregateDescriptor.java ---------------------------------------------------------------------- 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 @@ public class SerializableGlobalStddevAggregateDescriptor @Override public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx) throws HyracksDataException { - return new SerializableGlobalStddevAggregateFunction(args, ctx, sourceLoc); + return new SerializableGlobalStddevAggregateFunction(args, ctx, false, sourceLoc); } }; } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalStddevAggregateFunction.java ---------------------------------------------------------------------- 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 @@ import java.io.DataOutput; 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 @@ public class SerializableGlobalStddevAggregateFunction @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 @@ public class SerializableGlobalStddevAggregateFunction @Override protected FunctionIdentifier getFunctionIdentifier() { - return BuiltinFunctions.STDDEV; + if (isPop) { + return BuiltinFunctions.STDDEV_POP; + } else { + return BuiltinFunctions.STDDEV; + } } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableGlobalStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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); + } + }; + } + +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateSqlStddevAggregateDescriptor.java ---------------------------------------------------------------------- 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 @@ public class SerializableIntermediateSqlStddevAggregateDescriptor @Override public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx) throws HyracksDataException { - return new SerializableIntermediateSqlStddevAggregateFunction(args, ctx, sourceLoc); + return new SerializableIntermediateSqlStddevAggregateFunction(args, ctx, false, sourceLoc); } }; } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateSqlStddevAggregateFunction.java ---------------------------------------------------------------------- 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 @@ import java.io.DataOutput; 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 @@ public class SerializableIntermediateSqlStddevAggregateFunction @Override protected FunctionIdentifier getFunctionIdentifier() { - return BuiltinFunctions.STDDEV; + if (isPop) { + return BuiltinFunctions.STDDEV_POP; + } else { + return BuiltinFunctions.STDDEV; + } } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateSqlStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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); + } + }; + } + +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateStddevAggregateDescriptor.java ---------------------------------------------------------------------- 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 @@ public class SerializableIntermediateStddevAggregateDescriptor @Override public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx) throws HyracksDataException { - return new SerializableIntermediateStddevAggregateFunction(args, ctx, sourceLoc); + return new SerializableIntermediateStddevAggregateFunction(args, ctx, false, sourceLoc); } }; } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateStddevAggregateFunction.java ---------------------------------------------------------------------- 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 @@ import java.io.DataOutput; 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 @@ public class SerializableIntermediateStddevAggregateFunction @Override protected FunctionIdentifier getFunctionIdentifier() { - return BuiltinFunctions.STDDEV; + if (isPop) { + return BuiltinFunctions.STDDEV_POP; + } else { + return BuiltinFunctions.STDDEV; + } } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableIntermediateStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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); + } + }; + } + +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalSqlStddevAggregateDescriptor.java ---------------------------------------------------------------------- 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 @@ public class SerializableLocalSqlStddevAggregateDescriptor @Override public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx) throws HyracksDataException { - return new SerializableLocalSqlStddevAggregateFunction(args, ctx, sourceLoc); + return new SerializableLocalSqlStddevAggregateFunction(args, ctx, false, sourceLoc); } }; } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalSqlStddevAggregateFunction.java ---------------------------------------------------------------------- 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 @@ import java.io.DataOutput; 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 @@ public class SerializableLocalSqlStddevAggregateFunction @Override protected FunctionIdentifier getFunctionIdentifier() { - return BuiltinFunctions.STDDEV; + if (isPop) { + return BuiltinFunctions.STDDEV_POP; + } else { + return BuiltinFunctions.STDDEV; + } } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalSqlStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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); + } + }; + } + +}
