This is an automated email from the ASF dual-hosted git repository.
cwylie 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 31f988ec76 fix backwards compatibility for explicit null columns
(#12585)
31f988ec76 is described below
commit 31f988ec76c802ae1cd487781554f33b7100ced8
Author: Clint Wylie <[email protected]>
AuthorDate: Wed Jun 1 12:39:48 2022 -0700
fix backwards compatibility for explicit null columns (#12585)
---
.../org/apache/druid/segment/IndexMergerV9.java | 2 +-
.../druid/segment/serde/NullColumnPartSerde.java | 22 +++++++++++++++++++---
.../segment/serde/NullColumnPartSerdeTest.java | 5 +++--
3 files changed, 23 insertions(+), 6 deletions(-)
diff --git
a/processing/src/main/java/org/apache/druid/segment/IndexMergerV9.java
b/processing/src/main/java/org/apache/druid/segment/IndexMergerV9.java
index c7d97b0871..daa4696371 100644
--- a/processing/src/main/java/org/apache/druid/segment/IndexMergerV9.java
+++ b/processing/src/main/java/org/apache/druid/segment/IndexMergerV9.java
@@ -337,7 +337,7 @@ public class IndexMergerV9 implements IndexMerger
ColumnDescriptor columnDesc = ColumnDescriptor
.builder()
.setValueType(dimCapabilities.get(i).getType())
- .addSerde(new NullColumnPartSerde(indexMergeResult.rowCount))
+ .addSerde(new NullColumnPartSerde(indexMergeResult.rowCount,
indexSpec.getBitmapSerdeFactory()))
.build();
makeColumn(v9Smoosher, mergedDimensions.get(i), columnDesc);
}
diff --git
a/processing/src/main/java/org/apache/druid/segment/serde/NullColumnPartSerde.java
b/processing/src/main/java/org/apache/druid/segment/serde/NullColumnPartSerde.java
index 894527fae7..12e47eef73 100644
---
a/processing/src/main/java/org/apache/druid/segment/serde/NullColumnPartSerde.java
+++
b/processing/src/main/java/org/apache/druid/segment/serde/NullColumnPartSerde.java
@@ -26,6 +26,7 @@ import
org.apache.druid.java.util.common.io.smoosh.FileSmoosher;
import org.apache.druid.query.extraction.ExtractionFn;
import org.apache.druid.segment.DimensionSelector;
import org.apache.druid.segment.column.DictionaryEncodedColumn;
+import org.apache.druid.segment.data.BitmapSerdeFactory;
import org.apache.druid.segment.data.IndexedInts;
import org.apache.druid.segment.data.ReadableOffset;
import org.apache.druid.segment.vector.MultiValueDimensionVectorSelector;
@@ -60,14 +61,18 @@ public class NullColumnPartSerde implements ColumnPartSerde
};
private final int numRows;
+ private final BitmapSerdeFactory bitmapSerdeFactory;
+
private final NullDictionaryEncodedColumn nullDictionaryEncodedColumn;
@JsonCreator
public NullColumnPartSerde(
- @JsonProperty("numRows") int numRows
+ @JsonProperty("numRows") int numRows,
+ @JsonProperty("bitmapSerdeFactory") BitmapSerdeFactory bitmapSerdeFactory
)
{
this.numRows = numRows;
+ this.bitmapSerdeFactory = bitmapSerdeFactory;
this.nullDictionaryEncodedColumn = new NullDictionaryEncodedColumn();
}
@@ -77,6 +82,17 @@ public class NullColumnPartSerde implements ColumnPartSerde
return numRows;
}
+ /**
+ * This is no longer used for anything, but is required for backwards
compatibility, so that segments with
+ * explicit null columns can be read with 0.23
+ */
+ @Deprecated
+ @JsonProperty
+ public BitmapSerdeFactory getBitmapSerdeFactory()
+ {
+ return bitmapSerdeFactory;
+ }
+
@Nullable
@Override
public Serializer getSerializer()
@@ -108,13 +124,13 @@ public class NullColumnPartSerde implements
ColumnPartSerde
return false;
}
NullColumnPartSerde partSerde = (NullColumnPartSerde) o;
- return numRows == partSerde.numRows;
+ return numRows == partSerde.numRows && Objects.equals(bitmapSerdeFactory,
partSerde.bitmapSerdeFactory);
}
@Override
public int hashCode()
{
- return Objects.hash(numRows);
+ return Objects.hash(numRows, bitmapSerdeFactory);
}
private final class NullDictionaryEncodedColumn implements
DictionaryEncodedColumn<String>
diff --git
a/processing/src/test/java/org/apache/druid/segment/serde/NullColumnPartSerdeTest.java
b/processing/src/test/java/org/apache/druid/segment/serde/NullColumnPartSerdeTest.java
index 72548978ea..d57dda4889 100644
---
a/processing/src/test/java/org/apache/druid/segment/serde/NullColumnPartSerdeTest.java
+++
b/processing/src/test/java/org/apache/druid/segment/serde/NullColumnPartSerdeTest.java
@@ -26,6 +26,7 @@ import org.apache.druid.segment.column.ColumnBuilder;
import org.apache.druid.segment.column.ColumnCapabilities;
import org.apache.druid.segment.column.ColumnConfig;
import org.apache.druid.segment.column.ValueType;
+import org.apache.druid.segment.data.RoaringBitmapSerdeFactory;
import org.apache.druid.testing.InitializedNullHandlingTest;
import org.junit.Assert;
import org.junit.Test;
@@ -40,7 +41,7 @@ public class NullColumnPartSerdeTest extends
InitializedNullHandlingTest
{
final ObjectMapper mapper = new DefaultObjectMapper();
- final NullColumnPartSerde partSerde = new NullColumnPartSerde(10);
+ final NullColumnPartSerde partSerde = new NullColumnPartSerde(10, new
RoaringBitmapSerdeFactory(null));
final String json = mapper.writeValueAsString(partSerde);
Assert.assertEquals(partSerde, mapper.readValue(json,
ColumnPartSerde.class));
}
@@ -48,7 +49,7 @@ public class NullColumnPartSerdeTest extends
InitializedNullHandlingTest
@Test
public void testDeserializer()
{
- final NullColumnPartSerde partSerde = new NullColumnPartSerde(10);
+ final NullColumnPartSerde partSerde = new NullColumnPartSerde(10, new
RoaringBitmapSerdeFactory(null));
final ColumnBuilder builder = new
ColumnBuilder().setType(ValueType.DOUBLE);
partSerde.getDeserializer().read(Mockito.mock(ByteBuffer.class), builder,
Mockito.mock(ColumnConfig.class));
final ColumnCapabilities columnCapabilities =
builder.build().getCapabilities();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]