apache / apache/doris

[Bug](MTMV) Materialized view rewrite filed

Open
#61,186 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
15.9k
Forks
3.9k
Avg merge
2d 23h
Merged PRs (30d)
520

Description

### Search before asking

- [x] I had searched in the [issues](https://github.com/apache/doris/issues?q=is%3Aissue) and found no similar issues.

### Version

3.0.8-rc02

### What's Wrong?

1. mtmv not choosed when useing GROUPING SETS and select fileds has a alias
2. mtmv not choosed when useing GROUPING SETS and CET and select from CET with filter grouping_id fileds

### What You Expected?

sql2 and sql5 should choose the mtmv mv_table_a

### How to Reproduce?

create database if not exists test;
drop table if exists test.table_a force;
CREATE TABLE test.table_a (
`g` varchar(20) NULL,
`value_1` bigint NULL,
`date_1` varchar(20) NULL
) ENGINE=OLAP
DUPLICATE KEY(`g`)
AUTO PARTITION BY LIST (`date_1`)()
PROPERTIES ("replication_allocation" = "tag.location.default: 1");

insert into test.table_a select 'g1' g,300 value_1,'2025-10-22' as date_1;

drop materialized view if exists test.mv_table_a;
CREATE MATERIALIZED VIEW mv_table_a BUILD IMMEDIATE REFRESH AUTO ON COMMIT
PARTITION by(date_1) DISTRIBUTED BY HASH(g) BUCKETS 17 PROPERTIES ('replication_num'='1')
as select date_1,g,sum(value_1) from test.table_a a group by date_1,g;

-- sql 1
--choose mv_table_a
explain
SELECT date_1,grouping_id(date_1),g,sum(value_1) x FROM test.table_a a group by GROUPING SETS ((g),(date_1,g));

--sql 2
--not choose mv_table_a, just add alias `l` for date_1 base on sql 1
-- FailSummary: View struct info is invalid, View dimensions doesn't not cover the query dimensions
explain
SELECT date_1 l,grouping_id(date_1),g,sum(value_1) x FROM test.table_a a group by GROUPING SETS ((g),(date_1,g));

--sql 3
--choose mv_table_a, just remove grouping_id base on sql 2
explain
SELECT date_1 l,g,sum(value_1) x FROM test.table_a a group by GROUPING SETS ((g),(date_1,g));

--sql 4
--choose mv_table_a
explain
with temp as(SELECT date_1,grouping_id(date_1) AS g_id,g,sum(value_1) x FROM test.table_a group by GROUPING SETS ((g),(date_1,g)))
select * from temp;

--sql 5
--FailSummary: View struct info is invalid, Rewrite compensate predicate by view fail, RewrittenPlan output logical properties is different with target group
explain
with temp as( SELECT date_1,grouping_id(date_1) AS g_id,g,sum(value_1) x FROM test.table_a group by GROUPING SETS ((g),(date_1,g)))
select * from temp where g_id=1;

### Anything Else?

_No response_

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [x] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.