Skip to content

[improvement](mtmv) enhance date_trunc mv rewrite#62951

Open
zwy991114 wants to merge 1 commit intoapache:masterfrom
zwy991114:date_trunc_mv_rewrite_enhancement
Open

[improvement](mtmv) enhance date_trunc mv rewrite#62951
zwy991114 wants to merge 1 commit intoapache:masterfrom
zwy991114:date_trunc_mv_rewrite_enhancement

Conversation

@zwy991114
Copy link
Copy Markdown

What problem does this PR solve?

Issue Number: N/A

Related PR: #xxx

Problem Summary:
Enable materialized view rewriting when queries use date range predicates that exactly cover one date_trunc bucket(only for DATE and DATEV2)

Example scenario:

CREATE TABLE tb_detail (
    dt DATE NOT NULL,
    uuid VARCHAR(50) NOT NULL,
    amt DECIMAL(10, 2) NOT NULL
) DUPLICATE KEY(dt, uuid)
AUTO PARTITION BY RANGE (date_trunc(dt, 'day')) ()
DISTRIBUTED BY HASH(uuid) BUCKETS 3
PROPERTIES ("replication_num" = "1")


insert into tb_detail values
('2025-01-01', 'uuid1', 100.00),
('2025-01-15', 'uuid2', 200.00),
('2025-01-31', 'uuid3', 300.00),
('2025-02-01', 'uuid4', 400.00),
('2025-02-28', 'uuid5', 500.00),
('2024-02-01', 'uuid6', 600.00),
('2024-02-29', 'uuid7', 700.00)

CREATE MATERIALIZED VIEW mv_month
BUILD IMMEDIATE
REFRESH ON MANUAL
PARTITION BY (month_dt)
DISTRIBUTED BY RANDOM BUCKETS AUTO
PROPERTIES ('replication_num' = '1')
AS SELECT
    date_trunc(dt, 'month') AS month_dt,
    SUM(amt) AS gmv,
    COUNT(DISTINCT uuid) AS uv
FROM tb_detail
GROUP BY month_dt
SELECT SUM(amt) AS gmv
FROM tb_detail
WHERE dt >= '2025-01-01' AND dt <= '2025-01-31'

Before: mv rewrite fail, success when dt < '2025-02-01'
After: dt <= '2025-01-31' can also be successfully rewritten.

Release note

None

Check List (For Author)

  • Test

    • Regression test
    • Unit Test
    • Manual test (add detailed scripts or steps below)
    • No need to test or manual test. Explain why:
      • This is a refactor/code format and no logic has been changed.
      • Previous test can cover this change.
      • No code files have been changed.
      • Other reason
  • Behavior changed:

    • No.
    • Yes.
  • Does this need documentation?

    • No.
    • Yes.

Check List (For Reviewer who merge this PR)

  • Confirm the release note
  • Confirm test cases
  • Confirm document
  • Add branch pick label

@hello-stephen
Copy link
Copy Markdown
Contributor

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?

@zwy991114
Copy link
Copy Markdown
Author

run buildall

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants