Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,9 @@ public I merge(I intermediateResult1, I intermediateResult2) {

@Override
public DoubleArrayList extractFinalResult(I doubleArrayList) {
if (doubleArrayList == null) {
return new DoubleArrayList();
}
return new DoubleArrayList(doubleArrayList);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,9 @@ public I merge(I intermediateResult1, I intermediateResult2) {

@Override
public FloatArrayList extractFinalResult(I floatArrayList) {
if (floatArrayList == null) {
return new FloatArrayList();
}
return new FloatArrayList(floatArrayList);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,9 @@ public I merge(I intermediateResult1, I intermediateResult2) {

@Override
public IntArrayList extractFinalResult(I intArrayList) {
if (intArrayList == null) {
return new IntArrayList();
}
return new IntArrayList(intArrayList);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,9 @@ public I merge(I intermediateResult1, I intermediateResult2) {

@Override
public LongArrayList extractFinalResult(I arrayList) {
if (arrayList == null) {
return new LongArrayList();
}
return new LongArrayList(arrayList);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,9 @@ public I merge(I intermediateResult1, I intermediateResult2) {

@Override
public ObjectArrayList<String> extractFinalResult(I stringArrayList) {
if (stringArrayList == null) {
return new ObjectArrayList<>();
}
// NOTE: Wrap a String[] to work around the bug of ObjectArrayList constructor creating Object[] internally.
String[] stringArray = new String[stringArrayList.size()];
ObjectIterators.unwrap(stringArrayList.iterator(), stringArray);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,9 @@ public DataSchema.ColumnDataType getFinalResultColumnType() {

@Override
public String extractFinalResult(AbstractObjectCollection<String> strings) {
if (strings == null) {
return null;
}
return StringUtils.join(strings, _separator);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,30 @@ protected long getCountStarResult() {
return 1000;
}

@Test(dataProvider = "useBothQueryEngines")
public void testArrayAggWithEmptyPredicate(boolean useMultiStageQueryEngine) throws Exception {
setUseMultiStageQueryEngine(useMultiStageQueryEngine);
String query =
String.format("SELECT "
+ "arrayAgg(boolCol, 'BOOLEAN'), "
+ "arrayAgg(intCol, 'INT'), "
+ "arrayAgg(longCol, 'LONG'), "
// NOTE: FLOAT array is auto converted to DOUBLE array
+ (useMultiStageQueryEngine ? "arrayAgg(floatCol, 'DOUBLE'), " : "arrayAgg(floatCol, 'FLOAT'), ")
+ "arrayAgg(doubleCol, 'DOUBLE'), "
+ "arrayAgg(stringCol, 'STRING'), "
+ "arrayAgg(timestampCol, 'TIMESTAMP') "
+ "FROM %s WHERE intCol < 0 LIMIT %d", getTableName(), getCountStarResult());
JsonNode jsonNode = postQuery(query);
JsonNode rows = jsonNode.get("resultTable").get("rows");
assertEquals(rows.size(), 1);
JsonNode row = rows.get(0);
assertEquals(row.size(), 7);
for (int i = 0; i < 7; i++) {
assertEquals(row.get(i).size(), 0);
}
}

@Test(dataProvider = "useBothQueryEngines")
public void testArrayAggQueries(boolean useMultiStageQueryEngine)
throws Exception {
Expand Down