{"record":{"id":"27fc5f4a92732fc8","repo":"alibaba/DataX","slug":"can-t-support-this-columntype-s-27fc5f","errorCode":null,"errorMessage":"<=,< can't support this columnType:%s","messagePattern":"<=,< can't support this columnType:(.+?)","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/com/alibaba/datax/core/transport/transformer/FilterTransformer.java","lineNumber":189,"sourceCode":"                }\n            }\n        } else if (column instanceof StringColumn || column instanceof BytesColumn || column instanceof BoolColumn) {\n            String ori = column.asString();\n            if (hasEqual) {\n                if (ori.compareTo(value) <= 0) {\n                    return null;\n                } else {\n                    return record;\n                }\n            } else {\n                if (ori.compareTo(value) < 0) {\n                    return null;\n                } else {\n                    return record;\n                }\n            }\n        } else {\n            throw new RuntimeException(\"<=,< can't support this columnType:\" + column.getClass().getSimpleName());\n        }\n\n    }\n\n    /**\n     * DateColumn将比较long值，StringColumn，ByteColumn以及BooleanColumn比较其String值\n     *\n     * @param record\n     * @param value\n     * @param column\n     * @return 如果相等，则过滤。\n     */\n\n    private Record doEqual(Record record, String value, Column column) {\n\n        //如果字段为空，只比较目标字段为\"null\"，否则null字段均不过滤\n        if(column.getRawData() == null){\n            if(value.equalsIgnoreCase(\"null\")){","sourceCodeStart":171,"sourceCodeEnd":207,"githubUrl":"https://github.com/alibaba/DataX/blob/80ec23d5c5328eb90ca364d2749e92dfaf44541e/core/src/main/java/com/alibaba/datax/core/transport/transformer/FilterTransformer.java#L171-L207","documentation":"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.","triggerScenarios":"Using \"<\" or \"<=\" on a BoolColumn, BytesColumn, or custom Column type: e.g. [1, \"<\", \"10\"] where column 1 carries bytes.","commonSituations":"Schema drift changing a column's Java type; filtering on binary/blob or boolean columns by mistake via wrong index.","solutions":["Apply </<= only to numeric or date columns.","Fix the column index or choose a different comparator (=, !=, like).","For dates, ensure the reader emits DateColumn and pass a parseable date string."],"exampleFix":"// before\n{\"name\": \"dx_filter\", \"parameter\": [1, \"<\", \"10\"]}  // column 1 is bytes\n\n// after\n{\"name\": \"dx_filter\", \"parameter\": [0, \"<\", \"10\"]}  // column 0 is long","handlingStrategy":"validation","validationCode":"Column c = record.getColumn(idx);\nboolean comparable = c instanceof LongColumn || c instanceof DoubleColumn || c instanceof DateColumn;\nif ((code.equals(\"<\") || code.equals(\"<=\")) && !comparable) {\n    throw new IllegalArgumentException(\"</<= needs numeric or date column, got \" + c.getClass().getSimpleName());\n}","typeGuard":"static boolean orderableByLess(Column c) {\n    return c instanceof LongColumn || c instanceof DoubleColumn || c instanceof DateColumn;\n}","tryCatchPattern":null,"preventionTips":["Reserve </<= for numeric or date columns.","Watch boolean/bit(1) columns masquerading as numbers."],"tags":["datax","transformer","dx-filter","column-type"],"backgroundTag":null,"analyzedSha":"80ec23d5c5328eb90ca364d2749e92dfaf44541e","analyzedAt":"2026-08-14T15:33:51.187Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}