menghaoranss commented on PR #39210: URL: https://github.com/apache/shardingsphere/pull/39210#issuecomment-5042931437
```markdown ### Correction - **Previous Finding:** MCP directly propagated the MySQL storage policy into identifier matching, making mixed-case column matching case-sensitive. - **Current Status:** Withdrawn - **Reason:** The latest head replaces the direct storage-policy propagation with `DatabaseIdentifierContext` and uses metadata-policy matching throughout MCP. ### Summary **Review Result: Mergeable** **Reason:** The latest patch correctly separates storage normalization from metadata matching and closes the previously identified MCP propagation gap. This result is code-scope only; CI was not reviewed by request. ### Evidence - [`MySQLIdentifierCasePolicyProvider`](https://github.com/apache/shardingsphere/blob/7f932ee18a61af3b67eb2ffbcdb9abd8271ad185/database/connector/dialect/mysql/src/main/java/org/apache/shardingsphere/database/connector/mysql/metadata/identifier/MySQLIdentifierCasePolicyProvider.java#L60-L69) preserves the original case of columns, indexes, and constraints at the storage-normalization layer without changing table behavior. - [`DatabaseIdentifierContextFactory`](https://github.com/apache/shardingsphere/blob/7f932ee18a61af3b67eb2ffbcdb9abd8271ad185/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/identifier/DatabaseIdentifierContextFactory.java#L57-L64) now creates a complete protocol, storage, and metadata identifier context from one database type and data source. - [`MCPJdbcDatabaseProfileLoader`](https://github.com/apache/shardingsphere/blob/7f932ee18a61af3b67eb2ffbcdb9abd8271ad185/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcDatabaseProfileLoader.java#L79-L92) propagates that context instead of exposing the raw storage policy. - [`WorkflowSQLUtils`](https://github.com/apache/shardingsphere/blob/7f932ee18a61af3b67eb2ffbcdb9abd8271ad185/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/workflow/service/WorkflowSQLUtils.java#L131-L138), database visibility validation, and cross-schema validation now use `matchesMetaData` while preserving quoted-identifier information. - The factory test verifies that MySQL column storage normalization preserves case while metadata column matching remains case-insensitive and table matching retains database-specific behavior. - No direct `IdentifierCasePolicySet` or `IdentifierCasePolicyResolver.resolveStorage` usage remains in MCP production code. ### Review Details - **Review Focus:** Code Correctness Review. CI not reviewed by request. - **Reviewed Scope:** All 28 changed files across the MySQL connector, `infra/common`, and MCP support, core, bootstrap, Encrypt, and Mask modules. Latest head: `7f932ee18a61af3b67eb2ffbcdb9abd8271ad185`; local merge-base: `9bd9eaa6e55d96e5db03d9fdac4d359795ba8829`. The local triple-dot scope matched GitHub’s file list. - **Not Reviewed Scope:** GitHub Actions and external database E2E execution. - **Verification:** Focused current-head test run completed with exit code 0: 507 tests passed with no failures or errors. `spotless:check checkstyle:check -Pcheck -T1C` completed with exit code 0 and no formatting or Checkstyle violations. - **Release Note / User Docs:** Not required; this corrects internal identifier normalization and matching ownership without introducing user configuration or migration requirements. ``` -- 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]
