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 doLess (operators < and <=), only numeric (Long/Double) and Date columns are comparable; other column types hit the final else and throw RuntimeException('<=,< can't support this columnType:...') under TRANSFORMER_RUN_EXCEPTION. Mirrors error 55 but for the less-than path.

Source

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

                }
            }
        } else if (column instanceof StringColumn || column instanceof BytesColumn || column instanceof BoolColumn) {
            String ori = column.asString();
            if (hasEqual) {
                if (ori.compareTo(value) <= 0) {
                    return null;
                } else {
                    return record;
                }
            } else {
                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 doEqual(Record record, String value, Column column) {

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

View on GitHub (pinned to 80ec23d5c5)

Solutions

  1. Apply </<= only to numeric or date columns.
  2. Fix the column index or choose a different comparator (=, !=, like).
  3. For dates, ensure the reader emits DateColumn and pass a parseable date string.

Example fix

// before
{"name": "dx_filter", "parameter": [1, "<", "10"]}  // column 1 is bytes

// after
{"name": "dx_filter", "parameter": [0, "<", "10"]}  // column 0 is long
Defensive patterns

Strategy: validation

Validate before calling

Column c = record.getColumn(idx);
boolean comparable = c instanceof LongColumn || c instanceof DoubleColumn || c instanceof DateColumn;
if ((code.equals("<") || code.equals("<=")) && !comparable) {
    throw new IllegalArgumentException("</<= needs numeric or date column, got " + c.getClass().getSimpleName());
}

Type guard

static boolean orderableByLess(Column c) {
    return c instanceof LongColumn || c instanceof DoubleColumn || c instanceof DateColumn;
}

Prevention

When it happens

Trigger: Using "<" or "<=" on a BoolColumn, BytesColumn, or custom Column type: e.g. [1, "<", "10"] where column 1 carries bytes.

Common situations: Schema drift changing a column's Java type; filtering on binary/blob or boolean columns by mistake via wrong index.

Related errors


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