Browse Source

fixed the partion date extracting

pull/2391/head
Dmytro Shvaika 6 years ago
committed by Andrew Shvayka
parent
commit
41cbdd154e
  1. 2
      common/dao-api/src/main/java/org/thingsboard/server/dao/util/PsqlTsAnyDao.java
  2. 12
      dao/src/main/java/org/thingsboard/server/dao/sqlts/psql/JpaPsqlTimeseriesDao.java
  3. 7
      dao/src/main/java/org/thingsboard/server/dao/timeseries/PsqlPartition.java
  4. 2
      dao/src/main/java/org/thingsboard/server/dao/timeseries/SqlTsPartitionDate.java

2
common/dao-api/src/main/java/org/thingsboard/server/dao/util/PsqlTsAnyDao.java

@ -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 {
}

12
dao/src/main/java/org/thingsboard/server/dao/sqlts/psql/JpaPsqlTimeseriesDao.java

@ -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);
}
}

7
dao/src/main/java/org/thingsboard/server/dao/timeseries/PsqlPartition.java

@ -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);
}

2
dao/src/main/java/org/thingsboard/server/dao/timeseries/SqlTsPartitionDate.java

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