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

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


The following commit(s) were added to refs/heads/TooManyOpenFiles by this push:
     new 60ac6e2  [To debug] Add show query resource (#4871)
60ac6e2 is described below

commit 60ac6e2a4a2777236f8e9601f5aa77f73b7e9c64
Author: liuminghui233 <[email protected]>
AuthorDate: Tue Jan 18 13:57:18 2022 +0800

    [To debug] Add show query resource (#4871)
---
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlLexer.g4    |  4 ++
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4   |  9 +++-
 .../iotdb/db/engine/cq/ContinuousQueryTask.java    |  3 +-
 .../influxdb/meta/InfluxDBMetaManager.java         |  3 +-
 .../protocol/rest/impl/GrafanaApiServiceImpl.java  |  5 +-
 .../db/protocol/rest/impl/RestApiServiceImpl.java  |  3 +-
 .../apache/iotdb/db/qp/constant/SQLConstant.java   |  4 ++
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  | 14 ++++++
 .../org/apache/iotdb/db/qp/logical/Operator.java   |  4 +-
 .../qp/logical/sys/ShowQueryResourceOperate.java   | 39 +++++++++++++++
 .../apache/iotdb/db/qp/physical/sys/ShowPlan.java  |  3 +-
 .../db/qp/physical/sys/ShowQueryResourcePlan.java  | 38 +++++++++++++++
 .../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java    | 56 ++++------------------
 .../iotdb/db/query/control/FileReaderManager.java  | 12 +++++
 .../iotdb/db/query/control/QueryFileManager.java   | 29 +++++++++++
 .../db/query/control/QueryResourceManager.java     |  4 ++
 16 files changed, 169 insertions(+), 61 deletions(-)

diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlLexer.g4 
b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlLexer.g4
index 5b9ec14..02d6ffe 100644
--- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlLexer.g4
+++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlLexer.g4
@@ -406,6 +406,10 @@ RESAMPLE
     : R E S A M P L E
     ;
 
+RESOURCE
+    : R E S O U R C E
+    ;
+
 REVOKE
     : R E V O K E
     ;
diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 
b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
index 14cb829..2fee1c5 100644
--- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
+++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
@@ -57,8 +57,8 @@ dclStatement
     ;
 
 utilityStatement
-    : merge | fullMerge | flush | clearCache | settle
-    | setSystemStatus | showVersion | showFlushInfo | showLockInfo | 
showMergeInfo
+    : merge | fullMerge | flush | clearCache | settle | setSystemStatus
+    | showVersion | showFlushInfo | showLockInfo | showMergeInfo | 
showQueryResource
     | showQueryProcesslist | killQuery | grantWatermarkEmbedding | 
revokeWatermarkEmbedding
     | loadConfiguration | loadTimeseries | loadFile | removeFile | unloadFile;
 
@@ -604,6 +604,11 @@ showMergeInfo
     : SHOW MERGE INFO
     ;
 
+// Show Query Resource
+showQueryResource
+    : SHOW QUERY RESOURCE
+    ;
+
 // Show Query Processlist
 showQueryProcesslist
     : SHOW QUERY PROCESSLIST
diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/cq/ContinuousQueryTask.java 
b/server/src/main/java/org/apache/iotdb/db/engine/cq/ContinuousQueryTask.java
index 23bb596..9fd6e6c 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/engine/cq/ContinuousQueryTask.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/engine/cq/ContinuousQueryTask.java
@@ -34,7 +34,6 @@ import 
org.apache.iotdb.db.qp.physical.crud.InsertMultiTabletPlan;
 import org.apache.iotdb.db.qp.physical.sys.CreateContinuousQueryPlan;
 import org.apache.iotdb.db.qp.strategy.LogicalGenerator;
 import org.apache.iotdb.db.query.context.QueryContext;
-import org.apache.iotdb.db.query.control.QueryResourceManager;
 import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.service.basic.ServiceProvider;
 import 
org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException;
@@ -98,7 +97,7 @@ public class ContinuousQueryTask extends WrappedRunnable {
     }
 
     // construct query dataset
-    final long queryId = 
QueryResourceManager.getInstance().assignQueryId(true);
+    final long queryId = ServiceProvider.SESSION_MANAGER.requestQueryId(true);
     try {
       final QueryContext queryContext =
           serviceProvider.genQueryContext(
diff --git 
a/server/src/main/java/org/apache/iotdb/db/protocol/influxdb/meta/InfluxDBMetaManager.java
 
b/server/src/main/java/org/apache/iotdb/db/protocol/influxdb/meta/InfluxDBMetaManager.java
index 59bdad1..36e1d35 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/protocol/influxdb/meta/InfluxDBMetaManager.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/protocol/influxdb/meta/InfluxDBMetaManager.java
@@ -31,7 +31,6 @@ import org.apache.iotdb.db.qp.physical.crud.InsertRowPlan;
 import org.apache.iotdb.db.qp.physical.crud.QueryPlan;
 import org.apache.iotdb.db.qp.physical.sys.SetStorageGroupPlan;
 import org.apache.iotdb.db.query.context.QueryContext;
-import org.apache.iotdb.db.query.control.QueryResourceManager;
 import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.service.basic.ServiceProvider;
 import 
org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException;
@@ -71,7 +70,7 @@ public class InfluxDBMetaManager {
   }
 
   public void recover() {
-    long queryId = QueryResourceManager.getInstance().assignQueryId(true);
+    long queryId = ServiceProvider.SESSION_MANAGER.requestQueryId(true);
     try {
       QueryPlan queryPlan = (QueryPlan) 
planner.parseSQLToPhysicalPlan(SELECT_TAG_INFO_SQL);
       QueryContext queryContext =
diff --git 
a/server/src/main/java/org/apache/iotdb/db/protocol/rest/impl/GrafanaApiServiceImpl.java
 
b/server/src/main/java/org/apache/iotdb/db/protocol/rest/impl/GrafanaApiServiceImpl.java
index 5aa536b..778ff4e 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/protocol/rest/impl/GrafanaApiServiceImpl.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/protocol/rest/impl/GrafanaApiServiceImpl.java
@@ -33,7 +33,6 @@ import org.apache.iotdb.db.qp.physical.PhysicalPlan;
 import org.apache.iotdb.db.qp.physical.crud.QueryPlan;
 import org.apache.iotdb.db.qp.physical.sys.ShowPlan;
 import org.apache.iotdb.db.query.context.QueryContext;
-import org.apache.iotdb.db.query.control.QueryResourceManager;
 import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.service.basic.ServiceProvider;
 import org.apache.iotdb.rpc.TSStatusCode;
@@ -92,7 +91,7 @@ public class GrafanaApiServiceImpl extends GrafanaApiService {
         return response;
       }
 
-      final long queryId = 
QueryResourceManager.getInstance().assignQueryId(true);
+      final long queryId = 
ServiceProvider.SESSION_MANAGER.requestQueryId(true);
       try {
         QueryContext queryContext =
             serviceProvider.genQueryContext(
@@ -148,7 +147,7 @@ public class GrafanaApiServiceImpl extends 
GrafanaApiService {
         return response;
       }
 
-      final long queryId = 
QueryResourceManager.getInstance().assignQueryId(true);
+      final long queryId = 
ServiceProvider.SESSION_MANAGER.requestQueryId(true);
       try {
         QueryContext queryContext =
             serviceProvider.genQueryContext(
diff --git 
a/server/src/main/java/org/apache/iotdb/db/protocol/rest/impl/RestApiServiceImpl.java
 
b/server/src/main/java/org/apache/iotdb/db/protocol/rest/impl/RestApiServiceImpl.java
index caf37aa..ce009a3 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/protocol/rest/impl/RestApiServiceImpl.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/protocol/rest/impl/RestApiServiceImpl.java
@@ -34,7 +34,6 @@ import org.apache.iotdb.db.qp.physical.PhysicalPlan;
 import org.apache.iotdb.db.qp.physical.crud.InsertTabletPlan;
 import org.apache.iotdb.db.qp.physical.crud.QueryPlan;
 import org.apache.iotdb.db.query.context.QueryContext;
-import org.apache.iotdb.db.query.control.QueryResourceManager;
 import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.service.basic.ServiceProvider;
 import org.apache.iotdb.rpc.TSStatusCode;
@@ -110,7 +109,7 @@ public class RestApiServiceImpl extends RestApiService {
         return response;
       }
 
-      final long queryId = 
QueryResourceManager.getInstance().assignQueryId(true);
+      final long queryId = 
ServiceProvider.SESSION_MANAGER.requestQueryId(true);
       try {
         QueryContext queryContext =
             serviceProvider.genQueryContext(
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/constant/SQLConstant.java 
b/server/src/main/java/org/apache/iotdb/db/qp/constant/SQLConstant.java
index ce111ab..2bbac26 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/constant/SQLConstant.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/constant/SQLConstant.java
@@ -190,6 +190,8 @@ public class SQLConstant {
   public static final int TOK_SCHEMA_TEMPLATE_ACTIVATE = 114;
   public static final int TOK_SCHEMA_TEMPLATE_UNSET = 115;
 
+  public static final int TOK_SHOW_QUERY_RESOURCE = 116;
+
   public static final Map<Integer, String> tokenNames = new HashMap<>();
 
   public static String[] getSingleRootArray() {
@@ -267,6 +269,8 @@ public class SQLConstant {
     tokenNames.put(TOK_SCHEMA_TEMPLATE_SET, "TOK_SCHEMA_TEMPLATE_SET");
     tokenNames.put(TOK_SCHEMA_TEMPLATE_ACTIVATE, 
"TOK_SCHEMA_TEMPLATE_ACTIVATE");
     tokenNames.put(TOK_SCHEMA_TEMPLATE_UNSET, "TOK_SCHEMA_TEMPLATE_UNSET");
+
+    tokenNames.put(TOK_SHOW_QUERY_RESOURCE, "TOK_SHOW_QUERY_RESOURCE");
   }
 
   public static boolean isReservedPath(PartialPath pathStr) {
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java 
b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
index 2f0f3f9..07861fc 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
@@ -126,6 +126,8 @@ import org.apache.iotdb.db.qp.physical.sys.StartTriggerPlan;
 import org.apache.iotdb.db.qp.physical.sys.StopTriggerPlan;
 import org.apache.iotdb.db.qp.physical.sys.UnsetTemplatePlan;
 import org.apache.iotdb.db.query.context.QueryContext;
+import org.apache.iotdb.db.query.control.FileReaderManager;
+import org.apache.iotdb.db.query.control.QueryResourceManager;
 import org.apache.iotdb.db.query.control.QueryTimeManager;
 import org.apache.iotdb.db.query.dataset.AlignByDeviceDataSet;
 import org.apache.iotdb.db.query.dataset.ListDataSet;
@@ -177,6 +179,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -230,6 +233,7 @@ public class PlanExecutor implements IPlanExecutor {
   private static final Logger logger = 
LoggerFactory.getLogger(PlanExecutor.class);
   private static final Logger AUDIT_LOGGER =
       LoggerFactory.getLogger(IoTDBConstant.AUDIT_LOGGER_NAME);
+  private static final Logger DEBUG_LOGGER = 
LoggerFactory.getLogger("QUERY_DEBUG");
   // for data query
   protected IQueryRouter queryRouter;
   // for administration
@@ -397,6 +401,8 @@ public class PlanExecutor implements IPlanExecutor {
       case SETTLE:
         settle((SettlePlan) plan);
         return true;
+      case SHOW_QUERY_RESOURCE:
+        return processShowQueryResource();
       default:
         throw new UnsupportedOperationException(
             String.format("operation %s is not supported", 
plan.getOperatorType()));
@@ -2190,6 +2196,14 @@ public class PlanExecutor implements IPlanExecutor {
     return record;
   }
 
+  private boolean processShowQueryResource() {
+    DEBUG_LOGGER.info(String.format("**********%s**********\n\n", new Date()));
+    FileReaderManager.getInstance().writeFileReferenceInfo();
+    QueryResourceManager.getInstance().writeQueryFileInfo();
+    
DEBUG_LOGGER.info("\n****************************************************\n\n");
+    return true;
+  }
+
   private QueryDataSet processShowQueryProcesslist() {
     ListDataSet listDataSet =
         new ListDataSet(
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/Operator.java 
b/server/src/main/java/org/apache/iotdb/db/qp/logical/Operator.java
index 570c01d..de439e9 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/logical/Operator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/Operator.java
@@ -192,6 +192,8 @@ public abstract class Operator {
     UNSET_TEMPLATE,
     PRUNE_TEMPLATE,
     APPEND_TEMPLATE,
-    DROP_TEMPLATE
+    DROP_TEMPLATE,
+
+    SHOW_QUERY_RESOURCE
   }
 }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowQueryResourceOperate.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowQueryResourceOperate.java
new file mode 100644
index 0000000..03d1c84
--- /dev/null
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/logical/sys/ShowQueryResourceOperate.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.iotdb.db.qp.logical.sys;
+
+import org.apache.iotdb.db.exception.query.QueryProcessException;
+import org.apache.iotdb.db.qp.logical.Operator;
+import org.apache.iotdb.db.qp.physical.PhysicalPlan;
+import org.apache.iotdb.db.qp.physical.sys.ShowQueryResourcePlan;
+import org.apache.iotdb.db.qp.strategy.PhysicalGenerator;
+
+public class ShowQueryResourceOperate extends Operator {
+
+  public ShowQueryResourceOperate(int tokenIntType) {
+    super(tokenIntType);
+    setOperatorType(OperatorType.SHOW_QUERY_RESOURCE);
+  }
+
+  @Override
+  public PhysicalPlan generatePhysicalPlan(PhysicalGenerator generator)
+      throws QueryProcessException {
+    return new ShowQueryResourcePlan();
+  }
+}
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowPlan.java
index 9ee494f..9b03d10 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowPlan.java
@@ -117,6 +117,7 @@ public class ShowPlan extends PhysicalPlan {
     QUERY_PROCESSLIST,
     TRIGGERS,
     LOCK_INFO,
-    CONTINUOUS_QUERY
+    CONTINUOUS_QUERY,
+    QUERY_RESOURCE
   }
 }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowQueryResourcePlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowQueryResourcePlan.java
new file mode 100644
index 0000000..ff2da18
--- /dev/null
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowQueryResourcePlan.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.iotdb.db.qp.physical.sys;
+
+import org.apache.iotdb.db.metadata.path.PartialPath;
+import org.apache.iotdb.db.qp.logical.Operator;
+import org.apache.iotdb.db.qp.physical.PhysicalPlan;
+
+import java.util.Collections;
+import java.util.List;
+
+public class ShowQueryResourcePlan extends PhysicalPlan {
+
+  public ShowQueryResourcePlan() {
+    super(Operator.OperatorType.SHOW_QUERY_RESOURCE);
+  }
+
+  @Override
+  public List<PartialPath> getPaths() {
+    return Collections.emptyList();
+  }
+}
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java 
b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
index 2933d9a..c9bad11 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
@@ -53,57 +53,10 @@ import 
org.apache.iotdb.db.qp.logical.crud.SpecialClauseComponent;
 import org.apache.iotdb.db.qp.logical.crud.UDAFQueryOperator;
 import org.apache.iotdb.db.qp.logical.crud.UDTFQueryOperator;
 import org.apache.iotdb.db.qp.logical.crud.WhereComponent;
-import org.apache.iotdb.db.qp.logical.sys.ActivateTemplateOperator;
-import org.apache.iotdb.db.qp.logical.sys.AlterTimeSeriesOperator;
+import org.apache.iotdb.db.qp.logical.sys.*;
 import org.apache.iotdb.db.qp.logical.sys.AlterTimeSeriesOperator.AlterType;
-import org.apache.iotdb.db.qp.logical.sys.AuthorOperator;
 import org.apache.iotdb.db.qp.logical.sys.AuthorOperator.AuthorType;
-import org.apache.iotdb.db.qp.logical.sys.ClearCacheOperator;
-import org.apache.iotdb.db.qp.logical.sys.CountOperator;
-import org.apache.iotdb.db.qp.logical.sys.CreateAlignedTimeSeriesOperator;
-import org.apache.iotdb.db.qp.logical.sys.CreateContinuousQueryOperator;
-import org.apache.iotdb.db.qp.logical.sys.CreateFunctionOperator;
-import org.apache.iotdb.db.qp.logical.sys.CreateSnapshotOperator;
-import org.apache.iotdb.db.qp.logical.sys.CreateTemplateOperator;
-import org.apache.iotdb.db.qp.logical.sys.CreateTimeSeriesOperator;
-import org.apache.iotdb.db.qp.logical.sys.CreateTriggerOperator;
-import org.apache.iotdb.db.qp.logical.sys.DataAuthOperator;
-import org.apache.iotdb.db.qp.logical.sys.DeletePartitionOperator;
-import org.apache.iotdb.db.qp.logical.sys.DeleteStorageGroupOperator;
-import org.apache.iotdb.db.qp.logical.sys.DeleteTimeSeriesOperator;
-import org.apache.iotdb.db.qp.logical.sys.DropContinuousQueryOperator;
-import org.apache.iotdb.db.qp.logical.sys.DropFunctionOperator;
-import org.apache.iotdb.db.qp.logical.sys.DropTriggerOperator;
-import org.apache.iotdb.db.qp.logical.sys.FlushOperator;
-import org.apache.iotdb.db.qp.logical.sys.KillQueryOperator;
-import org.apache.iotdb.db.qp.logical.sys.LoadConfigurationOperator;
 import 
org.apache.iotdb.db.qp.logical.sys.LoadConfigurationOperator.LoadConfigurationOperatorType;
-import org.apache.iotdb.db.qp.logical.sys.LoadDataOperator;
-import org.apache.iotdb.db.qp.logical.sys.LoadFilesOperator;
-import org.apache.iotdb.db.qp.logical.sys.MergeOperator;
-import org.apache.iotdb.db.qp.logical.sys.RemoveFileOperator;
-import org.apache.iotdb.db.qp.logical.sys.SetStorageGroupOperator;
-import org.apache.iotdb.db.qp.logical.sys.SetSystemModeOperator;
-import org.apache.iotdb.db.qp.logical.sys.SetTTLOperator;
-import org.apache.iotdb.db.qp.logical.sys.SetTemplateOperator;
-import org.apache.iotdb.db.qp.logical.sys.SettleOperator;
-import org.apache.iotdb.db.qp.logical.sys.ShowChildNodesOperator;
-import org.apache.iotdb.db.qp.logical.sys.ShowChildPathsOperator;
-import org.apache.iotdb.db.qp.logical.sys.ShowContinuousQueriesOperator;
-import org.apache.iotdb.db.qp.logical.sys.ShowDevicesOperator;
-import org.apache.iotdb.db.qp.logical.sys.ShowFunctionsOperator;
-import org.apache.iotdb.db.qp.logical.sys.ShowLockInfoOperator;
-import org.apache.iotdb.db.qp.logical.sys.ShowMergeStatusOperator;
-import org.apache.iotdb.db.qp.logical.sys.ShowOperator;
-import org.apache.iotdb.db.qp.logical.sys.ShowStorageGroupOperator;
-import org.apache.iotdb.db.qp.logical.sys.ShowTTLOperator;
-import org.apache.iotdb.db.qp.logical.sys.ShowTimeSeriesOperator;
-import org.apache.iotdb.db.qp.logical.sys.ShowTriggersOperator;
-import org.apache.iotdb.db.qp.logical.sys.StartTriggerOperator;
-import org.apache.iotdb.db.qp.logical.sys.StopTriggerOperator;
-import org.apache.iotdb.db.qp.logical.sys.UnSetTTLOperator;
-import org.apache.iotdb.db.qp.logical.sys.UnloadFileOperator;
-import org.apache.iotdb.db.qp.logical.sys.UnsetTemplateOperator;
 import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.ConstantContext;
 import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.CqGroupByTimeClauseContext;
 import org.apache.iotdb.db.qp.utils.DatetimeUtils;
@@ -2006,6 +1959,13 @@ public class IoTDBSqlVisitor extends 
IoTDBSqlParserBaseVisitor<Operator> {
     return new ShowMergeStatusOperator(SQLConstant.TOK_SHOW_MERGE_STATUS);
   }
 
+  // Show Query Resource
+
+  @Override
+  public Operator 
visitShowQueryResource(IoTDBSqlParser.ShowQueryResourceContext ctx) {
+    return new ShowQueryResourceOperate(SQLConstant.TOK_SHOW_QUERY_RESOURCE);
+  }
+
   // Show Query Processlist
 
   @Override
diff --git 
a/server/src/main/java/org/apache/iotdb/db/query/control/FileReaderManager.java 
b/server/src/main/java/org/apache/iotdb/db/query/control/FileReaderManager.java
index 3cd2ee7..fb8f1bb 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/query/control/FileReaderManager.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/query/control/FileReaderManager.java
@@ -41,6 +41,7 @@ public class FileReaderManager {
 
   private static final Logger logger = 
LoggerFactory.getLogger(FileReaderManager.class);
   private static final Logger resourceLogger = 
LoggerFactory.getLogger("FileMonitor");
+  private static final Logger DEBUG_LOGGER = 
LoggerFactory.getLogger("QUERY_DEBUG");
 
   /** max number of file streams being cached, must be lower than 65535. */
   private static final int MAX_CACHED_FILE_SIZE = 30000;
@@ -234,6 +235,17 @@ public class FileReaderManager {
         || (!isClosed && 
unclosedFileReaderMap.containsKey(tsFile.getTsFilePath()));
   }
 
+  public void writeFileReferenceInfo() {
+    DEBUG_LOGGER.info("[closedReferenceMap]\n");
+    for (Map.Entry<String, AtomicInteger> entry : 
closedReferenceMap.entrySet()) {
+      DEBUG_LOGGER.info(String.format("\t%s: %d\n", entry.getKey(), 
entry.getValue().get()));
+    }
+    DEBUG_LOGGER.info("[unclosedReferenceMap]\n");
+    for (Map.Entry<String, AtomicInteger> entry : 
unclosedReferenceMap.entrySet()) {
+      DEBUG_LOGGER.info(String.format("\t%s: %d", entry.getKey(), 
entry.getValue().get()));
+    }
+  }
+
   private static class FileReaderManagerHelper {
 
     private static final FileReaderManager INSTANCE = new FileReaderManager();
diff --git 
a/server/src/main/java/org/apache/iotdb/db/query/control/QueryFileManager.java 
b/server/src/main/java/org/apache/iotdb/db/query/control/QueryFileManager.java
index 5fbe3ce..756912b 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/query/control/QueryFileManager.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/query/control/QueryFileManager.java
@@ -21,9 +21,13 @@ package org.apache.iotdb.db.query.control;
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
@@ -33,6 +37,8 @@ import java.util.concurrent.ConcurrentHashMap;
  */
 public class QueryFileManager {
 
+  private static final Logger DEBUG_LOGGER = 
LoggerFactory.getLogger("QUERY_DEBUG");
+
   /** Map<queryId, Map<filePath,filePath>> */
   private Map<Long, Map<TsFileResource, TsFileResource>> sealedFilePathsMap;
 
@@ -126,4 +132,27 @@ public class QueryFileManager {
               return k;
             });
   }
+
+  public void writeQueryFileInfo() {
+    DEBUG_LOGGER.info("[Query Sealed File Info]\n");
+    for (Map.Entry<Long, Map<TsFileResource, TsFileResource>> entry :
+        sealedFilePathsMap.entrySet()) {
+      long queryId = entry.getKey();
+      Set<TsFileResource> tsFileResources = entry.getValue().keySet();
+      DEBUG_LOGGER.info(String.format("\t[queryId: %d]\n", queryId));
+      for (TsFileResource tsFileResource : tsFileResources) {
+        DEBUG_LOGGER.info(String.format("\t\t%s\n", 
tsFileResource.getTsFile().getAbsolutePath()));
+      }
+    }
+    DEBUG_LOGGER.info("[Query Unsealed File Info]\n");
+    for (Map.Entry<Long, Map<TsFileResource, TsFileResource>> entry :
+        unsealedFilePathsMap.entrySet()) {
+      long queryId = entry.getKey();
+      Set<TsFileResource> tsFileResources = entry.getValue().keySet();
+      DEBUG_LOGGER.info(String.format("\t[queryId: %d]\n", queryId));
+      for (TsFileResource tsFileResource : tsFileResources) {
+        DEBUG_LOGGER.info(String.format("\t\t%s\n", 
tsFileResource.getTsFile().getAbsolutePath()));
+      }
+    }
+  }
 }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/query/control/QueryResourceManager.java
 
b/server/src/main/java/org/apache/iotdb/db/query/control/QueryResourceManager.java
index 36b6b66..2f84fb8 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/query/control/QueryResourceManager.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/query/control/QueryResourceManager.java
@@ -215,6 +215,10 @@ public class QueryResourceManager {
     cachedQueryDataSourcesMap.remove(queryId);
   }
 
+  public void writeQueryFileInfo() {
+    filePathsManager.writeQueryFileInfo();
+  }
+
   private static class QueryTokenManagerHelper {
 
     private static final QueryResourceManager INSTANCE = new 
QueryResourceManager();

Reply via email to