Skip to content

Commit e85a7ea

Browse files
authored
Fix first_by and last_by with group by in TableModel
1 parent 921652a commit e85a7ea

File tree

3 files changed

+55
-0
lines changed

3 files changed

+55
-0
lines changed

integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBTableAggregationIT.java

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2080,6 +2080,32 @@ public void firstByTest() {
20802080
expectedHeader,
20812081
retArray,
20822082
DATABASE_NAME);
2083+
2084+
expectedHeader = new String[] {"city", "region", "device_id", "_col3"};
2085+
retArray =
2086+
new String[] {
2087+
"beijing,chaoyang,d09,null,",
2088+
"beijing,chaoyang,d10,true,",
2089+
"beijing,chaoyang,d11,null,",
2090+
"beijing,chaoyang,d12,true,",
2091+
"beijing,haidian,d13,null,",
2092+
"beijing,haidian,d14,true,",
2093+
"beijing,haidian,d15,null,",
2094+
"beijing,haidian,d16,true,",
2095+
"shanghai,huangpu,d01,null,",
2096+
"shanghai,huangpu,d02,true,",
2097+
"shanghai,huangpu,d03,null,",
2098+
"shanghai,huangpu,d04,true,",
2099+
"shanghai,pudong,d05,null,",
2100+
"shanghai,pudong,d06,true,",
2101+
"shanghai,pudong,d07,null,",
2102+
"shanghai,pudong,d08,true,",
2103+
};
2104+
tableResultSetEqualTest(
2105+
"select city,region,device_id,first_by(s5,time,time) from table1 group by city,region,device_id order by 1,2,3",
2106+
expectedHeader,
2107+
retArray,
2108+
DATABASE_NAME);
20832109
}
20842110

20852111
@Test
@@ -2404,6 +2430,32 @@ public void lastByTest() {
24042430
expectedHeader,
24052431
retArray,
24062432
DATABASE_NAME);
2433+
2434+
expectedHeader = new String[] {"city", "region", "device_id", "_col3"};
2435+
retArray =
2436+
new String[] {
2437+
"beijing,chaoyang,d09,null,",
2438+
"beijing,chaoyang,d10,null,",
2439+
"beijing,chaoyang,d11,null,",
2440+
"beijing,chaoyang,d12,null,",
2441+
"beijing,haidian,d13,null,",
2442+
"beijing,haidian,d14,null,",
2443+
"beijing,haidian,d15,null,",
2444+
"beijing,haidian,d16,null,",
2445+
"shanghai,huangpu,d01,null,",
2446+
"shanghai,huangpu,d02,null,",
2447+
"shanghai,huangpu,d03,null,",
2448+
"shanghai,huangpu,d04,null,",
2449+
"shanghai,pudong,d05,null,",
2450+
"shanghai,pudong,d06,null,",
2451+
"shanghai,pudong,d07,null,",
2452+
"shanghai,pudong,d08,null,",
2453+
};
2454+
tableResultSetEqualTest(
2455+
"select city,region,device_id,last_by(s5,time,time) from table1 group by city,region,device_id order by 1,2,3",
2456+
expectedHeader,
2457+
retArray,
2458+
DATABASE_NAME);
24072459
}
24082460

24092461
@Test

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/grouped/GroupedFirstByAccumulator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ public GroupedFirstByAccumulator(TSDataType xDataType, TSDataType yDataType) {
9191
break;
9292
case BOOLEAN:
9393
xBooleanValues = new BooleanBigArray();
94+
break;
9495
default:
9596
throw new UnSupportedDataTypeException(
9697
String.format("Unsupported data type : %s", xDataType));
@@ -195,6 +196,7 @@ public void reset() {
195196
break;
196197
case BOOLEAN:
197198
xBooleanValues.reset();
199+
break;
198200
default:
199201
throw new UnSupportedDataTypeException(
200202
String.format("Unsupported data type : %s", xDataType));

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/grouped/GroupedLastByAccumulator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ public void reset() {
196196
break;
197197
case BOOLEAN:
198198
xBooleanValues.reset();
199+
break;
199200
default:
200201
throw new UnSupportedDataTypeException(
201202
String.format("Unsupported data type : %s", xDataType));

0 commit comments

Comments
 (0)