Skip to content

[fix](ivm) Rename leftover row binlog to changelog in IVM tests - #69372

Merged
hello-stephen merged 1 commit into
apache:masterfrom
yujun777:fix-ivm-datetime-seq-changelog
Oct 21, 2026
Merged

hello-stephen merged 1 commit into
apache:masterfrom
yujun777:fix-ivm-datetime-seq-changelog

Conversation

@yujun777

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

Issue Number: close #xxx

Related PR: #69311, #69268, #63639

Problem Summary: #69311 renamed the row binlog (the change stream IVM reads) to changelog and rejected the legacy keys binlog.format / binlog.need_historical_value in every DDL. Two test files merged just before it fell outside that rename sweep and now fail:

  1. regression-test/suites/mtmv_p0/ivm/test_ivm_datetime_sequence.groovy (from [fix](ivm) Use type zero values for missing hidden slots #69268) — creates its IVM base tables with "binlog.enable" = "true", "binlog.format" = "ROW", "binlog.need_historical_value" = "true", which CREATE TABLE now rejects.
  2. RelationImpliedPredicateTest#testIvmOutputPredicatesSkipHiddenColumns (from [fix](mtmv) Eliminate redundant filters in nested MV candidate definitions #63639) — same legacy properties in the base-table DDL, and it gates the creation on enable_feature_binlog instead of the new enable_feature_changelog.

Fix: switch both to "changelog.enable" = "true" (plus "changelog.need_historical_value" = "true" where the before-image is needed), drop the rejected binlog.format, and use enable_feature_changelog as the feature gate in the FE unit test. Related IVM trace issue: #65418 .

Release note

None

Check List (For Author)

  • Test
    • Unit Test: run-fe-ut.sh --run org.apache.doris.nereids.mv.RelationImpliedPredicateTest,org.apache.doris.mtmv.ivm.IvmUtilTest on top of current master — 35 tests, 0 failures.
    • Regression Test: FE+BE rebuilt from current master, run-regression-test.sh --run -d mtmv_p0 -s test_ivm_datetime_sequence — "All suites success"; query results are unchanged by the property rename, so the .out is untouched.
  • Behavior changed: No
  • Does this need documentation: No

### What problem does this PR solve?

Issue Number: close #xxx

Related PR: apache#69311, apache#69268, apache#63639

Problem Summary: apache#69311 renamed the row binlog (the change stream IVM
reads) to changelog and rejected the legacy keys `binlog.format` /
`binlog.need_historical_value` in every DDL. Two test files merged just
before it were outside that rename sweep and now fail: the regression
suite `test_ivm_datetime_sequence` (apache#69268) and the FE unit test
`RelationImpliedPredicateTest#testIvmOutputPredicatesSkipHiddenColumns`
(apache#63639) still created IVM base tables with `binlog.enable = true` plus
`binlog.format = ROW`, which CREATE TABLE now rejects, and the FE test
also gated on `enable_feature_binlog` instead of the new
`enable_feature_changelog`. Fix: switch both to
`changelog.enable = true` (plus `changelog.need_historical_value` where
needed) and `enable_feature_changelog`; the gate in the regression
cluster conf is covered by the existing CI configuration. Verified
locally: the two FE UT classes pass (35 tests, 0 failures) and the
regression suite passes against a cluster rebuilt from current master
("All suites success", results unchanged so the .out is untouched).

### Release note

None

### Check List (For Author)

- Test: Regression test / Unit Test
    - fe: RelationImpliedPredicateTest and IvmUtilTest pass via run-fe-ut.sh
    - regression: mtmv_p0 suite test_ivm_datetime_sequence passes via run-regression-test.sh
- Behavior changed: No
- Does this need documentation: No
@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?

@yujun777

Copy link
Copy Markdown
Contributor Author

run buildall

@yujun777

Copy link
Copy Markdown
Contributor Author

/review

@morningman

Copy link
Copy Markdown
Contributor

skip buildall

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No new actionable findings in the two changed files at 134f35e. The test fixtures now use the supported changelog properties and the actual CREATE feature gate. Both MoW regression inputs retain before images; the duplicate-key unit fixture correctly omits them. No existing inline findings require carry-forward, and no additional user focus was supplied.

Critical checkpoint conclusions:

  • Goal and evidence: the DDL matches PropertyAnalyzer and InternalCatalog; existing unit and regression assertions still cover the intended behavior. This review used static inspection only; no builds or tests were run.
  • Scope: the change is small and confined to two test files and all four diff hunks.
  • Concurrency and locking: no new threads, locks, or shared collection operations. Existing scoped global configuration handling and separate JVM test forks introduce no demonstrated new race or lock-order issue.
  • Lifecycle and initialization: the unit test restores the original feature, stream, and session settings in finally. Cleanup order is preserved; no static initialization or ownership change.
  • Configuration: no new option is introduced. enable_feature_changelog is the gate checked by CREATE; normal regression CI configurations already enable it.
  • Compatibility: these tests adapt to an existing DDL rename; production symbols and storage formats are unchanged.
  • Thrift/protobuf definitions: untouched; no field-ID or enum compatibility change.
  • Parallel paths: both regression input tables and the duplicate-key unit fixture are migrated. Aggregate and plain-join IVM paths remain covered, and ivm_force_mow preserves the hidden-column unit subject.
  • Conditional checks and errors: no new conditional or error path. Legacy-property rejection is avoided using supported keys; refresh waits still require SUCCESS.
  • Test coverage: both showHiddenColumns values retain hidden-row-ID, nonempty-predicate, visible-slot, and score=1 assertions. The regression retains complete initialization, dimension updates, DATETIME-sequenced base updates, and a new matching key. Query and DML transparent rewrites stay disabled. No new invalid-input behavior requires additional negative cases.
  • Expected results: all eight ordered query labels match the unchanged output file. The dimension update yields a2, the base value changes to 22, and key 4 appears as expected; property spelling requires no result update.
  • Observability: no runtime logging or metrics path changes; existing assertion diagnostics and refresh success checks suffice for this fixture correction.
  • Transactions and persistence: no production journal, replay, failover, or transaction path changes.
  • Data writes and atomicity: test DML and refresh ordering are unchanged; no introduced crash or atomicity issue was found.
  • FE/BE variable transport: no new variable or transport path.
  • Performance and memory: no new hot-path work, allocation, retained resource, or BE memory ownership change.
  • Core invariants and other issues: no changed production path affects committed-data visibility, versions, delete bitmaps, or memory tracking. Test failures remain assertions/exceptions; no other substantiated issue was found.

Converged after round 1: the complete-scope reviewer and the independent risk reviewer both returned NO_NEW_VALUABLE_FINDINGS on the same unchanged empty finding set. Main-agent verification resolved both property/stream semantics and feature-gate lifecycle risks, followed by a full changed-file and candidate sweep. No unresolved static candidates or uncovered assigned scope remain. Runtime behavior was not verified in this invocation, as required by the static-only contract.

Review converged after 1 round(s).

@hello-stephen
hello-stephen merged commit e02d93d into apache:master Oct 21, 2026
41 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants