This is an automated email from the ASF dual-hosted git repository. caogaofei pushed a commit to branch add_more_aggs in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 491eb4ec1f8a0aee8a01d6a13dbd94ec56476bf9 Merge: 7d3285c639d 52b72edb689 Author: Beyyes <[email protected]> AuthorDate: Wed Oct 23 17:43:30 2024 +0800 merge master .../db/it/schema/IoTDBDeleteTimeSeriesIT.java | 13 ++ .../relational/it/db/it/IoTDBInsertTableIT.java | 34 +++++ .../db/it/IoTDBMultiIDsWithAttributesTableIT.java | 42 ++++++ .../it/query/recent/IoTDBTableAggregationIT.java | 1 + .../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 2 +- .../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 16 +-- .../connector/PipeConnectorSubtaskManager.java | 6 - .../subtask/processor/PipeProcessorSubtask.java | 6 +- .../db/pipe/event/common}/PipeInsertionEvent.java | 3 +- .../event/common/heartbeat/PipeHeartbeatEvent.java | 15 +- .../db/pipe/event/common/row/PipeRowCollector.java | 2 +- .../tablet/PipeInsertNodeTabletInsertionEvent.java | 12 +- .../common/tablet/PipeRawTabletInsertionEvent.java | 11 +- .../common/tsfile/PipeTsFileInsertionEvent.java | 12 +- .../tsfile/parser/TsFileInsertionEventParser.java | 2 +- .../query/TsFileInsertionEventQueryParser.java | 2 +- .../scan/TsFileInsertionEventScanParser.java | 2 +- .../table/TsFileInsertionEventTableParser.java | 2 +- .../db/pipe/event/realtime/PipeRealtimeEvent.java | 2 +- .../dataregion/IoTDBDataRegionExtractor.java | 2 - ...oricalDataRegionTsFileAndDeletionExtractor.java | 34 +++-- .../matcher/CachedSchemaPatternMatcher.java | 2 +- .../PipeDataNodeRemainingEventAndTimeMetrics.java | 56 ++++---- .../PipeDataNodeRemainingEventAndTimeOperator.java | 95 +++++-------- .../PipeConvertedInsertTabletStatement.java | 2 +- .../aggregation/grouped/GroupedAvgAccumulator.java | 20 +-- .../grouped/GroupedFirstAccumulator.java | 92 ++++++------ .../grouped/GroupedFirstByAccumulator.java | 115 ++++++++------- .../grouped/GroupedLastAccumulator.java | 92 ++++++------ .../grouped/GroupedLastByAccumulator.java | 111 +++++++++------ .../grouped/GroupedMaxByAccumulator.java | 5 + .../grouped/GroupedMaxMinByBaseAccumulator.java | 154 ++++++++++++++++----- .../grouped/GroupedMinByAccumulator.java | 5 + .../grouped/HashAggregationOperator.java | 18 ++- .../aggregation/grouped/hash/FlatGroupByHash.java | 4 +- .../queryengine/plan/execution/QueryExecution.java | 7 +- .../plan/relational/metadata/Metadata.java | 6 - .../metadata/TableBuiltinAggregationFunction.java | 33 ----- .../relational/metadata/TableMetadataImpl.java | 5 - .../fetcher/cache/TableDeviceLastCache.java | 44 ++++-- .../fetcher/cache/TableDeviceSchemaCache.java | 7 +- .../cache/TreeDeviceSchemaCacheManager.java | 9 +- .../PushAggregationIntoTableScan.java | 12 +- .../plan/relational/sql/ast/InsertTablet.java | 11 +- .../plan/statement/crud/InsertTabletStatement.java | 44 +++--- .../iotdb/db/storageengine/StorageEngine.java | 49 ++++--- .../execute/task/InnerSpaceCompactionTask.java | 9 +- .../compaction/schedule/CompactionTaskQueue.java | 3 + .../DefaultCompactionTaskComparatorImpl.java | 8 +- .../dataregion/flush/MemTableFlushTask.java | 2 +- .../memtable/AlignedWritableMemChunk.java | 6 +- .../dataregion/memtable/IWritableMemChunk.java | 5 +- .../dataregion/memtable/TsFileProcessor.java | 125 ++++++++--------- .../dataregion/memtable/WritableMemChunk.java | 2 +- .../dataregion/read/control/FileReaderManager.java | 4 +- .../tsfile/generator/TsFileNameGenerator.java | 4 +- .../storageengine/dataregion/wal/WALManager.java | 21 ++- .../dataregion/wal/allocation/ElasticStrategy.java | 27 +++- .../SubscriptionConnectorSubtaskManager.java | 3 - .../plan/relational/analyzer/AggregationTest.java | 19 --- .../plan/relational/analyzer/TSBSMetadata.java | 6 - .../plan/relational/analyzer/TestMatadata.java | 6 - .../plan/relational/sql/ast/InsertTabletTest.java | 130 +++++++++++++++++ .../compaction/CompactionTaskComparatorTest.java | 12 +- .../wal/allocation/ElasticStrategyTest.java | 11 ++ .../conf/iotdb-system.properties.template | 4 +- .../iotdb/commons/utils/TimePartitionUtils.java | 104 ++++++++++++-- .../commons/utils/TimePartitionUtilsTest.java | 16 +++ pom.xml | 2 +- 69 files changed, 1138 insertions(+), 610 deletions(-) diff --cc integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBMultiIDsWithAttributesTableIT.java index b0bb573c248,69f52276de6..dd2201577e1 --- a/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBMultiIDsWithAttributesTableIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBMultiIDsWithAttributesTableIT.java @@@ -1153,29 -1176,27 +1176,48 @@@ public class IoTDBMultiIDsWithAttribute sql = "select extreme(num),extreme(bignum),extreme(floatnum) from table0"; retArray = new String[] {"15,3147483648,4654.231,"}; tableResultSetEqualTest(sql, expectedHeader, retArray, DATABASE_NAME); + + // no push-down, test GroupedAccumulator + expectedHeader = buildHeaders(5); + retArray = + new String[] { + "1971-01-01T00:01:40.000Z,1971-01-01T00:00:00.000Z,1971-01-01T00:00:00.000Z,1971-01-01T00:01:40.000Z,3,", + "1971-04-26T17:46:40.000Z,1970-01-01T00:00:00.020Z,1970-01-01T00:00:00.020Z,1971-04-26T17:46:40.000Z,3,", + "1971-01-01T00:00:00.500Z,1970-01-01T00:00:00.040Z,1970-01-01T00:00:00.040Z,1971-04-26T17:46:40.020Z,3,", + "1971-01-01T00:00:01.000Z,1970-01-01T00:00:00.080Z,1971-04-26T18:01:40.000Z,1971-01-01T00:00:01.000Z,3,", + "1971-08-20T11:33:20.000Z,1971-01-01T00:00:10.000Z,1971-08-20T11:33:20.000Z,1970-01-01T00:00:00.100Z,3,", + "1971-01-01T00:01:40.000Z,1971-01-01T00:00:00.000Z,1971-01-01T00:00:00.000Z,1971-01-01T00:01:40.000Z,3,", + "1971-04-26T17:46:40.000Z,1970-01-01T00:00:00.020Z,1970-01-01T00:00:00.020Z,1971-04-26T17:46:40.000Z,3,", + "1971-01-01T00:00:00.500Z,1970-01-01T00:00:00.040Z,1970-01-01T00:00:00.040Z,1971-04-26T17:46:40.020Z,3,", + "1971-01-01T00:00:01.000Z,1970-01-01T00:00:00.080Z,1971-04-26T18:01:40.000Z,1971-01-01T00:00:01.000Z,3,", + "1971-08-20T11:33:20.000Z,1971-01-01T00:00:10.000Z,1971-08-20T11:33:20.000Z,1970-01-01T00:00:00.100Z,3,", + }; + sql = + "select max_by(time,str),min_by(time,str),max_by(time,bool),min_by(time,bool),count(num+1) from table0 group by device,level order by device,level"; + tableResultSetEqualTest(sql, expectedHeader, retArray, DATABASE_NAME); } + @Test + public void modeTest() { + expectedHeader = buildHeaders(15); + sql = + "select mode(time),mode(device),mode(level),mode(attr1),mode(attr2),mode(num),mode(bignum),mode(floatnum),mode(date),mode(str),mode(bool),mode(date),mode(ts),mode(stringv),mode(doublenum) from table0 where device='d2' and level='l4' and time=80"; + retArray = + new String[] { + "1970-01-01T00:00:00.080Z,d2,l4,null,null,9,2147483646,43.12,null,apple,false,null,2024-09-20T06:15:35.000Z,test-string2,6666.7,", + }; + tableResultSetEqualTest(sql, expectedHeader, retArray, DATABASE_NAME); + + expectedHeader = buildHeaders(10); + sql = + "select mode(device),mode(level),mode(attr1),mode(attr2),mode(date),mode(bool),mode(date),mode(ts),mode(stringv),mode(doublenum) from table0 where device='d2' and level='l1'"; + retArray = + new String[] { + "d2,l1,d,c,null,false,null,2024-08-01T06:15:35.000Z,test-string3,null,", + }; + tableResultSetEqualTest(sql, expectedHeader, retArray, DATABASE_NAME); + } + // ================================================================== // ============================ Join Test =========================== // ==================================================================
