fixed the partion date extracting
This commit is contained in:
parent
e3b39bedf6
commit
41cbdd154e
@ -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 {
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -88,6 +88,6 @@ public enum SqlTsPartitionDate {
|
||||
}
|
||||
}
|
||||
}
|
||||
return Optional.of(partition);
|
||||
return Optional.ofNullable(partition);
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user