This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new c84095d093 [IOTDB-3325] Thrown an exception when using group by in raw 
data query (#6077)
c84095d093 is described below

commit c84095d093b7263084a62b36f726f31a7b282dc6
Author: liuminghui233 <[email protected]>
AuthorDate: Mon May 30 21:22:10 2022 +0800

    [IOTDB-3325] Thrown an exception when using group by in raw data query 
(#6077)
---
 .../SmoothQueueSlidingWindowAggregator.java        |  1 +
 .../db/mpp/plan/statement/crud/QueryStatement.java |  4 ++++
 .../thrift/impl/DataNodeTSIServiceImpl.java        | 24 +++++++++++-----------
 3 files changed, 17 insertions(+), 12 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/slidingwindow/SmoothQueueSlidingWindowAggregator.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/slidingwindow/SmoothQueueSlidingWindowAggregator.java
index 0d82e0169d..adfe1528c8 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/slidingwindow/SmoothQueueSlidingWindowAggregator.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/slidingwindow/SmoothQueueSlidingWindowAggregator.java
@@ -39,6 +39,7 @@ public class SmoothQueueSlidingWindowAggregator extends 
SlidingWindowAggregator
   protected void evictingExpiredValue() {
     if (!deque.isEmpty() && !curTimeRange.contains(deque.getLast().getTime())) 
{
       this.accumulator.reset();
+      deque.clear();
       return;
     }
     while (!deque.isEmpty() && 
!curTimeRange.contains(deque.getFirst().getTime())) {
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/QueryStatement.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/QueryStatement.java
index 35a565f3e7..2c1d8cb2fb 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/QueryStatement.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/QueryStatement.java
@@ -240,6 +240,10 @@ public class QueryStatement extends Statement {
           throw new SemanticException("Raw data and aggregation hybrid query 
is not supported.");
         }
       }
+    } else {
+      if (isGroupByTime() || isGroupByLevel()) {
+        throw new SemanticException("Raw data query doesn't support GROUP 
BY.");
+      }
     }
 
     if (isAlignByDevice()) {
diff --git 
a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/DataNodeTSIServiceImpl.java
 
b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/DataNodeTSIServiceImpl.java
index 547e86dd6c..412301327f 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/DataNodeTSIServiceImpl.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/DataNodeTSIServiceImpl.java
@@ -530,20 +530,20 @@ public class DataNodeTSIServiceImpl implements 
TSIEventHandler {
     }
 
     long startTime = System.currentTimeMillis();
-    Statement s =
-        StatementGenerator.createStatement(
-            statement, SESSION_MANAGER.getZoneId(req.getSessionId()));
-
-    // permission check
-    TSStatus status = AuthorityChecker.checkAuthority(s, req.sessionId);
-    if (status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
-      return RpcUtils.getTSExecuteStatementResp(status);
-    }
+    try {
+      Statement s =
+          StatementGenerator.createStatement(
+              statement, SESSION_MANAGER.getZoneId(req.getSessionId()));
 
-    QUERY_FREQUENCY_RECORDER.incrementAndGet();
-    AUDIT_LOGGER.debug("Session {} execute Query: {}", req.sessionId, 
statement);
+      // permission check
+      TSStatus status = AuthorityChecker.checkAuthority(s, req.sessionId);
+      if (status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+        return RpcUtils.getTSExecuteStatementResp(status);
+      }
+
+      QUERY_FREQUENCY_RECORDER.incrementAndGet();
+      AUDIT_LOGGER.debug("Session {} execute Query: {}", req.sessionId, 
statement);
 
-    try {
       long queryId = SESSION_MANAGER.requestQueryId(req.statementId, true);
       // create and cache dataset
       ExecutionResult result =

Reply via email to