{"record":{"id":"1bf8e6ac907405a3","repo":"apache/seatunnel","slug":"range-string-split-failed-for-table-fallback-t-1bf8e6","errorCode":null,"errorMessage":"Range string split failed for table {}, fallback to hash split","messagePattern":"Range string split failed for table (.+?), fallback to hash split","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/source/FixedChunkSplitter.java","lineNumber":97,"sourceCode":"            if (config.getStringSplitStrategy() == null) {\n                log.info(\"useNewStringSplitter is {}\", useCharsetBasedStringSplitter);\n                if (useCharsetBasedStringSplitter) {\n                    return getJdbcSourceStringSplits(table, splitKeyName, splitKeyType);\n                } else {\n                    return createStringColumnSplits(table, splitKeyName, splitKeyType);\n                }\n            }\n            switch (resolveStringSplitStrategy(table, splitKeyName)) {\n                case NONE:\n                    return Collections.singletonList(createSingleSplit(table));\n                case HASH:\n                    return createStringColumnSplits(table, splitKeyName, splitKeyType);\n                case RANGE:\n                    if (config.getStringSplitStrategy() == StringSplitStrategy.AUTO) {\n                        try {\n                            return createStringRangeSplits(table, splitKeyName, splitKeyType);\n                        } catch (Exception e) {\n                            log.warn(\n                                    \"Range string split failed for table {}, fallback to hash split\",\n                                    table.getTablePath(),\n                                    e);\n                            return createStringColumnSplits(table, splitKeyName, splitKeyType);\n                        }\n                    }\n                    return createStringRangeSplits(table, splitKeyName, splitKeyType);\n                case AUTO:\n                    throw new JdbcConnectorException(\n                            CommonErrorCodeDeprecated.ILLEGAL_ARGUMENT,\n                            \"Unexpected string split strategy: \" + config.getStringSplitStrategy());\n                default:\n                    throw new JdbcConnectorException(\n                            CommonErrorCodeDeprecated.ILLEGAL_ARGUMENT,\n                            \"Unsupported string split strategy: \"\n                                    + config.getStringSplitStrategy());\n            }\n        }","sourceCodeStart":79,"sourceCodeEnd":115,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/source/FixedChunkSplitter.java#L79-L115","documentation":"In FixedChunkSplitter.createSplits, when the string split strategy is RANGE (or AUTO resolves to RANGE), range-based string splits are attempted. If any exception occurs while computing range splits, the splitter logs this warning and falls back to hash-based string splits so the job can still run.","triggerScenarios":"createSplits with StringSplitStrategy.AUTO and createStringRangeSplits throws (e.g. unsupported key type/range computation error on the split column of the table).","commonSituations":"Splitting on string/varchar primary keys whose range computation fails on particular dialects or unusual data (empty tables, collation issues, non-comparable values); users with AUTO strategy hit this transparently.","solutions":["No action strictly required: the fallback to createStringColumnSplits (hash split) keeps the job running; check the logged exception for root cause.","Set split.string-split-strategy = HASH explicitly to avoid the failed range attempt and the warning.","Fix the underlying range split failure (check split key column type/data) if range split performance is desired.","Inspect the exception stack trace in the log to identify the dialect limitation."],"exampleFix":"// before (config)\nsplit.string-split-strategy = AUTO\n// after (config)\nsplit.string-split-strategy = HASH","handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Set split.string-split-strategy=HASH explicitly when range split is not essential","Check split key column type/data comparability before choosing RANGE","Read the logged exception to understand why range split failed"],"tags":["jdbc","split-enumerator","fallback","string-key"],"backgroundTag":"fallback","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"}