apache/seatunnel · error · JdbcConnectorException
SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED
SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED
Error message
Unsupported JDBC table_options for dialect '${dialectName}': ${unsupportedOptions}. Supported keys: ${supportedOptions} What it means
This error is thrown by the PostgreSQL JDBC dialect's validateTableOptions when a user supplies table_options keys that are not in the dialect's SUPPORTED_TABLE_OPTIONS set. It fails fast at config validation time so unsupported options never reach the generated DDL. The message lists the offending keys and all keys the dialect supports.
Source
Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/psql/PostgresDialect.java:492
}
public String convertType(String columnName, String columnType) {
if (PostgresTypeConverter.PG_UUID.equals(columnType)) {
return columnName + "::text";
}
return columnName;
}
@Override
public void validateTableOptions(Map<String, String> tableOptions) {
if (tableOptions == null || tableOptions.isEmpty()) {
return;
}
Set<String> unsupportedOptions = new LinkedHashSet<>(tableOptions.keySet());
unsupportedOptions.removeAll(SUPPORTED_TABLE_OPTIONS);
if (!unsupportedOptions.isEmpty()) {
throw new JdbcConnectorException(
SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED,
String.format(
"Unsupported JDBC table_options for dialect '%s': %s. Supported keys: %s",
dialectName(),
String.join(", ", unsupportedOptions),
String.join(", ", SUPPORTED_TABLE_OPTIONS)));
}
for (Map.Entry<String, String> entry : tableOptions.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
if (StringUtils.isBlank(value)) {
throw new JdbcConnectorException(
SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED,
String.format(
"Invalid JDBC table_options for dialect '%s': key '%s' must not be blank",
dialectName(), key));
}View on GitHub (pinned to cf67b549a7)
Solutions
- Remove the unsupported keys from table_options, keeping only keys listed in the error's 'Supported keys'
- Fix typos in option key names (e.g. 'fill_factor' -> 'fillfactor')
- Check the PostgresDialect/PostgresCatalog source for the current SUPPORTED_TABLE_OPTIONS list for your SeaTunnel version
- If the option is genuinely needed, upgrade SeaTunnel to a version that supports it or file/patch an upstream feature request
Example fix
// before
table_options = {fillfactor=80, engine=InnoDB}
// after
table_options = {fillfactor=80} Defensive patterns
Strategy: validation
Validate before calling
Set<String> supported = Set.of("fillfactor","tablespace");
Set<String> bad = new LinkedHashSet<>(tableOptions.keySet());
bad.removeAll(supported);
if (!bad.isEmpty()) throw new IllegalArgumentException("Unsupported table_options: " + bad); Prevention
- Only use keys printed in the error's 'Supported keys' list
- Diff your table_options against SUPPORTED_TABLE_OPTIONS when upgrading SeaTunnel
- Avoid copying table options between database dialects
When it happens
Trigger: Calling validateTableOptions (directly in tests or via catalog table creation) with a table_options map containing any key outside SUPPORTED_TABLE_OPTIONS for the postgres dialect.
Common situations: Copy-pasting table options from MySQL or other dialect docs (e.g. ENGINE=InnoDB) into a Postgres connector config; typos in supported keys like 'fillfactor' or 'tablespace'; options left over from a dialect migration.
Related errors
- CONFIG_VALIDATION_FAILED
- CONFIG_VALIDATION_FAILED
- CONFIG_VALIDATION_FAILED
- SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED
- Couldn't obtain encoding for database <database>
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/d7785828f3674f57.
Report an issue: GitHub.