apache/seatunnel · error · OptionValidationException
oracle_insert_mode=APPEND_VALUES does not support copy…
Error message
oracle_insert_mode=APPEND_VALUES does not support copy statement.
What it means
This OptionValidationException is thrown by JdbcSinkFactory's Oracle insert-mode validator when oracle_insert_mode=APPEND_VALUES is combined with use_copy_statement=true. APPEND_VALUES hint-based inserts and the COPY statement are mutually exclusive write paths for the Oracle connector.
Solutions
- Set use_copy_statement=false, or
- Change oracle_insert_mode to a mode compatible with COPY (remove the append_values setting)
- Review the sink config template for leftover conflicting options
Example fix
// before oracle_insert_mode = "append_values" use_copy_statement = true // after oracle_insert_mode = "append_values" use_copy_statement = false
Defensive patterns
Strategy: validation
Validate before calling
if ("append_values".equalsIgnoreCase(config.get("oracle_insert_mode"))
&& Boolean.parseBoolean(String.valueOf(config.get("use_copy_statement")))) {
throw new IllegalArgumentException("use_copy_statement must be false with append_values");
} Try / catch
try {
validateSinkOptions(config);
} catch (OptionValidationException e) {
// fix conflicting options before job submission
} Prevention
- Never combine use_copy_statement=true with append_values mode
- Review merged config output before submission
- Keep sink config templates free of stale options
When it happens
Trigger: Configuring sink options oracle_insert_mode="append_values" together with use_copy_statement=true; the validator's evaluate() method rejects the combination during option validation.
Common situations: Enabling Oracle COPY-based bulk load while also (explicitly or via copied template config) setting append_values insert mode; incremental config edits that left both options set.
Understand the failure class
Background: Conflicting config options: "cannot be used together" — configuration validation errors across open-source libraries — this error's family across 162 libraries.
Related errors
- oracle_insert_mode=APPEND_VALUES does not support custom…
- oracle_insert_mode=APPEND_VALUES does not support…
- oracle_insert_mode=APPEND_VALUES requires auto_commit=true.
- COMMON-17
- COMMON-19
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/0d3c651cc4f49ff4.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/sink/JdbcSinkFactory.java:416
* primary keys may be derived from the upstream {@code CatalogTable} at factory time (inside
* {@link #createSink}), which happens after OptionRule validation. That case is guarded at
* runtime by {@code JdbcOutputFormatBuilder.validateOracleInsertMode}.
*/
static class OracleAppendValuesValidator
implements ConditionExtension<JdbcSinkConfig.OracleInsertMode> {
@Override
public String description() {
return "oracle_insert_mode=APPEND_VALUES conflicts with certain options";
}
@Override
public boolean evaluate(ReadonlyConfig config, JdbcSinkConfig.OracleInsertMode value)
throws OptionValidationException {
if (value != JdbcSinkConfig.OracleInsertMode.APPEND_VALUES) {
return true;
}
if (config.get(JdbcSinkOptions.USE_COPY_STATEMENT)) {
throw new OptionValidationException(
"oracle_insert_mode=APPEND_VALUES does not support copy statement.");
}
if (config.get(JdbcSinkOptions.IS_EXACTLY_ONCE)) {
throw new OptionValidationException(
"oracle_insert_mode=APPEND_VALUES does not support exactly-once.");
}
if (!config.get(JdbcSinkOptions.AUTO_COMMIT)) {
throw new OptionValidationException(
"oracle_insert_mode=APPEND_VALUES requires auto_commit=true.");
}
if (!config.get(JdbcSinkOptions.GENERATE_SINK_SQL)) {
throw new OptionValidationException(
"oracle_insert_mode=APPEND_VALUES does not support custom query.");
}
if (config.get(JdbcSinkOptions.SUPPORT_UPSERT_BY_INSERT_ONLY)) {
throw new OptionValidationException(
"oracle_insert_mode=APPEND_VALUES does not support insert-only upsert.");
}View on GitHub (pinned to cf67b549a7)