You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hu...@apache.org on 2022/11/07 06:22:50 UTC

[iotdb] 02/04: support TRACING ON/OFF

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

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

commit 5cfe9b8bcf4a34ebf44d93e393e16bfd07ea8032
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Mon Nov 7 13:56:53 2022 +0800

    support TRACING ON/OFF
---
 .../antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4     |  7 ++++++-
 .../java/org/apache/iotdb/db/qp/executor/PlanExecutor.java  | 13 +++++++++++++
 .../org/apache/iotdb/db/qp/logical/sys/TracingOperator.java |  2 +-
 .../org/apache/iotdb/db/qp/physical/sys/TracingPlan.java    |  2 +-
 .../java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java    |  7 +++++++
 5 files changed, 28 insertions(+), 3 deletions(-)

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 7996345033..70e0920cde 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
@@ -60,7 +60,7 @@ dclStatement
     ;
 
 utilityStatement
-    : merge | fullMerge | flush | clearCache | settle
+    : merge | fullMerge | flush | clearCache | settle | tracing
     | setSystemStatus | showVersion | showFlushInfo | showLockInfo | showQueryResource
     | showQueryProcesslist | killQuery | grantWatermarkEmbedding | revokeWatermarkEmbedding
     | loadConfiguration | loadTimeseries | loadFile | removeFile | unloadFile;
@@ -643,6 +643,11 @@ settle
     : SETTLE (prefixPath|tsFilePath=STRING_LITERAL)
     ;
 
+// Tracing on/off
+tracing
+    : TRACING (ON | OFF)
+    ;
+
 // Set System To ReadOnly/Writable
 setSystemStatus
     : SET SYSTEM TO (READONLY|WRITABLE)
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 a6989293c5..3d6104045e 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
@@ -132,11 +132,13 @@ import org.apache.iotdb.db.qp.physical.sys.ShowTTLPlan;
 import org.apache.iotdb.db.qp.physical.sys.ShowTimeSeriesPlan;
 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.TracingPlan;
 import org.apache.iotdb.db.qp.physical.sys.UnsetTemplatePlan;
 import org.apache.iotdb.db.qp.utils.DateTimeUtils;
 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.QueryStatistics;
 import org.apache.iotdb.db.query.control.QueryTimeManager;
 import org.apache.iotdb.db.query.dataset.AlignByDeviceDataSet;
 import org.apache.iotdb.db.query.dataset.ListDataSet;
@@ -427,12 +429,23 @@ public class PlanExecutor implements IPlanExecutor {
       case PAUSE_ARCHIVING:
         operatePauseArchiving((PauseArchivingPlan) plan);
         return true;
+      case TRACING:
+        controlTracing((TracingPlan) plan);
+        return true;
       default:
         throw new UnsupportedOperationException(
             String.format("operation %s is not supported", plan.getOperatorName()));
     }
   }
 
+  private void controlTracing(TracingPlan plan) {
+    if (plan.isTracingOn()) {
+      QueryStatistics.getInstance().enableTracing();
+    } else {
+      QueryStatistics.getInstance().disableTracing();
+    }
+  }
+
   private boolean createTemplate(CreateTemplatePlan createTemplatePlan)
       throws QueryProcessException {
     try {
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/sys/TracingOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/sys/TracingOperator.java
index fcc3f0f3c8..82e18f80a1 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/logical/sys/TracingOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/sys/TracingOperator.java
@@ -26,7 +26,7 @@ import org.apache.iotdb.db.qp.strategy.PhysicalGenerator;
 
 public class TracingOperator extends Operator {
 
-  private boolean isTracingOn;
+  private final boolean isTracingOn;
 
   public TracingOperator(int tokenIntType, boolean isTracingOn) {
     super(tokenIntType);
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/TracingPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/TracingPlan.java
index 0e0f9fc1fe..b51b13debe 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/TracingPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/TracingPlan.java
@@ -27,7 +27,7 @@ import java.util.List;
 
 public class TracingPlan extends PhysicalPlan {
 
-  private boolean isTracingOn;
+  private final boolean isTracingOn;
 
   public TracingPlan(boolean isTracingOn) {
     super(OperatorType.TRACING);
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 bae92be936..babfa1a8be 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
@@ -2127,6 +2127,13 @@ public class IoTDBSqlVisitor extends IoTDBSqlParserBaseVisitor<Operator> {
     return settleOperator;
   }
 
+  // Tracing on/off
+
+  @Override
+  public Operator visitTracing(IoTDBSqlParser.TracingContext ctx) {
+    return new TracingOperator(SQLConstant.TOK_TRACING, ctx.ON() != null);
+  }
+
   // Set System To ReadOnly/Writable
 
   @Override