fixed the partion date extracting

This commit is contained in:
Dmytro Shvaika 2020-01-30 12:55:05 +02:00 committed by Andrew Shvayka
parent e3b39bedf6
commit 41cbdd154e
4 changed files with 12 additions and 11 deletions

View File

@ -17,7 +17,7 @@ package org.thingsboard.server.dao.util;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
@ConditionalOnExpression("('${database.ts.type}'=='sql' || '${database.entities.type}'=='timescale') " +
@ConditionalOnExpression("('${database.ts.type}'=='sql' || '${database.ts.type}'=='timescale') " +
"&& '${spring.jpa.database-platform}'=='org.hibernate.dialect.PostgreSQLDialect'")
public @interface PsqlTsAnyDao {
}

View File

@ -46,6 +46,8 @@ import org.thingsboard.server.dao.util.SqlTsDao;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@ -298,13 +300,15 @@ public class JpaPsqlTimeseriesDao extends AbstractSimpleSqlTimeseriesDao<TsKvEnt
}
private PsqlPartition toPartition(long ts) {
LocalDateTime time = LocalDateTime.ofInstant(Instant.ofEpochMilli(ts), ZoneOffset.UTC);
LocalDateTime localDateTimeStart = tsFormat.trancateTo(time);
if (localDateTimeStart == SqlTsPartitionDate.EPOCH_START) {
if (tsFormat.getTruncateUnit().equals(SqlTsPartitionDate.INDEFINITE.getTruncateUnit())) {
return new PsqlPartition(toMills(EPOCH_START), Long.MAX_VALUE, tsFormat.getPattern());
} else {
LocalDateTime time = LocalDateTime.ofInstant(Instant.ofEpochMilli(ts), ZoneOffset.UTC);
LocalDateTime localDateTimeStart = tsFormat.trancateTo(time);
LocalDateTime localDateTimeEnd = tsFormat.plusTo(localDateTimeStart);
return new PsqlPartition(toMills(localDateTimeStart), toMills(localDateTimeEnd), tsFormat.getPattern());
ZonedDateTime zonedDateTime = localDateTimeStart.atZone(ZoneOffset.UTC);
String partitionDate = zonedDateTime.format(DateTimeFormatter.ofPattern(tsFormat.getPattern()));
return new PsqlPartition(toMills(localDateTimeStart), toMills(localDateTimeEnd), partitionDate);
}
}

View File

@ -17,9 +17,6 @@ package org.thingsboard.server.dao.timeseries;
import lombok.Data;
import java.text.SimpleDateFormat;
import java.util.Date;
@Data
public class PsqlPartition {
@ -30,10 +27,10 @@ public class PsqlPartition {
private String partitionDate;
private String query;
public PsqlPartition(long start, long end, String pattern) {
public PsqlPartition(long start, long end, String partitionDate) {
this.start = start;
this.end = end;
this.partitionDate = new SimpleDateFormat(pattern).format(new Date(start));
this.partitionDate = partitionDate;
this.query = createStatement(start, end, partitionDate);
}

View File

@ -88,6 +88,6 @@ public enum SqlTsPartitionDate {
}
}
}
return Optional.of(partition);
return Optional.ofNullable(partition);
}
}