【已解决】Doris查询Hive问题,使用新增字段作为过滤条件查询历史分区时,条件失效,返回错误结果值

Viewed 541

使用的doris版本是 2.0.4 ,以下是具体复现步骤,求大神关注:

1.新建一张hive中 orc格式的分区表,以int类型的dt作为为分区,如下

CREATE TABLE IF NOT EXISTS dbname.table_name (
id bigint,
type bigint ,
state string
) COMMENT ‘’
PARTITIONED BY (dt INT COMMENT ‘yyyymmdd’)
STORED AS ORC
tblproperties (‘orc.compress’ = ‘SNAPPY’);

2.使用spark sql通过INSERT OVERWRITE TABLE dbname.table_name PARTITION(dt=xxxx) 写入多个分区的数据,如 dt=20240228,dt=20240227,dt=20240226,dt=20240225

3.新增字段,执行如下ddl

ALTER TABLE dbname.table_name ADD COLUMNS(
sensitive_query_flag BIGINT COMMENT ‘’
)cascade;

4.再次通过 INSERT OVERWRITE TABLE dbname.table_name PARTITION(dt=20240228) 刷入20240228分区的数据,在我的使用场景中sensitive_query_flag 值为0或1,此时通过sensitive_query_flag = 1 对 dt>=20240225 进行过滤时,只会对重新写入的分区 dt=20240228生效,对其余分区的结果均表现为失效,查出的结果包括值为NULL的情况

按照以上结果执行结果图如下(以新增字段作为where条件,只会对添加字段后重新写入的分区生效,对历史分区会存在错误数据):
image.png

2 Answers

执行REFRESH CATALOG 后返回结果还是有问题
MEOBqaXbaG.jpg

设置参数后过滤还是存在问题
8vDezkzdWl.jpg