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

haonan pushed a commit to branch fix_null_measurement_1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 30c6017f2fed1ad0e53bb697c2695129a48e64b5
Author: Haonan <[email protected]>
AuthorDate: Fri Feb 7 15:21:54 2025 +0800

    Fix null measurement name issue in insertTablet (#14795)
    
    * Fix null measurement name in Tablet
    
    * Fix null measurement name in Tablet
---
 .../iotdb/session/it/IoTDBSessionInsertNullIT.java | 42 ++++++++++++++++++++++
 .../java/org/apache/iotdb/session/Session.java     |  7 +++-
 2 files changed, 48 insertions(+), 1 deletion(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionInsertNullIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionInsertNullIT.java
index f101a833fbb..503b61f2d7c 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionInsertNullIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionInsertNullIT.java
@@ -32,7 +32,10 @@ import org.apache.tsfile.file.metadata.enums.CompressionType;
 import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.apache.tsfile.read.common.Field;
 import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -355,4 +358,43 @@ public class IoTDBSessionInsertNullIT {
       fail(e.getMessage());
     }
   }
+
+  @Test
+  public void insertTabletNullMeasurementTest() {
+    try (ISession session = EnvFactory.getEnv().getSessionConnection()) {
+      String deviceId = "root.sg1.clsu.aligned_d1";
+      Tablet tablet =
+          new Tablet(
+              deviceId,
+              Arrays.asList(
+                  new MeasurementSchema("s1", TSDataType.BOOLEAN),
+                  new MeasurementSchema(null, TSDataType.INT32)),
+              1);
+      tablet.addTimestamp(0, 300);
+      tablet.addValue("s1", 0, true);
+      tablet.addValue(null, 0, 1);
+      session.insertAlignedTablet(tablet);
+      fail();
+    } catch (Exception e) {
+      Assert.assertEquals("measurement should be non null value", 
e.getMessage());
+    }
+
+    try (ISession session = EnvFactory.getEnv().getSessionConnection()) {
+      String deviceId = "root.sg1.clsu.aligned_d1";
+      Tablet tablet =
+          new Tablet(
+              deviceId,
+              Arrays.asList(
+                  new MeasurementSchema("s1", TSDataType.BOOLEAN),
+                  new MeasurementSchema(null, TSDataType.INT32)),
+              1);
+      tablet.addTimestamp(0, 300);
+      tablet.addValue("s1", 0, true);
+      // doesn't insert 2nd measurement
+      session.insertAlignedTablet(tablet);
+      fail();
+    } catch (Exception e) {
+      Assert.assertEquals("measurement should be non null value", 
e.getMessage());
+    }
+  }
 }
diff --git 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
index dea03f91ea7..0e078f0e0b4 100644
--- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
+++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
@@ -2687,7 +2687,9 @@ public class Session implements ISession {
     TSInsertTabletReq request = new TSInsertTabletReq();
 
     for (IMeasurementSchema measurementSchema : tablet.getSchemas()) {
-      request.addToMeasurements(measurementSchema.getMeasurementId());
+      if (measurementSchema.getMeasurementId() == null) {
+        throw new IllegalArgumentException("measurement should be non null 
value");
+      }
       request.addToTypes(measurementSchema.getType().ordinal());
     }
 
@@ -2807,6 +2809,9 @@ public class Session implements ISession {
     List<Integer> dataTypes = new ArrayList<>();
     request.setIsAligned(isAligned);
     for (IMeasurementSchema measurementSchema : tablet.getSchemas()) {
+      if (measurementSchema.getMeasurementId() == null) {
+        throw new IllegalArgumentException("measurement should be non null 
value");
+      }
       measurements.add(measurementSchema.getMeasurementId());
       dataTypes.add(measurementSchema.getType().ordinal());
     }

Reply via email to