Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions src/main/java/ru/rt/restream/reindexer/AggregationResult.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public class AggregationResult {

private String type;

private double value;
private Double value;

private List<Facet> facets;

Expand Down Expand Up @@ -114,19 +114,20 @@ public void setType(String type) {

/**
* Get the current aggregation result value.
* {@code null} when there were no items to aggregate over (e.g. empty namespace or query results).
*
* @return the current aggregation result value
* @return the current aggregation result value, or {@code null} if absent
*/
public double getValue() {
public Double getValue() {
return value;
}

/**
* Set the current aggregation result value.
*
* @param value aggregation result value
* @param value aggregation result value, or {@code null} if absent
*/
public void setValue(double value) {
public void setValue(Double value) {
this.value = value;
}

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

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;

/**
* Base Aggregation Test.
Expand Down Expand Up @@ -134,6 +135,59 @@ public void testMin() {
assertThat(minResult.getValue(), is(0D));
}

@Test
public void testAggregationsOnEmptyNamespace() {
Namespace<Item> itemNamespace = db.openNamespace("items", NamespaceOptions.defaultOptions(), Item.class);

ResultIterator<Item> result = itemNamespace.query()
.aggregateSum("price")
.aggregateAvg("price")
.aggregateMin("price")
.aggregateMax("price")
.execute();

List<AggregationResult> aggResults = result.aggResults();
assertThat(aggResults.size(), is(4));
assertThat(aggResults.get(0).getType(), is("sum"));
assertThat(aggResults.get(0).getValue(), is(nullValue()));
assertThat(aggResults.get(1).getType(), is("avg"));
assertThat(aggResults.get(1).getValue(), is(nullValue()));
assertThat(aggResults.get(2).getType(), is("min"));
assertThat(aggResults.get(2).getValue(), is(nullValue()));
assertThat(aggResults.get(3).getType(), is("max"));
assertThat(aggResults.get(3).getValue(), is(nullValue()));
}

@Test
public void testAggregationsWithZeroValue() {
Namespace<Item> itemNamespace = db.openNamespace("items", NamespaceOptions.defaultOptions(), Item.class);

for (int i = 0; i < 10; i++) {
Item item = new Item();
item.setId(i);
item.setPrice(0);
itemNamespace.insert(item);
}

ResultIterator<Item> result = itemNamespace.query()
.aggregateSum("price")
.aggregateAvg("price")
.aggregateMin("price")
.aggregateMax("price")
.execute();

List<AggregationResult> aggResults = result.aggResults();
assertThat(aggResults.size(), is(4));
assertThat(aggResults.get(0).getType(), is("sum"));
assertThat(aggResults.get(0).getValue(), is(0D));
assertThat(aggResults.get(1).getType(), is("avg"));
assertThat(aggResults.get(1).getValue(), is(0D));
assertThat(aggResults.get(2).getType(), is("min"));
assertThat(aggResults.get(2).getValue(), is(0D));
assertThat(aggResults.get(3).getType(), is("max"));
assertThat(aggResults.get(3).getValue(), is(0D));
}

@Test
public void testFacet() {
Namespace<Item> itemNamespace = db.openNamespace("items", NamespaceOptions.defaultOptions(), Item.class);
Expand Down
Loading