apache/seatunnel · error · SeaTunnelException
The iris database is not supported hash or md5 function…
Error message
The iris database is not supported hash or md5 function. Please remove the partition_column property in config.
What it means
IrisDialect.hashModForField always throws this SeaTunnelException because the Iris database has no hash/md5 SQL function that the JDBC source split-by partitioner can use. Split-by-hash partitioning is therefore unsupported for Iris; only range-based split (split.pk) works.
Solutions
- Remove the partition_column property from the JDBC source config.
- Use range-based splitting instead: set split.pk (the primary key column) and optionally split.num / split.size so splits are computed by ranges.
- Set parallelism off (no split options) if the table is small and single-threaded read is acceptable.
Example fix
// before
source {
Jdbc {
url = "jdbc:iris://host:1972/db"
partition_column = "id"
}
}
// after
source {
Jdbc {
url = "jdbc:iris://host:1972/db"
split.pk = "id"
}
} Defensive patterns
Strategy: validation
Validate before calling
// In job config validation before submission
if (sourceConfig.dialect == "iris" && sourceConfig.containsKey("partition_column")) {
throw new IllegalArgumentException("iris dialect: remove partition_column; use split.pk instead");
} Prevention
- Never set partition_column for Iris sources.
- Use split.pk with an indexed primary key for parallel reads on Iris.
- Review dialect-specific capabilities before copying split configs between databases.
When it happens
Trigger: Configuring a JDBC source with dialect=iris and setting partition_column (hash split mode) so the split enumerator calls hashModForField to compute shard predicates.
Common situations: Reusing a MySQL-style split_by_hash config for an Iris database; copy-pasting a job template that sets partition_column without realizing Iris lacks hash functions.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/baff9fd27ee60e5e.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/iris/IrisDialect.java:62
public IrisDialect() {}
public IrisDialect(String fieldIde) {
this.fieldIde = fieldIde;
}
@Override
public String dialectName() {
return DatabaseIdentifier.IRIS;
}
@Override
public JdbcRowConverter getRowConverter() {
return new IrisJdbcRowConverter();
}
@Override
public String hashModForField(String fieldName, int mod) {
throw new SeaTunnelException(
"The iris database is not supported hash or md5 function. Please remove the partition_column property in config.");
}
@Override
public JdbcDialectTypeMapper getJdbcDialectTypeMapper() {
return new IrisTypeMapper();
}
@Override
public String quoteIdentifier(String identifier) {
if (identifier.contains(".")) {
String[] parts = identifier.split("\\.");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < parts.length - 1; i++) {
sb.append("\"").append(parts[i]).append("\"").append(".");
}
return sb.append("\"")
.append(getFieldIde(parts[parts.length - 1], fieldIde))View on GitHub (pinned to cf67b549a7)