yjhjstz opened a new pull request, #1846:
URL: https://github.com/apache/cloudberry/pull/1846
ORCA represents names as wide characters; when the database LC_CTYPE cannot
decode a multibyte name (e.g. LC_CTYPE='C' with a UTF-8 alias), clib::Vswprintf
substitutes the generic "UNKNOWN" string and the DXL-to-PlStmt translator
restores the original name from the query tree (commit 6b19c44262b). That
restore only ran for Var target entries, so with the optimizer enabled
SELECT '한글' AS "한글";
returned a column named UNKNOWN: constants, aggregates, set operation and
set-returning-function outputs never took the repair path.
The old repair walked the entire query tree with
update_unknown_locale_walker matching on (resorigtbl, resno). That match key
is ambiguous: TargetEntries nested inside Aggref arguments or SubLink
subqueries can collide with it, either clobbering an already-restored name
(empty column header for the first of two aggregates) or restoring a name from
the wrong query level.
Replace the walker with restore_unknown_locale_resname, which scans only the
top-level query targetList for the non-junk entry with the same resno. Only the
topmost plan node is translated with a context that carries the original query,
and its projection list produces the query output columns in order, so the
positional top-level match is exact. A legitimate alias literally named
"UNKNOWN" self-matches and the restore is a no-op. Call it for every entry
translated by TranslateDXLProjList, for the inlined Append targetlist (UNION
ALL), and for the ProjectSet targetlists built by SetupAliasParameter
(set-returning functions).
Extend gp_locale with alias cases for constants, expressions, aggregates,
UNION ALL, set-returning functions, a subquery containing a same-position
column, and a legitimate "UNKNOWN" alias.
Fixes #ISSUE_Number
### What does this PR do?
<!-- Brief overview of the changes, including any major features or fixes -->
### Type of Change
- [ ] Bug fix (non-breaking change)
- [ ] New feature (non-breaking change)
- [ ] Breaking change (fix or feature with breaking changes)
- [ ] Documentation update
### Breaking Changes
<!-- Remove if not applicable. If yes, explain impact and migration path -->
### Test Plan
<!-- How did you test these changes? -->
- [ ] Unit tests added/updated
- [ ] Integration tests added/updated
- [ ] Passed `make installcheck`
- [ ] Passed `make -C src/test installcheck-cbdb-parallel`
### Impact
<!-- Remove sections that don't apply -->
**Performance:**
<!-- Any performance implications? -->
**User-facing changes:**
<!-- Any changes visible to users? -->
**Dependencies:**
<!-- New dependencies or version changes? -->
### Checklist
- [ ] Followed [contribution
guide](https://cloudberry.apache.org/contribute/code)
- [ ] Added/updated documentation
- [ ] Reviewed code for security implications
- [ ] This PR contains AI-assisted code generation
- [ ] Requested review from [cloudberry
committers](https://github.com/orgs/apache/teams/cloudberry-committers)
### Additional Context
<!-- Any other information that would help reviewers? Remove if none -->
### CI Skip Instructions
<!--
To skip CI builds, add the appropriate CI skip identifier to your PR title.
The identifier must:
- Be in square brackets []
- Include the word "ci" and either "skip" or "no"
- Only use for documentation-only changes or when absolutely necessary
-->
---
<!-- Join our community:
- Mailing list:
[[email protected]](https://lists.apache.org/[email protected])
(subscribe: [email protected])
- Discussions: https://github.com/apache/cloudberry/discussions -->
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]