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

kgyrtkirk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new aac2d0b425b Fix bug for NestedCommonFormatColumnPartSerde (#18850)
aac2d0b425b is described below

commit aac2d0b425b4c5c0cd8af6466a736c6512649593
Author: Cece Mei <[email protected]>
AuthorDate: Wed Dec 17 00:49:29 2025 -0800

    Fix bug for NestedCommonFormatColumnPartSerde (#18850)
---
 .../serde/NestedCommonFormatColumnPartSerde.java   |   4 +-
 .../NestedCommonFormatColumnFormatSpecTest.java    | 128 ++++++++++-----------
 2 files changed, 63 insertions(+), 69 deletions(-)

diff --git 
a/processing/src/main/java/org/apache/druid/segment/serde/NestedCommonFormatColumnPartSerde.java
 
b/processing/src/main/java/org/apache/druid/segment/serde/NestedCommonFormatColumnPartSerde.java
index 16d41cfccc0..f65a126b4c5 100644
--- 
a/processing/src/main/java/org/apache/druid/segment/serde/NestedCommonFormatColumnPartSerde.java
+++ 
b/processing/src/main/java/org/apache/druid/segment/serde/NestedCommonFormatColumnPartSerde.java
@@ -482,8 +482,8 @@ public class NestedCommonFormatColumnPartSerde implements 
ColumnPartSerde
         @JsonProperty("longColumnCompression")@Nullable CompressionStrategy 
longColumnCompression,
         @JsonProperty("doubleColumnCompression")@Nullable CompressionStrategy 
doubleColumnCompression,
         @JsonProperty("bitmapEncoding") @Nullable BitmapSerdeFactory 
bitmapEncoding,
-        @JsonProperty("longFieldBitmapIndex")@Nullable BitmapIndexType 
longFieldBitmapIndex,
-        @JsonProperty("doubleFieldBitmapIndex")@Nullable BitmapIndexType 
doubleFieldBitmapIndex
+        @JsonProperty("longFieldBitmapIndexType")@Nullable BitmapIndexType 
longFieldBitmapIndex,
+        @JsonProperty("doubleFieldBitmapIndexType")@Nullable BitmapIndexType 
doubleFieldBitmapIndex
     )
     {
       super(
diff --git 
a/processing/src/test/java/org/apache/druid/segment/nested/NestedCommonFormatColumnFormatSpecTest.java
 
b/processing/src/test/java/org/apache/druid/segment/nested/NestedCommonFormatColumnFormatSpecTest.java
index d14bc35b428..2b6b2eb1565 100644
--- 
a/processing/src/test/java/org/apache/druid/segment/nested/NestedCommonFormatColumnFormatSpecTest.java
+++ 
b/processing/src/test/java/org/apache/druid/segment/nested/NestedCommonFormatColumnFormatSpecTest.java
@@ -30,6 +30,7 @@ import org.apache.druid.segment.data.CompressionStrategy;
 import org.apache.druid.segment.data.ConciseBitmapSerdeFactory;
 import org.apache.druid.segment.data.FrontCodedIndexed;
 import org.apache.druid.segment.data.RoaringBitmapSerdeFactory;
+import org.apache.druid.segment.serde.NestedCommonFormatColumnPartSerde;
 import org.junit.Assert;
 import org.junit.jupiter.api.Test;
 
@@ -39,19 +40,18 @@ public class NestedCommonFormatColumnFormatSpecTest
   public void testSerde() throws JsonProcessingException
   {
     NestedCommonFormatColumnFormatSpec spec =
-        NestedCommonFormatColumnFormatSpec.builder()
-                                          .setObjectFieldsDictionaryEncoding(
-                                              new 
StringEncodingStrategy.FrontCoded(4, FrontCodedIndexed.V1)
-                                          )
-                                          
.setObjectStorageCompression(CompressionStrategy.ZSTD)
-                                          .setStringDictionaryEncoding(
-                                              new 
StringEncodingStrategy.FrontCoded(16, FrontCodedIndexed.V1)
-                                          )
-                                          
.setLongFieldBitmapIndexType(BitmapIndexType.NullValueIndex.INSTANCE)
-                                          
.setDoubleFieldBitmapIndexType(BitmapIndexType.NullValueIndex.INSTANCE)
-                                          .build();
-    Assert.assertEquals(
-        spec,
+        NestedCommonFormatColumnFormatSpec
+            .builder()
+            .setBitmapEncoding(new ConciseBitmapSerdeFactory())
+            .setObjectFieldsDictionaryEncoding(new 
StringEncodingStrategy.FrontCoded(4, FrontCodedIndexed.V1))
+            .setObjectStorageCompression(CompressionStrategy.ZSTD)
+            .setStringDictionaryEncoding(new 
StringEncodingStrategy.FrontCoded(16, FrontCodedIndexed.V1))
+            
.setLongFieldBitmapIndexType(BitmapIndexType.NullValueIndex.INSTANCE)
+            
.setDoubleFieldBitmapIndexType(BitmapIndexType.NullValueIndex.INSTANCE)
+            .build();
+    // NestedCommonFormatColumnFormatSpec does not support serde for 
BitmapEncoding, value would be ignored
+    Assert.assertEquals(
+        
NestedCommonFormatColumnFormatSpec.builder(spec).setBitmapEncoding(null).build(),
         TestHelper.JSON_MAPPER.readValue(
             TestHelper.JSON_MAPPER.writeValueAsString(spec),
             NestedCommonFormatColumnFormatSpec.class
@@ -59,6 +59,25 @@ public class NestedCommonFormatColumnFormatSpecTest
     );
   }
 
+  @Test
+  public void testSerdeFormatSpec() throws JsonProcessingException
+  {
+    NestedCommonFormatColumnFormatSpec spec =
+        NestedCommonFormatColumnFormatSpec
+            .builder()
+            .setObjectFieldsDictionaryEncoding(new 
StringEncodingStrategy.FrontCoded(4, FrontCodedIndexed.V1))
+            .setObjectStorageCompression(CompressionStrategy.ZSTD)
+            .setStringDictionaryEncoding(new 
StringEncodingStrategy.FrontCoded(16, FrontCodedIndexed.V1))
+            
.setLongFieldBitmapIndexType(BitmapIndexType.NullValueIndex.INSTANCE)
+            
.setDoubleFieldBitmapIndexType(BitmapIndexType.DictionaryEncodedValueIndex.INSTANCE)
+            .build();
+    NestedCommonFormatColumnPartSerde.FormatSpec formatSpec = 
TestHelper.JSON_MAPPER.readValue(
+        TestHelper.JSON_MAPPER.writeValueAsString(spec),
+        NestedCommonFormatColumnPartSerde.FormatSpec.class
+    );
+    Assert.assertEquals(spec.toString(), formatSpec.toString());
+  }
+
   @Test
   public void testGetEffectiveSpecDefaults()
   {
@@ -67,18 +86,9 @@ public class NestedCommonFormatColumnFormatSpecTest
         IndexSpec.getDefault().getEffectiveSpec()
     );
 
-    Assert.assertEquals(
-        StringEncodingStrategy.UTF8_STRATEGY,
-        defaults.getObjectFieldsDictionaryEncoding()
-    );
-    Assert.assertEquals(
-        ObjectStorageEncoding.SMILE,
-        defaults.getObjectStorageEncoding()
-    );
-    Assert.assertEquals(
-        CompressionStrategy.LZ4,
-        defaults.getObjectStorageCompression()
-    );
+    Assert.assertEquals(StringEncodingStrategy.UTF8_STRATEGY, 
defaults.getObjectFieldsDictionaryEncoding());
+    Assert.assertEquals(ObjectStorageEncoding.SMILE, 
defaults.getObjectStorageEncoding());
+    Assert.assertEquals(CompressionStrategy.LZ4, 
defaults.getObjectStorageCompression());
     Assert.assertEquals(
         IndexSpec.getDefault().getEffectiveSpec().getDimensionCompression(),
         defaults.getDictionaryEncodedColumnCompression()
@@ -95,6 +105,8 @@ public class NestedCommonFormatColumnFormatSpecTest
         IndexSpec.getDefault().getEffectiveSpec().getMetricCompression(),
         defaults.getDoubleColumnCompression()
     );
+    Assert.assertEquals(BitmapIndexType.DictionaryEncodedValueIndex.INSTANCE, 
defaults.getLongFieldBitmapIndexType());
+    Assert.assertEquals(BitmapIndexType.DictionaryEncodedValueIndex.INSTANCE, 
defaults.getLongFieldBitmapIndexType());
   }
 
   @Test
@@ -108,6 +120,8 @@ public class NestedCommonFormatColumnFormatSpecTest
                      NestedCommonFormatColumnFormatSpec.builder()
                                                        
.setObjectFieldsDictionaryEncoding(frontcoded)
                                                        
.setObjectStorageEncoding(ObjectStorageEncoding.NONE)
+                                                       
.setLongFieldBitmapIndexType(BitmapIndexType.NullValueIndex.INSTANCE)
+                                                       
.setDoubleFieldBitmapIndexType(BitmapIndexType.NullValueIndex.INSTANCE)
                                                        .build()
                  )
                  .withMetricCompression(CompressionStrategy.LZF)
@@ -115,18 +129,9 @@ public class NestedCommonFormatColumnFormatSpecTest
                  .getEffectiveSpec()
     );
 
-    Assert.assertEquals(
-        frontcoded,
-        defaults.getObjectFieldsDictionaryEncoding()
-    );
-    Assert.assertEquals(
-        ObjectStorageEncoding.NONE,
-        defaults.getObjectStorageEncoding()
-    );
-    Assert.assertEquals(
-        CompressionStrategy.LZ4,
-        defaults.getObjectStorageCompression()
-    );
+    Assert.assertEquals(frontcoded, 
defaults.getObjectFieldsDictionaryEncoding());
+    Assert.assertEquals(ObjectStorageEncoding.NONE, 
defaults.getObjectStorageEncoding());
+    Assert.assertEquals(CompressionStrategy.LZ4, 
defaults.getObjectStorageCompression());
     Assert.assertEquals(
         IndexSpec.getDefault().getEffectiveSpec().getDimensionCompression(),
         defaults.getDictionaryEncodedColumnCompression()
@@ -135,30 +140,26 @@ public class NestedCommonFormatColumnFormatSpecTest
         
IndexSpec.getDefault().getEffectiveSpec().getStringDictionaryEncoding(),
         defaults.getStringDictionaryEncoding()
     );
-    Assert.assertEquals(
-        CompressionStrategy.LZF,
-        defaults.getLongColumnCompression()
-    );
-    Assert.assertEquals(
-        CompressionStrategy.LZF,
-        defaults.getDoubleColumnCompression()
-    );
+    Assert.assertEquals(CompressionStrategy.LZF, 
defaults.getLongColumnCompression());
+    Assert.assertEquals(CompressionStrategy.LZF, 
defaults.getDoubleColumnCompression());
+    Assert.assertEquals(BitmapIndexType.NullValueIndex.INSTANCE, 
defaults.getLongFieldBitmapIndexType());
+    Assert.assertEquals(BitmapIndexType.NullValueIndex.INSTANCE, 
defaults.getDoubleFieldBitmapIndexType());
   }
 
   @Test
   public void testGetEffectiveSpecMerge()
   {
     NestedCommonFormatColumnFormatSpec merged = 
NestedCommonFormatColumnFormatSpec.getEffectiveFormatSpec(
-        NestedCommonFormatColumnFormatSpec.builder()
-                                          .setObjectFieldsDictionaryEncoding(
-                                              new 
StringEncodingStrategy.FrontCoded(4, FrontCodedIndexed.V1)
-                                          )
-                                          
.setObjectStorageCompression(CompressionStrategy.ZSTD)
-                                          .setStringDictionaryEncoding(
-                                              new 
StringEncodingStrategy.FrontCoded(4, FrontCodedIndexed.V1)
-                                          )
-                                          
.setDoubleColumnCompression(CompressionStrategy.ZSTD)
-                                          .build(),
+        NestedCommonFormatColumnFormatSpec
+            .builder()
+            .setObjectFieldsDictionaryEncoding(new 
StringEncodingStrategy.FrontCoded(4, FrontCodedIndexed.V1))
+            .setObjectStorageCompression(CompressionStrategy.ZSTD)
+            .setObjectStorageEncoding(ObjectStorageEncoding.NONE)
+            .setStringDictionaryEncoding(new 
StringEncodingStrategy.FrontCoded(4, FrontCodedIndexed.V1))
+            .setDoubleColumnCompression(CompressionStrategy.ZSTD)
+            
.setDoubleFieldBitmapIndexType(BitmapIndexType.NullValueIndex.INSTANCE)
+            
.setLongFieldBitmapIndexType(BitmapIndexType.NullValueIndex.INSTANCE)
+            .build(),
         IndexSpec.getDefault().getEffectiveSpec()
     );
 
@@ -170,26 +171,19 @@ public class NestedCommonFormatColumnFormatSpecTest
         new StringEncodingStrategy.FrontCoded(4, FrontCodedIndexed.V1),
         merged.getStringDictionaryEncoding()
     );
-    Assert.assertEquals(
-        ObjectStorageEncoding.SMILE,
-        merged.getObjectStorageEncoding()
-    );
+    Assert.assertEquals(ObjectStorageEncoding.NONE, 
merged.getObjectStorageEncoding());
     Assert.assertEquals(
         IndexSpec.getDefault().getEffectiveSpec().getDimensionCompression(),
         merged.getDictionaryEncodedColumnCompression()
     );
-    Assert.assertEquals(
-        CompressionStrategy.ZSTD,
-        merged.getObjectStorageCompression()
-    );
+    Assert.assertEquals(CompressionStrategy.ZSTD, 
merged.getObjectStorageCompression());
     Assert.assertEquals(
         IndexSpec.getDefault().getEffectiveSpec().getMetricCompression(),
         merged.getLongColumnCompression()
     );
-    Assert.assertEquals(
-        CompressionStrategy.ZSTD,
-        merged.getDoubleColumnCompression()
-    );
+    Assert.assertEquals(CompressionStrategy.ZSTD, 
merged.getDoubleColumnCompression());
+    Assert.assertEquals(BitmapIndexType.NullValueIndex.INSTANCE, 
merged.getLongFieldBitmapIndexType());
+    Assert.assertEquals(BitmapIndexType.NullValueIndex.INSTANCE, 
merged.getDoubleFieldBitmapIndexType());
   }
 
   @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to