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."));
+ }
+ }
}