This is an automated email from the ASF dual-hosted git repository.
justinchen pushed a commit to branch load-may-fix
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/load-may-fix by this push:
new b39e8a18792 zc
b39e8a18792 is described below
commit b39e8a18792916a63e783c09546d35fe963dc0d9
Author: Caideyipi <[email protected]>
AuthorDate: Thu Jan 29 18:17:48 2026 +0800
zc
---
.../relational/it/db/it/IoTDBLoadTsFileIT.java | 38 ++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git
a/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBLoadTsFileIT.java
b/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBLoadTsFileIT.java
index d14c0896816..b5b89ef67c4 100644
---
a/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBLoadTsFileIT.java
+++
b/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBLoadTsFileIT.java
@@ -298,6 +298,7 @@ public class IoTDBLoadTsFileIT {
public void testLoadWithTimeColumn() throws Exception {
final int lineCount = 10000;
+ // from: 1 time
List<Pair<MeasurementSchema, MeasurementSchema>> measurementSchemas =
generateMeasurementSchemasWithTime(1, "time");
List<ColumnCategory> columnCategories =
@@ -313,63 +314,84 @@ public class IoTDBLoadTsFileIT {
generator.generateData(SchemaConfig.TABLE_0, lineCount,
PARTITION_INTERVAL / 10_000);
}
+ // to: 1 time
testWithTimeColumn(lineCount, schemaList1, columnCategories, file);
+ // to: empty
testWithTimeColumn(lineCount, null, null, file);
measurementSchemas = generateMeasurementSchemasWithTime(2, "time");
columnCategories = generateTabletColumnCategory(0,
measurementSchemas.size(), 2);
schemaList1 = measurementSchemas.stream().map(pair ->
pair.left).collect(Collectors.toList());
+
+ // to: 2 time
testWithTimeColumn(lineCount, schemaList1, columnCategories, file);
+ // to: 0 time
measurementSchemas = generateMeasurementSchemasWithTime(-1, "time");
columnCategories = generateTabletColumnCategory(0,
measurementSchemas.size(), -1);
schemaList1 = measurementSchemas.stream().map(pair ->
pair.left).collect(Collectors.toList());
testWithTimeColumn(lineCount, schemaList1, columnCategories, file);
+ // to: 2 time1
measurementSchemas = generateMeasurementSchemasWithTime(2, "time1");
columnCategories = generateTabletColumnCategory(0,
measurementSchemas.size(), 2);
schemaList1 = measurementSchemas.stream().map(pair ->
pair.left).collect(Collectors.toList());
testWithTimeColumn(lineCount, schemaList1, columnCategories, file);
+ // from: 2 time1
file = new File(tmpDir, "2-0-0-0.tsfile");
try (final TsFileTableGenerator generator = new
TsFileTableGenerator(file)) {
generator.registerTable(SchemaConfig.TABLE_0, new
ArrayList<>(schemaList1), columnCategories);
generator.generateData(SchemaConfig.TABLE_0, lineCount,
PARTITION_INTERVAL / 10_000);
}
+ // to: 2 time
measurementSchemas = generateMeasurementSchemasWithTime(2, "time");
columnCategories = generateTabletColumnCategory(0,
measurementSchemas.size(), 2);
schemaList1 = measurementSchemas.stream().map(pair ->
pair.left).collect(Collectors.toList());
testWithTimeColumn(lineCount, schemaList1, columnCategories, file);
+ // to: 1 time
measurementSchemas = generateMeasurementSchemasWithTime(1, "time1");
columnCategories = generateTabletColumnCategory(0,
measurementSchemas.size(), 1);
schemaList1 = measurementSchemas.stream().map(pair ->
pair.left).collect(Collectors.toList());
testWithTimeColumn(lineCount, schemaList1, columnCategories, file);
+ // to: empty
testWithTimeColumn(lineCount, null, null, file);
+ // to: 0 time
measurementSchemas = generateMeasurementSchemasWithTime(-1, "time");
columnCategories = generateTabletColumnCategory(0,
measurementSchemas.size(), -1);
schemaList1 = measurementSchemas.stream().map(pair ->
pair.left).collect(Collectors.toList());
testWithTimeColumn(lineCount, schemaList1, columnCategories, file);
+ // from: 0 time
file = new File(tmpDir, "3-0-0-0.tsfile");
try (final TsFileTableGenerator generator = new
TsFileTableGenerator(file)) {
generator.registerTable(SchemaConfig.TABLE_0, new
ArrayList<>(schemaList1), columnCategories);
generator.generateData(SchemaConfig.TABLE_0, lineCount,
PARTITION_INTERVAL / 10_000);
}
+ // to: 2 time
measurementSchemas = generateMeasurementSchemasWithTime(2, "time");
columnCategories = generateTabletColumnCategory(0,
measurementSchemas.size(), 2);
schemaList1 = measurementSchemas.stream().map(pair ->
pair.left).collect(Collectors.toList());
testWithTimeColumn(lineCount, schemaList1, columnCategories, file);
+ // to: 1 time1
measurementSchemas = generateMeasurementSchemasWithTime(1, "time1");
columnCategories = generateTabletColumnCategory(0,
measurementSchemas.size(), 1);
schemaList1 = measurementSchemas.stream().map(pair ->
pair.left).collect(Collectors.toList());
testWithTimeColumn(lineCount, schemaList1, columnCategories, file);
+ // to: 0 time
+ measurementSchemas = generateMeasurementSchemasWithTime(-1, "time");
+ columnCategories = generateTabletColumnCategory(0,
measurementSchemas.size(), -1);
+ schemaList1 = measurementSchemas.stream().map(pair ->
pair.left).collect(Collectors.toList());
+ testWithTimeColumn(lineCount, schemaList1, columnCategories, file);
+
+ // to: empty
testWithTimeColumn(lineCount, null, null, file);
}
@@ -384,8 +406,10 @@ public class IoTDBLoadTsFileIT {
final Statement statement = connection.createStatement()) {
statement.execute(String.format("create database if not exists %s",
SchemaConfig.DATABASE_0));
statement.execute(String.format("use %s", SchemaConfig.DATABASE_0));
+ ResultSet resultSetOld = null;
if (Objects.nonNull(schemaList1)) {
statement.execute(convert2TableSQL(SchemaConfig.TABLE_0, schemaList1,
columnCategories));
+ resultSetOld = statement.executeQuery("desc " + SchemaConfig.TABLE_0);
}
statement.execute(
String.format(
@@ -404,6 +428,20 @@ public class IoTDBLoadTsFileIT {
Assert.assertFalse(resultSet.next());
}
+ // Time column's difference shall not affect the old column
+ if (Objects.nonNull(resultSetOld)) {
+ try (final ResultSet resultSet = statement.executeQuery("desc " +
SchemaConfig.TABLE_0)) {
+ while (resultSet.next() && resultSetOld.next()) {
+ Assert.assertEquals(resultSet.getString(1),
resultSetOld.getString(1));
+ Assert.assertEquals(resultSet.getString(2),
resultSetOld.getString(2));
+ Assert.assertEquals(resultSet.getString(3),
resultSetOld.getString(3));
+ }
+ if (resultSet.next() || resultSetOld.next()) {
+ Assert.fail("The table schema has changed after load.");
+ }
+ }
+ }
+
statement.execute(String.format("drop database %s",
SchemaConfig.DATABASE_0));
}
}