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

jiangtian pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/tsfile.git


The following commit(s) were added to refs/heads/develop by this push:
     new 8d89f4d1 Check blank column name or table name (#471)
8d89f4d1 is described below

commit 8d89f4d111e0ad80ba081aaa261eb8b671e33205
Author: shuwenwei <[email protected]>
AuthorDate: Wed Apr 23 16:03:22 2025 +0800

    Check blank column name or table name (#471)
    
    * check blank column name or table name
    
    * add ut
---
 .../tsfile/write/v4/TsFileWriterBuilder.java       | 11 ++++++++
 .../read/TsFileV4ReadWriteInterfacesTest.java      | 29 ++++++++++++++++++++++
 2 files changed, 40 insertions(+)

diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/v4/TsFileWriterBuilder.java 
b/java/tsfile/src/main/java/org/apache/tsfile/write/v4/TsFileWriterBuilder.java
index 267bc861..08f96c5f 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/v4/TsFileWriterBuilder.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/v4/TsFileWriterBuilder.java
@@ -21,6 +21,9 @@ package org.apache.tsfile.write.v4;
 
 import org.apache.tsfile.annotations.TsFileApi;
 import org.apache.tsfile.file.metadata.TableSchema;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.commons.lang3.StringUtils;
 
 import java.io.File;
 import java.io.IOException;
@@ -66,5 +69,13 @@ public class TsFileWriterBuilder {
     if (this.memoryThresholdInByte <= 0) {
       throw new IllegalArgumentException("Memory threshold must be > 0 
bytes.");
     }
+    if (StringUtils.isBlank(this.tableSchema.getTableName())) {
+      throw new IllegalArgumentException("TableName must not be blank.");
+    }
+    for (IMeasurementSchema columnSchema : 
this.tableSchema.getColumnSchemas()) {
+      if (columnSchema == null || 
StringUtils.isBlank(columnSchema.getMeasurementName())) {
+        throw new IllegalArgumentException("Column name must not be blank.");
+      }
+    }
   }
 }
diff --git 
a/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileV4ReadWriteInterfacesTest.java
 
b/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileV4ReadWriteInterfacesTest.java
index 0f0e9c35..d9b7147f 100644
--- 
a/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileV4ReadWriteInterfacesTest.java
+++ 
b/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileV4ReadWriteInterfacesTest.java
@@ -119,4 +119,33 @@ public class TsFileV4ReadWriteInterfacesTest {
       Files.deleteIfExists(Paths.get(filePath));
     }
   }
+
+  @Test
+  public void testInvalidColumnNameOrTableName() throws Exception {
+    String filePath = TsFileGeneratorForTest.getTestTsFilePath("db", 0, 0, 0);
+
+    TableSchema tableSchema =
+        new TableSchema(
+            "",
+            Arrays.asList(
+                new MeasurementSchema("", TSDataType.STRING),
+                new MeasurementSchema("id2", TSDataType.STRING),
+                new MeasurementSchema("id3", TSDataType.STRING),
+                new MeasurementSchema("s1", TSDataType.INT32)),
+            Arrays.asList(
+                ColumnCategory.TAG, ColumnCategory.TAG, ColumnCategory.TAG, 
ColumnCategory.FIELD));
+    try (ITsFileWriter writer =
+        new TsFileWriterBuilder().file(new 
File(filePath)).tableSchema(tableSchema).build()) {
+      Assert.fail();
+    } catch (Exception e) {
+      Assert.assertTrue(e.getMessage().contains("TableName must not be 
blank."));
+    }
+    tableSchema.setTableName("table1");
+    try (ITsFileWriter writer =
+        new TsFileWriterBuilder().file(new 
File(filePath)).tableSchema(tableSchema).build()) {
+      Assert.fail();
+    } catch (Exception e) {
+      Assert.assertTrue(e.getMessage().contains("Column name must not be 
blank."));
+    }
+  }
 }

Reply via email to