【BUG】通过 INSERT+FILES() 导入HDFS数据会导致AUTO_INCREMENT失效

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】通过INSERT INTO from FILES 导入HDFS,AUTO_INCREMENT失效,会使id列为null导致数据导入失败。把AUTO_INCREMENT列去掉就可以正常导入
【背景】创建主键模型表,并设置id为AUTO_INCREMENT,然后从hdfs导入数据到该表
【业务影响】
【是否存算分离】是
【StarRocks版本】3.2.9
【集群规模】3fe(1 follower+2observer)+5be
【机器信息】16C/64G
【联系方式】15731677872@163.com
【附件】

  • 建表语句
    CREATE TABLE test (
    etl_date varchar(65533),
    id bigint(20) AUTO_INCREMENT COMMENT “自增ID”,
    create_time bigint(20) COMMENT “”,
    )ENGINE=OLAP
    PRIMARY KEY(etl_date)
  • 导入语句
    INSERT into test(etl_date,create_time)
    SELECT etl_date,create_time
    from FILES
    (
    “path” = “hdfs://…”,
    “format” = “orc”
    )
    LIMIT 3;
  • 异常信息
    Error: NULL value in non-nullable column ‘id’. Row: [1693497600,NULL,1693497600]

@dududu
在 v3.3 之前,INSERT INTO 不支持 partial update,你需要使用 INSERT INTO test(etl_date, default, create_time),也即使用 default 关键字来表示 auto_increment 的列。
在 v3.3 后,才可以你上面的写法(表示partial update)。

你可以试试看。

@不老纠结心
我在3.2.9版本,INSERT INTO select from table不需要default 关键字来表示 auto_increment 的列也可以正常写入。
在INSERT INTO select from FILES 以及 INSERT INTO select from table,我都尝试过加上default 关键字在select 里面,都不支持

  • 异常信息
    Getting syntax error at line 4, column 30. Detail message: Unexpected input ‘DEFAULT’, the most similar input is {a legal identifier}.

目前看起来default关键字,只适用于values里面
image

@dududu 那你后来怎么解决的,升级到 3.3么用 partial update了么?