Dmitry Lychagin has posted comments on this change. Change subject: [ASTERIXDB-2459][FUN] Add sttdev_pop() aggregate function ......................................................................
Patch Set 4: (3 comments) Also, can we just add stddev_pop tests to stddev tests instead of creating a bunch of new testcases? For example stddev_double_null.3.query.sqlpp, let's just add stddev_pop there as a new field and so on. https://asterix-gerrit.ics.uci.edu/#/c/2997/4/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableSingleVariableStatisticsAggregateFunction.java File asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/AbstractSerializableSingleVariableStatisticsAggregateFunction.java: Line 298: if (count <= 1 || aggType == ATypeTag.NULL) { same comment. should be count <= 0, right? https://asterix-gerrit.ics.uci.edu/#/c/2997/4/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractSingleVarStatisticsAggregateFunction.java File asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractSingleVarStatisticsAggregateFunction.java: Line 259: if (moments.getCount() <= 1 || aggType == ATypeTag.NULL) { should be <= 0, right? count = 1 is ok for stddev_pop because it's not subtracting 1 from it unlike stddev. https://asterix-gerrit.ics.uci.edu/#/c/2997/4/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/StddevPopAggregateFunction.java File asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/StddevPopAggregateFunction.java: Line 32: public class StddevPopAggregateFunction extends AbstractSingleVarStatisticsAggregateFunction { I wonder whether we can reuse all existing stddev evaluators for stddev_pop, instead of copying the code? What if we add a constuctor parameter "delta" that needs to be subtracted from the count? Then all stddev_pop descriptors will pass 1 to function evaluators they instantiate, while stddev descriptors pass 0. Then we'll only need one function evaluator class for both functions, not two. What do you think? -- To view, visit https://asterix-gerrit.ics.uci.edu/2997 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1732d8d70eba26e12a6e68d0e0c621491ed6b3ae Gerrit-PatchSet: 4 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: James Fang <jfang...@ucr.edu> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Dmitry Lychagin <dmitry.lycha...@couchbase.com> Gerrit-Reviewer: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Gerrit-HasComments: Yes