You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@paimon.apache.org by lz...@apache.org on 2026/01/27 11:17:29 UTC

(paimon) branch master updated: [core] Notify null blob to consumer in BlobFormatWriter

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

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


The following commit(s) were added to refs/heads/master by this push:
     new ccbfae1331 [core] Notify null blob to consumer in BlobFormatWriter
ccbfae1331 is described below

commit ccbfae1331c59e35ff37baf8734753a4f505abf7
Author: JingsongLi <ji...@gmail.com>
AuthorDate: Tue Jan 27 19:17:14 2026 +0800

    [core] Notify null blob to consumer in BlobFormatWriter
---
 .../src/test/java/org/apache/paimon/append/BlobTableTest.java  | 10 +++++++---
 .../java/org/apache/paimon/format/blob/BlobFormatWriter.java   |  3 +++
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/paimon-core/src/test/java/org/apache/paimon/append/BlobTableTest.java b/paimon-core/src/test/java/org/apache/paimon/append/BlobTableTest.java
index 5f0d007d73..3045f33b16 100644
--- a/paimon-core/src/test/java/org/apache/paimon/append/BlobTableTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/append/BlobTableTest.java
@@ -75,16 +75,20 @@ public class BlobTableTest extends TableTestBase {
                     });
             write.write(dataDefault(0, 0));
             write.write(dataDefault(0, 0));
+            write.write(GenericRow.of(1, BinaryString.fromString("nice"), null));
         }
-        assertThat(blobs.size()).isEqualTo(2);
+        assertThat(blobs.size()).isEqualTo(3);
         FileIO fileIO = table.fileIO();
         UriReader uriReader = UriReader.fromFile(fileIO);
-        for (BlobDescriptor blob : blobs) {
+        for (int i = 0; i < 2; i++) {
+            BlobDescriptor blob = blobs.get(i);
             assertThat(Blob.fromDescriptor(uriReader, blob).toData()).isEqualTo(blobBytes);
         }
-        for (BlobDescriptor blob : blobs) {
+        for (int i = 0; i < 2; i++) {
+            BlobDescriptor blob = blobs.get(i);
             fileIO.deleteQuietly(new Path(blob.uri()));
         }
+        assertThat(blobs.get(2)).isNull();
     }
 
     @Test
diff --git a/paimon-format/src/main/java/org/apache/paimon/format/blob/BlobFormatWriter.java b/paimon-format/src/main/java/org/apache/paimon/format/blob/BlobFormatWriter.java
index aa93708ff8..83d6c0eb91 100644
--- a/paimon-format/src/main/java/org/apache/paimon/format/blob/BlobFormatWriter.java
+++ b/paimon-format/src/main/java/org/apache/paimon/format/blob/BlobFormatWriter.java
@@ -82,6 +82,9 @@ public class BlobFormatWriter implements FileAwareFormatWriter {
         checkArgument(element.getFieldCount() == 1, "BlobFormatWriter only support one field.");
         if (element.isNullAt(0)) {
             lengths.add(-1L);
+            if (writeConsumer != null) {
+                writeConsumer.accept(blobFieldName, null);
+            }
             return;
         }
         Blob blob = element.getBlob(0);