2.1.7版本,将union all的查询结果insert into到表,查询结果前后不一致

【详述】多个查询union all后插入到表中,查询结果前后不一致,需要几分钟后数据查询才无变化。
【导入/导出方式】导入
【背景】
【业务影响】
【StarRocks版本】2.1.7
【集群规模】6fe,10be
【机器信息】48C/128G
查询的sql语句:insert into 表 select * from
(
select a,b,c,count(1) from a1 group by cube (a,b,c)
union all
select a,b,c,count(1) from b1 group by cube (a,b,c)
union all
select a,b,c,count(1) from c1 group by cube (a,b,c)
) tmp

请问您是指这个SQL执行后,几次查询数据不一致,需要几分钟后才一致吗?

是的。。已经重现好多次了

select a,b,c,count(1) from a1 group by cube (a,b,c)
union all
select a,b,c,count(1) from b1 group by cube (a,b,c)
union all
select a,b,c,count(1) from c1 group by cube (a,b,c)
请问执行这段SQL,问题可以重现吗?

直接执行
insert into 表 select * from
(
select a,b,c,count(1) from a1 group by cube (a,b,c)
union all
select a,b,c,count(1) from b1 group by cube (a,b,c)
union all
select a,b,c,count(1) from c1 group by cube (a,b,c)
) tmp没问题。但是指定分区插入后就有不一致的问题,比如insert into 表 partition(d20220822) select * from…,就不一致,select部分是一样!

在每次插入之前,会先执行一次删除操作,会delete对应分区的数据

我总结一下,您看是不是这样背景下发生。
1.先删除分区数据 delete from 表 where date >= ‘2022-08-22’ and date < ‘2022-08-23’;
2.插入分区数据insert into 表 partition(d20220822) select * from
(
select a,b,c,count(1) from a1 group by cube (a,b,c)
union all
select a,b,c,count(1) from b1 group by cube (a,b,c)
union all
select a,b,c,count(1) from c1 group by cube (a,b,c)
)
3.SQL执行成功后,数分钟的查询数据不一致,数分钟后查询数据就稳定了。

1赞

对的。。就是你说的这个情况

insert into 表 select 是不会又这个问题
insert into 表 partition 才会出现这个问题

是的,insert into 表 select 没问题
insert into 表 partition select 有问题

收到,我们尽快确认


请问像这样,insert成功后的返回值和您查询的值不一致,几分钟后才一致吗?

是刚insert into完成后,立刻select * from 表得到的结果和过几分钟后select * from 表的结果不一致。

是否是由于union all 并行插入的,所以导致不一致,只是我个人猜测。。


复现不了

我测试的环境是SR 2.2.4,不知道是否与这个有关系

不知道是不是跟版本有关,后面我会在升级版本在看看,如果升级版本还有问题,在跟你们反馈,谢谢

不客气,建议您先升小版本,小版本都是修复bug。