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
- Upgrade DataX to a release whose dx_filter covers your Column type.
- In custom plugins, map data to stock Column types (StringColumn etc.) instead of custom ones.
- 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
- Map custom reader data to stock Column types.
- Keep DataX core updated so new Column types gain filter support.
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
- >=,> can't support this columnType:%s
- <=,< can't support this columnType:%s
- dx_filter paras must be 3
- dx_filter para 2 can't be null
- dx_filter can't support code:%s
AI-assisted analysis of alibaba/DataX@80ec23d5c5 (2026-08-14).
Data as JSON: /api/errors/bd0cef0e760052c9.
Report an issue: GitHub.