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;