Repository: asterixdb Updated Branches: refs/heads/master c4dbb6145 -> 11d5b2812
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableLocalStddevAggregateDescriptor.java ---------------------------------------------------------------------- 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 @@ public class SerializableLocalStddevAggregateDescriptor extends AbstractSerializ @Override public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx) throws HyracksDataException { - return new SerializableLocalStddevAggregateFunction(args, ctx, sourceLoc); + return new SerializableLocalStddevAggregateFunction(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/SerializableLocalStddevAggregateFunction.java ---------------------------------------------------------------------- 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 @@ import java.io.DataOutput; 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 @@ public class SerializableLocalStddevAggregateFunction @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/SerializableLocalStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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); + } + }; + } + +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableSqlStddevAggregateDescriptor.java ---------------------------------------------------------------------- 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 @@ public class SerializableSqlStddevAggregateDescriptor extends AbstractSerializab @Override public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx) throws HyracksDataException { - return new SerializableSqlStddevAggregateFunction(args, ctx, sourceLoc); + return new SerializableSqlStddevAggregateFunction(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/SerializableSqlStddevAggregateFunction.java ---------------------------------------------------------------------- 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 @@ import java.io.DataOutput; 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 @@ public class SerializableSqlStddevAggregateFunction @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 @@ public class SerializableSqlStddevAggregateFunction @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/SerializableSqlStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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); + } + }; + } +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/serializable/std/SerializableStddevAggregateDescriptor.java ---------------------------------------------------------------------- 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 @@ public class SerializableStddevAggregateDescriptor extends AbstractSerializableA @Override public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx) throws HyracksDataException { - return new SerializableStddevAggregateFunction(args, ctx, sourceLoc); + return new SerializableStddevAggregateFunction(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/SerializableStddevAggregateFunction.java ---------------------------------------------------------------------- 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 @@ import java.io.DataOutput; 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 @@ public class SerializableStddevAggregateFunction extends AbstractSerializableSin @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 @@ public class SerializableStddevAggregateFunction extends AbstractSerializableSin @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/SerializableStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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); + } + }; + } + +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/AbstractSingleVarStatisticsAggregateFunction.java ---------------------------------------------------------------------- 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 @@ public abstract class AbstractSingleVarStatisticsAggregateFunction extends Abstr } } - 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) { http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalSqlStddevAggregateDescriptor.java ---------------------------------------------------------------------- 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 @@ public class GlobalSqlStddevAggregateDescriptor extends AbstractAggregateFunctio @Override public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException { - return new GlobalSqlStddevAggregateFunction(args, ctx, sourceLoc); + return new GlobalSqlStddevAggregateFunction(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/std/GlobalSqlStddevAggregateFunction.java ---------------------------------------------------------------------- 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 @@ import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference; 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 @@ public class GlobalSqlStddevAggregateFunction extends AbstractSingleVarStatistic @Override public void finish(IPointable result) throws HyracksDataException { - finishStddevFinalResults(result); + finishStddevFinalResults(result, delta); } @Override @@ -56,7 +65,11 @@ public class GlobalSqlStddevAggregateFunction extends AbstractSingleVarStatistic @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/std/GlobalSqlStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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); + } + }; + } + +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/GlobalStddevAggregateDescriptor.java ---------------------------------------------------------------------- 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 @@ public class GlobalStddevAggregateDescriptor extends AbstractAggregateFunctionDy @Override public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException { - return new GlobalStddevAggregateFunction(args, ctx, sourceLoc); + return new GlobalStddevAggregateFunction(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/std/GlobalStddevAggregateFunction.java ---------------------------------------------------------------------- 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 @@ import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference; 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 @@ public class GlobalStddevAggregateFunction extends AbstractSingleVarStatisticsAg @Override public void finish(IPointable result) throws HyracksDataException { - finishStddevFinalResults(result); + finishStddevFinalResults(result, delta); } @Override @@ -63,7 +72,11 @@ public class GlobalStddevAggregateFunction extends AbstractSingleVarStatisticsAg @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/std/GlobalStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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); + } + }; + } + +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateSqlStddevAggregateDescriptor.java ---------------------------------------------------------------------- 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 @@ public class IntermediateSqlStddevAggregateDescriptor extends AbstractAggregateF @Override public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException { - return new IntermediateSqlStddevAggregateFunction(args, ctx, sourceLoc); + return new IntermediateSqlStddevAggregateFunction(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/std/IntermediateSqlStddevAggregateFunction.java ---------------------------------------------------------------------- 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 @@ import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference; 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 @@ public class IntermediateSqlStddevAggregateFunction extends AbstractSingleVarSta @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/std/IntermediateSqlStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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); + } + }; + } + +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/IntermediateStddevAggregateDescriptor.java ---------------------------------------------------------------------- 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 @@ public class IntermediateStddevAggregateDescriptor extends AbstractAggregateFunc @Override public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException { - return new IntermediateStddevAggregateFunction(args, ctx, sourceLoc); + return new IntermediateStddevAggregateFunction(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/std/IntermediateStddevAggregateFunction.java ---------------------------------------------------------------------- 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 @@ import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference; 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 @@ public class IntermediateStddevAggregateFunction extends AbstractSingleVarStatis @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/std/IntermediateStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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); + } + }; + } + +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalSqlStddevAggregateDescriptor.java ---------------------------------------------------------------------- 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 @@ public class LocalSqlStddevAggregateDescriptor extends AbstractAggregateFunction @Override public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException { - return new LocalSqlStddevAggregateFunction(args, ctx, sourceLoc); + return new LocalSqlStddevAggregateFunction(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/std/LocalSqlStddevAggregateFunction.java ---------------------------------------------------------------------- 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 @@ import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference; 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 @@ public class LocalSqlStddevAggregateFunction extends AbstractSingleVarStatistics @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/std/LocalSqlStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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); + } + }; + } +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalStddevAggregateDescriptor.java ---------------------------------------------------------------------- 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 @@ public class LocalStddevAggregateDescriptor extends AbstractAggregateFunctionDyn @Override public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException { - return new LocalStddevAggregateFunction(args, ctx, sourceLoc); + return new LocalStddevAggregateFunction(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/std/LocalStddevAggregateFunction.java ---------------------------------------------------------------------- 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 @@ import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference; 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 @@ public class LocalStddevAggregateFunction extends AbstractSingleVarStatisticsAgg @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/std/LocalStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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); + } + }; + } +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/SqlStddevAggregateDescriptor.java ---------------------------------------------------------------------- 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 @@ public class SqlStddevAggregateDescriptor extends AbstractAggregateFunctionDynam @Override public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException { - return new SqlStddevAggregateFunction(args, ctx, sourceLoc); + return new SqlStddevAggregateFunction(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/std/SqlStddevAggregateFunction.java ---------------------------------------------------------------------- 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 @@ import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference; 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 @@ public class SqlStddevAggregateFunction extends AbstractSingleVarStatisticsAggre @Override public void finish(IPointable result) throws HyracksDataException { - finishStddevFinalResults(result); + finishStddevFinalResults(result, delta); } @Override @@ -56,6 +65,10 @@ public class SqlStddevAggregateFunction extends AbstractSingleVarStatisticsAggre @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/std/SqlStddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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); + } + }; + } + +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/StddevAggregateDescriptor.java ---------------------------------------------------------------------- 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 @@ public class StddevAggregateDescriptor extends AbstractAggregateFunctionDynamicD @Override public IAggregateEvaluator createAggregateEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException { - return new StddevAggregateFunction(args, ctx, sourceLoc); + return new StddevAggregateFunction(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/std/StddevAggregateFunction.java ---------------------------------------------------------------------- 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 @@ import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference; 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 @@ public class StddevAggregateFunction extends AbstractSingleVarStatisticsAggregat @Override public void finish(IPointable result) throws HyracksDataException { - finishStddevFinalResults(result); + finishStddevFinalResults(result, delta); } @Override @@ -63,7 +72,11 @@ public class StddevAggregateFunction extends AbstractSingleVarStatisticsAggregat @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/std/StddevPopAggregateDescriptor.java ---------------------------------------------------------------------- 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); + } + }; + } + +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/11d5b281/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java ---------------------------------------------------------------------- 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.ScalarSqlCountAggregateDescr 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.GlobalAvgAggregateDescriptor; 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.LocalSqlAvgAggregateDescriptor; 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.SqlCountAggregateDescriptor; 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 @@ public final class FunctionCollection implements IFunctionCollection { 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 @@ public final class FunctionCollection implements IFunctionCollection { 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 @@ public final class FunctionCollection implements IFunctionCollection { 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 @@ public final class FunctionCollection implements IFunctionCollection { 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 @@ public final class FunctionCollection implements IFunctionCollection { 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 @@ public final class FunctionCollection implements IFunctionCollection { fc.add(ScalarSqlMaxAggregateDescriptor.FACTORY); fc.add(ScalarSqlMinAggregateDescriptor.FACTORY); fc.add(ScalarSqlStddevAggregateDescriptor.FACTORY); + fc.add(ScalarSqlStddevPopAggregateDescriptor.FACTORY); // boolean functions fc.add(AndDescriptor.FACTORY);
