{"record":{"id":"baff9fd27ee60e5e","repo":"apache/seatunnel","slug":"the-iris-database-is-not-supported-hash-or-md5-fun","errorCode":null,"errorMessage":"The iris database is not supported hash or md5 function. Please remove the partition_column property in config.","messagePattern":"The iris database is not supported hash or md5 function\\. Please remove the partition_column property in config\\.","errorType":"exception","errorClass":"SeaTunnelException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/iris/IrisDialect.java","lineNumber":62,"sourceCode":"    public IrisDialect() {}\n\n    public IrisDialect(String fieldIde) {\n        this.fieldIde = fieldIde;\n    }\n\n    @Override\n    public String dialectName() {\n        return DatabaseIdentifier.IRIS;\n    }\n\n    @Override\n    public JdbcRowConverter getRowConverter() {\n        return new IrisJdbcRowConverter();\n    }\n\n    @Override\n    public String hashModForField(String fieldName, int mod) {\n        throw new SeaTunnelException(\n                \"The iris database is not supported hash or md5 function. Please remove the partition_column property in config.\");\n    }\n\n    @Override\n    public JdbcDialectTypeMapper getJdbcDialectTypeMapper() {\n        return new IrisTypeMapper();\n    }\n\n    @Override\n    public String quoteIdentifier(String identifier) {\n        if (identifier.contains(\".\")) {\n            String[] parts = identifier.split(\"\\\\.\");\n            StringBuilder sb = new StringBuilder();\n            for (int i = 0; i < parts.length - 1; i++) {\n                sb.append(\"\\\"\").append(parts[i]).append(\"\\\"\").append(\".\");\n            }\n            return sb.append(\"\\\"\")\n                    .append(getFieldIde(parts[parts.length - 1], fieldIde))","sourceCodeStart":44,"sourceCodeEnd":80,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/iris/IrisDialect.java#L44-L80","documentation":"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.","triggerScenarios":"Configuring a JDBC source with dialect=iris and setting partition_column (hash split mode) so the split enumerator calls hashModForField to compute shard predicates.","commonSituations":"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.","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."],"exampleFix":"// before\nsource {\n  Jdbc {\n    url = \"jdbc:iris://host:1972/db\"\n    partition_column = \"id\"\n  }\n}\n// after\nsource {\n  Jdbc {\n    url = \"jdbc:iris://host:1972/db\"\n    split.pk = \"id\"\n  }\n}","handlingStrategy":"validation","validationCode":"// In job config validation before submission\nif (sourceConfig.dialect == \"iris\" && sourceConfig.containsKey(\"partition_column\")) {\n  throw new IllegalArgumentException(\"iris dialect: remove partition_column; use split.pk instead\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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."],"tags":["jdbc","iris","config-validation","parallelism"],"backgroundTag":"unsupported-operation","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}