Skip to content

Commit d9de1a7

Browse files
committed
Fix compatibility overloads for partition APIs
1 parent 5d666b3 commit d9de1a7

2 files changed

Lines changed: 86 additions & 0 deletions

File tree

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/splitter/TsFileSplitter.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,11 @@ public TsFileSplitter(File tsFile, TsFileDataConsumer consumer) {
9393
this.consumer = consumer;
9494
}
9595

96+
public void splitTsFileByDataPartition()
97+
throws IOException, LoadFileException, IllegalStateException {
98+
splitTsFileByDataPartition(null);
99+
}
100+
96101
@SuppressWarnings({"squid:S3776", "squid:S6541"})
97102
public void splitTsFileByDataPartition(String database)
98103
throws IOException, LoadFileException, IllegalStateException {

iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/TimePartitionUtils.java

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,22 +214,42 @@ public static TTimePartitionSlot getTimePartitionSlot(long time, String database
214214
return timePartitionSlot;
215215
}
216216

217+
public static TTimePartitionSlot getTimePartitionSlot(long time) {
218+
return getTimePartitionSlot(time, null);
219+
}
220+
217221
public static long getTimePartitionInterval(String database) {
218222
return getDatabaseConfig(database).getTimePartitionInterval();
219223
}
220224

225+
public static long getTimePartitionInterval() {
226+
return timePartitionInterval;
227+
}
228+
221229
public static long getTimePartitionOrigin(String database) {
222230
return getDatabaseConfig(database).getTimePartitionOrigin();
223231
}
224232

233+
public static long getTimePartitionOrigin() {
234+
return timePartitionOrigin;
235+
}
236+
225237
public static long getTimePartitionLowerBound(long time, String database) {
226238
return getTimePartitionLowerBoundInternal(time, getDatabaseConfig(database));
227239
}
228240

241+
public static long getTimePartitionLowerBound(long time) {
242+
return getTimePartitionLowerBound(time, null);
243+
}
244+
229245
public static long getTimePartitionUpperBound(long time, String database) {
230246
return getTimePartitionUpperBoundInternal(time, getDatabaseConfig(database));
231247
}
232248

249+
public static long getTimePartitionUpperBound(long time) {
250+
return getTimePartitionUpperBound(time, null);
251+
}
252+
233253
public static long getTimePartitionId(long time, String database) {
234254
DatabaseTimePartitionConfig config = getDatabaseConfig(database);
235255
time -= config.getTimePartitionOrigin();
@@ -238,11 +258,22 @@ public static long getTimePartitionId(long time, String database) {
238258
: time / config.getTimePartitionInterval() - 1;
239259
}
240260

261+
public static long getTimePartitionId(long time) {
262+
time -= timePartitionOrigin;
263+
return time > 0 || time % timePartitionInterval == 0
264+
? time / timePartitionInterval
265+
: time / timePartitionInterval - 1;
266+
}
267+
241268
public static long getStartTimeByPartitionId(long partitionId, String database) {
242269
DatabaseTimePartitionConfig config = getDatabaseConfig(database);
243270
return (partitionId * config.getTimePartitionInterval()) + config.getTimePartitionOrigin();
244271
}
245272

273+
public static long getStartTimeByPartitionId(long partitionId) {
274+
return (partitionId * timePartitionInterval) + timePartitionOrigin;
275+
}
276+
246277
public static boolean satisfyPartitionId(
247278
long startTime, long endTime, long partitionId, String database) {
248279
DatabaseTimePartitionConfig config = getDatabaseConfig(database);
@@ -261,6 +292,20 @@ public static boolean satisfyPartitionId(
261292
return startPartition <= partitionId && endPartition >= partitionId;
262293
}
263294

295+
public static boolean satisfyPartitionId(long startTime, long endTime, long partitionId) {
296+
long startPartition =
297+
originMayCauseOverflow
298+
? getTimePartitionIdWithoutOverflow(
299+
startTime, timePartitionOrigin, timePartitionInterval)
300+
: getTimePartitionId(startTime);
301+
long endPartition =
302+
originMayCauseOverflow
303+
? getTimePartitionIdWithoutOverflow(
304+
endTime, timePartitionOrigin, timePartitionInterval)
305+
: getTimePartitionId(endTime);
306+
return startPartition <= partitionId && endPartition >= partitionId;
307+
}
308+
264309
public static boolean satisfyPartitionStartTime(
265310
Filter timeFilter, long partitionStartTime, String database) {
266311
if (timeFilter == null) {
@@ -274,6 +319,17 @@ public static boolean satisfyPartitionStartTime(
274319
return timeFilter.satisfyStartEndTime(partitionStartTime, partitionEndTime);
275320
}
276321

322+
public static boolean satisfyPartitionStartTime(Filter timeFilter, long partitionStartTime) {
323+
if (timeFilter == null) {
324+
return true;
325+
}
326+
long partitionEndTime =
327+
partitionStartTime >= timePartitionLowerBoundWithoutOverflow
328+
? Long.MAX_VALUE
329+
: (partitionStartTime + timePartitionInterval - 1);
330+
return timeFilter.satisfyStartEndTime(partitionStartTime, partitionEndTime);
331+
}
332+
277333
public static boolean satisfyTimePartition(Filter timeFilter, long partitionId, String database) {
278334
DatabaseTimePartitionConfig config = getDatabaseConfig(database);
279335
long partitionStartTime;
@@ -290,6 +346,20 @@ public static boolean satisfyTimePartition(Filter timeFilter, long partitionId,
290346
return satisfyPartitionStartTime(timeFilter, partitionStartTime, database);
291347
}
292348

349+
public static boolean satisfyTimePartition(Filter timeFilter, long partitionId) {
350+
long partitionStartTime;
351+
if (originMayCauseOverflow) {
352+
partitionStartTime =
353+
BigInteger.valueOf(partitionId)
354+
.multiply(bigTimePartitionInterval)
355+
.add(bigTimePartitionOrigin)
356+
.longValue();
357+
} else {
358+
partitionStartTime = partitionId * timePartitionInterval + timePartitionOrigin;
359+
}
360+
return satisfyPartitionStartTime(timeFilter, partitionStartTime);
361+
}
362+
293363
public static long getEstimateTimePartitionSize(long startTime, long endTime, String database) {
294364
DatabaseTimePartitionConfig config = getDatabaseConfig(database);
295365
if (endTime > 0 && startTime < 0) {
@@ -302,6 +372,17 @@ public static long getEstimateTimePartitionSize(long startTime, long endTime, St
302372
return (endTime - startTime) / config.getTimePartitionInterval() + 1;
303373
}
304374

375+
public static long getEstimateTimePartitionSize(long startTime, long endTime) {
376+
if (endTime > 0 && startTime < 0) {
377+
return BigInteger.valueOf(endTime)
378+
.subtract(BigInteger.valueOf(startTime))
379+
.divide(bigTimePartitionInterval)
380+
.longValue()
381+
+ 1;
382+
}
383+
return (endTime - startTime) / timePartitionInterval + 1;
384+
}
385+
305386
// Helper methods for database-specific calculations
306387
private static long getTimePartitionLowerBoundInternal(
307388
long time, DatabaseTimePartitionConfig config) {

0 commit comments

Comments
 (0)