Repository navigation
[test](regression) Make map_agg NULL-key assertions order-independent - #69446
Conversation
### What problem does this PR solve?
Issue Number: None
Related PR: None
Problem Summary: The aggregation regression expected the map for an integer group to omit a valid NULL key and compared the order-dependent string representation of map entries. Project the map size, NULL-key presence, and values for NULL and ordinary keys instead. Keep the existing data and aggregation behavior unchanged.
### Release note
None
### Check List (For Author)
- Test: Regression test
- Built BE and FE on branch-4.2 with ASAN and BE Java extensions.
- Regenerated the focused suite output and reran the suite against the narrow expected-output change.
- Ran the minimal NULL-key scalar query and git diff --check.
- Behavior changed: No; regression assertions only.
- Does this need documentation: No
|
Thank you for your contribution to Apache Doris. Please clearly describe your PR:
|
|
/review |
There was a problem hiding this comment.
Reviewed PR #69446 at commit 160d692. No actionable findings. The review converged in one round: the complete-scope reviewer and separate risk reviewer both returned NO_NEW_VALUABLE_FINDINGS on the unchanged empty inline set. Both changed files and the fixture -> load/duplication -> aggregation -> scalar projection -> ordered regression comparison path were reviewed. There were no existing inline threads and no additional user-provided focus points.
Critical checkpoint conclusions:
- Goal and behavior: the scalar assertions remove map entry-order dependence while retaining complete contents and NULL-key coverage for this fixture. SQL map_agg binds V2; aggregation, merging, membership and subscript preserve NULL-key semantics, including the FE constant-folding exception.
- Scope: focused change to one final query and its matching expected-output block; inputs, grouping, repeated inserts and preceding MV assertions remain unchanged.
- Concurrency and locks: no thread, shared-state or locking change. Every duplicate key carries the same value, so merge scheduling cannot change the assertions.
- Lifecycle and static initialization: no new resource ownership, callbacks or static/global state; existing test table setup and load lifecycle are preserved.
- Configuration: no new configuration; the existing pipeline task setting is retained.
- Compatibility: no symbol, storage or wire-format changes; scalar functions already exist on this head.
- Shared definitions: no Thrift/protobuf changes, so cross-release field/enum checks are not applicable.
- Parallel paths: reviewed p0 MV and map_agg/map_agg_v1 regression cases; no required companion change identified.
- Special conditions: no new conditional logic; explicit INT lookup casts match the map key type and fixture range.
- Test coverage: the updated assertions check cardinality, NULL-key presence/absence, stored values for every key, and missing-key NULL results. The duplicated-input workload and deterministic ORDER BY are preserved.
- Expected results: all 13 modified rows and 65 scalar cells independently match the fixture, including literal string "null" versus SQL NULL. The qt_test output tag is unchanged, and JDBC/CSV scalar formatting is consistent with the golden file.
- Observability: existing regression failure reporting includes SQL and actual output; no new product path requires logs or metrics.
- Transactions and persistence: no EditLog, replay, commit or failover behavior changed.
- Writes and atomicity: all existing load/insert statements are unchanged; no new mutation or crash behavior.
- FE/BE transmission: no new transmitted variables; existing function aliases, types and NULL handling agree for MAP<INT,STRING>.
- Performance: aggregation workload is preserved; added scalar work covers only 13 maps with at most two entries each.
- Other invariants: no introduced visibility, delete-bitmap, memory-ownership or error-handling issue established.
Validation limits: this was a static review. No builds, regression/unit tests, submodule initialization or repository source edits were performed. The PR description reports generated output and successful regression runs; those executions and generation provenance were not independently reproduced. No unresolved code candidates or uncovered changed-file scope remain.
Review converged after 1 round(s).
|
run buildall |
|
PR approved by anyone and no changes requested. |
|
PR approved by at least one committer and no changes requested. |
What problem does this PR solve?
Issue Number: None
The
agg_sync_mvregression expected a map without a valid NULL key and compared the string representation ofmap_aggresults, which can vary with map entry order.What changed?
Testing
agg_sync_mvP1 regression output regeneration (-forceGenOut) and runs without regeneration: passed. The final narrowed expected-output change passed the full suite (1 suite, 0 failures).git diff --check origin/branch-4.2...HEADfor the two changed files: passed.Release note
None