You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by we...@apache.org on 2026/07/15 02:28:40 UTC
(iotdb) 01/01: Support debug for query (#17178)
This is an automated email from the ASF dual-hosted git repository.
Wei-hao-Li pushed a commit to branch lwh/1.3-cp
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit aad83fbedd994fffa775292ac77b24477c4a6d6e
Author: Weihao Li <60...@users.noreply.github.com>
AuthorDate: Tue Feb 10 17:36:19 2026 +0800
Support debug for query (#17178)
(cherry picked from commit c052179dccf2fa3dc422626175f28372c86e9ba5)
---
.../it/env/cluster/node/AbstractNodeWrapper.java | 19 ++++
.../it/query/recent/IoTDBDebugQueryIT.java | 105 +++++++++++++++++++++
.../assembly/resources/conf/logback-datanode.xml | 2 +-
.../legacy/IoTDBLegacyPipeReceiverAgent.java | 1 +
.../protocol/legacy/loader/DeletionLoader.java | 3 +-
.../protocol/legacy/loader/TsFileLoader.java | 3 +-
.../protocol/thrift/IoTDBDataNodeReceiver.java | 3 +-
.../protocol/thrift/impl/ClientRPCServiceImpl.java | 25 +++--
.../impl/DataNodeInternalRPCServiceImpl.java | 1 +
.../db/queryengine/common/MPPQueryContext.java | 10 ++
.../fragment/FakedFragmentInstanceContext.java | 2 +-
.../fragment/FragmentInstanceContext.java | 47 ++++++---
.../fragment/FragmentInstanceManager.java | 8 +-
.../execution/fragment/QueryContext.java | 10 +-
.../iotdb/db/queryengine/plan/Coordinator.java | 100 +++++++++++++++-----
.../analyze/schema/AutoCreateSchemaExecutor.java | 1 +
.../analyze/schema/ClusterSchemaFetchExecutor.java | 3 +-
.../plan/execution/IQueryExecution.java | 2 +
.../queryengine/plan/execution/QueryExecution.java | 5 +
.../plan/execution/config/ConfigExecution.java | 5 +
.../config/executor/ClusterConfigTaskExecutor.java | 1 +
.../SimpleFragmentParallelPlanner.java | 1 +
.../distribution/WriteFragmentParallelPlanner.java | 3 +-
.../plan/planner/plan/FragmentInstance.java | 29 +++++-
.../plan/scheduler/load/LoadTsFileScheduler.java | 6 +-
.../load/active/ActiveLoadTsFileLoader.java | 3 +-
.../converter/LoadTsFileDataTypeConverter.java | 1 +
.../execution/operator/MergeSortOperatorTest.java | 5 +
.../plan/planner/FragmentInstanceSerdeTest.java | 6 +-
.../memtable/MemChunkDeserializeTest.java | 4 +-
.../dataregion/memtable/PrimitiveMemTableTest.java | 20 ++--
.../reader/chunk/MemAlignedChunkLoaderTest.java | 2 +-
.../read/reader/chunk/MemChunkLoaderTest.java | 12 +--
.../wal/recover/file/TsFilePlanRedoerTest.java | 21 +++--
.../apache/iotdb/db/utils/EnvironmentUtils.java | 4 +-
35 files changed, 376 insertions(+), 97 deletions(-)
diff --git a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/node/AbstractNodeWrapper.java b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/node/AbstractNodeWrapper.java
index 6c8f2717e71..afad120e94c 100644
--- a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/node/AbstractNodeWrapper.java
+++ b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/node/AbstractNodeWrapper.java
@@ -56,6 +56,7 @@ import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
+import java.nio.file.StandardOpenOption;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
@@ -764,4 +765,22 @@ public abstract class AbstractNodeWrapper implements BaseNodeWrapper {
public Process getInstance() {
return instance;
}
+
+ public int[] getPortList() {
+ return portList;
+ }
+
+ public void clearLogContent() throws IOException {
+ Files.newOutputStream(Paths.get(getLogPath()), StandardOpenOption.TRUNCATE_EXISTING).close();
+ }
+
+ public boolean logContains(String content) throws IOException {
+ List<String> lines = Files.readAllLines(Paths.get(getLogPath()), StandardCharsets.UTF_8);
+ for (String line : lines) {
+ if (line.contains(content)) {
+ return true;
+ }
+ }
+ return false;
+ }
}
diff --git a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBDebugQueryIT.java b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBDebugQueryIT.java
new file mode 100644
index 00000000000..d5702b29909
--- /dev/null
+++ b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBDebugQueryIT.java
@@ -0,0 +1,105 @@
+/*
+ * 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.relational.it.query.recent;
+
+import org.apache.iotdb.it.env.EnvFactory;
+import org.apache.iotdb.it.env.cluster.node.DataNodeWrapper;
+import org.apache.iotdb.it.framework.IoTDBTestRunner;
+import org.apache.iotdb.itbase.category.TableLocalStandaloneIT;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+
+import java.io.IOException;
+
+import static org.apache.iotdb.db.it.utils.TestUtils.prepareData;
+import static org.apache.iotdb.db.it.utils.TestUtils.prepareTableData;
+import static org.apache.iotdb.db.it.utils.TestUtils.resultSetEqualTest;
+import static org.apache.iotdb.db.it.utils.TestUtils.tableResultSetEqualTest;
+import static org.junit.Assert.assertTrue;
+
+@RunWith(IoTDBTestRunner.class)
+@Category({TableLocalStandaloneIT.class})
+public class IoTDBDebugQueryIT {
+ private static final String DATABASE_NAME = "test_db";
+ private static final String[] createTableSqls =
+ new String[] {
+ "CREATE DATABASE " + DATABASE_NAME,
+ "USE " + DATABASE_NAME,
+ "create table table1(device string tag, value int32 field)",
+ "insert into table1(time,device,value) values(2020-01-01 00:00:01.000,'d1',1)",
+ "FLUSH",
+ };
+ private static final String[] createTreeSqls =
+ new String[] {
+ "create timeseries root.test.departments.department_id TEXT",
+ "create timeseries root.test.departments.dep_name TEXT",
+ "insert into root.test.departments(time, department_id, dep_name) values(1, 'D001', '研发部')",
+ "FLUSH",
+ };
+ private static DataNodeWrapper dataNodeWrapper;
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ EnvFactory.getEnv().initClusterEnvironment();
+ dataNodeWrapper = EnvFactory.getEnv().getDataNodeWrapperList().get(0);
+ prepareTableData(createTableSqls);
+ prepareData(createTreeSqls);
+ }
+
+ @AfterClass
+ public static void tearDown() throws Exception {
+ EnvFactory.getEnv().cleanClusterEnvironment();
+ }
+
+ @Test
+ public void tableTest() throws IOException {
+ // clear log content to reduce lines spanned in logContains check
+ dataNodeWrapper.clearLogContent();
+
+ String[] expectedHeader = new String[] {"time", "device", "value"};
+ String[] retArray = new String[] {"2020-01-01T00:00:01.000Z,d1,1,"};
+ String sql = "debug select time,device,value from table1";
+ tableResultSetEqualTest(sql, expectedHeader, retArray, DATABASE_NAME);
+
+ assertTrue(dataNodeWrapper.logContains("Cache miss: table1.d1"));
+ assertTrue(dataNodeWrapper.logContains(sql));
+ }
+
+ @Test
+ public void treeTest() throws IOException {
+ // clear log content to reduce lines spanned in logContains check
+ dataNodeWrapper.clearLogContent();
+
+ String[] expectedHeader =
+ new String[] {
+ "Time", "root.test.departments.department_id", "root.test.departments.dep_name"
+ };
+ String[] retArray = new String[] {"1,D001,研发部,"};
+ String sql = "debug select department_id, dep_name from root.test.departments";
+ resultSetEqualTest(sql, expectedHeader, retArray);
+
+ assertTrue(dataNodeWrapper.logContains("Cache miss: root.test.departments"));
+ assertTrue(dataNodeWrapper.logContains(sql));
+ }
+}
diff --git a/iotdb-core/datanode/src/assembly/resources/conf/logback-datanode.xml b/iotdb-core/datanode/src/assembly/resources/conf/logback-datanode.xml
index e827a7cbef2..a3a59d494ef 100644
--- a/iotdb-core/datanode/src/assembly/resources/conf/logback-datanode.xml
+++ b/iotdb-core/datanode/src/assembly/resources/conf/logback-datanode.xml
@@ -155,7 +155,7 @@
</rollingPolicy>
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>%d [%t] %-5p %C{25}:%L - %m %n</pattern>
+ <pattern>%d [%t] %C{25}:%L - %m %n</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/IoTDBLegacyPipeReceiverAgent.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/IoTDBLegacyPipeReceiverAgent.java
index ae7ab22308a..ba377036b55 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/IoTDBLegacyPipeReceiverAgent.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/IoTDBLegacyPipeReceiverAgent.java
@@ -156,6 +156,7 @@ public class IoTDBLegacyPipeReceiverAgent {
partitionFetcher,
schemaFetcher,
IoTDBDescriptor.getInstance().getConfig().getQueryTimeoutThreshold(),
+ false,
false);
if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()
&& result.status.code != TSStatusCode.DATABASE_ALREADY_EXISTS.getStatusCode()
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/loader/DeletionLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/loader/DeletionLoader.java
index 019dfb7718b..9c318347169 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/loader/DeletionLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/loader/DeletionLoader.java
@@ -69,7 +69,8 @@ public class DeletionLoader implements ILoader {
PARTITION_FETCHER,
SCHEMA_FETCHER,
IoTDBDescriptor.getInstance().getConfig().getQueryTimeoutThreshold(),
- false);
+ false,
+ statement.isDebug());
if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
LOGGER.error("Delete {} error, statement: {}.", deletion, statement);
LOGGER.error("Delete result status : {}.", result.status);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/loader/TsFileLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/loader/TsFileLoader.java
index 8459e22f1ee..13f9c299177 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/loader/TsFileLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/loader/TsFileLoader.java
@@ -72,7 +72,8 @@ public class TsFileLoader implements ILoader {
PARTITION_FETCHER,
SCHEMA_FETCHER,
IoTDBDescriptor.getInstance().getConfig().getQueryTimeoutThreshold(),
- false);
+ false,
+ statement.isDebug());
if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
LOGGER.error("Load TsFile {} error, statement: {}.", tsFile.getPath(), statement);
LOGGER.error("Load TsFile result status : {}.", result.status);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java
index 58d4c29eddc..067810a1bf6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java
@@ -767,7 +767,8 @@ public class IoTDBDataNodeReceiver extends IoTDBFileReceiver {
ClusterPartitionFetcher.getInstance(),
ClusterSchemaFetcher.getInstance(),
IoTDBDescriptor.getInstance().getConfig().getQueryTimeoutThreshold(),
- false)
+ false,
+ statement.isDebug())
.status;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
index 2ae50d36057..bb57d80f6d3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
@@ -335,7 +335,8 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
partitionFetcher,
schemaFetcher,
req.getTimeout(),
- true);
+ true,
+ s.isDebug());
}
if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()
@@ -431,7 +432,8 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
partitionFetcher,
schemaFetcher,
req.getTimeout(),
- true);
+ true,
+ s.isDebug());
if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
finished = true;
@@ -522,7 +524,8 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
partitionFetcher,
schemaFetcher,
req.getTimeout(),
- true);
+ true,
+ s.isDebug());
if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
finished = true;
@@ -612,7 +615,8 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
partitionFetcher,
schemaFetcher,
req.getTimeout(),
- true);
+ true,
+ s.isDebug());
if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
finished = true;
@@ -1059,7 +1063,8 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
partitionFetcher,
schemaFetcher,
req.getTimeout(),
- true);
+ true,
+ s.isDebug());
if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
finished = true;
@@ -1659,7 +1664,8 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
partitionFetcher,
schemaFetcher,
config.getQueryTimeoutThreshold(),
- false);
+ false,
+ s.isDebug());
}
results.add(result.status);
} catch (Exception e) {
@@ -2515,7 +2521,8 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
partitionFetcher,
schemaFetcher,
config.getQueryTimeoutThreshold(),
- true);
+ true,
+ statement.isDebug());
if (executionResult.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()
&& executionResult.status.code != TSStatusCode.REDIRECTION_RECOMMEND.getStatusCode()) {
@@ -2910,6 +2917,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
ExecutionResult result = null;
final List<? extends Statement> subStatements = statement.getSubStatements();
final int totalSubStatements = subStatements.size();
+ boolean debug = statement.isDebug();
LOGGER.info(
"Start batch executing {} sub-statement(s) in tree model, queryId: {}",
@@ -2934,7 +2942,8 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
partitionFetcher,
schemaFetcher,
timeoutMs,
- userQuery);
+ userQuery,
+ debug);
// Exit early if any sub-statement execution fails
if (result != null
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
index e265994a370..73be5d2800d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
@@ -1517,6 +1517,7 @@ public class DataNodeInternalRPCServiceImpl implements IDataNodeRPCService.Iface
partitionFetcher,
schemaFetcher,
req.getTimeout(),
+ false,
false);
if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
index 13773c15090..332837c4b6d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
@@ -106,6 +106,8 @@ public class MPPQueryContext {
*/
private boolean needSetHighestPriority = false;
+ private boolean debug = false;
+
@TestOnly
public MPPQueryContext(QueryId queryId) {
this.queryId = queryId;
@@ -412,6 +414,14 @@ public class MPPQueryContext {
this.userQuery = userQuery;
}
+ public boolean isDebug() {
+ return debug;
+ }
+
+ public void setDebug(boolean debug) {
+ this.debug = debug;
+ }
+
public boolean needSetHighestPriority() {
return needSetHighestPriority;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FakedFragmentInstanceContext.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FakedFragmentInstanceContext.java
index a76ca60fd5c..a2641b881b2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FakedFragmentInstanceContext.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FakedFragmentInstanceContext.java
@@ -35,7 +35,7 @@ import java.util.List;
public class FakedFragmentInstanceContext extends FragmentInstanceContext {
public FakedFragmentInstanceContext(Filter timeFilter, DataRegion dataRegion) {
- super(0, new FakedMemoryReservationManager(), timeFilter, dataRegion);
+ super(0, new FakedMemoryReservationManager(), timeFilter, dataRegion, false);
}
public QueryDataSource getSharedQueryDataSource(PartialPath sourcePath)
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
index a224e5b2c35..7ec557a7bb6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
@@ -156,9 +156,12 @@ public class FragmentInstanceContext extends QueryContext {
private boolean highestPriority = false;
public static FragmentInstanceContext createFragmentInstanceContext(
- FragmentInstanceId id, FragmentInstanceStateMachine stateMachine, SessionInfo sessionInfo) {
+ FragmentInstanceId id,
+ FragmentInstanceStateMachine stateMachine,
+ SessionInfo sessionInfo,
+ boolean debug) {
FragmentInstanceContext instanceContext =
- new FragmentInstanceContext(id, stateMachine, sessionInfo);
+ new FragmentInstanceContext(id, stateMachine, sessionInfo, debug);
instanceContext.initialize();
instanceContext.start();
return instanceContext;
@@ -169,9 +172,10 @@ public class FragmentInstanceContext extends QueryContext {
FragmentInstanceStateMachine stateMachine,
SessionInfo sessionInfo,
IDataRegionForQuery dataRegion,
- Filter timeFilter) {
+ Filter timeFilter,
+ boolean debug) {
FragmentInstanceContext instanceContext =
- new FragmentInstanceContext(id, stateMachine, sessionInfo, dataRegion, timeFilter);
+ new FragmentInstanceContext(id, stateMachine, sessionInfo, dataRegion, timeFilter, debug);
instanceContext.initialize();
instanceContext.start();
return instanceContext;
@@ -183,7 +187,8 @@ public class FragmentInstanceContext extends QueryContext {
SessionInfo sessionInfo,
IDataRegionForQuery dataRegion,
TimePredicate globalTimePredicate,
- Map<QueryId, DataNodeQueryContext> dataNodeQueryContextMap) {
+ Map<QueryId, DataNodeQueryContext> dataNodeQueryContextMap,
+ boolean debug) {
FragmentInstanceContext instanceContext =
new FragmentInstanceContext(
id,
@@ -191,14 +196,15 @@ public class FragmentInstanceContext extends QueryContext {
sessionInfo,
dataRegion,
globalTimePredicate,
- dataNodeQueryContextMap);
+ dataNodeQueryContextMap,
+ debug);
instanceContext.initialize();
instanceContext.start();
return instanceContext;
}
public static FragmentInstanceContext createFragmentInstanceContextForCompaction(long queryId) {
- return new FragmentInstanceContext(queryId, null, null, null);
+ return new FragmentInstanceContext(queryId, null, null, null, false);
}
public void setQueryDataSourceType(QueryDataSourceType queryDataSourceType) {
@@ -210,7 +216,7 @@ public class FragmentInstanceContext extends QueryContext {
FragmentInstanceId id, FragmentInstanceStateMachine stateMachine) {
FragmentInstanceContext instanceContext =
new FragmentInstanceContext(
- id, stateMachine, new SessionInfo(1, "test", ZoneId.systemDefault(), ""));
+ id, stateMachine, new SessionInfo(1, "test", ZoneId.systemDefault(), ""), false);
instanceContext.initialize();
instanceContext.start();
return instanceContext;
@@ -226,7 +232,8 @@ public class FragmentInstanceContext extends QueryContext {
id,
stateMachine,
new SessionInfo(1, "test", ZoneId.systemDefault(), ""),
- memoryReservationManager);
+ memoryReservationManager,
+ false);
instanceContext.initialize();
instanceContext.start();
return instanceContext;
@@ -238,7 +245,9 @@ public class FragmentInstanceContext extends QueryContext {
SessionInfo sessionInfo,
IDataRegionForQuery dataRegion,
TimePredicate globalTimePredicate,
- Map<QueryId, DataNodeQueryContext> dataNodeQueryContextMap) {
+ Map<QueryId, DataNodeQueryContext> dataNodeQueryContextMap,
+ boolean debug) {
+ super(debug);
this.id = id;
this.stateMachine = stateMachine;
this.executionEndTime.set(END_TIME_INITIAL_VALUE);
@@ -253,7 +262,11 @@ public class FragmentInstanceContext extends QueryContext {
}
private FragmentInstanceContext(
- FragmentInstanceId id, FragmentInstanceStateMachine stateMachine, SessionInfo sessionInfo) {
+ FragmentInstanceId id,
+ FragmentInstanceStateMachine stateMachine,
+ SessionInfo sessionInfo,
+ boolean debug) {
+ super(debug);
this.id = id;
this.stateMachine = stateMachine;
this.executionEndTime.set(END_TIME_INITIAL_VALUE);
@@ -268,7 +281,9 @@ public class FragmentInstanceContext extends QueryContext {
FragmentInstanceId id,
FragmentInstanceStateMachine stateMachine,
SessionInfo sessionInfo,
- MemoryReservationManager memoryReservationManager) {
+ MemoryReservationManager memoryReservationManager,
+ boolean debug) {
+ super(debug);
this.id = id;
this.stateMachine = stateMachine;
this.executionEndTime.set(END_TIME_INITIAL_VALUE);
@@ -283,7 +298,9 @@ public class FragmentInstanceContext extends QueryContext {
FragmentInstanceStateMachine stateMachine,
SessionInfo sessionInfo,
IDataRegionForQuery dataRegion,
- Filter globalTimeFilter) {
+ Filter globalTimeFilter,
+ boolean debug) {
+ super(debug);
this.id = id;
this.stateMachine = stateMachine;
this.executionEndTime.set(END_TIME_INITIAL_VALUE);
@@ -305,7 +322,9 @@ public class FragmentInstanceContext extends QueryContext {
long queryId,
MemoryReservationManager memoryReservationManager,
Filter timeFilter,
- DataRegion dataRegion) {
+ DataRegion dataRegion,
+ boolean debug) {
+ super(debug);
this.queryId = queryId;
this.id = null;
this.stateMachine = null;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java
index 9dacdf44d88..93b562444bf 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java
@@ -157,7 +157,8 @@ public class FragmentInstanceManager {
instance.getSessionInfo(),
dataRegion,
instance.getGlobalTimePredicate(),
- dataNodeQueryContextMap));
+ dataNodeQueryContextMap,
+ instance.isDebug()));
context.setHighestPriority(instance.isHighestPriority());
try {
@@ -259,7 +260,10 @@ public class FragmentInstanceManager {
instanceId,
fragmentInstanceId ->
createFragmentInstanceContext(
- fragmentInstanceId, stateMachine, instance.getSessionInfo()));
+ fragmentInstanceId,
+ stateMachine,
+ instance.getSessionInfo(),
+ instance.isDebug()));
context.setHighestPriority(instance.isHighestPriority());
try {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryContext.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryContext.java
index d1b235ff7b1..b0022ddb26a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryContext.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryContext.java
@@ -60,7 +60,7 @@ public class QueryContext {
protected long queryId;
- private boolean debug;
+ private final boolean debug;
private long startTime;
private long timeout;
@@ -72,10 +72,12 @@ public class QueryContext {
// referenced TVLists for the query
protected final Set<TVList> tvListSet = new HashSet<>();
- public QueryContext() {}
+ public QueryContext(boolean debug) {
+ this.debug = debug;
+ }
- public QueryContext(long queryId) {
- this(queryId, false, System.currentTimeMillis(), 0);
+ public QueryContext(long queryId, boolean debug) {
+ this(queryId, debug, System.currentTimeMillis(), 0);
}
/** Every time we generate the queryContext, register it to queryTimeManager. */
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java
index 2f173861f22..29e6dc07b87 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java
@@ -60,6 +60,8 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.function.BiFunction;
+import java.util.function.LongSupplier;
+import java.util.function.Supplier;
import static org.apache.iotdb.commons.utils.StatusUtils.needRetry;
import static org.apache.iotdb.db.utils.CommonUtils.getContentOfRequest;
@@ -82,6 +84,8 @@ public class Coordinator {
private static final Logger SAMPLED_QUERIES_LOGGER =
LoggerFactory.getLogger(IoTDBConstant.SAMPLED_QUERIES_LOGGER_NAME);
+ private static final Logger DEBUG_LOGGER = LoggerFactory.getLogger("QUERY_DEBUG");
+
private static final IClientManager<TEndPoint, SyncDataNodeInternalServiceClient>
SYNC_INTERNAL_SERVICE_CLIENT_MANAGER =
new IClientManager.Factory<TEndPoint, SyncDataNodeInternalServiceClient>()
@@ -124,6 +128,7 @@ public class Coordinator {
SessionInfo session,
String sql,
boolean userQuery,
+ boolean debug,
BiFunction<MPPQueryContext, Long, IQueryExecution> iQueryExecutionFactory) {
long startTime = System.currentTimeMillis();
QueryId globalQueryId = queryIdGenerator.createNextQueryId();
@@ -141,6 +146,7 @@ public class Coordinator {
DataNodeEndPoints.LOCAL_HOST_DATA_BLOCK_ENDPOINT,
DataNodeEndPoints.LOCAL_HOST_INTERNAL_ENDPOINT);
queryContext.setUserQuery(userQuery);
+ queryContext.setDebug(debug);
IQueryExecution execution = iQueryExecutionFactory.apply(queryContext, startTime);
if (execution.isQuery()) {
queryExecutionMap.put(queryId, execution);
@@ -172,7 +178,15 @@ public class Coordinator {
IPartitionFetcher partitionFetcher,
ISchemaFetcher schemaFetcher) {
return executeForTreeModel(
- statement, queryId, session, sql, partitionFetcher, schemaFetcher, Long.MAX_VALUE, false);
+ statement,
+ queryId,
+ session,
+ sql,
+ partitionFetcher,
+ schemaFetcher,
+ Long.MAX_VALUE,
+ false,
+ statement.isDebug());
}
public ExecutionResult executeForTreeModel(
@@ -183,12 +197,14 @@ public class Coordinator {
IPartitionFetcher partitionFetcher,
ISchemaFetcher schemaFetcher,
long timeOut,
- boolean userQuery) {
+ boolean userQuery,
+ boolean debug) {
return execution(
queryId,
session,
sql,
userQuery,
+ debug,
((queryContext, startTime) ->
createQueryExecutionForTreeModel(
statement,
@@ -227,6 +243,29 @@ public class Coordinator {
return new QueryExecution(treeModelPlanner, queryContext, executor);
}
+ /** For compatibility of MQTT and REST, this method should never be called. */
+ @Deprecated
+ public ExecutionResult executeForTreeModel(
+ Statement statement,
+ long queryId,
+ SessionInfo sessionInfo,
+ String s,
+ IPartitionFetcher partitionFetcher,
+ ISchemaFetcher schemaFetcher,
+ long queryTimeoutThreshold,
+ boolean isUserQuery) {
+ return executeForTreeModel(
+ statement,
+ queryId,
+ sessionInfo,
+ s,
+ partitionFetcher,
+ schemaFetcher,
+ queryTimeoutThreshold,
+ isUserQuery,
+ false);
+ }
+
public IQueryExecution getQueryExecution(Long queryId) {
return queryExecutionMap.get(queryId);
}
@@ -263,27 +302,11 @@ public class Coordinator {
LOGGER.debug("[CleanUpQuery]]");
queryExecution.stopAndCleanup(t);
if (queryExecution.isQuery() && queryExecution.isUserQuery()) {
- long costTime = queryExecution.getTotalExecutionTime();
- // print slow query
- if (costTime / 1_000_000 >= CONFIG.getSlowQueryThreshold()) {
- SLOW_SQL_LOGGER.info(
- "Cost: {} ms, {}",
- costTime / 1_000_000,
- getContentOfRequest(nativeApiRequest, queryExecution));
- }
-
- // only sample successful query
- if (t == null && COMMON_CONFIG.isEnableQuerySampling()) { // sampling is enabled
- String queryRequest = getContentOfRequest(nativeApiRequest, queryExecution);
- if (COMMON_CONFIG.isQuerySamplingHasRateLimit()) {
- if (COMMON_CONFIG.getQuerySamplingRateLimiter().tryAcquire(queryRequest.length())) {
- SAMPLED_QUERIES_LOGGER.info(queryRequest);
- }
- } else {
- // no limit, always sampled
- SAMPLED_QUERIES_LOGGER.info(queryRequest);
- }
- }
+ recordQueries(
+ queryExecution::getTotalExecutionTime,
+ () -> getContentOfRequest(nativeApiRequest, queryExecution),
+ t,
+ queryExecution.isDebug());
}
}
}
@@ -318,6 +341,37 @@ public class Coordinator {
});
}
+ public static void recordQueries(
+ LongSupplier executionTime,
+ Supplier<String> contentOfQuerySupplier,
+ Throwable t,
+ boolean debug) {
+
+ long costTime = executionTime.getAsLong();
+ // print slow query
+ if (costTime / 1_000_000 >= CONFIG.getSlowQueryThreshold()) {
+ SLOW_SQL_LOGGER.info("Cost: {} ms, {}", costTime / 1_000_000, contentOfQuerySupplier.get());
+ }
+
+ // always print the query when debug is true
+ if (debug) {
+ DEBUG_LOGGER.info(contentOfQuerySupplier.get());
+ }
+
+ // only sample successful query
+ if (t == null && COMMON_CONFIG.isEnableQuerySampling()) { // sampling is enabled
+ String queryRequest = contentOfQuerySupplier.get();
+ if (COMMON_CONFIG.isQuerySamplingHasRateLimit()) {
+ if (COMMON_CONFIG.getQuerySamplingRateLimiter().tryAcquire(queryRequest.length())) {
+ SAMPLED_QUERIES_LOGGER.info(queryRequest);
+ }
+ } else {
+ // no limit, always sampled
+ SAMPLED_QUERIES_LOGGER.info(queryRequest);
+ }
+ }
+ }
+
public void cleanupQueryExecution(Long queryId) {
cleanupQueryExecution(queryId, null, null);
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/AutoCreateSchemaExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/AutoCreateSchemaExecutor.java
index e7fa45be64a..583afac0e63 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/AutoCreateSchemaExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/AutoCreateSchemaExecutor.java
@@ -95,6 +95,7 @@ class AutoCreateSchemaExecutor {
context == null || context.getQueryType().equals(QueryType.WRITE)
? config.getQueryTimeoutThreshold()
: context.getTimeOut(),
+ false,
false);
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ClusterSchemaFetchExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ClusterSchemaFetchExecutor.java
index 7a30a6fa50f..84db7e7cb03 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ClusterSchemaFetchExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ClusterSchemaFetchExecutor.java
@@ -94,7 +94,8 @@ class ClusterSchemaFetchExecutor {
ClusterPartitionFetcher.getInstance(),
schemaFetcher,
timeout,
- false);
+ false,
+ statement.isDebug());
}
/**
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/IQueryExecution.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/IQueryExecution.java
index 09f25a781e1..d41db48afec 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/IQueryExecution.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/IQueryExecution.java
@@ -95,4 +95,6 @@ public interface IQueryExecution {
Optional<String> getExecuteSQL();
String getStatementType();
+
+ boolean isDebug();
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
index 5af143bfca8..abc38479705 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
@@ -708,6 +708,11 @@ public class QueryExecution implements IQueryExecution {
return analysis.getStatementType();
}
+ @Override
+ public boolean isDebug() {
+ return context.isDebug();
+ }
+
public MPPQueryContext getContext() {
return context;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
index e3cf2408f06..86bb3b0ad2d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
@@ -285,4 +285,9 @@ public class ConfigExecution implements IQueryExecution {
public String getStatementType() {
return statementType.name();
}
+
+ @Override
+ public boolean isDebug() {
+ return context.isDebug();
+ }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
index d582832864a..9b30d069fdb 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
@@ -2520,6 +2520,7 @@ public class ClusterConfigTaskExecutor implements IConfigTaskExecutor {
ClusterPartitionFetcher.getInstance(),
ClusterSchemaFetcher.getInstance(),
IoTDBDescriptor.getInstance().getConfig().getQueryTimeoutThreshold(),
+ false,
false);
if (executionResult.status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
future.setException(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SimpleFragmentParallelPlanner.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SimpleFragmentParallelPlanner.java
index e0a193b63f1..37795a11378 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SimpleFragmentParallelPlanner.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SimpleFragmentParallelPlanner.java
@@ -151,6 +151,7 @@ public class SimpleFragmentParallelPlanner implements IFragmentParallelPlaner {
queryContext.getTimeOut(),
queryContext.getSession(),
queryContext.isExplainAnalyze(),
+ queryContext.isDebug(),
fragment.isRoot());
// Get the target region for origin PlanFragment, then its instance will be distributed one
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/WriteFragmentParallelPlanner.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/WriteFragmentParallelPlanner.java
index 9bc526ee4f5..3d707d552a3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/WriteFragmentParallelPlanner.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/WriteFragmentParallelPlanner.java
@@ -63,7 +63,8 @@ public class WriteFragmentParallelPlanner implements IFragmentParallelPlaner {
analysis.getCovertedTimePredicate(),
queryContext.getQueryType(),
queryContext.getTimeOut(),
- queryContext.getSession());
+ queryContext.getSession(),
+ queryContext.isDebug());
if (split.getRegionReplicaSet() != null) {
instance.setExecutorAndHost(new StorageExecutor(split.getRegionReplicaSet()));
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/FragmentInstance.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/FragmentInstance.java
index b96485199ad..f8dc760f687 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/FragmentInstance.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/FragmentInstance.java
@@ -79,6 +79,8 @@ public class FragmentInstance implements IConsensusRequest {
// We need to cache and calculate the statistics of this FragmentInstance if it is.
private boolean isExplainAnalyze = false;
+ private final boolean debug;
+
// We can add some more params for a specific FragmentInstance
// So that we can make different FragmentInstance owns different data range.
@@ -88,7 +90,8 @@ public class FragmentInstance implements IConsensusRequest {
TimePredicate globalTimePredicate,
QueryType type,
long timeOut,
- SessionInfo sessionInfo) {
+ SessionInfo sessionInfo,
+ boolean debug) {
this.fragment = fragment;
this.globalTimePredicate = globalTimePredicate;
this.id = id;
@@ -96,6 +99,7 @@ public class FragmentInstance implements IConsensusRequest {
this.timeOut = timeOut > 0 ? timeOut : CONFIG.getQueryTimeoutThreshold();
this.isRoot = false;
this.sessionInfo = sessionInfo;
+ this.debug = debug;
}
public FragmentInstance(
@@ -106,8 +110,9 @@ public class FragmentInstance implements IConsensusRequest {
long timeOut,
SessionInfo sessionInfo,
boolean isExplainAnalyze,
+ boolean debug,
boolean isRoot) {
- this(fragment, id, globalTimePredicate, type, timeOut, sessionInfo);
+ this(fragment, id, globalTimePredicate, type, timeOut, sessionInfo, debug);
this.isRoot = isRoot;
this.isExplainAnalyze = isExplainAnalyze;
}
@@ -119,8 +124,9 @@ public class FragmentInstance implements IConsensusRequest {
QueryType type,
long timeOut,
SessionInfo sessionInfo,
- int dataNodeFINum) {
- this(fragment, id, globalTimePredicate, type, timeOut, sessionInfo);
+ int dataNodeFINum,
+ boolean debug) {
+ this(fragment, id, globalTimePredicate, type, timeOut, sessionInfo, debug);
this.dataNodeFINum = dataNodeFINum;
}
@@ -187,6 +193,10 @@ public class FragmentInstance implements IConsensusRequest {
this.dataNodeFINum = dataNodeFINum;
}
+ public boolean isDebug() {
+ return debug;
+ }
+
public String toString() {
StringBuilder ret = new StringBuilder();
ret.append(String.format("FragmentInstance-%s:", getId()));
@@ -216,9 +226,17 @@ public class FragmentInstance implements IConsensusRequest {
TimePredicate globalTimePredicate = hasTimePredicate ? TimePredicate.deserialize(buffer) : null;
QueryType queryType = QueryType.values()[ReadWriteIOUtils.readInt(buffer)];
int dataNodeFINum = ReadWriteIOUtils.readInt(buffer);
+ boolean debug = ReadWriteIOUtils.readBool(buffer);
FragmentInstance fragmentInstance =
new FragmentInstance(
- planFragment, id, globalTimePredicate, queryType, timeOut, sessionInfo, dataNodeFINum);
+ planFragment,
+ id,
+ globalTimePredicate,
+ queryType,
+ timeOut,
+ sessionInfo,
+ dataNodeFINum,
+ debug);
boolean hasHostDataNode = ReadWriteIOUtils.readBool(buffer);
fragmentInstance.hostDataNode =
hasHostDataNode ? ThriftCommonsSerDeUtils.deserializeTDataNodeLocation(buffer) : null;
@@ -243,6 +261,7 @@ public class FragmentInstance implements IConsensusRequest {
}
ReadWriteIOUtils.write(type.ordinal(), outputStream);
ReadWriteIOUtils.write(dataNodeFINum, outputStream);
+ ReadWriteIOUtils.write(debug, outputStream);
ReadWriteIOUtils.write(hostDataNode != null, outputStream);
if (hostDataNode != null) {
ThriftCommonsSerDeUtils.serializeTDataNodeLocation(hostDataNode, outputStream);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/load/LoadTsFileScheduler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/load/LoadTsFileScheduler.java
index 5cafe3b8384..7dd2a5d551a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/load/LoadTsFileScheduler.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/load/LoadTsFileScheduler.java
@@ -339,7 +339,8 @@ public class LoadTsFileScheduler implements IScheduler {
null,
queryContext.getQueryType(),
queryContext.getTimeOut(),
- queryContext.getSession());
+ queryContext.getSession(),
+ queryContext.isDebug());
instance.setExecutorAndHost(new StorageExecutor(replicaSet));
Future<FragInstanceDispatchResult> dispatchResultFuture =
dispatcher.dispatch(null, Collections.singletonList(instance));
@@ -473,7 +474,8 @@ public class LoadTsFileScheduler implements IScheduler {
null,
queryContext.getQueryType(),
queryContext.getTimeOut(),
- queryContext.getSession());
+ queryContext.getSession(),
+ queryContext.isDebug());
instance.setExecutorAndHost(new StorageExecutor(node.getLocalRegionReplicaSet()));
dispatcher.dispatchLocally(instance);
} catch (FragmentInstanceDispatchException e) {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadTsFileLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadTsFileLoader.java
index a228ef6c651..f20f7c0ed48 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadTsFileLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadTsFileLoader.java
@@ -248,7 +248,8 @@ public class ActiveLoadTsFileLoader {
ClusterPartitionFetcher.getInstance(),
ClusterSchemaFetcher.getInstance(),
IOTDB_CONFIG.getQueryTimeoutThreshold(),
- false)
+ false,
+ statement.isDebug())
.status;
} finally {
SESSION_MANAGER.removeCurrSession();
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTsFileDataTypeConverter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTsFileDataTypeConverter.java
index e46e25c5f7f..ad7e79e8f2c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTsFileDataTypeConverter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTsFileDataTypeConverter.java
@@ -109,6 +109,7 @@ public class LoadTsFileDataTypeConverter {
ClusterPartitionFetcher.getInstance(),
ClusterSchemaFetcher.getInstance(),
IoTDBDescriptor.getInstance().getConfig().getQueryTimeoutThreshold(),
+ false,
false)
.status;
} finally {
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MergeSortOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MergeSortOperatorTest.java
index 76ec370ad98..25137cee4d7 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MergeSortOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MergeSortOperatorTest.java
@@ -1882,5 +1882,10 @@ public class MergeSortOperatorTest {
public boolean isUserQuery() {
return false;
}
+
+ @Override
+ public boolean isDebug() {
+ return false;
+ }
}
}
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/FragmentInstanceSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/FragmentInstanceSerdeTest.java
index e435468f533..3ee4cb56fe4 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/FragmentInstanceSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/FragmentInstanceSerdeTest.java
@@ -77,7 +77,8 @@ public class FragmentInstanceSerdeTest {
new TreeModelTimePredicate(ExpressionFactory.groupByTime(1, 2, 3, 4)),
QueryType.READ,
config.getQueryTimeoutThreshold(),
- sessionInfo);
+ sessionInfo,
+ false);
// test FI with StorageExecutor
TRegionReplicaSet regionReplicaSet =
new TRegionReplicaSet(
@@ -119,7 +120,8 @@ public class FragmentInstanceSerdeTest {
null,
QueryType.READ,
config.getQueryTimeoutThreshold(),
- sessionInfo);
+ sessionInfo,
+ false);
TRegionReplicaSet regionReplicaSet =
new TRegionReplicaSet(
new TConsensusGroupId(TConsensusGroupType.DataRegion, 1),
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemChunkDeserializeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemChunkDeserializeTest.java
index 04a81ee1866..4ac89010d31 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemChunkDeserializeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemChunkDeserializeTest.java
@@ -302,7 +302,7 @@ public class MemChunkDeserializeTest {
memTableMap.put(deviceID, memChunkGroup);
IMemTable memTable = new PrimitiveMemTable(storageGroup, dataRegionId, memTableMap);
- QueryContext context = new QueryContext();
+ QueryContext context = new QueryContext(false);
MeasurementPath nonAlignedFullPath =
new MeasurementPath(
deviceID,
@@ -327,7 +327,7 @@ public class MemChunkDeserializeTest {
memTableMap.put(deviceID, memChunkGroup);
IMemTable memTable = new PrimitiveMemTable(storageGroup, dataRegionId, memTableMap);
- QueryContext context = new QueryContext();
+ QueryContext context = new QueryContext(false);
AlignedPath alignedFullPath = new AlignedPath("d1", measurementList, schemaList);
return memTable.query(context, alignedFullPath, Long.MIN_VALUE, null, null);
}
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/PrimitiveMemTableTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/PrimitiveMemTableTest.java
index b9259db0a0f..34f0fa6ba43 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/PrimitiveMemTableTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/PrimitiveMemTableTest.java
@@ -117,7 +117,7 @@ public class PrimitiveMemTableTest {
tvListQueryMap.put(series.getWorkingTVList(), series.getWorkingTVList().rowCount());
ReadOnlyMemChunk readableChunk =
new ReadOnlyMemChunk(
- new QueryContext(), "s1", dataType, TSEncoding.PLAIN, tvListQueryMap, null, null);
+ new QueryContext(false), "s1", dataType, TSEncoding.PLAIN, tvListQueryMap, null, null);
IPointReader it = readableChunk.getPointReader();
int i = 0;
while (it.hasNextTimeValuePair()) {
@@ -162,7 +162,7 @@ public class PrimitiveMemTableTest {
new AlignedPath("root.test.d1", Arrays.asList("s1", "s2", "s3"), measurementSchemas));
ReadOnlyMemChunk readOnlyMemChunk =
resourcesByPathUtils.getReadOnlyMemChunkFromMemTable(
- new QueryContext(1), memTable, null, Long.MAX_VALUE, null);
+ new QueryContext(1, false), memTable, null, Long.MAX_VALUE, null);
for (int i = 1; i <= 50; i++) {
memTable.writeAlignedRow(
@@ -206,7 +206,7 @@ public class PrimitiveMemTableTest {
new AlignedPath("root.test.d1", Arrays.asList("s1", "s2", "s3"), measurementSchemas));
ReadOnlyMemChunk readOnlyMemChunk =
resourcesByPathUtils.getReadOnlyMemChunkFromMemTable(
- new QueryContext(), memTable, null, Long.MAX_VALUE, null);
+ new QueryContext(false), memTable, null, Long.MAX_VALUE, null);
for (int i = 1; i <= 50; i++) {
memTable.writeAlignedRow(
@@ -343,7 +343,7 @@ public class PrimitiveMemTableTest {
CompressionType.UNCOMPRESSED,
Collections.emptyMap()));
ReadOnlyMemChunk memChunk =
- memTable.query(new QueryContext(), fullPath, Long.MIN_VALUE, null, null);
+ memTable.query(new QueryContext(false), fullPath, Long.MIN_VALUE, null, null);
IPointReader iterator = memChunk.getPointReader();
for (int i = 0; i < dataSize; i++) {
iterator.hasNextTimeValuePair();
@@ -445,7 +445,7 @@ public class PrimitiveMemTableTest {
new Deletion(new PartialPath(deviceId, measurementId[0]), Long.MAX_VALUE, 10, dataSize);
modsToMemtable.add(new Pair<>(deletion, memTable));
ReadOnlyMemChunk memChunk =
- memTable.query(new QueryContext(), fullPath, Long.MIN_VALUE, modsToMemtable, null);
+ memTable.query(new QueryContext(false), fullPath, Long.MIN_VALUE, modsToMemtable, null);
IPointReader iterator = memChunk.getPointReader();
int cnt = 0;
while (iterator.hasNextTimeValuePair()) {
@@ -501,7 +501,7 @@ public class PrimitiveMemTableTest {
new Deletion(new PartialPath(deviceId, measurementId[0]), Long.MAX_VALUE, 10, dataSize);
modsToMemtable.add(new Pair<>(deletion, memTable));
ReadOnlyMemChunk memChunk =
- memTable.query(new QueryContext(), fullPath, Long.MIN_VALUE, modsToMemtable, null);
+ memTable.query(new QueryContext(false), fullPath, Long.MIN_VALUE, modsToMemtable, null);
IPointReader iterator = memChunk.getPointReader();
int cnt = 0;
while (iterator.hasNextTimeValuePair()) {
@@ -541,7 +541,9 @@ public class PrimitiveMemTableTest {
CompressionType.UNCOMPRESSED,
Collections.emptyMap()));
IPointReader tvPair =
- memTable.query(new QueryContext(), fullPath, Long.MIN_VALUE, null, null).getPointReader();
+ memTable
+ .query(new QueryContext(false), fullPath, Long.MIN_VALUE, null, null)
+ .getPointReader();
Arrays.sort(ret);
TimeValuePair last = null;
for (int i = 0; i < ret.length; i++) {
@@ -587,7 +589,7 @@ public class PrimitiveMemTableTest {
CompressionType.UNCOMPRESSED,
Collections.emptyMap())));
IPointReader tvPair =
- memTable.query(new QueryContext(), fullPath, Long.MIN_VALUE, null, null).getPointReader();
+ memTable.query(new QueryContext(false), fullPath, Long.MIN_VALUE, null, null).getPointReader();
for (int i = 0; i < 100; i++) {
tvPair.hasNextTimeValuePair();
TimeValuePair next = tvPair.nextTimeValuePair();
@@ -614,7 +616,7 @@ public class PrimitiveMemTableTest {
Collections.emptyMap())));
tvPair =
- memTable.query(new QueryContext(), fullPath, Long.MIN_VALUE, null, null).getPointReader();
+ memTable.query(new QueryContext(false), fullPath, Long.MIN_VALUE, null, null).getPointReader();
for (int i = 0; i < 100; i++) {
tvPair.hasNextTimeValuePair();
TimeValuePair next = tvPair.nextTimeValuePair();
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkLoaderTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkLoaderTest.java
index 87c6e28ea55..02a3fc90e38 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkLoaderTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkLoaderTest.java
@@ -63,7 +63,7 @@ public class MemAlignedChunkLoaderTest {
public void testMemAlignedChunkLoader() throws IOException {
AlignedReadOnlyMemChunk chunk = Mockito.mock(AlignedReadOnlyMemChunk.class);
ChunkMetadata chunkMetadata = Mockito.mock(ChunkMetadata.class);
- QueryContext ctx = new QueryContext();
+ QueryContext ctx = new QueryContext(false);
MemAlignedChunkLoader memAlignedChunkLoader = new MemAlignedChunkLoader(ctx, chunk);
try {
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkLoaderTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkLoaderTest.java
index e852c656253..c8102c8eb59 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkLoaderTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkLoaderTest.java
@@ -75,7 +75,7 @@ public class MemChunkLoaderTest {
Mockito.when(chunk.getMemPointIterator()).thenReturn(timeValuePairIterator);
ChunkMetadata chunkMetadata = Mockito.mock(ChunkMetadata.class);
- MemChunkLoader memChunkLoader = new MemChunkLoader(new QueryContext(), chunk);
+ MemChunkLoader memChunkLoader = new MemChunkLoader(new QueryContext(false), chunk);
try {
memChunkLoader.loadChunk(chunkMetadata);
fail();
@@ -154,7 +154,7 @@ public class MemChunkLoaderTest {
Mockito.when(chunk.getMemPointIterator()).thenReturn(timeValuePairIterator);
ChunkMetadata chunkMetadata = Mockito.mock(ChunkMetadata.class);
- MemChunkLoader memChunkLoader = new MemChunkLoader(new QueryContext(), chunk);
+ MemChunkLoader memChunkLoader = new MemChunkLoader(new QueryContext(false), chunk);
try {
memChunkLoader.loadChunk(chunkMetadata);
fail();
@@ -234,7 +234,7 @@ public class MemChunkLoaderTest {
Mockito.when(chunk.getMemPointIterator()).thenReturn(timeValuePairIterator);
ChunkMetadata chunkMetadata = Mockito.mock(ChunkMetadata.class);
- MemChunkLoader memChunkLoader = new MemChunkLoader(new QueryContext(), chunk);
+ MemChunkLoader memChunkLoader = new MemChunkLoader(new QueryContext(false), chunk);
try {
memChunkLoader.loadChunk(chunkMetadata);
fail();
@@ -314,7 +314,7 @@ public class MemChunkLoaderTest {
Mockito.when(chunk.getMemPointIterator()).thenReturn(timeValuePairIterator);
ChunkMetadata chunkMetadata = Mockito.mock(ChunkMetadata.class);
- MemChunkLoader memChunkLoader = new MemChunkLoader(new QueryContext(), chunk);
+ MemChunkLoader memChunkLoader = new MemChunkLoader(new QueryContext(false), chunk);
try {
memChunkLoader.loadChunk(chunkMetadata);
fail();
@@ -394,7 +394,7 @@ public class MemChunkLoaderTest {
Mockito.when(chunk.getMemPointIterator()).thenReturn(timeValuePairIterator);
ChunkMetadata chunkMetadata = Mockito.mock(ChunkMetadata.class);
- MemChunkLoader memChunkLoader = new MemChunkLoader(new QueryContext(), chunk);
+ MemChunkLoader memChunkLoader = new MemChunkLoader(new QueryContext(false), chunk);
try {
memChunkLoader.loadChunk(chunkMetadata);
fail();
@@ -474,7 +474,7 @@ public class MemChunkLoaderTest {
Mockito.when(chunk.getMemPointIterator()).thenReturn(timeValuePairIterator);
ChunkMetadata chunkMetadata = Mockito.mock(ChunkMetadata.class);
- MemChunkLoader memChunkLoader = new MemChunkLoader(new QueryContext(), chunk);
+ MemChunkLoader memChunkLoader = new MemChunkLoader(new QueryContext(false), chunk);
try {
memChunkLoader.loadChunk(chunkMetadata);
fail();
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/TsFilePlanRedoerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/TsFilePlanRedoerTest.java
index fae5ee647a8..acbaaae6620 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/TsFilePlanRedoerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/TsFilePlanRedoerTest.java
@@ -156,7 +156,7 @@ public class TsFilePlanRedoerTest {
new MeasurementPath(
DEVICE2_NAME, "s1", new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
ReadOnlyMemChunk memChunk =
- recoveryMemTable.query(new QueryContext(), fullPath, Long.MIN_VALUE, null, null);
+ recoveryMemTable.query(new QueryContext(false), fullPath, Long.MIN_VALUE, null, null);
IPointReader iterator = memChunk.getPointReader();
time = 5;
while (iterator.hasNextTimeValuePair()) {
@@ -170,7 +170,8 @@ public class TsFilePlanRedoerTest {
fullPath =
new MeasurementPath(
DEVICE2_NAME, "s2", new MeasurementSchema("s2", TSDataType.DOUBLE, TSEncoding.RLE));
- memChunk = recoveryMemTable.query(new QueryContext(), fullPath, Long.MIN_VALUE, null, null);
+ memChunk =
+ recoveryMemTable.query(new QueryContext(false), fullPath, Long.MIN_VALUE, null, null);
iterator = memChunk.getPointReader();
time = 5;
while (iterator.hasNextTimeValuePair()) {
@@ -256,7 +257,7 @@ public class TsFilePlanRedoerTest {
new MeasurementSchema("s4", TSDataType.FLOAT, TSEncoding.RLE),
new MeasurementSchema("s5", TSDataType.TEXT, TSEncoding.PLAIN)));
ReadOnlyMemChunk memChunk =
- recoveryMemTable.query(new QueryContext(), fullPath, Long.MIN_VALUE, null, null);
+ recoveryMemTable.query(new QueryContext(false), fullPath, Long.MIN_VALUE, null, null);
IPointReader iterator = memChunk.getPointReader();
int time = 6;
while (iterator.hasNextTimeValuePair()) {
@@ -336,7 +337,7 @@ public class TsFilePlanRedoerTest {
new MeasurementPath(
DEVICE1_NAME, "s1", new MeasurementSchema("s1", TSDataType.INT32, TSEncoding.RLE));
ReadOnlyMemChunk memChunk =
- recoveryMemTable.query(new QueryContext(), fullPath, Long.MIN_VALUE, null, null);
+ recoveryMemTable.query(new QueryContext(false), fullPath, Long.MIN_VALUE, null, null);
IPointReader iterator = memChunk.getPointReader();
int time = 5;
while (iterator.hasNextTimeValuePair()) {
@@ -350,7 +351,8 @@ public class TsFilePlanRedoerTest {
fullPath =
new MeasurementPath(
DEVICE1_NAME, "s2", new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.RLE));
- memChunk = recoveryMemTable.query(new QueryContext(), fullPath, Long.MIN_VALUE, null, null);
+ memChunk =
+ recoveryMemTable.query(new QueryContext(false), fullPath, Long.MIN_VALUE, null, null);
iterator = memChunk.getPointReader();
time = 5;
while (iterator.hasNextTimeValuePair()) {
@@ -449,7 +451,7 @@ public class TsFilePlanRedoerTest {
new MeasurementSchema("s4", TSDataType.FLOAT, TSEncoding.RLE),
new MeasurementSchema("s5", TSDataType.TEXT, TSEncoding.PLAIN)));
ReadOnlyMemChunk memChunk =
- recoveryMemTable.query(new QueryContext(), fullPath, Long.MIN_VALUE, null, null);
+ recoveryMemTable.query(new QueryContext(false), fullPath, Long.MIN_VALUE, null, null);
IPointReader iterator = memChunk.getPointReader();
int time = 6;
while (iterator.hasNextTimeValuePair()) {
@@ -571,13 +573,14 @@ public class TsFilePlanRedoerTest {
new MeasurementPath(
DEVICE1_NAME, "s1", new MeasurementSchema("s1", TSDataType.INT32, TSEncoding.RLE));
ReadOnlyMemChunk memChunk =
- recoveryMemTable.query(new QueryContext(), fullPath, Long.MIN_VALUE, null, null);
+ recoveryMemTable.query(new QueryContext(false), fullPath, Long.MIN_VALUE, null, null);
assertTrue(memChunk == null || memChunk.isEmpty());
// check d1.s2
fullPath =
new MeasurementPath(
DEVICE1_NAME, "s2", new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.RLE));
- memChunk = recoveryMemTable.query(new QueryContext(), fullPath, Long.MIN_VALUE, null, null);
+ memChunk =
+ recoveryMemTable.query(new QueryContext(false), fullPath, Long.MIN_VALUE, null, null);
assertTrue(memChunk == null || memChunk.isEmpty());
}
@@ -716,7 +719,7 @@ public class TsFilePlanRedoerTest {
new MeasurementSchema("s4", TSDataType.FLOAT, TSEncoding.RLE),
new MeasurementSchema("s5", TSDataType.TEXT, TSEncoding.PLAIN)));
ReadOnlyMemChunk memChunk =
- recoveryMemTable.query(new QueryContext(), fullPath, Long.MIN_VALUE, null, null);
+ recoveryMemTable.query(new QueryContext(false), fullPath, Long.MIN_VALUE, null, null);
IPointReader iterator = memChunk.getPointReader();
time = 6;
while (iterator.hasNextTimeValuePair()) {
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
index 1291540be05..66f33554c9f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
@@ -82,7 +82,7 @@ public class EnvironmentUtils {
private static final TierManager tierManager = TierManager.getInstance();
public static long TEST_QUERY_JOB_ID = 1;
- public static QueryContext TEST_QUERY_CONTEXT = new QueryContext(TEST_QUERY_JOB_ID);
+ public static QueryContext TEST_QUERY_CONTEXT = new QueryContext(TEST_QUERY_JOB_ID, false);
public static FragmentInstanceContext TEST_QUERY_FI_CONTEXT =
FragmentInstanceContext.createFragmentInstanceContextForCompaction(TEST_QUERY_JOB_ID);
@@ -279,7 +279,7 @@ public class EnvironmentUtils {
DeviceIDFactory.getInstance().reset();
TEST_QUERY_JOB_ID = QueryResourceManager.getInstance().assignQueryId();
- TEST_QUERY_CONTEXT = new QueryContext(TEST_QUERY_JOB_ID);
+ TEST_QUERY_CONTEXT = new QueryContext(TEST_QUERY_JOB_ID, false);
}
private static void createAllDir() {