Skip to content
This repository has been archived by the owner on Aug 2, 2022. It is now read-only.

Commit

Permalink
addressed comments
Browse files Browse the repository at this point in the history
  • Loading branch information
chloe-zh committed Jan 6, 2021
1 parent 06859ce commit c50e6ef
Show file tree
Hide file tree
Showing 8 changed files with 34 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,29 @@ public abstract class Aggregator<S extends AggregationState>
public abstract S create();

/**
* Iterate on the {@link BindingTuple}.
* Iterate on {@link ExprValue}.
* @param value {@link ExprValue}
* @param state {@link AggregationState}
* @return {@link AggregationState}
*/
protected abstract S iterate(ExprValue value, S state);

/**
* Let the aggregator iterate on the {@link BindingTuple}
* To filter out ExprValues that are missing, null or cannot satisfy {@link #condition}
* Before the specific aggregator iterating ExprValue in the tuple.
*
* @param tuple {@link BindingTuple}
* @param state {@link AggregationState}
* @return {@link AggregationState}
*/
public abstract S iterate(BindingTuple tuple, S state);
public S iterate(BindingTuple tuple, S state) {
ExprValue value = getArguments().get(0).valueOf(tuple);
if (value.isNull() || value.isMissing() || !conditionValue(tuple)) {
return state;
}
return iterate(value, state);
}

@Override
public ExprValue valueOf(Environment<Expression, ExprValue> valueEnv) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,9 @@ public AvgState create() {
}

@Override
public AvgState iterate(BindingTuple tuple, AvgState state) {
Expression expression = getArguments().get(0);
ExprValue value = expression.valueOf(tuple);
if (!(value.isNull() || value.isMissing()) && conditionValue(tuple)) {
state.count++;
state.total += ExprValueUtils.getDoubleValue(value);
}
protected AvgState iterate(ExprValue value, AvgState state) {
state.count++;
state.total += ExprValueUtils.getDoubleValue(value);
return state;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,8 @@ public CountAggregator.CountState create() {
}

@Override
public CountState iterate(BindingTuple tuple, CountState state) {
Expression expression = getArguments().get(0);
ExprValue value = expression.valueOf(tuple);
if (!(value.isNull() || value.isMissing()) && conditionValue(tuple)) {
state.count++;
}
protected CountState iterate(ExprValue value, CountState state) {
state.count++;
return state;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,8 @@ public MaxState create() {
}

@Override
public MaxState iterate(BindingTuple tuple, MaxState state) {
Expression expression = getArguments().get(0);
ExprValue value = expression.valueOf(tuple);
if (!(value.isNull() || value.isMissing()) && conditionValue(tuple)) {
state.max(value);
}
protected MaxState iterate(ExprValue value, MaxState state) {
state.max(value);
return state;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,8 @@ public MinState create() {
}

@Override
public MinState iterate(BindingTuple tuple, MinState state) {
Expression expression = getArguments().get(0);
ExprValue value = expression.valueOf(tuple);
if (!(value.isNull() || value.isMissing()) && conditionValue(tuple)) {
state.min(value);
}
protected MinState iterate(ExprValue value, MinState state) {
state.min(value);
return state;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

package com.amazon.opendistroforelasticsearch.sql.expression.aggregation;

import com.amazon.opendistroforelasticsearch.sql.data.model.ExprValue;
import com.amazon.opendistroforelasticsearch.sql.expression.ExpressionNodeVisitor;
import com.amazon.opendistroforelasticsearch.sql.storage.bindingtuple.BindingTuple;
import com.google.common.base.Strings;
Expand Down Expand Up @@ -63,8 +64,8 @@ public AggregationState create() {
}

@Override
public AggregationState iterate(BindingTuple tuple, AggregationState state) {
return delegated.iterate(tuple, state);
protected AggregationState iterate(ExprValue value, AggregationState state) {
return delegated.iterate(value, state);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,9 @@ public SumState create() {
}

@Override
public SumState iterate(BindingTuple tuple, SumState state) {
Expression expression = getArguments().get(0);
ExprValue value = expression.valueOf(tuple);
if (!(value.isNull() || value.isMissing()) && conditionValue(tuple)) {
state.isEmptyCollection = false;
state.add(value);
}
protected SumState iterate(ExprValue value, SumState state) {
state.isEmptyCollection = false;
state.add(value);
return state;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ SELECT AVG(AvgTicketPrice) FILTER(WHERE Carrier = 'Kibana Airlines') AS filtered
SELECT AVG(AvgTicketPrice) FILTER(WHERE Carrier = 'Kibana Airlines') AS filtered FROM kibana_sample_data_flights GROUP BY Origin ORDER BY Origin
SELECT AVG(AvgTicketPrice + 1) FILTER(WHERE Carrier = 'Kibana Airlines') AS filtered FROM kibana_sample_data_flights
SELECT AVG(AvgTicketPrice) FILTER(WHERE Carrier = 'Kibana Airlines') / 2 AS filtered FROM kibana_sample_data_flights
SELECT AVG(AvgTicketPrice) FILTER(WHERE ABS(AvgTicketPrice) < 10000) AS filtered FROM kibana_sample_data_flights
SELECT AVG(AvgTicketPrice) AS unfiltered, AVG(AvgTicketPrice) FILTER(WHERE Carrier = 'Kibana Airlines') AS filtered1, AVG(AvgTicketPrice) FILTER(WHERE Carrier = 'ES-Air') AS filtered2 FROM kibana_sample_data_flights WHERE DestWeather = 'Sunny'

0 comments on commit c50e6ef

Please sign in to comment.