apache / doris

Apache Doris is an easy-to-use, high performance and unified analytics database.
https://doris.apache.org
Apache License 2.0
12.77k stars 3.28k forks source link

[opt](mtmv) Support any_value aggregate function rollup rewrite when exsits aggregate materialized view #44412

Open seawinde opened 13 hours ago

seawinde commented 13 hours ago

What problem does this PR solve?

Support any_value rewrite when aggregate materialized view Such as mv def sql is as following

            select
            o_orderdate,
            any_value(l_partkey),
            o_orderstatus,
            l_suppkey,
            any_value(l_suppkey),
            any_value(o_orderstatus)
            from lineitem_2
            left join orders_2 
            on l_orderkey = o_orderkey and l_shipdate = o_orderdate
            where l_partkey = 3
            group by
            o_orderstatus,
            o_orderdate,
            l_partkey,
            l_suppkey;

the query like following can be rewritten scuucessfully by mv above

          select
            any_value(l_partkey),
            any_value(l_suppkey),
            any_value(o_orderstatus)
            from lineitem_2
            left join orders_2
            on l_orderkey = o_orderkey and l_shipdate = o_orderdate
            where l_partkey = 3 and o_orderstatus = 'o'
            group by
            o_orderdate,
            l_suppkey;

Issue Number: close #xxx

Related PR: #xxx

Problem Summary:

Release note

Support any_value aggregate function rollup rewrite when exsits aggregate materialized view

Check List (For Author)

Check List (For Reviewer who merge this PR)

doris-robot commented 13 hours ago

Thank you for your contribution to Apache Doris. Don't know what should be done next? See How to process your PR.

Please clearly describe your PR:

  1. What problem was fixed (it's best to include specific error reporting information). How it was fixed.
  2. Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
  3. What features were added. Why was this function added?
  4. Which code was refactored and why was this part of the code refactored?
  5. Which functions were optimized and what is the difference before and after the optimization?
seawinde commented 13 hours ago

run buildall