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; 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'") "&& '${spring.jpa.database-platform}'=='org.hibernate.dialect.PostgreSQLDialect'")
public @interface PsqlTsAnyDao { public @interface PsqlTsAnyDao {
} }

View File

@ -46,6 +46,8 @@ import org.thingsboard.server.dao.util.SqlTsDao;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -298,13 +300,15 @@ public class JpaPsqlTimeseriesDao extends AbstractSimpleSqlTimeseriesDao<TsKvEnt
} }
private PsqlPartition toPartition(long ts) { private PsqlPartition toPartition(long ts) {
LocalDateTime time = LocalDateTime.ofInstant(Instant.ofEpochMilli(ts), ZoneOffset.UTC); if (tsFormat.getTruncateUnit().equals(SqlTsPartitionDate.INDEFINITE.getTruncateUnit())) {
LocalDateTime localDateTimeStart = tsFormat.trancateTo(time);
if (localDateTimeStart == SqlTsPartitionDate.EPOCH_START) {
return new PsqlPartition(toMills(EPOCH_START), Long.MAX_VALUE, tsFormat.getPattern()); return new PsqlPartition(toMills(EPOCH_START), Long.MAX_VALUE, tsFormat.getPattern());
} else { } else {
LocalDateTime time = LocalDateTime.ofInstant(Instant.ofEpochMilli(ts), ZoneOffset.UTC);
LocalDateTime localDateTimeStart = tsFormat.trancateTo(time);
LocalDateTime localDateTimeEnd = tsFormat.plusTo(localDateTimeStart); 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 lombok.Data;
import java.text.SimpleDateFormat;
import java.util.Date;
@Data @Data
public class PsqlPartition { public class PsqlPartition {
@ -30,10 +27,10 @@ public class PsqlPartition {
private String partitionDate; private String partitionDate;
private String query; private String query;
public PsqlPartition(long start, long end, String pattern) { public PsqlPartition(long start, long end, String partitionDate) {
this.start = start; this.start = start;
this.end = end; this.end = end;
this.partitionDate = new SimpleDateFormat(pattern).format(new Date(start)); this.partitionDate = partitionDate;
this.query = createStatement(start, end, partitionDate); this.query = createStatement(start, end, partitionDate);
} }

View File

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