{"record":{"id":"fe96818c3b7371e2","repo":"apache/seatunnel","slug":"oracle-table-name-must-be-in-all-uppercase-table","errorCode":null,"errorMessage":"Oracle table name must be in all uppercase, table: ${table}","messagePattern":"Oracle table name must be in all uppercase, table: (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-cdc/connector-cdc-oracle/src/main/java/org/apache/seatunnel/connectors/seatunnel/cdc/oracle/config/OracleSourceConfigFactory.java","lineNumber":214,"sourceCode":"        for (String database : databaseList) {\n            for (int i = 0; i < database.length(); i++) {\n                if (Character.isLetter(database.charAt(i))\n                        && !Character.isUpperCase(database.charAt(i))) {\n                    throw new IllegalArgumentException(\n                            \"Oracle database name must be in all uppercase, database: \" + database);\n                }\n            }\n        }\n        for (String table : tableList) {\n            if (table.split(\"\\\\.\").length != 3 && table.split(\"\\\\.\").length != 2) {\n                throw new IllegalArgumentException(\n                        \"Oracle table name format must be is: ${database}.${schema}.${table} or ${schema}.${table}, table: \"\n                                + table);\n            }\n            for (int i = 0; i < table.length(); i++) {\n                if (Character.isLetter(table.charAt(i))\n                        && !Character.isUpperCase(table.charAt(i))) {\n                    throw new IllegalArgumentException(\n                            \"Oracle table name must be in all uppercase, table: \" + table);\n                }\n            }\n        }\n    }\n}\n","sourceCodeStart":196,"sourceCodeEnd":221,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-cdc/connector-cdc-oracle/src/main/java/org/apache/seatunnel/connectors/seatunnel/cdc/oracle/config/OracleSourceConfigFactory.java#L196-L221","documentation":"Thrown by validateConfig when any letter in a table-list entry is lowercase. Oracle identifier resolution is case-sensitive here, and the connector requires uppercase table identifiers so they match the names stored in the redo log and data dictionary.","triggerScenarios":"table-list entries such as \"hr.employees\" or \"HR.Employees\" validated before job start.","commonSituations":"Users write table names in the lowercase style used by MySQL/PostgreSQL configs, or use camelCase from application code; common when generating configs programmatically from ORM metadata.","solutions":["Convert the table name to uppercase: HR.EMPLOYEES.","If the table was created with a quoted mixed-case name, recreate or rename it to an unquoted uppercase identifier.","Verify the actual name with SELECT table_name FROM all_tables WHERE owner='HR'."],"exampleFix":"// before\ntable-names = [\"hr.employees\"]\n// after\ntable-names = [\"HR.EMPLOYEES\"]","handlingStrategy":"validation","validationCode":"if (!table.equals(table.toUpperCase(java.util.Locale.ROOT)))\n    throw new IllegalArgumentException(\"table must be uppercase: \" + table);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Normalize table identifiers to uppercase at config load time.","Create Oracle tables without quoted identifiers so they store as uppercase."],"tags":["oracle-cdc","config-validation","naming-convention"],"backgroundTag":"invalid-config-value","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}