Skip to content

[Bug] 2.0.5版本,table模式下,无模式建的表,再执行insert时,会把已经存在的记录里除了timestamp之外的字段全部覆盖 #16630

@jinsedeme

Description

@jinsedeme

Search before asking

  • I searched in the issues and found nothing similar.

Version

release2.0.5
docker-standalone

Describe the bug and provide the minimal reproduce step

1、安装2.0.5 docker-standalone版本
2、建表并插入数据
@test
public void testCreateAndInsert() throws Exception {
log.info("IOTDB Test executed");
try (ITableSession session =
new TableSessionBuilder()
.nodeUrls(Collections.singletonList("127.0.0.1:6667"))
.username("root")
.password("root")
.build()) {

        session.executeNonQueryStatement("CREATE DATABASE IF NOT EXISTS db1");
        session.executeNonQueryStatement("use db1");

        // 不创建表直接写入数据
        List<String> columnNameList =
                Arrays.asList("region_id", "plant_id", "device_id", "model","kind","weather","birthday", "temperature", "humidity");
        List<TSDataType> dataTypeList =
                Arrays.asList(
                        TSDataType.STRING,
                        TSDataType.STRING,
                        TSDataType.STRING,
                        TSDataType.STRING,
                        TSDataType.STRING,
                        TSDataType.STRING,
                        TSDataType.STRING,
                        TSDataType.FLOAT,
                        TSDataType.DOUBLE);
        List<ColumnCategory> columnTypeList =
                new ArrayList<>(
                        Arrays.asList(
                                ColumnCategory.TAG,
                                ColumnCategory.TAG,
                                ColumnCategory.TAG,
                                ColumnCategory.ATTRIBUTE,
                                ColumnCategory.ATTRIBUTE,
                                ColumnCategory.ATTRIBUTE,
                                ColumnCategory.ATTRIBUTE,
                                ColumnCategory.FIELD,
                                ColumnCategory.FIELD));
        Tablet tablet = new Tablet("table1", columnNameList, dataTypeList, columnTypeList, 100);
        for (int i = 0; i < 100; i++) {
            int rowIndex = tablet.getRowSize();
            tablet.addTimestamp(rowIndex, System.currentTimeMillis());
            tablet.addValue("region_id", rowIndex, "1");
            tablet.addValue("plant_id", rowIndex, "5");
            tablet.addValue("device_id", rowIndex, "3");
            tablet.addValue("model", rowIndex, "A");
            tablet.addValue("kind", rowIndex, "west");
            tablet.addValue("weather", rowIndex, "cloudy");
            tablet.addValue("birthday", rowIndex, "2025-10-17");
            tablet.addValue("temperature", rowIndex, 37.6F);
            tablet.addValue("humidity", rowIndex, 111.1);
            if (tablet.getRowSize() == tablet.getMaxRowNumber()) {
                session.insert(tablet);
                tablet.reset();
            }
            log.info("数据" + i);
            Thread.sleep(3000L);
        }
        if (tablet.getRowSize() != 0) {
            session.insert(tablet);
            tablet.reset();
        }
    }
    log.info("数据插入成功");
}

3、观察数据插入成功
4、再通过命令插入记录
INSERT INTO db1.table1 (region_id, plant_id, device_id, model, kind, weather, birthday, temperature, humidity)
VALUES ('1', '5', '3', 'B', 'north', 'rain', '2025-10-19', 40.6, 121.1)
5、观察发现已经存在的记录里除了timestamp之外的字段全部覆盖了

What did you expect to see?

2.0.5版本,table模式下,无模式建的表,再执行insert时,会把已经存在的记录里除了timestamp之外的字段全部覆盖。

What did you see instead?

nothing

Anything else?

No response

Are you willing to submit a PR?

  • I'm willing to submit a PR!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions