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

hui pushed a commit to branch lmh/clearCache
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 79f230c6e22af594d65335b7fb594874799a0ee8
Author: Minghui Liu <[email protected]>
AuthorDate: Wed Jun 29 17:45:41 2022 +0800

    add execution for ClearCache in Analyzer
---
 .../apache/iotdb/db/mpp/plan/analyze/Analyzer.java | 51 ++++++++++++++--------
 1 file changed, 34 insertions(+), 17 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
index 9885f8b29e..cbb42cff99 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
@@ -28,6 +28,9 @@ import 
org.apache.iotdb.commons.partition.SchemaNodeManagementPartition;
 import org.apache.iotdb.commons.partition.SchemaPartition;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.engine.cache.BloomFilterCache;
+import org.apache.iotdb.db.engine.cache.ChunkCache;
+import org.apache.iotdb.db.engine.cache.TimeSeriesMetadataCache;
 import org.apache.iotdb.db.exception.sql.MeasurementNotExistException;
 import org.apache.iotdb.db.exception.sql.SemanticException;
 import org.apache.iotdb.db.exception.sql.StatementAnalyzeException;
@@ -79,6 +82,7 @@ import 
org.apache.iotdb.db.mpp.plan.statement.metadata.ShowDevicesStatement;
 import 
org.apache.iotdb.db.mpp.plan.statement.metadata.ShowStorageGroupStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTTLStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTimeSeriesStatement;
+import org.apache.iotdb.db.mpp.plan.statement.sys.ClearCacheStatement;
 import org.apache.iotdb.db.mpp.plan.statement.sys.ExplainStatement;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.read.filter.GroupByFilter;
@@ -630,6 +634,25 @@ public class Analyzer {
       return new Pair<>(globalTimeFilter, hasValueFilter);
     }
 
+    private GroupByFilter initGroupByFilter(GroupByTimeComponent 
groupByTimeComponent) {
+      if (groupByTimeComponent.isIntervalByMonth() || 
groupByTimeComponent.isSlidingStepByMonth()) {
+        return new GroupByMonthFilter(
+            groupByTimeComponent.getInterval(),
+            groupByTimeComponent.getSlidingStep(),
+            groupByTimeComponent.getStartTime(),
+            groupByTimeComponent.getEndTime(),
+            groupByTimeComponent.isSlidingStepByMonth(),
+            groupByTimeComponent.isIntervalByMonth(),
+            TimeZone.getTimeZone("+00:00"));
+      } else {
+        return new GroupByFilter(
+            groupByTimeComponent.getInterval(),
+            groupByTimeComponent.getSlidingStep(),
+            groupByTimeComponent.getStartTime(),
+            groupByTimeComponent.getEndTime());
+      }
+    }
+
     private void updateSource(
         Expression selectExpr, Set<Expression> sourceExpressions, boolean 
isRawDataSource) {
       sourceExpressions.addAll(
@@ -1431,24 +1454,18 @@ public class Analyzer {
 
       return analysis;
     }
-  }
 
-  private GroupByFilter initGroupByFilter(GroupByTimeComponent 
groupByTimeComponent) {
-    if (groupByTimeComponent.isIntervalByMonth() || 
groupByTimeComponent.isSlidingStepByMonth()) {
-      return new GroupByMonthFilter(
-          groupByTimeComponent.getInterval(),
-          groupByTimeComponent.getSlidingStep(),
-          groupByTimeComponent.getStartTime(),
-          groupByTimeComponent.getEndTime(),
-          groupByTimeComponent.isSlidingStepByMonth(),
-          groupByTimeComponent.isIntervalByMonth(),
-          TimeZone.getTimeZone("+00:00"));
-    } else {
-      return new GroupByFilter(
-          groupByTimeComponent.getInterval(),
-          groupByTimeComponent.getSlidingStep(),
-          groupByTimeComponent.getStartTime(),
-          groupByTimeComponent.getEndTime());
+    @Override
+    public Analysis visitClearCache(
+        ClearCacheStatement clearCacheStatement, MPPQueryContext context) {
+      Analysis analysis = new Analysis();
+      analysis.setFinishQueryAfterAnalyze(true);
+
+      ChunkCache.getInstance().clear();
+      TimeSeriesMetadataCache.getInstance().clear();
+      BloomFilterCache.getInstance().clear();
+
+      return analysis;
     }
   }
 }

Reply via email to