This is an automated email from the ASF dual-hosted git repository.
qiaojialin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 71d5f65bf9 Add unit test for caculating time partition slot (#7457)
71d5f65bf9 is described below
commit 71d5f65bf9e5bda93d87043ab875373b4fa59ffc
Author: Mrquan <[email protected]>
AuthorDate: Thu Sep 29 09:02:13 2022 +0800
Add unit test for caculating time partition slot (#7457)
---
.../resources/conf/iotdb-confignode.properties | 4 +-
.../iotdb/confignode/conf/ConfigNodeConfig.java | 4 +-
.../thrift/ConfigNodeRPCServiceProcessorTest.java | 2 +-
docs/UserGuide/Data-Concept/Time-Partition.md | 6 +-
.../Reference/ConfigNode-Config-Manual.md | 3 +-
docs/UserGuide/Reference/DataNode-Config-Manual.md | 3 +-
docs/zh/UserGuide/Data-Concept/Time-Partition.md | 8 +--
.../Reference/ConfigNode-Config-Manual.md | 5 +-
.../UserGuide/Reference/DataNode-Config-Manual.md | 12 ++--
.../iotdb/confignode/IoTDBClusterPartitionIT.java | 2 +-
.../resources/conf/iotdb-datanode.properties | 4 +-
.../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 8 +--
.../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 22 ++++++-
.../apache/iotdb/db/engine/StorageEngineV2.java | 4 +-
.../mpp/plan/analyze/FakePartitionFetcherImpl.java | 77 +++++++++++++++++++++-
.../apache/iotdb/db/utils/TimePartitionUtils.java | 19 +-----
.../iotdb/db/mpp/plan/analyze/AnalyzeTest.java | 14 ++++
17 files changed, 145 insertions(+), 52 deletions(-)
diff --git a/confignode/src/assembly/resources/conf/iotdb-confignode.properties
b/confignode/src/assembly/resources/conf/iotdb-confignode.properties
index 420673413a..29be49196e 100644
--- a/confignode/src/assembly/resources/conf/iotdb-confignode.properties
+++ b/confignode/src/assembly/resources/conf/iotdb-confignode.properties
@@ -131,9 +131,9 @@ target_config_nodes=127.0.0.1:22277
# default_ttl=36000000
-# Time partition interval in seconds, default is equal to one day
+# Time partition interval in milliseconds, default is equal to one day
# Datatype: long
-# time_partition_interval_for_routing=86400
+# time_partition_interval_for_routing=86400000
# Default number of SchemaRegion replicas
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
index af1b577a8e..56988a9176 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
@@ -104,8 +104,8 @@ public class ConfigNodeConfig {
private String temporaryLibDir =
IoTDBConstant.EXT_FOLDER_NAME + File.separator +
IoTDBConstant.UDF_TMP_FOLDER_NAME;
- /** Time partition interval in seconds */
- private long timePartitionInterval = 86400;
+ /** Time partition interval in milliseconds */
+ private long timePartitionInterval = 86400000;
/** Default number of SchemaRegion replicas */
private int schemaReplicationFactor = 1;
diff --git
a/confignode/src/test/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessorTest.java
b/confignode/src/test/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessorTest.java
index 5ff8fc8a5c..471a9b5e44 100644
---
a/confignode/src/test/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessorTest.java
+++
b/confignode/src/test/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessorTest.java
@@ -195,7 +195,7 @@ public class ConfigNodeRPCServiceProcessorTest {
Assert.assertEquals(Long.MAX_VALUE, storageGroupSchema.getTTL());
Assert.assertEquals(1, storageGroupSchema.getSchemaReplicationFactor());
Assert.assertEquals(1, storageGroupSchema.getDataReplicationFactor());
- Assert.assertEquals(86400, storageGroupSchema.getTimePartitionInterval());
+ Assert.assertEquals(86400000,
storageGroupSchema.getTimePartitionInterval());
storageGroupSchema = schemaMap.get(sg1);
Assert.assertNotNull(storageGroupSchema);
Assert.assertEquals(sg1, storageGroupSchema.getName());
diff --git a/docs/UserGuide/Data-Concept/Time-Partition.md
b/docs/UserGuide/Data-Concept/Time-Partition.md
index aeb2ae39a6..37b1ca2f88 100644
--- a/docs/UserGuide/Data-Concept/Time-Partition.md
+++ b/docs/UserGuide/Data-Concept/Time-Partition.md
@@ -23,7 +23,7 @@
## Features
-Time partition divides data according to time, and a time partition is used to
save all data within a certain time range. The time partition number is
represented by a natural number. Number 0 means January 1, 1970, it will
increase by one every partition_interval seconds. Time partition number's
calculation formula is timestamp / partition_interval. The main configuration
items are as follows:
+Time partition divides data according to time, and a time partition is used to
save all data within a certain time range. The time partition number is
represented by a natural number. Number 0 means January 1, 1970, it will
increase by one every partition_interval milliseconds. Time partition number's
calculation formula is timestamp / partition_interval. The main configuration
items are as follows:
* enable\_partition
@@ -40,12 +40,12 @@ Time partition divides data according to time, and a time
partition is used to s
|:---:|:-------------------------------------------------------------------------------------------------------|
|Description| Time range for dividing storage group, time series data will be
divided into groups by this time range |
|Type| Int64
|
-|Default| 86400
|
+|Default| 86400000
|
|Effective| Only allowed to be modified in first start up
|
## Configuration example
-Enable time partition and set partition_interval to 86400 (one day), then the
data distribution is shown as the following figure:
+Enable time partition and set partition_interval to 86400000 (one day), then
the data distribution is shown as the following figure:
<img style="width:100%; max-width:800px; max-height:600px; margin-left:auto;
margin-right:auto; display:block;"
src="https://github.com/apache/iotdb-bin-resources/blob/main/docs/UserGuide/Data%20Concept/Time-Partition/time_partition_example.png?raw=true"
alt="time partition example">
diff --git a/docs/UserGuide/Reference/ConfigNode-Config-Manual.md
b/docs/UserGuide/Reference/ConfigNode-Config-Manual.md
index 61aec50a1a..e87858193e 100644
--- a/docs/UserGuide/Reference/ConfigNode-Config-Manual.md
+++ b/docs/UserGuide/Reference/ConfigNode-Config-Manual.md
@@ -250,7 +250,8 @@ The global configuration of cluster is in ConfigNode.
|:---:|:--------------------------------------------------------------|
|Description| Time partition interval of data when ConfigNode allocate data |
|Type| Long |
-|Default| 86400 |
+|Unit| ms |
+|Default| 86400000 |
|Effective| Only allowed to be modified in first start up |
diff --git a/docs/UserGuide/Reference/DataNode-Config-Manual.md
b/docs/UserGuide/Reference/DataNode-Config-Manual.md
index bdfe122316..e671ec8c4c 100644
--- a/docs/UserGuide/Reference/DataNode-Config-Manual.md
+++ b/docs/UserGuide/Reference/DataNode-Config-Manual.md
@@ -547,7 +547,8 @@ The permission definitions are in
${IOTDB\_CONF}/conf/jmx.access.
|:---:|:-------------------------------------------------------------------------------------------------------|
|Description| Time range for dividing storage group, time series data will be
divided into groups by this time range |
|Type| Int64
|
-|Default| 86400
|
+|Unit| ms
|
+|Default| 86400000
|
|Effective| Only allowed to be modified in first start up
|
diff --git a/docs/zh/UserGuide/Data-Concept/Time-Partition.md
b/docs/zh/UserGuide/Data-Concept/Time-Partition.md
index ea481e6e2a..807284b867 100644
--- a/docs/zh/UserGuide/Data-Concept/Time-Partition.md
+++ b/docs/zh/UserGuide/Data-Concept/Time-Partition.md
@@ -23,7 +23,7 @@
## 主要功能
-时间分区按照时间分割数据,一个时间分区用于保存某个时间范围内的所有数据。时间分区编号使用自然数表示,0 表示 1970 年 1 月 1 日,每隔
partition_interval 秒后加一。数据通过计算 timestamp / partition_interval
得到自己所在的时间分区编号,主要配置项如下所示:
+时间分区按照时间分割数据,一个时间分区用于保存某个时间范围内的所有数据。时间分区编号使用自然数表示,0 表示 1970 年 1 月 1 日,每隔
partition_interval 毫秒后加一。数据通过计算 timestamp / partition_interval
得到自己所在的时间分区编号,主要配置项如下所示:
* enable\_partition
@@ -38,14 +38,14 @@
|名字| time\_partition\_interval\_for\_storage |
|:---:|:----------------------------------------|
-|描述| 存储组分区的时间段长度,用户指定的存储组下会使用该时间段进行分区,单位:秒 |
+|描述| 存储组分区的时间段长度,用户指定的存储组下会使用该时间段进行分区,单位:毫秒 |
|类型| Int64 |
-|默认值| 86400 |
+|默认值| 86400000 |
|改后生效方式| 仅允许在第一次启动服务前修改 |
## 配置示例
-开启时间分区功能,并设置 partition_interval 为 86400(一天),则数据的分布情况如下图所示:
+开启时间分区功能,并设置 partition_interval 为 86400000(一天),则数据的分布情况如下图所示:
<img style="width:100%; max-width:800px; max-height:600px; margin-left:auto;
margin-right:auto; display:block;"
src="https://github.com/apache/iotdb-bin-resources/blob/main/docs/UserGuide/Data%20Concept/Time-Partition/time_partition_example.png?raw=true"
alt="time partition example">
diff --git a/docs/zh/UserGuide/Reference/ConfigNode-Config-Manual.md
b/docs/zh/UserGuide/Reference/ConfigNode-Config-Manual.md
index 45b1dbccbe..43cec107c5 100644
--- a/docs/zh/UserGuide/Reference/ConfigNode-Config-Manual.md
+++ b/docs/zh/UserGuide/Reference/ConfigNode-Config-Manual.md
@@ -242,10 +242,11 @@ IoTDB 集群的全局配置通过 ConfigNode 配置。
* time\_partition\_interval\_for\_routing
|名字| time\_partition\_interval\_for\_routing |
-|:---:|:----------------------------------------|
+|:--:|:----------------------------------------|
|描述| 存储组默认的数据时间分区间隔 |
|类型| Long |
-|默认值| 86400 |
+|单位| 毫秒 |
+|默认值| 86400000 |
|改后生效方式| 仅允许在第一次启动服务前修改 |
### 数据目录
diff --git a/docs/zh/UserGuide/Reference/DataNode-Config-Manual.md
b/docs/zh/UserGuide/Reference/DataNode-Config-Manual.md
index 2c389d80e8..bd647c4c8f 100644
--- a/docs/zh/UserGuide/Reference/DataNode-Config-Manual.md
+++ b/docs/zh/UserGuide/Reference/DataNode-Config-Manual.md
@@ -1658,12 +1658,12 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB
* time\_partition\_interval\_for\_storage
-|名字| time\_partition\_interval\_for\_storage |
-|:---:|:----------------------------------------|
-|描述| 用于存储组分区的时间段长度,用户指定的存储组下会使用该时间段进行分区,单位:秒 |
-|类型| Int64 |
-|默认值| 86400 |
-|改后生效方式| 仅允许在第一次启动服务前修改 |
+|名字| time\_partition\_interval\_for\_storage |
+|:---:|:-----------------------------------------|
+|描述| 用于存储组分区的时间段长度,用户指定的存储组下会使用该时间段进行分区,单位:毫秒 |
+|类型| Int64 |
+|默认值| 86400000 |
+|改后生效方式| 仅允许在第一次启动服务前修改 |
* data\_region\_num
diff --git
a/integration-test/src/test/java/org/apache/iotdb/confignode/IoTDBClusterPartitionIT.java
b/integration-test/src/test/java/org/apache/iotdb/confignode/IoTDBClusterPartitionIT.java
index d64d20cfcc..3eda506ba9 100644
---
a/integration-test/src/test/java/org/apache/iotdb/confignode/IoTDBClusterPartitionIT.java
+++
b/integration-test/src/test/java/org/apache/iotdb/confignode/IoTDBClusterPartitionIT.java
@@ -81,7 +81,7 @@ public class IoTDBClusterPartitionIT {
private static final int testReplicationFactor = 3;
protected static long originalTimePartitionInterval;
- private static final long testTimePartitionInterval = 86400;
+ private static final long testTimePartitionInterval = 86400000;
private static final String sg = "root.sg";
private static final int storageGroupNum = 5;
diff --git a/server/src/assembly/resources/conf/iotdb-datanode.properties
b/server/src/assembly/resources/conf/iotdb-datanode.properties
index 38d0e3d1e3..067e1ed1a3 100644
--- a/server/src/assembly/resources/conf/iotdb-datanode.properties
+++ b/server/src/assembly/resources/conf/iotdb-datanode.properties
@@ -1061,9 +1061,9 @@ timestamp_precision=ms
# Datatype: long
# partition_interval=86400
-# time range for partitioning data inside each data region, the unit is second
+# time range for partitioning data inside each data region, the unit is
millisecond
# Datatype: long
-# time_partition_interval_for_storage=86400
+# time_partition_interval_for_storage=86400000
####################
### Influx DB RPC Service Configuration
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index 035a4dcdbc..e47c3adc1b 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -767,11 +767,11 @@ public class IoTDBConfig {
*/
private long partitionInterval = 86400;
- /** Time partition interval for storage in seconds */
- private long timePartitionIntervalForStorage = 86400;
+ /** Time partition interval for storage in milliseconds */
+ private long timePartitionIntervalForStorage = 86400000;
- /** Time partition interval for routing in seconds */
- private long timePartitionIntervalForRouting = 86400;
+ /** Time partition interval for routing in milliseconds */
+ private long timePartitionIntervalForRouting = 86400000;
/**
* Level of TimeIndex, which records the start time and end time of
TsFileResource. Currently,
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index 3ee6ee85bc..8ee67e25cf 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -1013,6 +1013,9 @@ public class IoTDBDescriptor {
// author cache
loadAuthorCache(properties);
+
+ conf.setTimePartitionIntervalForStorage(
+ convertMilliWithPrecision(conf.getTimePartitionIntervalForStorage()));
}
private void loadAuthorCache(Properties properties) {
@@ -1921,7 +1924,8 @@ public class IoTDBDescriptor {
public void loadGlobalConfig(TGlobalConfig globalConfig) {
conf.setSeriesPartitionExecutorClass(globalConfig.getSeriesPartitionExecutorClass());
conf.setSeriesPartitionSlotNum(globalConfig.getSeriesPartitionSlotNum());
-
conf.setTimePartitionIntervalForRouting(globalConfig.timePartitionInterval);
+ conf.setTimePartitionIntervalForRouting(
+ convertMilliWithPrecision(globalConfig.timePartitionInterval));
conf.setReadConsistencyLevel(globalConfig.getReadConsistencyLevel());
}
@@ -1988,6 +1992,22 @@ public class IoTDBDescriptor {
logger.info("Cluster allocateMemoryForLastCache = {}",
conf.getAllocateMemoryForLastCache());
}
+ public long convertMilliWithPrecision(long milliTime) {
+ long result = milliTime;
+ String timePrecision = conf.getTimestampPrecision();
+ switch (timePrecision) {
+ case "ns":
+ result = milliTime * 1000_000L;
+ break;
+ case "us":
+ result = milliTime * 1000L;
+ break;
+ default:
+ break;
+ }
+ return result;
+ }
+
private static class IoTDBDescriptorHolder {
private static final IoTDBDescriptor INSTANCE = new IoTDBDescriptor();
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngineV2.java
b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngineV2.java
index 6bfe588a3a..3ab8bc6bbb 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngineV2.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngineV2.java
@@ -55,7 +55,6 @@ import
org.apache.iotdb.db.mpp.plan.scheduler.load.LoadTsFileScheduler;
import org.apache.iotdb.db.rescon.SystemInfo;
import org.apache.iotdb.db.sync.SyncService;
import org.apache.iotdb.db.utils.ThreadUtils;
-import org.apache.iotdb.db.utils.TimePartitionUtils;
import org.apache.iotdb.db.utils.UpgradeUtils;
import org.apache.iotdb.db.wal.WALManager;
import org.apache.iotdb.db.wal.exception.WALException;
@@ -148,8 +147,7 @@ public class StorageEngineV2 implements IService {
private static void initTimePartition() {
timePartitionIntervalForStorage =
- TimePartitionUtils.convertMilliWithPrecision(
-
IoTDBDescriptor.getInstance().getConfig().getTimePartitionIntervalForStorage()
* 1000L);
+
IoTDBDescriptor.getInstance().getConfig().getTimePartitionIntervalForStorage();
}
public static long getTimePartitionIntervalForStorage() {
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/FakePartitionFetcherImpl.java
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/FakePartitionFetcherImpl.java
index 014bc6e7fa..76012118d5 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/FakePartitionFetcherImpl.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/FakePartitionFetcherImpl.java
@@ -30,6 +30,7 @@ import org.apache.iotdb.commons.partition.DataPartition;
import org.apache.iotdb.commons.partition.DataPartitionQueryParam;
import org.apache.iotdb.commons.partition.SchemaNodeManagementPartition;
import org.apache.iotdb.commons.partition.SchemaPartition;
+import org.apache.iotdb.commons.partition.executor.SeriesPartitionExecutor;
import org.apache.iotdb.commons.path.PathPatternTree;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.mpp.rpc.thrift.TRegionRouteReq;
@@ -42,6 +43,16 @@ import java.util.Map;
public class FakePartitionFetcherImpl implements IPartitionFetcher {
+ private final String seriesSlotExecutorName =
+
IoTDBDescriptor.getInstance().getConfig().getSeriesPartitionExecutorClass();
+
+ private final int seriesPartitionSlotNum =
+ IoTDBDescriptor.getInstance().getConfig().getSeriesPartitionSlotNum();
+
+ private final SeriesPartitionExecutor partitionExecutor =
+ SeriesPartitionExecutor.getSeriesPartitionExecutor(
+ seriesSlotExecutorName, seriesPartitionSlotNum);
+
@Override
public SchemaPartition getSchemaPartition(PathPatternTree patternTree) {
String device1 = "root.sg.d1";
@@ -212,7 +223,71 @@ public class FakePartitionFetcherImpl implements
IPartitionFetcher {
@Override
public DataPartition getOrCreateDataPartition(
List<DataPartitionQueryParam> dataPartitionQueryParams) {
- return null;
+
+ // only test root.sg
+ DataPartition dataPartition =
+ new DataPartition(
+
IoTDBDescriptor.getInstance().getConfig().getSeriesPartitionExecutorClass(),
+
IoTDBDescriptor.getInstance().getConfig().getSeriesPartitionSlotNum());
+
+ Map<String, Map<TSeriesPartitionSlot, Map<TTimePartitionSlot,
List<TRegionReplicaSet>>>>
+ dataPartitionMap = new HashMap<>();
+ Map<TSeriesPartitionSlot, Map<TTimePartitionSlot,
List<TRegionReplicaSet>>> sgPartitionMap =
+ new HashMap<>();
+ dataPartitionMap.put("root.sg", sgPartitionMap);
+ dataPartition.setDataPartitionMap(dataPartitionMap);
+
+ List<TRegionReplicaSet> d1DataRegions = new ArrayList<>();
+ d1DataRegions.add(
+ new TRegionReplicaSet(
+ new TConsensusGroupId(TConsensusGroupType.DataRegion, 1),
+ Arrays.asList(
+ new TDataNodeLocation()
+ .setDataNodeId(11)
+ .setClientRpcEndPoint(new TEndPoint("192.0.1.1", 9000)),
+ new TDataNodeLocation()
+ .setDataNodeId(12)
+ .setClientRpcEndPoint(new TEndPoint("192.0.1.2", 9000)))));
+ d1DataRegions.add(
+ new TRegionReplicaSet(
+ new TConsensusGroupId(TConsensusGroupType.DataRegion, 2),
+ Arrays.asList(
+ new TDataNodeLocation()
+ .setDataNodeId(21)
+ .setClientRpcEndPoint(new TEndPoint("192.0.2.1", 9000)),
+ new TDataNodeLocation()
+ .setDataNodeId(22)
+ .setClientRpcEndPoint(new TEndPoint("192.0.2.2", 9000)))));
+
+ List<TRegionReplicaSet> d2DataRegions = new ArrayList<>();
+ d2DataRegions.add(
+ new TRegionReplicaSet(
+ new TConsensusGroupId(TConsensusGroupType.DataRegion, 3),
+ Arrays.asList(
+ new TDataNodeLocation()
+ .setDataNodeId(31)
+ .setClientRpcEndPoint(new TEndPoint("192.0.3.1", 9000)),
+ new TDataNodeLocation()
+ .setDataNodeId(32)
+ .setClientRpcEndPoint(new TEndPoint("192.0.3.2", 9000)))));
+ Map<TTimePartitionSlot, List<TRegionReplicaSet>> d2DataRegionMap = new
HashMap<>();
+ d2DataRegionMap.put(new TTimePartitionSlot(), d2DataRegions);
+
+ for (DataPartitionQueryParam dataPartitionQueryParam :
dataPartitionQueryParams) {
+ TSeriesPartitionSlot seriesPartitionSlot =
+
partitionExecutor.getSeriesPartitionSlot(dataPartitionQueryParam.getDevicePath());
+ Map<TTimePartitionSlot, List<TRegionReplicaSet>>
timePartitionSlotListMap =
+ sgPartitionMap.computeIfAbsent(seriesPartitionSlot, k -> new
HashMap<>());
+ for (TTimePartitionSlot timePartitionSlot :
+ dataPartitionQueryParam.getTimePartitionSlotList()) {
+ if (timePartitionSlot.startTime == 0) {
+ timePartitionSlotListMap.put(timePartitionSlot, d1DataRegions);
+ } else {
+ timePartitionSlotListMap.put(timePartitionSlot, d2DataRegions);
+ }
+ }
+ }
+ return dataPartition;
}
@Override
diff --git
a/server/src/main/java/org/apache/iotdb/db/utils/TimePartitionUtils.java
b/server/src/main/java/org/apache/iotdb/db/utils/TimePartitionUtils.java
index 33766996a2..f39de5ba04 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/TimePartitionUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/TimePartitionUtils.java
@@ -26,8 +26,7 @@ import org.apache.iotdb.db.conf.ServerConfigConsistent;
public class TimePartitionUtils {
@ServerConfigConsistent
public static long timePartitionIntervalForRouting =
- convertMilliWithPrecision(
-
IoTDBDescriptor.getInstance().getConfig().getTimePartitionIntervalForRouting()
* 1000L);
+
IoTDBDescriptor.getInstance().getConfig().getTimePartitionIntervalForRouting();
public static TTimePartitionSlot getTimePartitionForRouting(long time) {
TTimePartitionSlot timePartitionSlot = new TTimePartitionSlot();
@@ -35,22 +34,6 @@ public class TimePartitionUtils {
return timePartitionSlot;
}
- public static long convertMilliWithPrecision(long milliTime) {
- long result = milliTime;
- String timePrecision =
IoTDBDescriptor.getInstance().getConfig().getTimestampPrecision();
- switch (timePrecision) {
- case "ns":
- result = milliTime * 1000_000L;
- break;
- case "us":
- result = milliTime * 1000L;
- break;
- default:
- break;
- }
- return result;
- }
-
@TestOnly
public static void setTimePartitionIntervalForRouting(long
timePartitionIntervalForRouting) {
TimePartitionUtils.timePartitionIntervalForRouting =
timePartitionIntervalForRouting;
diff --git
a/server/src/test/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeTest.java
b/server/src/test/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeTest.java
index 6f43da9564..895c4701d6 100644
--- a/server/src/test/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeTest.java
@@ -19,6 +19,7 @@
package org.apache.iotdb.db.mpp.plan.analyze;
+import org.apache.iotdb.common.rpc.thrift.TSeriesPartitionSlot;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.MeasurementPath;
import org.apache.iotdb.commons.path.PartialPath;
@@ -571,6 +572,19 @@ public class AnalyzeTest {
}
}
+ @Test
+ public void testDataPartitionAnalyze() {
+ Analysis analysis = analyzeSQL("insert into root.sg.d1(timestamp,s)
values(1,10),(86401,11)");
+ Assert.assertEquals(
+ analysis
+ .getDataPartitionInfo()
+ .getDataPartitionMap()
+ .get("root.sg")
+ .get(new TSeriesPartitionSlot(8923))
+ .size(),
+ 1);
+ }
+
private Analysis analyzeSQL(String sql) {
try {
Statement statement =