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

  1. Remove the partition_column property from the JDBC source config.
  2. Use range-based splitting instead: set split.pk (the primary key column) and optionally split.num / split.size so splits are computed by ranges.
  3. 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

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)