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));
}
}