This is an automated email from the ASF dual-hosted git repository.

yuxia pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fluss.git


The following commit(s) were added to refs/heads/main by this push:
     new 4e91db47b [test] Add additional assertion to tests for 
TimestampLtz/Ntz to partition string conversion (#2481)
4e91db47b is described below

commit 4e91db47ba7623e130038814fc78c10ac106dbfc
Author: Keith Lee <[email protected]>
AuthorDate: Tue Jan 27 13:17:21 2026 +0000

    [test] Add additional assertion to tests for TimestampLtz/Ntz to partition 
string conversion (#2481)
---
 .../org/apache/fluss/utils/PartitionUtilsTest.java | 88 ++++++++++++++++++++++
 1 file changed, 88 insertions(+)

diff --git 
a/fluss-common/src/test/java/org/apache/fluss/utils/PartitionUtilsTest.java 
b/fluss-common/src/test/java/org/apache/fluss/utils/PartitionUtilsTest.java
index d7b24a075..686e5ce47 100644
--- a/fluss-common/src/test/java/org/apache/fluss/utils/PartitionUtilsTest.java
+++ b/fluss-common/src/test/java/org/apache/fluss/utils/PartitionUtilsTest.java
@@ -309,6 +309,50 @@ class PartitionUtilsTest {
         assertThat(toStringResult).isEqualTo("2025-05-31-03-42-35_428099988");
         String detectInvalid = detectInvalidName(toStringResult);
         assertThat(detectInvalid).isEqualTo(null);
+
+        // Zero nanos of millis
+        millis = 1748662955428L;
+        nanos = 0;
+        timeStampNTZValue = TimestampNtz.fromMillis(millis, nanos);
+        type = DataTypeRoot.TIMESTAMP_WITHOUT_TIME_ZONE;
+
+        toStringResult = convertValueOfType(timeStampNTZValue, type);
+        assertThat(toStringResult).isEqualTo("2025-05-31-03-42-35_428");
+        detectInvalid = detectInvalidName(toStringResult);
+        assertThat(detectInvalid).isEqualTo(null);
+
+        // Zero millis
+        millis = 1748662955000L;
+        nanos = 99988;
+        timeStampNTZValue = TimestampNtz.fromMillis(millis, nanos);
+        type = DataTypeRoot.TIMESTAMP_WITHOUT_TIME_ZONE;
+
+        toStringResult = convertValueOfType(timeStampNTZValue, type);
+        assertThat(toStringResult).isEqualTo("2025-05-31-03-42-35_000099988");
+        detectInvalid = detectInvalidName(toStringResult);
+        assertThat(detectInvalid).isEqualTo(null);
+
+        // Zero nanos and zero millis
+        millis = 1748662955000L;
+        nanos = 0;
+        timeStampNTZValue = TimestampNtz.fromMillis(millis, nanos);
+        type = DataTypeRoot.TIMESTAMP_WITHOUT_TIME_ZONE;
+
+        toStringResult = convertValueOfType(timeStampNTZValue, type);
+        assertThat(toStringResult).isEqualTo("2025-05-31-03-42-35_");
+        detectInvalid = detectInvalidName(toStringResult);
+        assertThat(detectInvalid).isEqualTo(null);
+
+        // Negative millis
+        millis = -1748662955428L;
+        nanos = 99988;
+        timeStampNTZValue = TimestampNtz.fromMillis(millis, nanos);
+        type = DataTypeRoot.TIMESTAMP_WITHOUT_TIME_ZONE;
+
+        toStringResult = convertValueOfType(timeStampNTZValue, type);
+        assertThat(toStringResult).isEqualTo("1914-08-03-20-17-24_572099988");
+        detectInvalid = detectInvalidName(toStringResult);
+        assertThat(detectInvalid).isEqualTo(null);
     }
 
     @Test
@@ -322,6 +366,50 @@ class PartitionUtilsTest {
         assertThat(toStringResult).isEqualTo("2025-05-31-03-42-35_428099988");
         String detectInvalid = detectInvalidName(toStringResult);
         assertThat(detectInvalid).isEqualTo(null);
+
+        // Zero nanos
+        millis = 1748662955428L;
+        nanos = 0;
+        timestampLTZ = TimestampLtz.fromEpochMillis(millis, nanos);
+        type = DataTypeRoot.TIMESTAMP_WITH_LOCAL_TIME_ZONE;
+
+        toStringResult = convertValueOfType(timestampLTZ, type);
+        assertThat(toStringResult).isEqualTo("2025-05-31-03-42-35_428");
+        detectInvalid = detectInvalidName(toStringResult);
+        assertThat(detectInvalid).isEqualTo(null);
+
+        // Zero millis
+        millis = 1748662955000L;
+        nanos = 99988;
+        timestampLTZ = TimestampLtz.fromEpochMillis(millis, nanos);
+        type = DataTypeRoot.TIMESTAMP_WITH_LOCAL_TIME_ZONE;
+
+        toStringResult = convertValueOfType(timestampLTZ, type);
+        assertThat(toStringResult).isEqualTo("2025-05-31-03-42-35_000099988");
+        detectInvalid = detectInvalidName(toStringResult);
+        assertThat(detectInvalid).isEqualTo(null);
+
+        // Zero nanos and zero millis
+        millis = 1748662955000L;
+        nanos = 0;
+        timestampLTZ = TimestampLtz.fromEpochMillis(millis, nanos);
+        type = DataTypeRoot.TIMESTAMP_WITH_LOCAL_TIME_ZONE;
+
+        toStringResult = convertValueOfType(timestampLTZ, type);
+        assertThat(toStringResult).isEqualTo("2025-05-31-03-42-35_");
+        detectInvalid = detectInvalidName(toStringResult);
+        assertThat(detectInvalid).isEqualTo(null);
+
+        // Negative millis
+        millis = -1748662955428L;
+        nanos = 99988;
+        timestampLTZ = TimestampLtz.fromEpochMillis(millis, nanos);
+        type = DataTypeRoot.TIMESTAMP_WITH_LOCAL_TIME_ZONE;
+
+        toStringResult = convertValueOfType(timestampLTZ, type);
+        assertThat(toStringResult).isEqualTo("1914-08-03-20-17-24_572099988");
+        detectInvalid = detectInvalidName(toStringResult);
+        assertThat(detectInvalid).isEqualTo(null);
     }
 
     @Test

Reply via email to