You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2020/09/15 15:44:24 UTC

[cassandra] branch trunk updated: Allow zero padding in timestamp serialization.

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

brandonwilliams pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 07f8db3  Allow zero padding in timestamp serialization.
07f8db3 is described below

commit 07f8db31ae10a3883c06194642354feb711e361c
Author: Adam Holmberg <ad...@datastax.com>
AuthorDate: Fri Sep 11 16:15:23 2020 -0500

    Allow zero padding in timestamp serialization.
    
    Patch by Adam Holmberg, reviewed by brandonwilliams for CASSANDRA-16105
---
 CHANGES.txt                                        |  1 +
 .../cassandra/serializers/TimestampSerializer.java |  4 ++--
 .../serializers/TimestampSerializerTest.java       | 23 ++++++++++++++++++++++
 3 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index fa28101..5d8a9fb 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 4.0-beta3
+ * Allow zero padding in timestamp serialization (CASSANDRA-16105)
  * Add byte array backed cells (CASSANDRA-15393)
  * Correctly handle pending ranges with adjacent range movements (CASSANDRA-14801)
  * Avoid adding locahost when streaming trivial ranges (CASSANDRA-16099)
diff --git a/src/java/org/apache/cassandra/serializers/TimestampSerializer.java b/src/java/org/apache/cassandra/serializers/TimestampSerializer.java
index b6b712b..ab048d0 100644
--- a/src/java/org/apache/cassandra/serializers/TimestampSerializer.java
+++ b/src/java/org/apache/cassandra/serializers/TimestampSerializer.java
@@ -47,8 +47,8 @@ public class TimestampSerializer extends TypeSerializer<Date>
 
         final String[] dateTimeFormats = new String[]
                                          {
-                                         "yyyy-MM-dd'T'HH:mm[:ss]",
-                                         "yyyy-MM-dd HH:mm[:ss]"
+                                         "y-M-d'T'H:m[:s]",
+                                         "y-M-d H:m[:s]"
                                          };
         final String[] offsetFormats = new String[]
                                          {
diff --git a/test/unit/org/apache/cassandra/serializers/TimestampSerializerTest.java b/test/unit/org/apache/cassandra/serializers/TimestampSerializerTest.java
index 0cb365a..e9ae266 100644
--- a/test/unit/org/apache/cassandra/serializers/TimestampSerializerTest.java
+++ b/test/unit/org/apache/cassandra/serializers/TimestampSerializerTest.java
@@ -144,6 +144,29 @@ public class TimestampSerializerTest
     }
 
     @Test
+    public void testZeroPadding() // CASSANDRA-16105
+    {
+        long expected = ONE_HOUR + ONE_MINUTE + ONE_SECOND;
+        validateStringTimestamp("1970-01-01 01:01:01Z", expected);
+        validateStringTimestamp("1970-1-1 1:1:1Z", expected);
+        validateStringTimestamp("1970-01-01 01:01:01", BASE_OFFSET + expected);
+        validateStringTimestamp("1970-1-1 1:1:1", BASE_OFFSET + expected);
+
+        expected = -31556905139000L;
+        validateStringTimestamp("0970-01-01 01:01:01Z", expected);
+        validateStringTimestamp("970-1-1 1:1:1Z", expected);
+
+        expected = 10*ONE_MINUTE + 100L;
+        validateStringTimestamp("1970-01-01T0:0000000010:0.1Z", expected);
+        validateStringTimestamp("0001970-01-01T0:010:0.1Z", expected);
+        validateStringTimestamp("1970-1-1T0:10:0.1Z", expected);
+        validateStringTimestamp("1970-0001-0001T0:010:0.1Z", expected);
+
+        validateStringTimestamp("1970-1-01T1:1Z", ONE_HOUR + ONE_MINUTE);
+        validateStringTimestamp("1970-1-01T1:1", BASE_OFFSET + ONE_HOUR + ONE_MINUTE);
+    }
+
+    @Test
     public void testInvalidTimezones()
     {
         List<String> timestamps = new ArrayList<String>(


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org