{"record":{"id":"7d3f017aa3f4cbff","repo":"alibaba/DataX","slug":"dx-digest-paras-index-2-must-be-touppercase-or-tol","errorCode":null,"errorMessage":"dx_digest paras index 2 must be toUpperCase or toLowerCase","messagePattern":"dx_digest paras index 2 must be toUpperCase or toLowerCase","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/com/alibaba/datax/core/transport/transformer/DigestTransformer.java","lineNumber":51,"sourceCode":"\n        int columnIndex;\n        String type;\n        String charType;\n\n        try {\n            if (paras.length != 3) {\n                throw new RuntimeException(\"dx_digest paras length must be 3\");\n            }\n\n            columnIndex = (Integer) paras[0];\n            type = (String) paras[1];\n            charType = (String) paras[2];\n\n            if (!StringUtils.equalsIgnoreCase(MD5, type) && !StringUtils.equalsIgnoreCase(SHA1, type)) {\n                throw new RuntimeException(\"dx_digest paras index 1 must be md5 or sha1\");\n            }\n            if (!StringUtils.equalsIgnoreCase(TO_UPPER_CASE, charType) && !StringUtils.equalsIgnoreCase(TO_LOWER_CASE, charType)) {\n                throw new RuntimeException(\"dx_digest paras index 2 must be toUpperCase or toLowerCase\");\n            }\n        } catch (Exception e) {\n            throw DataXException.asDataXException(TransformerErrorCode.TRANSFORMER_ILLEGAL_PARAMETER, \"paras:\" + Arrays.asList(paras) + \" => \" + e.getMessage());\n        }\n\n        Column column = record.getColumn(columnIndex);\n\n        try {\n            String oriValue = column.asString();\n\n            // 如果字段为空，作为空字符串处理\n            if (oriValue == null) {\n                oriValue = \"\";\n            }\n            String newValue;\n            if (MD5.equals(type)) {\n                newValue = DigestUtils.md5Hex(oriValue);\n            } else {","sourceCodeStart":33,"sourceCodeEnd":69,"githubUrl":"https://github.com/alibaba/DataX/blob/80ec23d5c5328eb90ca364d2749e92dfaf44541e/core/src/main/java/com/alibaba/datax/core/transport/transformer/DigestTransformer.java#L33-L69","documentation":"The dx_digest transformer's third parameter (index 2) must be 'toUpperCase' or 'toLowerCase' (case-insensitive); other values throw RuntimeException rewrapped as TRANSFORMER_ILLEGAL_PARAMETER. It controls the letter case of the resulting hex digest string.","triggerScenarios":"Passing e.g. \"upper\", \"none\", or omitting-but-padding with an arbitrary string as paras[2]: {\"name\":\"dx_digest\",\"parameter\":[0,\"md5\",\"none\"]}.","commonSituations":"Users assume 'none'/'raw' is valid to keep original case; abbreviation typos like \"upper\" instead of \"toUpperCase\".","solutions":["Use exactly \"toUpperCase\" or \"toLowerCase\".","Add a validation step in job-generation scripts that whitelists the third parameter."],"exampleFix":"// before\n{\"name\": \"dx_digest\", \"parameter\": [0, \"md5\", \"upper\"]}\n\n// after\n{\"name\": \"dx_digest\", \"parameter\": [0, \"md5\", \"toUpperCase\"]}","handlingStrategy":"validation","validationCode":"String c = (String) paras[2];\nif (!\"toUpperCase\".equalsIgnoreCase(c) && !\"toLowerCase\".equalsIgnoreCase(c)) {\n    throw new IllegalArgumentException(\"dx_digest case must be toUpperCase|toLowerCase, got: \" + c);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use the exact tokens toUpperCase/toLowerCase.","Trim parameter strings when building jobs programmatically."],"tags":["datax","transformer","dx-digest","config"],"backgroundTag":null,"analyzedSha":"80ec23d5c5328eb90ca364d2749e92dfaf44541e","analyzedAt":"2026-08-14T15:33:51.187Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}