alibaba/DataX · error · RuntimeException

== can't support this columnType:%s

Error message

== can't support this columnType:%s

What it means

Inside dx_filter's doEqual (operators = and ==), only Long/Double/Date (compared numerically) and String/Bytes/Bool (compared as strings) are supported; any other column type throws RuntimeException('== can't support this columnType:...') under TRANSFORMER_RUN_EXCEPTION. Records whose value equals the parameter are filtered out (return null).

Source

Thrown at core/src/main/java/com/alibaba/datax/core/transport/transformer/FilterTransformer.java:240

            }
        } else if (column instanceof LongColumn || column instanceof DateColumn) {
            Long ori = column.asLong();
            long val = Long.parseLong(value);

            if (ori == val) {
                return null;
            } else {
                return record;
            }
        } else if (column instanceof StringColumn || column instanceof BytesColumn || column instanceof BoolColumn) {
            String ori = column.asString();
            if (ori.compareTo(value) == 0) {
                return null;
            } else {
                return record;
            }
        } else {
            throw new RuntimeException("== can't support this columnType:" + column.getClass().getSimpleName());
        }

    }

    /**
     * DateColumn将比较long值,StringColumn,ByteColumn以及BooleanColumn比较其String值
     *
     * @param record
     * @param value
     * @param column
     * @return 如果不相等,则过滤。
     */
    private Record doNotEqual(Record record, String value, Column column) {

        //如果字段为空,只比较目标字段为"null", 否则null字段均过滤。
        if(column.getRawData() == null){
            if(value.equalsIgnoreCase("null")){
                return record;

View on GitHub (pinned to 80ec23d5c5)

Solutions

  1. Upgrade DataX to a release whose dx_filter covers your Column type.
  2. In custom plugins, map data to stock Column types (StringColumn etc.) instead of custom ones.
  3. Compare a different (supported) column.
Defensive patterns

Strategy: validation

Validate before calling

Column c = record.getColumn(idx);
boolean eqOk = c instanceof LongColumn || c instanceof DoubleColumn || c instanceof DateColumn
        || c instanceof StringColumn || c instanceof BytesColumn || c instanceof BoolColumn;
if (!eqOk) throw new IllegalArgumentException("== unsupported for " + c.getClass().getSimpleName());

Type guard

static boolean equalityComparable(Column c) {
    return c instanceof LongColumn || c instanceof DoubleColumn || c instanceof DateColumn
        || c instanceof StringColumn || c instanceof BytesColumn || c instanceof BoolColumn;
}

Prevention

When it happens

Trigger: Equality-filtering a column that is a custom Column subclass not in the supported set — typically only possible in plugins that introduce novel Column types, since all stock types are covered.

Common situations: Custom reader plugins emitting bespoke Column implementations; older DataX forks missing a newer Column type branch.

Related errors


AI-assisted analysis of alibaba/DataX@80ec23d5c5 (2026-08-14). Data as JSON: /api/errors/bd0cef0e760052c9. Report an issue: GitHub.