iotdb icon indicating copy to clipboard operation
iotdb copied to clipboard

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

Open jinsedeme opened this issue 2 months ago • 2 comments

Search before asking

  • [x] 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!

jinsedeme avatar Oct 21 '25 01:10 jinsedeme

Hi, this is your first issue in IoTDB project. Thanks for your report. Welcome to join the community!

github-actions[bot] avatar Oct 21 '25 01:10 github-actions[bot]

for 循环内插入100 次 System.currentTimeMillis(), 有可能插入的是相同的时间戳

HTHou avatar Oct 21 '25 04:10 HTHou