englefly opened a new pull request, #66467:
URL: https://github.com/apache/doris/pull/66467
### What problem does this PR solve?
Issue Number: None
Related PR: #55819
Problem Summary:
When a view is created with a column name containing special characters
(e.g. `create view v as select 1 as '(第一列)'` with enable_unicode_name_support
enabled), SHOW CREATE VIEW emits an unquoted column definition list like
`((第一列))` — the outer parens are the list, the inner `(第一列)` is the raw column
name emitted without backtick quoting. The generated DDL is not re-executable:
the CREATE VIEW column list grammar requires an identifier (DorisParser.g4
simpleColumnDef -> identifier), and an unquoted name with parens fails to parse
(`mismatched input '第一列'`).
The column list itself was introduced by #55819 to preserve explicit column
definitions/comments in SHOW CREATE VIEW, but Env.addColNameAndComment
(Env.java) emitted column names verbatim.
Fix: quote every column name with SqlUtils.getIdentSql (backtick-quoting
with embedded-backtick escaping) and escape single quotes in column comments.
After the fix SHOW CREATE VIEW outputs
`CREATE VIEW `v` (`(第一列)`) AS select 1 as `(第一列)`;` which is valid SQL and
round-trips.
### Release note
SHOW CREATE VIEW now quotes view column names in the column definition list,
so the output stays re-executable even when column names contain special
characters (e.g. created via string-literal aliases with
enable_unicode_name_support).
### Check List (For Author)
- Test:
- FE compile: `mvn compile -pl fe-core -am` passed
- Ad-hoc parser verification passed (fixed DDL parses, old unquoted DDL
rejected)
- Regression suite ddl_p0/create_view_nereids run and
test_create_view_nereids.out regenerated with the fixed output; the other 7
affected .out files still need regeneration
- Behavior changed: Yes (SHOW CREATE VIEW output format)
- Does this need documentation: No
### What problem does this PR solve?
Issue Number: close #xxx
Related PR: #xxx
Problem Summary:
### Release note
None
### Check List (For Author)
- Test <!-- At least one of them must be included. -->
- [ ] 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 <!-- Add your reason? -->
- Behavior changed:
- [ ] No.
- [ ] Yes. <!-- Explain the behavior change -->
- Does this need documentation?
- [ ] No.
- [ ] Yes. <!-- Add document PR link here. eg:
https://github.com/apache/doris-website/pull/1214 -->
### Check List (For Reviewer who merge this PR)
- [ ] Confirm the release note
- [ ] Confirm test cases
- [ ] Confirm document
- [ ] Add branch pick label <!-- Add branch pick label that this PR should
merge into -->
--
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]