Skip to content

Commit 8a84787

Browse files
authored
Fix intermediate output of MaxMinByAccumulator in TableModel
1 parent 63da4a4 commit 8a84787

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1267,6 +1267,11 @@ public void minByTest() {
12671267
expectedHeader,
12681268
retArray,
12691269
DATABASE_NAME);
1270+
1271+
expectedHeader = new String[] {"_col0"};
1272+
retArray = new String[] {"40,"};
1273+
tableResultSetEqualTest(
1274+
"select min_by(s1, s10) from table1 where s1=40", expectedHeader, retArray, DATABASE_NAME);
12701275
}
12711276

12721277
@Test
@@ -1746,6 +1751,11 @@ public void maxByTest() {
17461751
expectedHeader,
17471752
retArray,
17481753
DATABASE_NAME);
1754+
1755+
expectedHeader = new String[] {"_col0"};
1756+
retArray = new String[] {"40,"};
1757+
tableResultSetEqualTest(
1758+
"select max_by(s1, s10) from table1 where s1=40", expectedHeader, retArray, DATABASE_NAME);
17491759
}
17501760

17511761
@Test

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -324,16 +324,16 @@ private void updateX(Column xColumn, int xIndex) {
324324

325325
private byte[] serialize() {
326326
byte[] valueBytes;
327+
int yLength = calcTypeSize(yDataType, yExtremeValue);
327328
if (xNull) {
328-
valueBytes = new byte[calcTypeSize(yDataType, yExtremeValue) + 1];
329+
valueBytes = new byte[yLength + 1];
329330
serializeValue(yDataType, yExtremeValue, valueBytes, 0);
330-
BytesUtils.boolToBytes(true, valueBytes, 8);
331+
BytesUtils.boolToBytes(true, valueBytes, yLength);
331332
} else {
332-
valueBytes =
333-
new byte[calcTypeSize(yDataType, yExtremeValue) + 1 + calcTypeSize(xDataType, xResult)];
333+
valueBytes = new byte[yLength + 1 + calcTypeSize(xDataType, xResult)];
334334
int offset = 0;
335335
serializeValue(yDataType, yExtremeValue, valueBytes, offset);
336-
offset = calcTypeSize(yDataType, yExtremeValue);
336+
offset = yLength;
337337

338338
BytesUtils.boolToBytes(false, valueBytes, offset);
339339
offset += 1;

0 commit comments

Comments
 (0)