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

justinchen pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/dev/1.3 by this push:
     new 6e538829900 [To dev/1.3] Pipe: Fixed the potential NPE in receiver 
tablet construction (#16648) (#16656)
6e538829900 is described below

commit 6e538829900b743227bf16a12b0a2b2feced0181
Author: Caideyipi <[email protected]>
AuthorDate: Mon Oct 27 11:37:53 2025 +0800

    [To dev/1.3] Pipe: Fixed the potential NPE in receiver tablet construction 
(#16648) (#16656)
---
 .../plan/statement/crud/InsertTabletStatement.java | 32 ++++++++++++++++++++--
 1 file changed, 30 insertions(+), 2 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertTabletStatement.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertTabletStatement.java
index 32aa8e5fff4..84250173ed8 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertTabletStatement.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertTabletStatement.java
@@ -96,12 +96,16 @@ public class InsertTabletStatement extends 
InsertBaseStatement implements ISchem
     
setDevicePath(DataNodeDevicePathCache.getInstance().getPartialPath(tablet.deviceId));
     setAligned(isAligned);
     setTimes(tablet.timestamps);
-    
setColumns(Arrays.stream(tablet.values).map(this::convertTableColumn).toArray());
     setBitMaps(tablet.bitMaps);
     setRowCount(tablet.rowSize);
+    final Object[] columns = new Object[tablet.values.length];
+    for (int i = 0; i < tablet.values.length; ++i) {
+      columns[i] = convertTableColumn(tablet.values[i], tablet.rowSize, 
dataTypes[i]);
+    }
+    setColumns(columns);
   }
 
-  private Object convertTableColumn(final Object input) {
+  private Object convertTableColumn(final Object input, final int rowCount, 
final TSDataType type) {
     if (input instanceof LocalDate[]) {
       return Arrays.stream(((LocalDate[]) input))
           .map(date -> Objects.nonNull(date) ? 
DateUtils.parseDateExpressionToInt(date) : 0)
@@ -111,6 +115,30 @@ public class InsertTabletStatement extends 
InsertBaseStatement implements ISchem
       return Arrays.stream(((Binary[]) input))
           .map(binary -> Objects.nonNull(binary) ? binary : Binary.EMPTY_VALUE)
           .toArray(Binary[]::new);
+    } else if (input == null) {
+      switch (type) {
+        case BOOLEAN:
+          return new boolean[rowCount];
+        case INT32:
+        case DATE:
+          return new int[rowCount];
+        case INT64:
+        case TIMESTAMP:
+          return new long[rowCount];
+        case FLOAT:
+          return new float[rowCount];
+        case DOUBLE:
+          return new double[rowCount];
+        case TEXT:
+        case BLOB:
+        case STRING:
+          final Binary[] result = new Binary[rowCount];
+          Arrays.fill(result, Binary.EMPTY_VALUE);
+          return result;
+        default:
+          throw new UnSupportedDataTypeException(
+              String.format("data type %s is not supported when convert data 
at client", type));
+      }
     }
 
     return input;

Reply via email to