存算分离3.3.0版本,使用关联子查询后,筛选结果错误

【详述】存算分离3.3.0版本,使用关联子查询后,筛选结果错误,没办法降级到3.2.8

sql如下, 筛选 [201]抖音直播联运 的数时,结果并没有起作用。

SELECT
*
from
(
SELECT
DATE_FORMAT(date_add(#time, interval 0 hour), ‘%Y-%m-%d’) as #time@#days
, date_add( a.#time, INTERVAL 0 HOUR ) AS #time
, a.#distinct_id
, a.#uuid
, a.#channel_id
,(
select
max(td.#channel_id@channel_name) as #channel_id@channel_name
from
rx_bd_1000103.ods_dim_event_0preset_channel_id td
where
a.#channel_id = td.#channel_id
) as #channel_id@channel_name
from
dwd_fact_event_0preset_register a
where
1 = 1
AND DATE_FORMAT(date_add(#time, interval 0 hour), ‘%Y-%m-%d’) between DATE_FORMAT(DATE_SUB(date_add(now(), interval 0 hour), 6), ‘%Y-%m-%d’) and DATE_FORMAT(DATE_SUB(date_add(now(), interval 0 hour), 0), ‘%Y-%m-%d’)
) vtt
where
1 = 1 ) b
where
1 = 1
AND (
(
b.#channel_id@channel_name = ‘[201]抖音直播联运’
)
);

【业务影响】数据筛选结果错误
【是否存算分离】 是
【StarRocks版本】3.3.0
【集群规模】3fe + 20be

有大佬解决一下吗?

提供个profile看看

现在我这边没有3.3.0环境了,已经退回到3.2.8了,3.2.8是正常的。麻烦大佬在本地测试一下呢?

我们升级到3.3.0后,发现的问题,应为影响线上业务查询,所以就回退了

大佬,你呢边可以测试一下吗?

这种简单的SQL 应该不会有问题,可能是其他原因


CREATE TABLE `event_fact` (
  `channel_id` varchar(1048576) NOT NULL COMMENT "",
  `value` varchar(1048576) NOT NULL COMMENT ""
) ENGINE=OLAP 
DUPLICATE KEY(`channel_id`)
DISTRIBUTED BY HASH(`channel_id`) BUCKETS 2 
PROPERTIES (
"compression" = "LZ4",
"replicated_storage" = "false",
"replication_num" = "1"
);


CREATE TABLE `event_channel` (
  `channel_id` varchar(1048576) NOT NULL COMMENT "",
  `value` varchar(1048576) NOT NULL COMMENT ""
) ENGINE=OLAP 
DUPLICATE KEY(`channel_id`)
DISTRIBUTED BY HASH(`channel_id`) BUCKETS 2 
PROPERTIES (
"compression" = "LZ4",
"replicated_storage" = "false",
"replication_num" = "1"
);

insert into event_fact SELECT concat(generate_series, '抖音直播联运'), generate_series from TABLE(generate_series(1,  40960));
insert into event_channel SELECT concat(generate_series, '抖音直播联运'), generate_series from TABLE(generate_series(1,  40960));

select * from (
SELECT t2.channel_id from event_fact t1 join event_channel t2 on t1.channel_id = t2.channel_id
) t
where channel_id = '1抖音直播联运';

mysql> select * from ( SELECT t2.channel_id from event_fact t1 join event_channel t2 on t1.channel_id = t2.channel_id ) t where channel_id = '1抖音直播联运';
+---------------------+
| channel_id          |
+---------------------+
| 1抖音直播联运       |
+---------------------+
1 row in set (0.02 sec)

join不行,用关联子查询

SELECT
channel_id, value
from (
SELECT channel_id , (select max(value) as value from event_channel b where a.channel_id = b.channel_id)
from event_fact a
) t
where value = ‘抖音直播联运’
;

大佬试试执行这个呢

join没问题,使用关联子查询有问题

我最上面贴错了
SELECT
*
from
(
SELECT
DATE_FORMAT(date_add(#time, interval 0 hour), ‘%Y-%m-%d’) as #time@#days
, date_add( a.#time, INTERVAL 0 HOUR ) AS #time
, a.#distinct_id
, a.#uuid
, a.#channel_id
,(
select
max(td.#channel_id@channel_name) as #channel_id@channel_name
from
rx_bd_1000103.ods_dim_event_0preset_channel_id td
where
a.#channel_id = td.#channel_id
) as #channel_id@channel_name
from
dwd_fact_event_0preset_register a
where
1 = 1
AND DATE_FORMAT(date_add(#time, interval 0 hour), ‘%Y-%m-%d’) between DATE_FORMAT(DATE_SUB(date_add(now(), interval 0 hour), 6), ‘%Y-%m-%d’) and DATE_FORMAT(DATE_SUB(date_add(now(), interval 0 hour), 0), ‘%Y-%m-%d’)
) vtt
where
1 = 1 ) b
where
1 = 1
AND (
(
b.#channel_id@channel_name = ‘[201]抖音直播联运’
)
);

大佬,试试关联子查询呢?筛选子查询字段,看下您那边是否正常?

SELECT
channel_id, value
from (
SELECT channel_id , (select max(value) as value from event_channel b where a.channel_id = b.channel_id) as value
from event_fact a
) t
where channel_id = '9999抖音直播联运'
;
+------------------------+-------+
| channel_id             | value |
+------------------------+-------+
| 9999抖音直播联运       | 9999  |
+------------------------+-------+
1 row in set (0.02 sec)

– 建表
CREATE TABLE table1 (
id varchar(65533) NOT NULL COMMENT “”,
name varchar(65533) NULL COMMENT “”
) ENGINE=OLAP
PRIMARY KEY(id)
COMMENT “OLAP”
DISTRIBUTED BY HASH(id) BUCKETS 3
PROPERTIES (
“replication_num” = “3”,
“compression” = “LZ4”
);

CREATE TABLE table2 (
id varchar(65533) NOT NULL COMMENT “”,
name varchar(65533) NULL COMMENT “”
) ENGINE=OLAP
PRIMARY KEY(id)
COMMENT “OLAP”
DISTRIBUTED BY HASH(id) BUCKETS 3
PROPERTIES (
“replication_num” = “3”,
“compression” = “LZ4”
);

– 插入数据
insert into table1 values(‘1’, ‘星期一’);
insert into table1 values(‘2’, ‘星期二’);
insert into table2 values(‘1’, ‘3’);
insert into table2 values(‘2’, ‘3’);

– 查询语句
SELECT * from ( select id, (select max(name) from table1 b where a.id = b.id) as name1 from table2 a ) t where name1 in (‘星期一’);

这个复现了

我找个大佬看下

好的,麻烦大佬了。

@Seaven

大佬,这个有计划那个版本升级呢?

@许秀不许秀 @Seaven 大佬,这个有计划那个版本解决吗?