public Object executeFunctionExpr()

in seatunnel-transforms-v2/src/main/java/org/apache/seatunnel/transform/sql/zeta/ZetaSQLFunction.java [389:585]


    public Object executeFunctionExpr(String functionName, List<Object> args) {
        switch (functionName.toUpperCase()) {
            case ASCII:
                return StringFunction.ascii(args);
            case BIT_LENGTH:
                return StringFunction.bitLength(args);
            case CHAR_LENGTH:
            case LENGTH:
                return StringFunction.charLength(args);
            case OCTET_LENGTH:
                return StringFunction.octetLength(args);
            case CHAR:
            case CHR:
                return StringFunction.chr(args);
            case CONCAT:
                return StringFunction.concat(args);
            case CONCAT_WS:
                return StringFunction.concatWs(args);
            case HEXTORAW:
                return StringFunction.hextoraw(args);
            case RAWTOHEX:
                return StringFunction.rawtohex(args);
            case INSERT:
                return StringFunction.insert(args);
            case LOWER:
            case LCASE:
                return StringFunction.lower(args);
            case UPPER:
            case UCASE:
                return StringFunction.upper(args);
            case LEFT:
                return StringFunction.left(args);
            case RIGHT:
                return StringFunction.right(args);
            case LOCATE:
            case POSITION:
                return StringFunction.location(functionName, args);
            case INSTR:
                return StringFunction.instr(args);
            case LPAD:
            case RPAD:
                return StringFunction.pad(functionName, args);
            case LTRIM:
                return StringFunction.ltrim(args);
            case RTRIM:
                return StringFunction.rtrim(args);
            case TRIM:
                return StringFunction.trim(args);
            case REGEXP_REPLACE:
                return StringFunction.regexpReplace(args);
            case REGEXP_LIKE:
                return StringFunction.regexpLike(args);
            case REGEXP_SUBSTR:
                return StringFunction.regexpSubstr(args);
            case REPEAT:
                return StringFunction.repeat(args);
            case REPLACE:
                return StringFunction.replace(args);
            case SOUNDEX:
                return StringFunction.soundex(args);
            case SPACE:
                return StringFunction.space(args);
            case SUBSTRING:
            case SUBSTR:
                return StringFunction.substring(args);
            case TO_CHAR:
                return StringFunction.toChar(args);
            case TRANSLATE:
                return StringFunction.translate(args);
            case SPLIT:
                return StringFunction.split(args);
            case ABS:
                return NumericFunction.abs(args);
            case ACOS:
                return NumericFunction.acos(args);
            case ASIN:
                return NumericFunction.asin(args);
            case ATAN:
                return NumericFunction.atan(args);
            case COS:
                return NumericFunction.cos(args);
            case COSH:
                return NumericFunction.cosh(args);
            case COT:
                return NumericFunction.cot(args);
            case SIN:
                return NumericFunction.sin(args);
            case SINH:
                return NumericFunction.sinh(args);
            case TAN:
                return NumericFunction.tan(args);
            case TANH:
                return NumericFunction.tanh(args);
            case ATAN2:
                return NumericFunction.atan2(args);
            case MOD:
                return NumericFunction.mod(args);
            case CEIL:
            case CEILING:
                return NumericFunction.ceil(args);
            case EXP:
                return NumericFunction.exp(args);
            case FLOOR:
                return NumericFunction.floor(args);
            case LN:
                return NumericFunction.ln(args);
            case LOG:
                return NumericFunction.log(args);
            case LOG10:
                return NumericFunction.log10(args);
            case RADIANS:
                return NumericFunction.radians(args);
            case SQRT:
                return NumericFunction.sqrt(args);
            case PI:
                return NumericFunction.pi(args);
            case POWER:
                return NumericFunction.power(args);
            case RAND:
            case RANDOM:
                return NumericFunction.random(args);
            case ROUND:
                return NumericFunction.round(args);
            case SIGN:
                return NumericFunction.sign(args);
            case TRUNC:
            case TRUNCATE:
                return NumericFunction.trunc(args);
            case NOW:
                return DateTimeFunction.currentTimestamp();
            case DATEADD:
            case TIMESTAMPADD:
                return DateTimeFunction.dateadd(args);
            case DATEDIFF:
                return DateTimeFunction.datediff(args);
            case DATE_TRUNC:
                return DateTimeFunction.dateTrunc(args);
            case DAYNAME:
                return DateTimeFunction.dayname(args);
            case DAY_OF_MONTH:
                return DateTimeFunction.dayOfMonth(args);
            case DAY_OF_WEEK:
                return DateTimeFunction.dayOfWeek(args);
            case DAY_OF_YEAR:
                return DateTimeFunction.dayOfYear(args);
            case FROM_UNIXTIME:
                return DateTimeFunction.fromUnixTime(args);
            case EXTRACT:
                return DateTimeFunction.extract(args);
            case FORMATDATETIME:
                return DateTimeFunction.formatdatetime(args);
            case HOUR:
                return DateTimeFunction.hour(args);
            case MINUTE:
                return DateTimeFunction.minute(args);
            case MONTH:
                return DateTimeFunction.month(args);
            case MONTHNAME:
                return DateTimeFunction.monthname(args);
            case PARSEDATETIME:
            case TO_DATE:
                return DateTimeFunction.parsedatetime(args);
            case IS_DATE:
                return DateTimeFunction.isDate(args);
            case QUARTER:
                return DateTimeFunction.quarter(args);
            case SECOND:
                return DateTimeFunction.second(args);
            case WEEK:
                return DateTimeFunction.week(args);
            case YEAR:
                return DateTimeFunction.year(args);
            case COALESCE:
                return SystemFunction.coalesce(args);
            case IFNULL:
                return SystemFunction.ifnull(args);
            case NULLIF:
                return SystemFunction.nullif(args);
            case ARRAY:
                return ArrayFunction.array(args);
            case ARRAY_MAX:
                return ArrayFunction.arrayMax(args);
            case ARRAY_MIN:
                return ArrayFunction.arrayMin(args);
            case UUID:
                return randomUUID().toString();
            default:
                for (ZetaUDF udf : udfList) {
                    if (udf.functionName().equalsIgnoreCase(functionName)) {
                        return udf.evaluate(args);
                    }
                }
                throw new TransformException(
                        CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION,
                        String.format("Unsupported function: %s", functionName));
        }
    }