This is an automated email from the ASF dual-hosted git repository.
twalthr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/master by this push:
new 5331420b599 [FLINK-38268][core] Fix incorrect serialization of VARIANT
type FLOAT
5331420b599 is described below
commit 5331420b5994e6f3bfdc6b43e1d6b86f12cee083
Author: Jinkun Liu <[email protected]>
AuthorDate: Fri Nov 7 01:10:20 2025 +0800
[FLINK-38268][core] Fix incorrect serialization of VARIANT type FLOAT
This closes #27017.
---
.../flink/types/variant/BinaryVariantInternalBuilder.java | 2 +-
.../flink/types/variant/BinaryVariantInternalBuilderTest.java | 11 +++++++++++
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git
a/flink-core/src/main/java/org/apache/flink/types/variant/BinaryVariantInternalBuilder.java
b/flink-core/src/main/java/org/apache/flink/types/variant/BinaryVariantInternalBuilder.java
index 3a1ce3c969f..928c267f365 100644
---
a/flink-core/src/main/java/org/apache/flink/types/variant/BinaryVariantInternalBuilder.java
+++
b/flink-core/src/main/java/org/apache/flink/types/variant/BinaryVariantInternalBuilder.java
@@ -290,7 +290,7 @@ public class BinaryVariantInternalBuilder {
public void appendFloat(float f) {
checkCapacity(1 + 4);
writeBuffer[writePos++] = primitiveHeader(FLOAT);
- writeLong(writeBuffer, writePos, Float.floatToIntBits(f), 8);
+ writeLong(writeBuffer, writePos, Float.floatToIntBits(f), 4);
writePos += 4;
}
diff --git
a/flink-core/src/test/java/org/apache/flink/types/variant/BinaryVariantInternalBuilderTest.java
b/flink-core/src/test/java/org/apache/flink/types/variant/BinaryVariantInternalBuilderTest.java
index 4e97c640152..924e538f40a 100644
---
a/flink-core/src/test/java/org/apache/flink/types/variant/BinaryVariantInternalBuilderTest.java
+++
b/flink-core/src/test/java/org/apache/flink/types/variant/BinaryVariantInternalBuilderTest.java
@@ -22,8 +22,11 @@ import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Collections;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
class BinaryVariantInternalBuilderTest {
@@ -116,4 +119,12 @@ class BinaryVariantInternalBuilderTest {
assertThat(variant.getField("k1").getByte()).isEqualTo((byte) 2);
assertThat(variant.getField("k2").getDecimal()).isEqualTo(BigDecimal.valueOf(1.5));
}
+
+ @Test
+ void testAppendFloat() {
+ BinaryVariantInternalBuilder builder = new
BinaryVariantInternalBuilder(false);
+ ArrayList<Float> floatList = new ArrayList<>(Collections.nCopies(25,
4.2f));
+
+ assertThatCode(() ->
floatList.forEach(builder::appendFloat)).doesNotThrowAnyException();
+ }
}