{"record":{"id":"1ea6d6774c4bcb26","repo":"alibaba/DataX","slug":"dx-pad-paras-must-be-4","errorCode":null,"errorMessage":"dx_pad paras must be 4","messagePattern":"dx_pad paras must be 4","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/com/alibaba/datax/core/transport/transformer/PadTransformer.java","lineNumber":30,"sourceCode":" * no comments.\n * Created by liqiang on 16/3/4.\n */\npublic class PadTransformer extends Transformer {\n    public PadTransformer() {\n        setTransformerName(\"dx_pad\");\n    }\n\n    @Override\n    public Record evaluate(Record record, Object... paras) {\n\n        int columnIndex;\n        String padType;\n        int length;\n        String padString;\n\n        try {\n            if (paras.length != 4) {\n                throw new RuntimeException(\"dx_pad paras must be 4\");\n            }\n\n            columnIndex = (Integer) paras[0];\n            padType = (String) paras[1];\n            length = Integer.valueOf((String) paras[2]);\n            padString = (String) paras[3];\n        } catch (Exception e) {\n            throw DataXException.asDataXException(TransformerErrorCode.TRANSFORMER_ILLEGAL_PARAMETER, \"paras:\" + Arrays.asList(paras).toString() + \" => \" + 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 = \"\";","sourceCodeStart":12,"sourceCodeEnd":48,"githubUrl":"https://github.com/alibaba/DataX/blob/80ec23d5c5328eb90ca364d2749e92dfaf44541e/core/src/main/java/com/alibaba/datax/core/transport/transformer/PadTransformer.java#L12-L48","documentation":"The dx_pad transformer requires exactly 4 parameters; any other count throws RuntimeException('dx_pad paras must be 4'), rewrapped as DataXException(TRANSFORMER_ILLEGAL_PARAMETER). Expected paras: columnIndex (Integer), padType ('l'|'r' style left/right), target length (string-parsed Integer), and pad string.","triggerScenarios":"Declaring {\"name\":\"dx_pad\",\"parameter\":[0,\"l\",\"5\"]} (3 params) or 5 params in the job transformer block; also fires when paras[2] is not a number, since the catch wraps NumberFormatException with the same code.","commonSituations":"Omitting the pad string (assuming space default); passing length as a JSON number instead of a string — Integer.valueOf((String) paras[2]) requires a string.","solutions":["Supply exactly 4 params: [columnIndex, padType, lengthAsString, padString], e.g. [0, \"l\", \"5\", \"0\"].","Ensure the length parameter is a quoted string in job JSON.","Validate transformer blocks with a JSON schema in your job-generation pipeline."],"exampleFix":"// before\n{\"name\": \"dx_pad\", \"parameter\": [0, \"l\", 5]}\n\n// after\n{\"name\": \"dx_pad\", \"parameter\": [0, \"l\", \"5\", \"0\"]}","handlingStrategy":"validation","validationCode":"Object[] p = {0, \"l\", \"5\", \"0\"};\nif (p.length != 4) throw new IllegalArgumentException(\"dx_pad needs 4 paras\");\nInteger.parseInt((String) p[2]); // also validates numeric length","typeGuard":null,"tryCatchPattern":"catch (DataXException e) when TRANSFORMER_ILLEGAL_PARAMETER: fail fast, print paras; not retryable.","preventionTips":["Quote the length parameter as a string in job JSON.","Always include an explicit pad string; there is no default."],"tags":["datax","transformer","dx-pad","config"],"backgroundTag":null,"analyzedSha":"80ec23d5c5328eb90ca364d2749e92dfaf44541e","analyzedAt":"2026-08-14T15:33:51.187Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}