You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2022/10/13 07:52:00 UTC
[iotdb] branch rel/0.13 updated: [To rel/0.13][IOTDB-4615] TTL supports timestamp precision (#7580)
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch rel/0.13
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/0.13 by this push:
new 6ecb88d3f2 [To rel/0.13][IOTDB-4615] TTL supports timestamp precision (#7580)
6ecb88d3f2 is described below
commit 6ecb88d3f2d75a687ec2a9853e0d4ab5a9b6926b
Author: Alan Choo <43...@users.noreply.github.com>
AuthorDate: Thu Oct 13 15:51:55 2022 +0800
[To rel/0.13][IOTDB-4615] TTL supports timestamp precision (#7580)
---
.../iotdb/cluster/partition/PartitionTable.java | 5 +-
.../org/apache/iotdb/db/conf/IoTDBConstant.java | 2 +-
.../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 4 +-
.../org/apache/iotdb/db/engine/StorageEngine.java | 24 ++---
.../db/engine/archiving/ArchivingManager.java | 4 +-
.../iotdb/db/engine/archiving/ArchivingTask.java | 4 +-
.../iotdb/db/engine/cq/ContinuousQueryService.java | 10 +-
.../db/engine/querycontext/QueryDataSource.java | 5 +-
.../db/engine/storagegroup/TsFileResource.java | 3 +-
.../storagegroup/VirtualStorageGroupProcessor.java | 22 ++--
.../virtualSg/StorageGroupManager.java | 2 +-
.../protocol/influxdb/input/InfluxLineParser.java | 4 +-
.../protocol/influxdb/sql/InfluxDBSqlVisitor.java | 8 +-
.../apache/iotdb/db/qp/executor/PlanExecutor.java | 10 +-
.../qp/physical/sys/CreateContinuousQueryPlan.java | 4 +-
.../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java | 30 +++---
.../{DatetimeUtils.java => DateTimeUtils.java} | 22 +++-
.../iotdb/db/query/executor/fill/LinearFill.java | 6 +-
.../iotdb/db/query/executor/fill/PreviousFill.java | 4 +-
.../strategy/SlidingTimeWindowAccessStrategy.java | 16 +--
.../apache/iotdb/db/tools/IoTDBDataDirViewer.java | 6 +-
.../iotdb/db/tools/TsFileResourcePrinter.java | 6 +-
.../db/tools/watermark/WatermarkDetector.java | 4 +-
.../ArchivingOperateWriterReaderTest.java | 4 +-
.../iotdb/db/engine/archiving/ArchivingTest.java | 8 +-
.../iotdb/db/protocol/rest/IoTDBRestServiceIT.java | 2 +-
.../db/qp/utils/DatetimeQueryDataSetUtilsTest.java | 116 ++++++++++-----------
.../zeppelin/iotdb/IoTDBInterpreterTest.java | 4 +-
28 files changed, 178 insertions(+), 161 deletions(-)
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/partition/PartitionTable.java b/cluster/src/main/java/org/apache/iotdb/cluster/partition/PartitionTable.java
index 2767d4ee40..47b9a70cf9 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/partition/PartitionTable.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/partition/PartitionTable.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.db.engine.StorageEngine;
import org.apache.iotdb.db.exception.metadata.MetadataException;
import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
import org.apache.iotdb.db.metadata.path.PartialPath;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.db.service.IoTDB;
import org.apache.commons.collections4.map.MultiKeyMap;
@@ -139,8 +140,8 @@ public interface PartitionTable {
MultiKeyMap<Long, PartitionGroup> timeRangeMapRaftGroup = new MultiKeyMap<>();
PartialPath storageGroup = IoTDB.metaManager.getBelongedStorageGroup(path);
- startTime = StorageEngine.convertMilliWithPrecision(startTime);
- endTime = StorageEngine.convertMilliWithPrecision(endTime);
+ startTime = DateTimeUtils.convertMilliTimeWithPrecision(startTime);
+ endTime = DateTimeUtils.convertMilliTimeWithPrecision(endTime);
while (startTime <= endTime) {
long nextTime = (startTime / partitionInterval + 1) * partitionInterval;
timeRangeMapRaftGroup.put(
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConstant.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConstant.java
index f2e9aed088..ee506130cd 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConstant.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConstant.java
@@ -90,7 +90,7 @@ public class IoTDBConstant {
public static final String COLUMN_STORAGE_GROUP = "storage group";
public static final String COLUMN_LOCK_INFO = "lock holder";
- public static final String COLUMN_TTL = "ttl";
+ public static final String COLUMN_TTL = "ttl(ms)";
public static final String COLUMN_TASK_ID = "task id";
public static final String COLUMN_SUBMIT_TIME = "submit time";
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 fadf77ccf0..3ed1f5e726 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
@@ -24,7 +24,7 @@ import org.apache.iotdb.db.engine.compaction.constant.CompactionPriority;
import org.apache.iotdb.db.engine.compaction.cross.CrossCompactionStrategy;
import org.apache.iotdb.db.engine.compaction.inner.InnerCompactionStrategy;
import org.apache.iotdb.db.exception.query.QueryProcessException;
-import org.apache.iotdb.db.qp.utils.DatetimeUtils;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.db.service.metrics.MetricService;
import org.apache.iotdb.external.api.IPropertiesLoader;
import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
@@ -1517,7 +1517,7 @@ public class IoTDBDescriptor {
}
conf.setContinuousQueryMinimumEveryInterval(
- DatetimeUtils.convertDurationStrToLong(
+ DateTimeUtils.convertDurationStrToLong(
properties.getProperty("continuous_query_minimum_every_interval", "1s"),
conf.getTimestampPrecision()));
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
index df3f1f5428..e908e9a5e3 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
@@ -64,6 +64,7 @@ import org.apache.iotdb.db.qp.physical.crud.InsertPlan;
import org.apache.iotdb.db.qp.physical.crud.InsertRowPlan;
import org.apache.iotdb.db.qp.physical.crud.InsertRowsOfOneDevicePlan;
import org.apache.iotdb.db.qp.physical.crud.InsertTabletPlan;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.db.rescon.SystemInfo;
import org.apache.iotdb.db.service.IService;
import org.apache.iotdb.db.service.IoTDB;
@@ -254,7 +255,7 @@ public class StorageEngine implements IService {
private static void initTimePartition() {
timePartitionInterval =
- convertMilliWithPrecision(
+ DateTimeUtils.convertMilliTimeWithPrecision(
IoTDBDescriptor.getInstance().getConfig().getPartitionInterval() * 1000L);
}
@@ -297,22 +298,6 @@ public class StorageEngine implements IService {
}
}
- 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;
- }
-
public static String getDeviceNameByPlan(PhysicalPlan plan) {
if (plan instanceof InsertPlan) {
InsertPlan physicalPlan = (InsertPlan) plan;
@@ -342,6 +327,9 @@ public class StorageEngine implements IService {
@TestOnly
public static void setTimePartitionInterval(long timePartitionInterval) {
StorageEngine.timePartitionInterval = timePartitionInterval;
+ if (timePartitionInterval == -1) {
+ initTimePartition();
+ }
}
public static long getTimePartition(long time) {
@@ -787,7 +775,7 @@ public class StorageEngine implements IService {
virtualStorageGroupId,
fileFlushPolicy,
storageGroupMNode.getFullPath());
- processor.setDataTTL(storageGroupMNode.getDataTTL());
+ processor.setDataTTLWithTimePrecisionCheck(storageGroupMNode.getDataTTL());
processor.setCustomFlushListeners(customFlushListeners);
processor.setCustomCloseFileListeners(customCloseFileListeners);
return processor;
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/archiving/ArchivingManager.java b/server/src/main/java/org/apache/iotdb/db/engine/archiving/ArchivingManager.java
index 14b79ed1f0..34e43bcd55 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/archiving/ArchivingManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/archiving/ArchivingManager.java
@@ -26,7 +26,7 @@ import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.engine.StorageEngine;
import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.metadata.path.PartialPath;
-import org.apache.iotdb.db.qp.utils.DatetimeUtils;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.tsfile.utils.FilePathUtils;
import org.slf4j.Logger;
@@ -373,7 +373,7 @@ public class ArchivingManager {
for (ArchivingTask task : archivingTasks) {
- if (task.getStartTime() - DatetimeUtils.currentTime() <= 0
+ if (task.getStartTime() - DateTimeUtils.currentTime() <= 0
&& task.getStatus() == ArchivingTask.ArchivingTaskStatus.READY) {
// storage group has no data
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/archiving/ArchivingTask.java b/server/src/main/java/org/apache/iotdb/db/engine/archiving/ArchivingTask.java
index 3056a5250b..143859fd62 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/archiving/ArchivingTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/archiving/ArchivingTask.java
@@ -23,7 +23,7 @@ import org.apache.iotdb.db.conf.IoTDBConstant;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.metadata.path.PartialPath;
-import org.apache.iotdb.db.qp.utils.DatetimeUtils;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.tsfile.utils.FilePathUtils;
import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
@@ -76,7 +76,7 @@ public class ArchivingTask {
this.targetDir = targetDir;
this.ttl = ttl;
this.startTime = startTime;
- this.submitTime = DatetimeUtils.currentTime();
+ this.submitTime = DateTimeUtils.currentTime();
}
public ArchivingTask(
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/cq/ContinuousQueryService.java b/server/src/main/java/org/apache/iotdb/db/engine/cq/ContinuousQueryService.java
index fc1a14841a..2d5ef546d8 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/cq/ContinuousQueryService.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/cq/ContinuousQueryService.java
@@ -27,7 +27,7 @@ import org.apache.iotdb.db.exception.StartupException;
import org.apache.iotdb.db.qp.physical.PhysicalPlan;
import org.apache.iotdb.db.qp.physical.sys.CreateContinuousQueryPlan;
import org.apache.iotdb.db.qp.physical.sys.DropContinuousQueryPlan;
-import org.apache.iotdb.db.qp.utils.DatetimeUtils;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.db.query.dataset.ShowContinuousQueriesResult;
import org.apache.iotdb.db.service.IService;
import org.apache.iotdb.db.service.ServiceType;
@@ -49,7 +49,7 @@ public class ContinuousQueryService implements IService {
private static final Logger LOGGER = LoggerFactory.getLogger(ContinuousQueryService.class);
- private static final long SYSTEM_STARTUP_TIME = DatetimeUtils.currentTime();
+ private static final long SYSTEM_STARTUP_TIME = DateTimeUtils.currentTime();
private static final ContinuousQueryTaskPoolManager TASK_POOL_MANAGER =
ContinuousQueryTaskPoolManager.getInstance();
@@ -130,7 +130,7 @@ public class ContinuousQueryService implements IService {
this::checkAndSubmitTasks,
0,
TASK_SUBMIT_CHECK_INTERVAL,
- DatetimeUtils.timestampPrecisionStringToTimeUnit(
+ DateTimeUtils.timestampPrecisionStringToTimeUnit(
IoTDBDescriptor.getInstance().getConfig().getTimestampPrecision()));
LOGGER.info("Continuous query service started.");
@@ -157,7 +157,7 @@ public class ContinuousQueryService implements IService {
}
private void checkAndSubmitTasks() {
- long currentTimestamp = DatetimeUtils.currentTime();
+ long currentTimestamp = DateTimeUtils.currentTime();
for (CreateContinuousQueryPlan plan : continuousQueryPlans.values()) {
long nextExecutionTimestamp = nextExecutionTimestamps.get(plan.getContinuousQueryName());
while (currentTimestamp >= nextExecutionTimestamp) {
@@ -242,7 +242,7 @@ public class ContinuousQueryService implements IService {
continuousQueryPlans.put(plan.getContinuousQueryName(), plan);
nextExecutionTimestamps.put(
plan.getContinuousQueryName(),
- calculateNextExecutionTimestamp(plan, DatetimeUtils.currentTime()));
+ calculateNextExecutionTimestamp(plan, DateTimeUtils.currentTime()));
}
@TestOnly
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/querycontext/QueryDataSource.java b/server/src/main/java/org/apache/iotdb/db/engine/querycontext/QueryDataSource.java
index 175fe567be..587baee1a7 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/querycontext/QueryDataSource.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/querycontext/QueryDataSource.java
@@ -20,6 +20,7 @@
package org.apache.iotdb.db.engine.querycontext;
import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.tsfile.read.filter.TimeFilter;
import org.apache.iotdb.tsfile.read.filter.basic.Filter;
import org.apache.iotdb.tsfile.read.filter.operator.AndFilter;
@@ -77,9 +78,9 @@ public class QueryDataSource {
public Filter updateFilterUsingTTL(Filter filter) {
if (dataTTL != Long.MAX_VALUE) {
if (filter != null) {
- filter = new AndFilter(filter, TimeFilter.gtEq(System.currentTimeMillis() - dataTTL));
+ filter = new AndFilter(filter, TimeFilter.gtEq(DateTimeUtils.currentTime() - dataTTL));
} else {
- filter = TimeFilter.gtEq(System.currentTimeMillis() - dataTTL);
+ filter = TimeFilter.gtEq(DateTimeUtils.currentTime() - dataTTL);
}
}
return filter;
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
index 4ed4dabcdf..581d05e105 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
@@ -32,6 +32,7 @@ import org.apache.iotdb.db.engine.storagegroup.timeindex.TimeIndexLevel;
import org.apache.iotdb.db.engine.upgrade.UpgradeTask;
import org.apache.iotdb.db.exception.PartitionViolationException;
import org.apache.iotdb.db.metadata.path.PartialPath;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.db.query.filter.TsFileFilter;
import org.apache.iotdb.db.service.UpgradeSevice;
import org.apache.iotdb.db.utils.TestOnly;
@@ -769,7 +770,7 @@ public class TsFileResource {
/** @return whether the given time falls in ttl */
private boolean isAlive(long time, long dataTTL) {
- return dataTTL == Long.MAX_VALUE || (System.currentTimeMillis() - time) <= dataTTL;
+ return dataTTL == Long.MAX_VALUE || (DateTimeUtils.currentTime() - time) <= dataTTL;
}
public void setProcessor(TsFileProcessor processor) {
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java
index b67bcae731..2ac261ef72 100755
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java
@@ -63,6 +63,7 @@ import org.apache.iotdb.db.qp.physical.crud.DeletePlan;
import org.apache.iotdb.db.qp.physical.crud.InsertRowPlan;
import org.apache.iotdb.db.qp.physical.crud.InsertRowsOfOneDevicePlan;
import org.apache.iotdb.db.qp.physical.crud.InsertTabletPlan;
+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.QueryFileManager;
@@ -876,7 +877,7 @@ public class VirtualStorageGroupProcessor {
throws WriteProcessException, TriggerExecutionException {
// reject insertions that are out of ttl
if (!isAlive(insertRowPlan.getTime())) {
- throw new OutOfTTLException(insertRowPlan.getTime(), (System.currentTimeMillis() - dataTTL));
+ throw new OutOfTTLException(insertRowPlan.getTime(), (DateTimeUtils.currentTime() - dataTTL));
}
writeLock("InsertRow");
try {
@@ -1030,7 +1031,7 @@ public class VirtualStorageGroupProcessor {
/** @return whether the given time falls in ttl */
private boolean isAlive(long time) {
- return dataTTL == Long.MAX_VALUE || (System.currentTimeMillis() - time) <= dataTTL;
+ return dataTTL == Long.MAX_VALUE || (DateTimeUtils.currentTime() - time) <= dataTTL;
}
/**
@@ -1485,7 +1486,7 @@ public class VirtualStorageGroupProcessor {
logicalStorageGroupName + "-" + virtualStorageGroupId);
return;
}
- long ttlLowerBound = System.currentTimeMillis() - dataTTL;
+ long ttlLowerBound = DateTimeUtils.currentTime() - dataTTL;
logger.debug(
"{}: TTL removing files before {}",
logicalStorageGroupName + "-" + virtualStorageGroupId,
@@ -1559,11 +1560,13 @@ public class VirtualStorageGroupProcessor {
logicalStorageGroupName + "-" + virtualStorageGroupId);
return;
}
- long ttlLowerBound = System.currentTimeMillis() - task.getTTL();
+
+ long ttlLowerBound =
+ DateTimeUtils.currentTime() - DateTimeUtils.convertMilliTimeWithPrecision(task.getTTL());
logger.debug(
"{}: Archiving files before {}",
logicalStorageGroupName + "-" + virtualStorageGroupId,
- new Date(ttlLowerBound));
+ DateTimeUtils.convertMillsecondToZonedDateTime(ttlLowerBound));
// copy to avoid concurrent modification of deletion
List<TsFileResource> seqFiles = new ArrayList<>(tsFileManager.getTsFileList(true));
@@ -1864,7 +1867,7 @@ public class VirtualStorageGroupProcessor {
List<TsFileResource> tsfileResourcesForQuery = new ArrayList<>();
long timeLowerBound =
- dataTTL != Long.MAX_VALUE ? System.currentTimeMillis() - dataTTL : Long.MIN_VALUE;
+ dataTTL != Long.MAX_VALUE ? DateTimeUtils.currentTime() - dataTTL : Long.MIN_VALUE;
context.setQueryTimeLowerBound(timeLowerBound);
// for upgrade files and old files must be closed
@@ -2997,6 +3000,13 @@ public class VirtualStorageGroupProcessor {
return workUnsequenceTsFileProcessors.values();
}
+ public void setDataTTLWithTimePrecisionCheck(long dataTTL) {
+ if (dataTTL != Long.MAX_VALUE) {
+ dataTTL = DateTimeUtils.convertMilliTimeWithPrecision(dataTTL);
+ }
+ this.dataTTL = dataTTL;
+ }
+
public void setDataTTL(long dataTTL) {
this.dataTTL = dataTTL;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/virtualSg/StorageGroupManager.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/virtualSg/StorageGroupManager.java
index 1d41f41fba..6826653609 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/virtualSg/StorageGroupManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/virtualSg/StorageGroupManager.java
@@ -456,7 +456,7 @@ public class StorageGroupManager {
for (VirtualStorageGroupProcessor virtualStorageGroupProcessor :
this.virtualStorageGroupProcessor) {
if (virtualStorageGroupProcessor != null) {
- virtualStorageGroupProcessor.setDataTTL(dataTTL);
+ virtualStorageGroupProcessor.setDataTTLWithTimePrecisionCheck(dataTTL);
}
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/protocol/influxdb/input/InfluxLineParser.java b/server/src/main/java/org/apache/iotdb/db/protocol/influxdb/input/InfluxLineParser.java
index 69e295593b..6b971441cf 100644
--- a/server/src/main/java/org/apache/iotdb/db/protocol/influxdb/input/InfluxLineParser.java
+++ b/server/src/main/java/org/apache/iotdb/db/protocol/influxdb/input/InfluxLineParser.java
@@ -19,7 +19,7 @@
package org.apache.iotdb.db.protocol.influxdb.input;
-import org.apache.iotdb.db.qp.utils.DatetimeUtils;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.CharStream;
@@ -41,7 +41,7 @@ public class InfluxLineParser {
}
public static List<Point> parserRecordsToPointsWithPrecision(String records, String precision) {
- return parserRecordsToPoints(records, DatetimeUtils.toTimeUnit(precision));
+ return parserRecordsToPoints(records, DateTimeUtils.toTimeUnit(precision));
}
public static List<Point> parserRecordsToPoints(String records, TimeUnit precision) {
diff --git a/server/src/main/java/org/apache/iotdb/db/protocol/influxdb/sql/InfluxDBSqlVisitor.java b/server/src/main/java/org/apache/iotdb/db/protocol/influxdb/sql/InfluxDBSqlVisitor.java
index 72c4eeaad3..e588cfcf21 100644
--- a/server/src/main/java/org/apache/iotdb/db/protocol/influxdb/sql/InfluxDBSqlVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/protocol/influxdb/sql/InfluxDBSqlVisitor.java
@@ -29,7 +29,7 @@ import org.apache.iotdb.db.qp.logical.crud.FromComponent;
import org.apache.iotdb.db.qp.logical.crud.WhereComponent;
import org.apache.iotdb.db.qp.sql.InfluxDBSqlParser;
import org.apache.iotdb.db.qp.sql.InfluxDBSqlParserBaseVisitor;
-import org.apache.iotdb.db.qp.utils.DatetimeUtils;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.db.query.expression.Expression;
import org.apache.iotdb.db.query.expression.ResultColumn;
import org.apache.iotdb.db.query.expression.binary.AdditionExpression;
@@ -249,9 +249,9 @@ public class InfluxDBSqlVisitor extends InfluxDBSqlParserBaseVisitor<Operator> {
time = parseTimeFormat(ctx.getChild(0).getText());
for (int i = 1; i < ctx.getChildCount(); i = i + 2) {
if (ctx.getChild(i).getText().equals("+")) {
- time += DatetimeUtils.convertDurationStrToLong(time, ctx.getChild(i + 1).getText());
+ time += DateTimeUtils.convertDurationStrToLong(time, ctx.getChild(i + 1).getText());
} else {
- time -= DatetimeUtils.convertDurationStrToLong(time, ctx.getChild(i + 1).getText());
+ time -= DateTimeUtils.convertDurationStrToLong(time, ctx.getChild(i + 1).getText());
}
}
return time;
@@ -263,7 +263,7 @@ public class InfluxDBSqlVisitor extends InfluxDBSqlParserBaseVisitor<Operator> {
throw new IllegalArgumentException("input timestamp cannot be empty");
}
if (timestampStr.equalsIgnoreCase(SQLConstant.NOW_FUNC)) {
- return DatetimeUtils.currentTime();
+ return DateTimeUtils.currentTime();
}
throw new IllegalArgumentException(
String.format(
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 c7dc9fedb0..5af46ebecd 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
@@ -133,7 +133,7 @@ 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.UnsetTemplatePlan;
-import org.apache.iotdb.db.qp.utils.DatetimeUtils;
+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;
@@ -1336,13 +1336,13 @@ public class PlanExecutor implements IPlanExecutor {
ttl = null;
}
ZonedDateTime submitDateTime =
- DatetimeUtils.convertMillsecondToZonedDateTime(task.getSubmitTime());
- String submitTimeStr = DatetimeUtils.ISO_OFFSET_DATE_TIME_WITH_MS.format(submitDateTime);
+ DateTimeUtils.convertMillsecondToZonedDateTime(task.getSubmitTime());
+ String submitTimeStr = DateTimeUtils.ISO_OFFSET_DATE_TIME_WITH_MS.format(submitDateTime);
submitTime.setBinaryV(new Binary(submitTimeStr));
if (task.getStartTime() != Long.MAX_VALUE) {
ZonedDateTime startDate =
- DatetimeUtils.convertMillsecondToZonedDateTime(task.getStartTime());
- String startTimeStr = DatetimeUtils.ISO_OFFSET_DATE_TIME_WITH_MS.format(startDate);
+ DateTimeUtils.convertMillsecondToZonedDateTime(task.getStartTime());
+ String startTimeStr = DateTimeUtils.ISO_OFFSET_DATE_TIME_WITH_MS.format(startDate);
startTime = new Field(TSDataType.TEXT);
startTime.setBinaryV(new Binary(startTimeStr));
} else {
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateContinuousQueryPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateContinuousQueryPlan.java
index 9663da20fc..0b6d3b32ee 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateContinuousQueryPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateContinuousQueryPlan.java
@@ -23,7 +23,7 @@ import org.apache.iotdb.db.exception.metadata.IllegalPathException;
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 org.apache.iotdb.db.qp.utils.DatetimeUtils;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.io.DataOutputStream;
@@ -75,7 +75,7 @@ public class CreateContinuousQueryPlan extends PhysicalPlan {
this.firstExecutionTimeBoundary =
firstExecutionTimeBoundary != null
? firstExecutionTimeBoundary
- : DatetimeUtils.currentTime();
+ : DateTimeUtils.currentTime();
}
public String getQuerySql() {
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 8e74c9042f..9b909b4aee 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
@@ -85,7 +85,7 @@ 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.sql.IoTDBSqlParser.ExpressionContext;
-import org.apache.iotdb.db.qp.utils.DatetimeUtils;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.db.query.executor.fill.IFill;
import org.apache.iotdb.db.query.executor.fill.LinearFill;
import org.apache.iotdb.db.query.executor.fill.PreviousFill;
@@ -579,16 +579,16 @@ public class IoTDBSqlVisitor extends IoTDBSqlParserBaseVisitor<Operator> {
if (ctx.DURATION_LITERAL().size() == 1) {
if (ctx.EVERY() != null) {
operator.setEveryInterval(
- DatetimeUtils.convertDurationStrToLong(ctx.DURATION_LITERAL(0).getText()));
+ DateTimeUtils.convertDurationStrToLong(ctx.DURATION_LITERAL(0).getText()));
} else if (ctx.FOR() != null) {
operator.setForInterval(
- DatetimeUtils.convertDurationStrToLong(ctx.DURATION_LITERAL(0).getText()));
+ DateTimeUtils.convertDurationStrToLong(ctx.DURATION_LITERAL(0).getText()));
}
} else if (ctx.DURATION_LITERAL().size() == 2) {
operator.setEveryInterval(
- DatetimeUtils.convertDurationStrToLong(ctx.DURATION_LITERAL(0).getText()));
+ DateTimeUtils.convertDurationStrToLong(ctx.DURATION_LITERAL(0).getText()));
operator.setForInterval(
- DatetimeUtils.convertDurationStrToLong(ctx.DURATION_LITERAL(1).getText()));
+ DateTimeUtils.convertDurationStrToLong(ctx.DURATION_LITERAL(1).getText()));
}
if (ctx.BOUNDARY() != null) {
@@ -1557,7 +1557,7 @@ public class IoTDBSqlVisitor extends IoTDBSqlParserBaseVisitor<Operator> {
private void parseTimeInterval(
IoTDBSqlParser.TimeIntervalContext timeInterval,
GroupByClauseComponent groupByClauseComponent) {
- long currentTime = DatetimeUtils.currentTime();
+ long currentTime = DateTimeUtils.currentTime();
long startTime = parseTimeValue(timeInterval.timeValue(0), currentTime);
long endTime = parseTimeValue(timeInterval.timeValue(1), currentTime);
groupByClauseComponent.setStartTime(startTime);
@@ -1768,7 +1768,7 @@ public class IoTDBSqlVisitor extends IoTDBSqlParserBaseVisitor<Operator> {
"the measurementList's size is not consistent with the valueList's size");
}
timestamp =
- parseTimeValue(insertMultiValues.get(i).timeValue(), DatetimeUtils.currentTime());
+ parseTimeValue(insertMultiValues.get(i).timeValue(), DateTimeUtils.currentTime());
} else {
if (!isTimeDefault) {
throw new SQLParserException(
@@ -2363,10 +2363,10 @@ public class IoTDBSqlVisitor extends IoTDBSqlParserBaseVisitor<Operator> {
throw new SQLParserException("input timestamp cannot be empty");
}
if (timestampStr.equalsIgnoreCase(SQLConstant.NOW_FUNC)) {
- return DatetimeUtils.currentTime();
+ return DateTimeUtils.currentTime();
}
try {
- return DatetimeUtils.convertDatetimeStrToLong(timestampStr, zoneId);
+ return DateTimeUtils.convertDatetimeStrToLong(timestampStr, zoneId);
} catch (Exception e) {
throw new SQLParserException(
String.format(
@@ -2385,7 +2385,7 @@ public class IoTDBSqlVisitor extends IoTDBSqlParserBaseVisitor<Operator> {
return currentTime;
}
try {
- return DatetimeUtils.convertDatetimeStrToLong(timestampStr, zoneId);
+ return DateTimeUtils.convertDatetimeStrToLong(timestampStr, zoneId);
} catch (Exception e) {
throw new SQLParserException(
String.format(
@@ -2409,9 +2409,9 @@ public class IoTDBSqlVisitor extends IoTDBSqlParserBaseVisitor<Operator> {
time = parseDateFormat(ctx.getChild(0).getText());
for (int i = 1; i < ctx.getChildCount(); i = i + 2) {
if ("+".equals(ctx.getChild(i).getText())) {
- time += DatetimeUtils.convertDurationStrToLong(time, ctx.getChild(i + 1).getText());
+ time += DateTimeUtils.convertDurationStrToLong(time, ctx.getChild(i + 1).getText());
} else {
- time -= DatetimeUtils.convertDurationStrToLong(time, ctx.getChild(i + 1).getText());
+ time -= DateTimeUtils.convertDurationStrToLong(time, ctx.getChild(i + 1).getText());
}
}
return time;
@@ -2422,9 +2422,9 @@ public class IoTDBSqlVisitor extends IoTDBSqlParserBaseVisitor<Operator> {
time = parseDateFormat(ctx.getChild(0).getText(), currentTime);
for (int i = 1; i < ctx.getChildCount(); i = i + 2) {
if ("+".equals(ctx.getChild(i).getText())) {
- time += DatetimeUtils.convertDurationStrToLong(time, ctx.getChild(i + 1).getText());
+ time += DateTimeUtils.convertDurationStrToLong(time, ctx.getChild(i + 1).getText());
} else {
- time -= DatetimeUtils.convertDurationStrToLong(time, ctx.getChild(i + 1).getText());
+ time -= DateTimeUtils.convertDurationStrToLong(time, ctx.getChild(i + 1).getText());
}
}
return time;
@@ -3015,7 +3015,7 @@ public class IoTDBSqlVisitor extends IoTDBSqlParserBaseVisitor<Operator> {
groupByComponent.setSlidingStepByMonth(true);
}
}
- return DatetimeUtils.convertDurationStrToLong(durationStr);
+ return DateTimeUtils.convertDurationStrToLong(durationStr);
}
private void setMap(IoTDBSqlParser.AlterClauseContext ctx, Map<String, String> alterMap) {
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/utils/DatetimeUtils.java b/server/src/main/java/org/apache/iotdb/db/qp/utils/DateTimeUtils.java
similarity index 97%
rename from server/src/main/java/org/apache/iotdb/db/qp/utils/DatetimeUtils.java
rename to server/src/main/java/org/apache/iotdb/db/qp/utils/DateTimeUtils.java
index 1fe11a41d1..b6901726bd 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/utils/DatetimeUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/utils/DateTimeUtils.java
@@ -36,9 +36,9 @@ import java.time.temporal.ChronoField;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;
-public class DatetimeUtils {
+public class DateTimeUtils {
- private DatetimeUtils() {
+ private DateTimeUtils() {
// forbidding instantiation
}
@@ -553,7 +553,7 @@ public class DatetimeUtils {
unit += duration.charAt(i);
}
total +=
- DatetimeUtils.convertDurationStrToLong(
+ DateTimeUtils.convertDurationStrToLong(
currentTime == -1 ? -1 : currentTime + total,
temp,
unit.toLowerCase(),
@@ -667,6 +667,22 @@ public class DatetimeUtils {
return ZonedDateTime.ofInstant(Instant.ofEpochMilli(millisecond), ZoneId.systemDefault());
}
+ public static long convertMilliTimeWithPrecision(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;
+ }
+
public enum DurationUnit {
y,
mo,
diff --git a/server/src/main/java/org/apache/iotdb/db/query/executor/fill/LinearFill.java b/server/src/main/java/org/apache/iotdb/db/query/executor/fill/LinearFill.java
index 9e04d1ca23..7517ffadd9 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/executor/fill/LinearFill.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/executor/fill/LinearFill.java
@@ -26,7 +26,7 @@ import org.apache.iotdb.db.exception.query.UnSupportedFillTypeException;
import org.apache.iotdb.db.metadata.path.AlignedPath;
import org.apache.iotdb.db.metadata.path.MeasurementPath;
import org.apache.iotdb.db.metadata.path.PartialPath;
-import org.apache.iotdb.db.qp.utils.DatetimeUtils;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.db.query.aggregation.AggregateResult;
import org.apache.iotdb.db.query.aggregation.impl.FirstValueAggrResult;
import org.apache.iotdb.db.query.aggregation.impl.MinTimeAggrResult;
@@ -63,8 +63,8 @@ public class LinearFill extends IFill {
}
public LinearFill(String beforeStr, String afterStr) {
- this.beforeRange = DatetimeUtils.convertDurationStrToLong(beforeStr);
- this.afterRange = DatetimeUtils.convertDurationStrToLong(afterStr);
+ this.beforeRange = DateTimeUtils.convertDurationStrToLong(beforeStr);
+ this.afterRange = DateTimeUtils.convertDurationStrToLong(afterStr);
if (beforeStr.toLowerCase().contains("mo")) {
this.isBeforeByMonth = true;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/executor/fill/PreviousFill.java b/server/src/main/java/org/apache/iotdb/db/query/executor/fill/PreviousFill.java
index 3c222d5060..6dde2be1f5 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/executor/fill/PreviousFill.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/executor/fill/PreviousFill.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.db.exception.query.QueryProcessException;
import org.apache.iotdb.db.metadata.path.AlignedPath;
import org.apache.iotdb.db.metadata.path.MeasurementPath;
import org.apache.iotdb.db.metadata.path.PartialPath;
-import org.apache.iotdb.db.qp.utils.DatetimeUtils;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.db.query.context.QueryContext;
import org.apache.iotdb.db.query.control.QueryResourceManager;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -63,7 +63,7 @@ public class PreviousFill extends IFill {
}
public PreviousFill(String beforeStr, boolean untilLast) {
- this.beforeRange = DatetimeUtils.convertDurationStrToLong(beforeStr);
+ this.beforeRange = DateTimeUtils.convertDurationStrToLong(beforeStr);
this.untilLast = untilLast;
if (beforeStr.toLowerCase().contains("mo")) {
this.isBeforeByMonth = true;
diff --git a/server/src/main/java/org/apache/iotdb/db/query/udf/api/customizer/strategy/SlidingTimeWindowAccessStrategy.java b/server/src/main/java/org/apache/iotdb/db/query/udf/api/customizer/strategy/SlidingTimeWindowAccessStrategy.java
index 2d08b464ae..b1e8c14fe6 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/udf/api/customizer/strategy/SlidingTimeWindowAccessStrategy.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/udf/api/customizer/strategy/SlidingTimeWindowAccessStrategy.java
@@ -20,7 +20,7 @@
package org.apache.iotdb.db.query.udf.api.customizer.strategy;
import org.apache.iotdb.db.exception.query.QueryProcessException;
-import org.apache.iotdb.db.qp.utils.DatetimeUtils;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.db.query.udf.api.UDTF;
import org.apache.iotdb.db.query.udf.api.access.RowWindow;
import org.apache.iotdb.db.query.udf.api.collector.PointCollector;
@@ -101,7 +101,7 @@ public class SlidingTimeWindowAccessStrategy implements AccessStrategy {
* 2011-12-03T10:15:30+01:00.
* @param displayWindowEndString display window end in string. format: 2011-12-03T10:15:30 or
* 2011-12-03T10:15:30+01:00.
- * @see DatetimeUtils.DurationUnit
+ * @see DateTimeUtils.DurationUnit
*/
public SlidingTimeWindowAccessStrategy(
String timeIntervalString,
@@ -124,7 +124,7 @@ public class SlidingTimeWindowAccessStrategy implements AccessStrategy {
* units: y, mo, w, d, h, m, s, ms, us, ns.
* @param slidingStepString sliding step in string. examples: 12d8m9ns, 1y1mo, etc. supported
* units: y, mo, w, d, h, m, s, ms, us, ns.
- * @see DatetimeUtils.DurationUnit
+ * @see DateTimeUtils.DurationUnit
*/
public SlidingTimeWindowAccessStrategy(String timeIntervalString, String slidingStepString) {
inputInString = true;
@@ -139,7 +139,7 @@ public class SlidingTimeWindowAccessStrategy implements AccessStrategy {
*
* @param timeIntervalString time interval in string. examples: 12d8m9ns, 1y1mo, etc. supported
* units: y, mo, w, d, h, m, s, ms, us, ns.
- * @see DatetimeUtils.DurationUnit
+ * @see DateTimeUtils.DurationUnit
*/
public SlidingTimeWindowAccessStrategy(String timeIntervalString) {
inputInString = true;
@@ -244,18 +244,18 @@ public class SlidingTimeWindowAccessStrategy implements AccessStrategy {
}
private void parseStringParameters() throws QueryProcessException {
- timeInterval = DatetimeUtils.convertDurationStrToLong(timeIntervalString);
+ timeInterval = DateTimeUtils.convertDurationStrToLong(timeIntervalString);
slidingStep =
slidingStepString == null
? timeInterval
- : DatetimeUtils.convertDurationStrToLong(slidingStepString);
+ : DateTimeUtils.convertDurationStrToLong(slidingStepString);
displayWindowBegin =
displayWindowBeginString == null
? Long.MIN_VALUE
- : DatetimeUtils.convertDatetimeStrToLong(displayWindowBeginString, zoneId);
+ : DateTimeUtils.convertDatetimeStrToLong(displayWindowBeginString, zoneId);
displayWindowEnd =
displayWindowEndString == null
? Long.MAX_VALUE
- : DatetimeUtils.convertDatetimeStrToLong(displayWindowEndString, zoneId);
+ : DateTimeUtils.convertDatetimeStrToLong(displayWindowEndString, zoneId);
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/tools/IoTDBDataDirViewer.java b/server/src/main/java/org/apache/iotdb/db/tools/IoTDBDataDirViewer.java
index 64d6f5db32..e616293404 100644
--- a/server/src/main/java/org/apache/iotdb/db/tools/IoTDBDataDirViewer.java
+++ b/server/src/main/java/org/apache/iotdb/db/tools/IoTDBDataDirViewer.java
@@ -21,7 +21,7 @@ package org.apache.iotdb.db.tools;
import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.qp.utils.DatetimeUtils;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
import java.io.File;
@@ -151,9 +151,9 @@ public class IoTDBDataDirViewer {
"| | | | |--device %s, start time %d (%s), end time %d (%s)",
device,
resource.getStartTime(device),
- DatetimeUtils.convertMillsecondToZonedDateTime(resource.getStartTime(device)),
+ DateTimeUtils.convertMillsecondToZonedDateTime(resource.getStartTime(device)),
resource.getEndTime(device),
- DatetimeUtils.convertMillsecondToZonedDateTime(resource.getEndTime(device))));
+ DateTimeUtils.convertMillsecondToZonedDateTime(resource.getEndTime(device))));
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/tools/TsFileResourcePrinter.java b/server/src/main/java/org/apache/iotdb/db/tools/TsFileResourcePrinter.java
index 9706b7f49e..39825c180d 100644
--- a/server/src/main/java/org/apache/iotdb/db/tools/TsFileResourcePrinter.java
+++ b/server/src/main/java/org/apache/iotdb/db/tools/TsFileResourcePrinter.java
@@ -21,7 +21,7 @@ package org.apache.iotdb.db.tools;
import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.qp.utils.DatetimeUtils;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
import java.io.File;
@@ -78,9 +78,9 @@ public class TsFileResourcePrinter {
"device %s, start time %d (%s), end time %d (%s)%n",
device,
resource.getStartTime(device),
- DatetimeUtils.convertMillsecondToZonedDateTime(resource.getStartTime(device)),
+ DateTimeUtils.convertMillsecondToZonedDateTime(resource.getStartTime(device)),
resource.getEndTime(device),
- DatetimeUtils.convertMillsecondToZonedDateTime(resource.getEndTime(device)));
+ DateTimeUtils.convertMillsecondToZonedDateTime(resource.getEndTime(device)));
}
System.out.println();
}
diff --git a/server/src/main/java/org/apache/iotdb/db/tools/watermark/WatermarkDetector.java b/server/src/main/java/org/apache/iotdb/db/tools/watermark/WatermarkDetector.java
index 54b0a0bbf6..4f1cdef43c 100644
--- a/server/src/main/java/org/apache/iotdb/db/tools/watermark/WatermarkDetector.java
+++ b/server/src/main/java/org/apache/iotdb/db/tools/watermark/WatermarkDetector.java
@@ -20,7 +20,7 @@
package org.apache.iotdb.db.tools.watermark;
import org.apache.iotdb.db.exception.query.LogicalOperatorException;
-import org.apache.iotdb.db.qp.utils.DatetimeUtils;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.thrift.EncodingUtils;
@@ -173,7 +173,7 @@ public class WatermarkDetector {
} catch (NumberFormatException e) {
try {
ZoneId zoneId = ZoneId.systemDefault();
- timestamp = DatetimeUtils.convertDatetimeStrToLong(str, zoneId);
+ timestamp = DateTimeUtils.convertDatetimeStrToLong(str, zoneId);
} catch (LogicalOperatorException e1) {
throw new LogicalOperatorException("The format of timestamp is not unexpected.");
}
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/archiving/ArchivingOperateWriterReaderTest.java b/server/src/test/java/org/apache/iotdb/db/engine/archiving/ArchivingOperateWriterReaderTest.java
index 67b316531c..e709ac6636 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/archiving/ArchivingOperateWriterReaderTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/archiving/ArchivingOperateWriterReaderTest.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.db.engine.archiving;
import org.apache.iotdb.db.exception.metadata.IllegalPathException;
import org.apache.iotdb.db.exception.query.LogicalOperatorException;
import org.apache.iotdb.db.metadata.path.PartialPath;
-import org.apache.iotdb.db.qp.utils.DatetimeUtils;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.junit.Before;
import org.junit.Test;
@@ -65,7 +65,7 @@ public class ArchivingOperateWriterReaderTest {
archivingOperate.add(new ArchivingOperate(ArchivingOperate.ArchivingOperateType.PAUSE, task2));
archivingOperate.add(new ArchivingOperate(ArchivingOperate.ArchivingOperateType.RESUME, task2));
- startTime = DatetimeUtils.convertDatetimeStrToLong("2023-01-01", ZoneId.systemDefault());
+ startTime = DateTimeUtils.convertDatetimeStrToLong("2023-01-01", ZoneId.systemDefault());
task1.close();
task2.close();
}
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/archiving/ArchivingTest.java b/server/src/test/java/org/apache/iotdb/db/engine/archiving/ArchivingTest.java
index a5fc577dd9..646f247094 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/archiving/ArchivingTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/archiving/ArchivingTest.java
@@ -42,7 +42,7 @@ import org.apache.iotdb.db.qp.physical.crud.InsertRowPlan;
import org.apache.iotdb.db.qp.physical.sys.PauseArchivingPlan;
import org.apache.iotdb.db.qp.physical.sys.SetArchivingPlan;
import org.apache.iotdb.db.qp.physical.sys.ShowArchivingPlan;
-import org.apache.iotdb.db.qp.utils.DatetimeUtils;
+import org.apache.iotdb.db.qp.utils.DateTimeUtils;
import org.apache.iotdb.db.service.IoTDB;
import org.apache.iotdb.db.utils.EnvironmentUtils;
import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
@@ -92,7 +92,7 @@ public class ArchivingTest {
targetDir = new File("separated_test");
targetDir.mkdirs();
- startTime = DatetimeUtils.convertDatetimeStrToLong("2023-01-01", ZoneId.systemDefault());
+ startTime = DateTimeUtils.convertDatetimeStrToLong("2023-01-01", ZoneId.systemDefault());
}
@After
@@ -342,9 +342,9 @@ public class ArchivingTest {
RowRecord rowRecord = queryDataSet.next();
String sg = rowRecord.getFields().get(2).getStringValue();
if (sg.equals(sg1)) {
- ZonedDateTime startDate = DatetimeUtils.convertMillsecondToZonedDateTime(startTime);
+ ZonedDateTime startDate = DateTimeUtils.convertMillsecondToZonedDateTime(startTime);
assertEquals(
- DatetimeUtils.ISO_OFFSET_DATE_TIME_WITH_MS.format(startDate),
+ DateTimeUtils.ISO_OFFSET_DATE_TIME_WITH_MS.format(startDate),
rowRecord.getFields().get(4).getStringValue());
assertEquals(ttl, rowRecord.getFields().get(5).getLongV());
assertEquals(targetDir.getPath(), rowRecord.getFields().get(6).getStringValue());
diff --git a/server/src/test/java/org/apache/iotdb/db/protocol/rest/IoTDBRestServiceIT.java b/server/src/test/java/org/apache/iotdb/db/protocol/rest/IoTDBRestServiceIT.java
index d4923272ee..a5d67b5eb0 100644
--- a/server/src/test/java/org/apache/iotdb/db/protocol/rest/IoTDBRestServiceIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/protocol/rest/IoTDBRestServiceIT.java
@@ -513,7 +513,7 @@ public class IoTDBRestServiceIT {
new ArrayList<Object>() {
{
add("storage group");
- add("ttl");
+ add("ttl(ms)");
}
};
List<Object> values1 =
diff --git a/server/src/test/java/org/apache/iotdb/db/qp/utils/DatetimeQueryDataSetUtilsTest.java b/server/src/test/java/org/apache/iotdb/db/qp/utils/DatetimeQueryDataSetUtilsTest.java
index 469bad0421..a5d2d6224f 100644
--- a/server/src/test/java/org/apache/iotdb/db/qp/utils/DatetimeQueryDataSetUtilsTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/qp/utils/DatetimeQueryDataSetUtilsTest.java
@@ -74,101 +74,101 @@ public class DatetimeQueryDataSetUtilsTest {
/** Test time precision is ms. */
@Test
public void convertDurationStrToLongTest1() {
- Assert.assertEquals(7000L, DatetimeUtils.convertDurationStrToLongForTest(7, "s", "ms"));
- Assert.assertEquals(420000L, DatetimeUtils.convertDurationStrToLongForTest(7, "m", "ms"));
- Assert.assertEquals(25200000L, DatetimeUtils.convertDurationStrToLongForTest(7, "h", "ms"));
- Assert.assertEquals(604800000L, DatetimeUtils.convertDurationStrToLongForTest(7, "d", "ms"));
- Assert.assertEquals(4233600000L, DatetimeUtils.convertDurationStrToLongForTest(7, "w", "ms"));
- Assert.assertEquals(18144000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "mo", "ms"));
- Assert.assertEquals(220752000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "y", "ms"));
- Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLongForTest(7, "ms", "ms"));
- Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLongForTest(7000, "us", "ms"));
- Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLongForTest(7000000, "ns", "ms"));
+ Assert.assertEquals(7000L, DateTimeUtils.convertDurationStrToLongForTest(7, "s", "ms"));
+ Assert.assertEquals(420000L, DateTimeUtils.convertDurationStrToLongForTest(7, "m", "ms"));
+ Assert.assertEquals(25200000L, DateTimeUtils.convertDurationStrToLongForTest(7, "h", "ms"));
+ Assert.assertEquals(604800000L, DateTimeUtils.convertDurationStrToLongForTest(7, "d", "ms"));
+ Assert.assertEquals(4233600000L, DateTimeUtils.convertDurationStrToLongForTest(7, "w", "ms"));
+ Assert.assertEquals(18144000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "mo", "ms"));
+ Assert.assertEquals(220752000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "y", "ms"));
+ Assert.assertEquals(7L, DateTimeUtils.convertDurationStrToLongForTest(7, "ms", "ms"));
+ Assert.assertEquals(7L, DateTimeUtils.convertDurationStrToLongForTest(7000, "us", "ms"));
+ Assert.assertEquals(7L, DateTimeUtils.convertDurationStrToLongForTest(7000000, "ns", "ms"));
}
/** Test time precision is us. */
@Test
public void convertDurationStrToLongTest2() {
- Assert.assertEquals(7000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "s", "us"));
- Assert.assertEquals(420000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "m", "us"));
- Assert.assertEquals(25200000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "h", "us"));
- Assert.assertEquals(604800000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "d", "us"));
+ Assert.assertEquals(7000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "s", "us"));
+ Assert.assertEquals(420000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "m", "us"));
+ Assert.assertEquals(25200000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "h", "us"));
+ Assert.assertEquals(604800000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "d", "us"));
Assert.assertEquals(
- 4233600000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "w", "us"));
+ 4233600000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "w", "us"));
Assert.assertEquals(
- 18144000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "mo", "us"));
+ 18144000000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "mo", "us"));
Assert.assertEquals(
- 220752000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "y", "us"));
- Assert.assertEquals(7000L, DatetimeUtils.convertDurationStrToLongForTest(7, "ms", "us"));
- Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLongForTest(7, "us", "us"));
- Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLongForTest(7000, "ns", "us"));
+ 220752000000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "y", "us"));
+ Assert.assertEquals(7000L, DateTimeUtils.convertDurationStrToLongForTest(7, "ms", "us"));
+ Assert.assertEquals(7L, DateTimeUtils.convertDurationStrToLongForTest(7, "us", "us"));
+ Assert.assertEquals(7L, DateTimeUtils.convertDurationStrToLongForTest(7000, "ns", "us"));
}
/** Test time precision is ns. */
@Test
public void convertDurationStrToLongTest3() {
- Assert.assertEquals(7000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "s", "ns"));
- Assert.assertEquals(420000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "m", "ns"));
+ Assert.assertEquals(7000000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "s", "ns"));
+ Assert.assertEquals(420000000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "m", "ns"));
Assert.assertEquals(
- 25200000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "h", "ns"));
+ 25200000000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "h", "ns"));
Assert.assertEquals(
- 604800000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "d", "ns"));
+ 604800000000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "d", "ns"));
Assert.assertEquals(
- 4233600000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "w", "ns"));
+ 4233600000000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "w", "ns"));
Assert.assertEquals(
- 18144000000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "mo", "ns"));
+ 18144000000000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "mo", "ns"));
Assert.assertEquals(
- 220752000000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "y", "ns"));
- Assert.assertEquals(7000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "ms", "ns"));
- Assert.assertEquals(7000L, DatetimeUtils.convertDurationStrToLongForTest(7, "us", "ns"));
- Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLongForTest(7, "ns", "ns"));
+ 220752000000000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "y", "ns"));
+ Assert.assertEquals(7000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "ms", "ns"));
+ Assert.assertEquals(7000L, DateTimeUtils.convertDurationStrToLongForTest(7, "us", "ns"));
+ Assert.assertEquals(7L, DateTimeUtils.convertDurationStrToLongForTest(7, "ns", "ns"));
}
@Test
public void getInstantWithPrecisionTest() {
- Assert.assertEquals(7000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "s", "ns"));
- Assert.assertEquals(420000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "m", "ns"));
+ Assert.assertEquals(7000000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "s", "ns"));
+ Assert.assertEquals(420000000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "m", "ns"));
Assert.assertEquals(
- 25200000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "h", "ns"));
+ 25200000000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "h", "ns"));
Assert.assertEquals(
- 604800000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "d", "ns"));
+ 604800000000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "d", "ns"));
Assert.assertEquals(
- 4233600000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "w", "ns"));
+ 4233600000000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "w", "ns"));
Assert.assertEquals(
- 18144000000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "mo", "ns"));
+ 18144000000000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "mo", "ns"));
Assert.assertEquals(
- 220752000000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "y", "ns"));
- Assert.assertEquals(7000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "ms", "ns"));
- Assert.assertEquals(7000L, DatetimeUtils.convertDurationStrToLongForTest(7, "us", "ns"));
- Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLongForTest(7, "ns", "ns"));
+ 220752000000000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "y", "ns"));
+ Assert.assertEquals(7000000L, DateTimeUtils.convertDurationStrToLongForTest(7, "ms", "ns"));
+ Assert.assertEquals(7000L, DateTimeUtils.convertDurationStrToLongForTest(7, "us", "ns"));
+ Assert.assertEquals(7L, DateTimeUtils.convertDurationStrToLongForTest(7, "ns", "ns"));
}
/** Test convert duration including natural month unit. Time includes: 1970-01-01 ~ 1970-12-01 */
@Test
public void getConvertDurationIncludingMonthUnit() {
- Assert.assertEquals(31 * 86400000L, DatetimeUtils.convertDurationStrToLong(0, 1, "mo", "ms"));
+ Assert.assertEquals(31 * 86400000L, DateTimeUtils.convertDurationStrToLong(0, 1, "mo", "ms"));
Assert.assertEquals(
- 28 * 86400000L, DatetimeUtils.convertDurationStrToLong(2678400000L, 1, "mo", "ms"));
+ 28 * 86400000L, DateTimeUtils.convertDurationStrToLong(2678400000L, 1, "mo", "ms"));
Assert.assertEquals(
- 31 * 86400000L, DatetimeUtils.convertDurationStrToLong(5097600000L, 1, "mo", "ms"));
+ 31 * 86400000L, DateTimeUtils.convertDurationStrToLong(5097600000L, 1, "mo", "ms"));
Assert.assertEquals(
- 30 * 86400000L, DatetimeUtils.convertDurationStrToLong(7776000000L, 1, "mo", "ms"));
+ 30 * 86400000L, DateTimeUtils.convertDurationStrToLong(7776000000L, 1, "mo", "ms"));
Assert.assertEquals(
- 31 * 86400000L, DatetimeUtils.convertDurationStrToLong(10368000000L, 1, "mo", "ms"));
+ 31 * 86400000L, DateTimeUtils.convertDurationStrToLong(10368000000L, 1, "mo", "ms"));
Assert.assertEquals(
- 30 * 86400000L, DatetimeUtils.convertDurationStrToLong(13046400000L, 1, "mo", "ms"));
+ 30 * 86400000L, DateTimeUtils.convertDurationStrToLong(13046400000L, 1, "mo", "ms"));
Assert.assertEquals(
- 31 * 86400000L, DatetimeUtils.convertDurationStrToLong(15638400000L, 1, "mo", "ms"));
+ 31 * 86400000L, DateTimeUtils.convertDurationStrToLong(15638400000L, 1, "mo", "ms"));
Assert.assertEquals(
- 31 * 86400000L, DatetimeUtils.convertDurationStrToLong(18316800000L, 1, "mo", "ms"));
+ 31 * 86400000L, DateTimeUtils.convertDurationStrToLong(18316800000L, 1, "mo", "ms"));
Assert.assertEquals(
- 30 * 86400000L, DatetimeUtils.convertDurationStrToLong(20995200000L, 1, "mo", "ms"));
+ 30 * 86400000L, DateTimeUtils.convertDurationStrToLong(20995200000L, 1, "mo", "ms"));
Assert.assertEquals(
- 31 * 86400000L, DatetimeUtils.convertDurationStrToLong(23587200000L, 1, "mo", "ms"));
+ 31 * 86400000L, DateTimeUtils.convertDurationStrToLong(23587200000L, 1, "mo", "ms"));
Assert.assertEquals(
- 30 * 86400000L, DatetimeUtils.convertDurationStrToLong(26265600000L, 1, "mo", "ms"));
+ 30 * 86400000L, DateTimeUtils.convertDurationStrToLong(26265600000L, 1, "mo", "ms"));
Assert.assertEquals(
- 31 * 86400000L, DatetimeUtils.convertDurationStrToLong(28857600000L, 1, "mo", "ms"));
+ 31 * 86400000L, DateTimeUtils.convertDurationStrToLong(28857600000L, 1, "mo", "ms"));
}
public void testConvertDatetimeStrToLongWithoutMS(ZoneOffset zoneOffset, ZoneId zoneId, long res)
@@ -189,11 +189,11 @@ public class DatetimeQueryDataSetUtilsTest {
"2019.01.02T15:13:27" + zoneOffset,
};
for (String str : timeFormatWithoutMs) {
- Assert.assertEquals(res, DatetimeUtils.convertDatetimeStrToLong(str, zoneOffset, 0));
+ Assert.assertEquals(res, DateTimeUtils.convertDatetimeStrToLong(str, zoneOffset, 0));
}
for (String str : timeFormatWithoutMs) {
- assertEquals(res, DatetimeUtils.convertDatetimeStrToLong(str, zoneId));
+ assertEquals(res, DateTimeUtils.convertDatetimeStrToLong(str, zoneId));
}
}
@@ -215,11 +215,11 @@ public class DatetimeQueryDataSetUtilsTest {
"2019.01.02T15:13:27.689" + zoneOffset,
};
for (String str : timeFormatWithoutMs) {
- assertEquals(res, DatetimeUtils.convertDatetimeStrToLong(str, zoneOffset, 0));
+ assertEquals(res, DateTimeUtils.convertDatetimeStrToLong(str, zoneOffset, 0));
}
for (String str : timeFormatWithoutMs) {
- assertEquals(res, DatetimeUtils.convertDatetimeStrToLong(str, zoneId));
+ assertEquals(res, DateTimeUtils.convertDatetimeStrToLong(str, zoneId));
}
}
@@ -230,11 +230,11 @@ public class DatetimeQueryDataSetUtilsTest {
"2019-01-02", "2019/01/02", "2019.01.02",
};
for (String str : timeFormatWithoutMs) {
- assertEquals(res, DatetimeUtils.convertDatetimeStrToLong(str, zoneOffset, 0));
+ assertEquals(res, DateTimeUtils.convertDatetimeStrToLong(str, zoneOffset, 0));
}
for (String str : timeFormatWithoutMs) {
- assertEquals(res, DatetimeUtils.convertDatetimeStrToLong(str, zoneId));
+ assertEquals(res, DateTimeUtils.convertDatetimeStrToLong(str, zoneId));
}
}
}
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/iotdb/IoTDBInterpreterTest.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/iotdb/IoTDBInterpreterTest.java
index c89c2b5555..6948a6ac10 100644
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/iotdb/IoTDBInterpreterTest.java
+++ b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/iotdb/IoTDBInterpreterTest.java
@@ -355,7 +355,7 @@ public class IoTDBInterpreterTest {
public void testShowAllTTL() {
interpreter.internalInterpret("SET TTL TO root.test.wf01 12345", null);
InterpreterResult actual = interpreter.internalInterpret("SHOW ALL TTL", null);
- String gt = "storage group\tttl\n" + "root.test.wf02\tnull\n" + "root.test.wf01\t12345";
+ String gt = "storage group\tttl(ms)\n" + "root.test.wf02\tnull\n" + "root.test.wf01\t12345";
Assert.assertNotNull(actual);
Assert.assertEquals(Code.SUCCESS, actual.code());
Assert.assertEquals(gt, actual.message().get(0).getData());
@@ -365,7 +365,7 @@ public class IoTDBInterpreterTest {
public void testShowTTL() {
interpreter.internalInterpret("SET TTL TO root.test.wf01 12345", null);
InterpreterResult actual = interpreter.internalInterpret("SHOW TTL ON root.test.wf01", null);
- String gt = "storage group\tttl\n" + "root.test.wf01\t12345";
+ String gt = "storage group\tttl(ms)\n" + "root.test.wf01\t12345";
Assert.assertNotNull(actual);
Assert.assertEquals(Code.SUCCESS, actual.code());
Assert.assertEquals(gt, actual.message().get(0).getData());