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;
|
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 {
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -88,6 +88,6 @@ public enum SqlTsPartitionDate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Optional.of(partition);
|
return Optional.ofNullable(partition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user