[fix](fe) Fix view columns losing colUniqueId in lazy materialization#62533
Merged
englefly merged 4 commits intoapache:masterfrom Apr 17, 2026
Merged
[fix](fe) Fix view columns losing colUniqueId in lazy materialization#62533englefly merged 4 commits intoapache:masterfrom
englefly merged 4 commits intoapache:masterfrom
Conversation
Contributor
|
Thank you for your contribution to Apache Doris. Please clearly describe your PR:
|
Contributor
Author
|
run buildall |
Contributor
FE Regression Coverage ReportIncrement line coverage |
### What problem does this PR solve?
Issue Number: None
Related PR: None
Problem Summary: Fix alias slot metadata propagation so MySQL protocol keeps the one-level view column name instead of falling back to the base-table original column name.
### Release note
None
### Check List (For Author)
- Test: FE unit test
- Unit Test: ./run-fe-ut.sh --run org.apache.doris.nereids.trees.expressions.ExpressionTest
- Behavior changed: Yes (restores expected MySQL metadata for view columns)
- Does this need documentation: No
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
Author
|
run buildall |
Contributor
FE Regression Coverage ReportIncrement line coverage |
Contributor
Author
|
run cloud_p0 |
Contributor
FE Regression Coverage ReportIncrement line coverage |
Contributor
Author
|
/review |
Contributor
There was a problem hiding this comment.
Requesting changes because the PR only fixes one of the two MySQL metadata paths.
Finding
Alias.toSlot()now preservesoneLevelColumn, which fixes the normal result-set metadata path that goes throughNereidsPlanner->FieldInfo. But server-side prepared statements still go throughPrepareCommand.run()->StmtExecutor.planPrepareStatementSlots()->PrepareCommandPlanner(ANALYZED_PLAN) ->StmtExecutor.sendStmtPrepareOK()(fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/PrepareCommand.java:129-139,fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java:1699-1713,fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java:1986-1993). That path still serializesoriginalTable/originalColumnand ignores theoneLevel*metadata that normal queries use infe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java:656-676, souseServerPrepStmts=truestill exposes base-table metadata for view columns.
Critical checkpoints
- Goal of the task: Partially accomplished. The lazy-materialization fix looks correct, and the normal result-set metadata path looks fixed. The view-metadata goal is still unmet for
COM_STMT_PREPARE. - Is the change small and focused: Yes.
- Concurrency: Not involved.
- Lifecycle/static initialization: Not involved.
- Configuration: No new config.
- Compatibility/storage format: No compatibility or storage-format change.
- Parallel code paths: Not fully handled. The prepared-statement metadata path was not updated.
- Special conditional checks: No new risky conditionals.
- Test coverage: Incomplete. The new lazy-materialization regression is good, but there is no
useServerPrepStmts=trueregression for view metadata. - Observability: Not applicable.
- Transaction/persistence/data writes: Not involved.
- FE-BE variable passing: Not applicable for this change.
- Performance: Neutral.
- Other issues: None beyond the blocking prepared-statement path.
starocean999
approved these changes
Apr 17, 2026
Contributor
|
PR approved by at least one committer and no changes requested. |
feiniaofeiafei
approved these changes
Apr 17, 2026
prepare stmt的bug不在这个pr的修改范畴,如果有bug,另外开pr fix
github-actions bot
pushed a commit
that referenced
this pull request
Apr 17, 2026
…#62533) ### What problem does this PR solve? When querying columns through a view with TopN + lazy materialization, SlotReference.withOneLevelTableAndColumnAndQualifier() incorrectly replaced originalColumn with the view's Column object (which has uniqueId=-1). This caused colUniqueId=-1 in the physical plan, making BE unable to find the column during the two-phase read (lazy materialize) fetch, resulting in "returned block with row count 0 not match request row id count" error. The fix preserves the original base table Column (which carries the correct uniqueId) instead of overwriting it with the view's Column.
github-actions bot
pushed a commit
that referenced
this pull request
Apr 17, 2026
…#62533) ### What problem does this PR solve? When querying columns through a view with TopN + lazy materialization, SlotReference.withOneLevelTableAndColumnAndQualifier() incorrectly replaced originalColumn with the view's Column object (which has uniqueId=-1). This caused colUniqueId=-1 in the physical plan, making BE unable to find the column during the two-phase read (lazy materialize) fetch, resulting in "returned block with row count 0 not match request row id count" error. The fix preserves the original base table Column (which carries the correct uniqueId) instead of overwriting it with the view's Column.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What problem does this PR solve?
When querying columns through a view with TopN + lazy materialization,
SlotReference.withOneLevelTableAndColumnAndQualifier() incorrectly replaced
originalColumn with the view's Column object (which has uniqueId=-1).
This caused colUniqueId=-1 in the physical plan, making BE unable to find
the column during the two-phase read (lazy materialize) fetch, resulting in
"returned block with row count 0 not match request row id count" error.
Issue Number: close #xxx
Related PR: #xxx
Problem Summary:
Release note
None
Check List (For Author)
Test
Behavior changed:
Does this need documentation?
Check List (For Reviewer who merge this PR)