@Override
    public Object parse(SourceData sourceData, int rowIndex, Context context) {
        Object firstNumObj = firstNumParser.parse(sourceData, rowIndex, context);
        Object secondNumObj = secondNumTypeParser.parse(sourceData, rowIndex, context);
        if (firstNumObj == null || secondNumObj == null) {
            return null;
        }
        try {
            BigDecimal firstNum = OperatorTools.parseBigDecimal(firstNumObj);
            BigDecimal secondNum = OperatorTools.parseBigDecimal(secondNumObj);
            return gcdForBigDecimals(firstNum, secondNum);
        } catch (Exception e) {
            log.error("Parse error", e);
            return null;
        }
    }
GcdFunction -> gcd(numeric_type,numeric_type)
description:
- Return NULL if any parameter is null
- Return 0 if both inputs are zero
- Return greatest common divisor (the largest positive number that divides both inputs with no remainder).
inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/function/arithmetic/GcdFunction.java