{"record":{"id":"5fa71ae04a2185c3","repo":"apache/seatunnel","slug":"invalid-regex-pattern-in-table-name-resolved","errorCode":null,"errorMessage":"Invalid regex pattern in `table_name`: , resolved pattern: ","messagePattern":"Invalid regex pattern in `table_name`: , resolved pattern: ","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/source/config/HiveSourceTableDiscovery.java","lineNumber":91,"sourceCode":"                }\n                List<String> tables = catalog.listTables(databaseName);\n                for (String tableName : tables) {\n                    if (tablePattern.matcher(tableName).matches()) {\n                        tablePaths.add(TablePath.of(databaseName, tableName));\n                    }\n                }\n            }\n        }\n\n        tablePaths.sort(Comparator.comparing(TablePath::getFullName));\n        return tablePaths;\n    }\n\n    private static Pattern compilePattern(String pattern, String rawTableName) {\n        try {\n            return Pattern.compile(pattern);\n        } catch (PatternSyntaxException exception) {\n            throw new IllegalArgumentException(\n                    \"Invalid regex pattern in `table_name`: \"\n                            + rawTableName\n                            + \", resolved pattern: \"\n                            + pattern,\n                    exception);\n        }\n    }\n\n    /**\n     * Treat databasePattern as an exact database name only when it doesn't contain obvious regex\n     * meta characters.\n     */\n    private static boolean isExactDatabaseName(String databasePattern) {\n        if (databasePattern == null || databasePattern.isEmpty()) {\n            return false;\n        }\n        for (int i = 0; i < databasePattern.length(); i++) {\n            char ch = databasePattern.charAt(i);","sourceCodeStart":73,"sourceCodeEnd":109,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/source/config/HiveSourceTableDiscovery.java#L73-L109","documentation":"compilePattern wraps Java's Pattern.compile for the database and table regex fragments derived from `table_name`. If the resolved fragment is not a valid Java regex, the PatternSyntaxException is rethrown as an IllegalArgumentException that includes both the raw `table_name` value and the resolved sub-pattern, so the user can see which part failed. This catches malformed regex like unbalanced brackets or bad quantifiers.","triggerScenarios":"discoverTablePaths with use_regex=true calls compilePattern on the parsed databasePattern or tablePattern fragment and Pattern.compile throws PatternSyntaxException (e.g. `table_name = \"db[.orders\"` with an unclosed `[`).","commonSituations":"Users hand-write regex with unescaped dots or unbalanced character classes; HOCON escaping confusion (single vs double backslash) corrupts `\\.` into a bare dot that then forms invalid regex; copy-pasted globs (`*`) used as regex.","solutions":["Fix the `table_name` regex: balance brackets/parens and quote literal dots as `\\\\.` in HOCON","Test the pattern in plain Java regex before putting it in the config","Use the documented examples like `db0.\\\\.*` or `db1.user_table_[0-9]+` as templates"],"exampleFix":"// before\ntable_name = \"db1.[app|web]order_\\\\.*\" // '[' opens a char class but alternation '|' inside [ ] is literal, often unintended\n\n// after\ntable_name = \"db1.(app|web)order_\\\\.*\"","handlingStrategy":"validation","validationCode":"try {\n    java.util.regex.Pattern.compile(tableNamePattern);\n} catch (java.util.regex.PatternSyntaxException e) {\n    throw new IllegalArgumentException(\"Invalid table_name regex: \" + tableNamePattern, e);\n}","typeGuard":null,"tryCatchPattern":"try {\n    // submit job / call discovery\n} catch (IllegalArgumentException e) {\n    if (e.getMessage() != null && e.getMessage().contains(\"Invalid regex pattern\")) {\n        // fix table_name regex and resubmit\n    }\n}","preventionTips":["Test regex in plain Java before putting it in HOCON","Escape literal dots as \\\\. (\\\\\\\\. in HOCON strings)","Balance all character classes and groups"],"tags":["hive","regex","config"],"backgroundTag":"invalid-regex-pattern","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}