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