terrymanu commented on issue #29026:
URL:
https://github.com/apache/shardingsphere/issues/29026#issuecomment-3622367219
Issue Understanding
- ShardingSphere-JDBC 5.4.0 with Oracle: !SINGLE tables: configured in
lowercase, Oracle returns uppercase table names, and single tables fail to load
at startup, throwing an NPE/not loaded. Suspected case-sensitivity mismatch.
Root Cause
- In 5.4.0 the single-table loader compared configured tables with actual
tables using case-sensitive sets. Oracle defaults unquoted identifiers to
uppercase, so a lowercase configured table didn’t match the uppercase actual
name, leading to the single table being
skipped and an exception.
Analysis
- On master, SingleTableDataNodeLoader now normalizes/matches
case-insensitively: actual tables use a CaseInsensitiveMap and lowercase keys;
matching uses tableName().toLowerCase(), and
SingleTableLoadUtils.convertToDataNodes lowercases table names.
- This means the case-mismatch issue in 5.4.0 is addressed on master;
Oracle uppercase vs lowercase config should now match.
- The issue is still open, but the code shows the fix on the main branch.
Recommend upgrading to 5.5.x-SNAPSHOT or later, or in 5.4.0 temporarily
configure uppercase table names or quote identifiers.
Conclusion
- Root cause: 5.4.0 single-table loading was case-sensitive, so Oracle
uppercase names didn’t match lowercase config.
- Master already fixes it with case-insensitive matching. Please upgrade;
if you still see it, share your exact version, full !SINGLE config, whether
tables were created with quotes, and the init stack trace for further checks.
--
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]