{"record":{"id":"084ea8653dc9180e","repo":"alibaba/DataX","slug":"can-t-support-this-columntype-s","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":128,"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    private Record doLess(Record record, String value, Column column, boolean hasEqual) {\n\n        //如果字段为空，直接不参与比较。即空也属于无穷大\n        if(column.getRawData() == null){\n            return record;\n        }\n\n        if (column instanceof DoubleColumn) {\n            Double ori = column.asDouble();\n            double val = Double.parseDouble(value);\n\n            if (hasEqual) {\n                if (ori <= val) {\n                    return null;\n                } else {","sourceCodeStart":110,"sourceCodeEnd":146,"githubUrl":"https://github.com/alibaba/DataX/blob/80ec23d5c5328eb90ca364d2749e92dfaf44541e/core/src/main/java/com/alibaba/datax/core/transport/transformer/FilterTransformer.java#L110-L146","documentation":"Inside dx_filter's doGreat (operators > and >=), only numeric columns (Long/Double) and Date columns are comparable; any other column type reaching the final else throws RuntimeException('>=,> can't support this columnType:...') under TRANSFORMER_RUN_EXCEPTION. Null raw data is skipped, but Bool/bytes and unknown custom Column types cannot be ordered numerically.","triggerScenarios":"Filtering with \">\"/\">=\" on a column that arrives as BoolColumn, BytesColumn, or a custom Column subclass — e.g. parameter [3, \">\", \"1\"] where column 3 is a boolean flag.","commonSituations":"Column index drift after source schema changes (numeric column replaced by boolean/bytes); mysql bit(1) columns surfacing as BoolColumn.","solutions":["Target a numeric or date column with > / >=.","Recheck the column index against the reader's column order after schema changes.","For string comparison semantics use like or =/!= instead of >."],"exampleFix":"// before\n{\"name\": \"dx_filter\", \"parameter\": [3, \">\", \"1\"]}  // column 3 is boolean\n\n// after\n{\"name\": \"dx_filter\", \"parameter\": [3, \"=\", \"true\"]}","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 orderableByGreat(Column c) {\n    return c instanceof LongColumn || c instanceof DoubleColumn || c instanceof DateColumn;\n}","tryCatchPattern":null,"preventionTips":["Reserve >/>= for numeric or date columns.","Recheck column indexes after source schema changes."],"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"}