in ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java [284:805]
static {
system.registerGenericUDF("concat", GenericUDFConcat.class);
system.registerUDF("mid", UDFSubstr.class, false);
system.registerUDF("substr", UDFSubstr.class, false);
system.registerUDF("substring", UDFSubstr.class, false);
system.registerGenericUDF("substring_index", GenericUDFSubstringIndex.class);
system.registerUDF("space", UDFSpace.class, false);
system.registerUDF("repeat", UDFRepeat.class, false);
system.registerUDF("ascii", UDFAscii.class, false);
system.registerGenericUDF("lpad", GenericUDFLpad.class);
system.registerGenericUDF("rpad", GenericUDFRpad.class);
system.registerGenericUDF("levenshtein", GenericUDFLevenshtein.class);
system.registerGenericUDF("soundex", GenericUDFSoundex.class);
system.registerGenericUDF("size", GenericUDFSize.class);
system.registerGenericUDF("round", GenericUDFRound.class);
system.registerGenericUDF("bround", GenericUDFBRound.class);
system.registerGenericUDF("floor", GenericUDFFloor.class);
system.registerUDF("sqrt", UDFSqrt.class, false);
system.registerGenericUDF("cbrt", GenericUDFCbrt.class);
system.registerGenericUDF("ceil", GenericUDFCeil.class);
system.registerGenericUDF("ceiling", GenericUDFCeil.class);
system.registerUDF("rand", UDFRand.class, false);
system.registerGenericUDF("abs", GenericUDFAbs.class);
system.registerGenericUDF("json_read", GenericUDFJsonRead.class);
system.registerGenericUDF("sq_count_check", GenericUDFSQCountCheck.class);
system.registerGenericUDF("enforce_constraint", GenericUDFEnforceConstraint.class);
system.registerGenericUDF("pmod", GenericUDFPosMod.class);
system.registerUDF("ln", UDFLn.class, false);
system.registerUDF("log2", UDFLog2.class, false);
system.registerUDF("sin", UDFSin.class, false);
system.registerUDF("asin", UDFAsin.class, false);
system.registerUDF("sinh", UDFSinh.class, false);
system.registerUDF("cos", UDFCos.class, false);
system.registerUDF("acos", UDFAcos.class, false);
system.registerUDF("cosh", UDFCosh.class, false);
system.registerUDF("log10", UDFLog10.class, false);
system.registerUDF("log", UDFLog.class, false);
system.registerUDF("exp", UDFExp.class, false);
system.registerGenericUDF("power", GenericUDFPower.class);
system.registerGenericUDF("pow", GenericUDFPower.class);
system.registerUDF("sign", UDFSign.class, false);
system.registerUDF("pi", UDFPI.class, false);
system.registerUDF("degrees", UDFDegrees.class, false);
system.registerUDF("radians", UDFRadians.class, false);
system.registerUDF("atan", UDFAtan.class, false);
system.registerUDF("tan", UDFTan.class, false);
system.registerUDF("tanh", UDFTanh.class, false);
system.registerUDF("e", UDFE.class, false);
system.registerGenericUDF("factorial", GenericUDFFactorial.class);
system.registerUDF("crc32", UDFCrc32.class, false);
system.registerUDF("conv", UDFConv.class, false);
system.registerUDF("bin", UDFBin.class, false);
system.registerUDF("chr", UDFChr.class, false);
system.registerUDF("hex", UDFHex.class, false);
system.registerUDF("unhex", UDFUnhex.class, false);
system.registerUDF("base64", UDFBase64.class, false);
system.registerUDF("unbase64", UDFUnbase64.class, false);
system.registerGenericUDF("sha2", GenericUDFSha2.class);
system.registerUDF("md5", UDFMd5.class, false);
system.registerUDF("sha1", UDFSha1.class, false);
system.registerUDF("sha", UDFSha1.class, false);
system.registerGenericUDF("aes_encrypt", GenericUDFAesEncrypt.class);
system.registerGenericUDF("aes_decrypt", GenericUDFAesDecrypt.class);
system.registerUDF("uuid", UDFUUID.class, false);
system.registerGenericUDF("encode", GenericUDFEncode.class);
system.registerGenericUDF("decode", GenericUDFDecode.class);
system.registerGenericUDF("upper", GenericUDFUpper.class);
system.registerGenericUDF("lower", GenericUDFLower.class);
system.registerGenericUDF("ucase", GenericUDFUpper.class);
system.registerGenericUDF("lcase", GenericUDFLower.class);
system.registerGenericUDF("trim", GenericUDFTrim.class);
system.registerGenericUDF("ltrim", GenericUDFLTrim.class);
system.registerGenericUDF("rtrim", GenericUDFRTrim.class);
system.registerGenericUDF("length", GenericUDFLength.class);
system.registerGenericUDF("character_length", GenericUDFCharacterLength.class);
system.registerGenericUDF("char_length", GenericUDFCharacterLength.class);
system.registerGenericUDF("octet_length", GenericUDFOctetLength.class);
system.registerUDF("reverse", UDFReverse.class, false);
system.registerGenericUDF("field", GenericUDFField.class);
system.registerUDF("find_in_set", UDFFindInSet.class, false);
system.registerGenericUDF("initcap", GenericUDFInitCap.class);
system.registerUDF("like", UDFLike.class, true);
system.registerGenericUDF("likeany", GenericUDFLikeAny.class);
system.registerGenericUDF("likeall", GenericUDFLikeAll.class);
system.registerGenericUDF("rlike", GenericUDFRegExp.class);
system.registerGenericUDF("regexp", GenericUDFRegExp.class);
system.registerUDF("regexp_replace", UDFRegExpReplace.class, false);
system.registerUDF("replace", UDFReplace.class, false);
system.registerUDF("regexp_extract", UDFRegExpExtract.class, false);
system.registerUDF("parse_url", UDFParseUrl.class, false);
system.registerGenericUDF("quote", GenericUDFQuote.class);
system.registerGenericUDF("nvl", GenericUDFCoalesce.class); //HIVE-20961
system.registerGenericUDF("split", GenericUDFSplit.class);
system.registerGenericUDF("split_map_privs", GenericUDFStringToPrivilege.class);
system.registerGenericUDF("str_to_map", GenericUDFStringToMap.class);
system.registerGenericUDF("translate", GenericUDFTranslate.class);
system.registerGenericUDF("validate_acid_sort_order", GenericUDFValidateAcidSortOrder.class);
system.registerGenericUDF(UNARY_PLUS_FUNC_NAME, GenericUDFOPPositive.class);
system.registerGenericUDF(UNARY_MINUS_FUNC_NAME, GenericUDFOPNegative.class);
system.registerGenericUDF("day", UDFDayOfMonth.class);
system.registerGenericUDF("dayofmonth", UDFDayOfMonth.class);
system.registerUDF("dayofweek", UDFDayOfWeek.class, false);
system.registerGenericUDF("month", UDFMonth.class);
system.registerGenericUDF("quarter", GenericUDFQuarter.class);
system.registerGenericUDF("year", UDFYear.class);
system.registerGenericUDF("hour", UDFHour.class);
system.registerGenericUDF("minute", UDFMinute.class);
system.registerGenericUDF("second", UDFSecond.class);
system.registerGenericUDF("from_unixtime", GenericUDFFromUnixTime.class);
system.registerGenericUDF("to_date", GenericUDFDate.class);
system.registerUDF("weekofyear", UDFWeekOfYear.class, false);
system.registerGenericUDF("last_day", GenericUDFLastDay.class);
system.registerGenericUDF("next_day", GenericUDFNextDay.class);
system.registerGenericUDF("trunc", GenericUDFTrunc.class);
system.registerGenericUDF("date_format", GenericUDFDateFormat.class);
// Special date formatting functions
system.registerUDF("floor_year", UDFDateFloorYear.class, false);
system.registerUDF("floor_quarter", UDFDateFloorQuarter.class, false);
system.registerUDF("floor_month", UDFDateFloorMonth.class, false);
system.registerUDF("floor_day", UDFDateFloorDay.class, false);
system.registerUDF("floor_week", UDFDateFloorWeek.class, false);
system.registerUDF("floor_hour", UDFDateFloorHour.class, false);
system.registerUDF("floor_minute", UDFDateFloorMinute.class, false);
system.registerUDF("floor_second", UDFDateFloorSecond.class, false);
system.registerGenericUDF("date_add", GenericUDFDateAdd.class);
system.registerGenericUDF("date_sub", GenericUDFDateSub.class);
system.registerGenericUDF("datediff", GenericUDFDateDiff.class);
system.registerGenericUDF("add_months", GenericUDFAddMonths.class);
system.registerGenericUDF("months_between", GenericUDFMonthsBetween.class);
system.registerUDF("get_json_object", UDFJson.class, false);
system.registerUDF("xpath_string", UDFXPathString.class, false);
system.registerUDF("xpath_boolean", UDFXPathBoolean.class, false);
system.registerUDF("xpath_number", UDFXPathDouble.class, false);
system.registerUDF("xpath_double", UDFXPathDouble.class, false);
system.registerUDF("xpath_float", UDFXPathFloat.class, false);
system.registerUDF("xpath_long", UDFXPathLong.class, false);
system.registerUDF("xpath_int", UDFXPathInteger.class, false);
system.registerUDF("xpath_short", UDFXPathShort.class, false);
system.registerGenericUDF("xpath", GenericUDFXPath.class);
system.registerGenericUDF("+", GenericUDFOPPlus.class);
system.registerGenericUDF("-", GenericUDFOPMinus.class);
system.registerGenericUDF("*", GenericUDFOPMultiply.class);
system.registerGenericUDF("/", GenericUDFOPDivide.class);
system.registerGenericUDF("%", GenericUDFOPMod.class);
system.registerGenericUDF("mod", GenericUDFOPMod.class);
system.registerUDF("div", UDFOPLongDivide.class, true);
system.registerUDF("&", UDFOPBitAnd.class, true);
system.registerUDF("|", UDFOPBitOr.class, true);
system.registerUDF("^", UDFOPBitXor.class, true);
system.registerUDF("~", UDFOPBitNot.class, true);
system.registerUDF("shiftleft", UDFOPBitShiftLeft.class, true);
system.registerUDF("shiftright", UDFOPBitShiftRight.class, true);
system.registerUDF("shiftrightunsigned", UDFOPBitShiftRightUnsigned.class, true);
system.registerGenericUDF("grouping", GenericUDFGrouping.class);
system.registerGenericUDF("current_database", GenericUDFCurrentDatabase.class);
system.registerGenericUDF("current_schema", GenericUDFCurrentSchema.class);
system.registerGenericUDF("current_catalog", GenericUDFCurrentCatalog.class);
system.registerGenericUDF("current_date", GenericUDFCurrentDate.class);
system.registerGenericUDF("current_timestamp", GenericUDFCurrentTimestamp.class);
system.registerGenericUDF("current_user", GenericUDFCurrentUser.class);
system.registerGenericUDF("current_groups", GenericUDFCurrentGroups.class);
system.registerGenericUDF("logged_in_user", GenericUDFLoggedInUser.class);
system.registerGenericUDF("restrict_information_schema", GenericUDFRestrictInformationSchema.class);
system.registerGenericUDF("current_authorizer", GenericUDFCurrentAuthorizer.class);
system.registerGenericUDF("surrogate_key", GenericUDFSurrogateKey.class);
system.registerGenericUDF("isnull", GenericUDFOPNull.class);
system.registerGenericUDF("isnotnull", GenericUDFOPNotNull.class);
system.registerGenericUDF("istrue", GenericUDFOPTrue.class);
system.registerGenericUDF("isnottrue", GenericUDFOPNotTrue.class);
system.registerGenericUDF("isfalse", GenericUDFOPFalse.class);
system.registerGenericUDF("isnotfalse", GenericUDFOPNotFalse.class);
system.registerGenericUDF("if", GenericUDFIf.class);
system.registerGenericUDF("in", GenericUDFIn.class);
system.registerGenericUDF("and", GenericUDFOPAnd.class);
system.registerGenericUDF("or", GenericUDFOPOr.class);
system.registerGenericUDF("=", GenericUDFOPEqual.class);
system.registerGenericUDF("==", GenericUDFOPEqual.class);
system.registerGenericUDF("<=>", GenericUDFOPEqualNS.class);
system.registerGenericUDF("is_not_distinct_from", GenericUDFOPEqualNS.class);
system.registerGenericUDF("!=", GenericUDFOPNotEqual.class);
system.registerGenericUDF("<>", GenericUDFOPNotEqual.class);
system.registerGenericUDF("<", GenericUDFOPLessThan.class);
system.registerGenericUDF("<=", GenericUDFOPEqualOrLessThan.class);
system.registerGenericUDF(">", GenericUDFOPGreaterThan.class);
system.registerGenericUDF(">=", GenericUDFOPEqualOrGreaterThan.class);
system.registerGenericUDF("not", GenericUDFOPNot.class);
system.registerGenericUDF("!", GenericUDFOPNot.class);
system.registerGenericUDF("between", GenericUDFBetween.class);
system.registerGenericUDF("in_bloom_filter", GenericUDFInBloomFilter.class);
system.registerGenericUDF("toMap", GenericUDFToMap.class);
system.registerGenericUDF("toArray", GenericUDFToArray.class);
system.registerGenericUDF("toStruct", GenericUDFToStruct.class);
// Utility UDFs
system.registerUDF("version", UDFVersion.class, false);
system.registerUDF("buildversion", UDFBuildVersion.class, false);
// Aliases for Java Class Names
// These are used in getImplicitConvertUDFMethod
system.registerUDF(serdeConstants.BOOLEAN_TYPE_NAME, UDFToBoolean.class, false, UDFToBoolean.class.getSimpleName());
system.registerUDF(serdeConstants.TINYINT_TYPE_NAME, UDFToByte.class, false, UDFToByte.class.getSimpleName());
system.registerUDF(serdeConstants.SMALLINT_TYPE_NAME, UDFToShort.class, false, UDFToShort.class.getSimpleName());
system.registerUDF(serdeConstants.INT_TYPE_NAME, UDFToInteger.class, false, UDFToInteger.class.getSimpleName());
system.registerUDF(serdeConstants.BIGINT_TYPE_NAME, UDFToLong.class, false, UDFToLong.class.getSimpleName());
system.registerUDF(serdeConstants.FLOAT_TYPE_NAME, UDFToFloat.class, false, UDFToFloat.class.getSimpleName());
system.registerUDF(serdeConstants.DOUBLE_TYPE_NAME, UDFToDouble.class, false, UDFToDouble.class.getSimpleName());
// following mapping is to enable UDFName to UDF while generating expression for default value (in operator tree)
// e.g. cast(4 as string) is serialized as UDFToString(4) into metastore, to allow us to generate appropriate UDF for
// UDFToString we need the following mappings
// Rest of the types e.g. DATE, CHAR, VARCHAR etc are already registered
// TODO: According to vgarg, these function mappings are no longer necessary as the default value logic has changed.
system.registerUDF(UDFToBoolean.class.getSimpleName(), UDFToBoolean.class, false, UDFToBoolean.class.getSimpleName());
system.registerUDF(UDFToDouble.class.getSimpleName(), UDFToDouble.class, false, UDFToDouble.class.getSimpleName());
system.registerUDF(UDFToFloat.class.getSimpleName(), UDFToFloat.class, false, UDFToFloat.class.getSimpleName());
system.registerUDF(UDFToInteger.class.getSimpleName(), UDFToInteger.class, false, UDFToInteger.class.getSimpleName());
system.registerUDF(UDFToLong.class.getSimpleName(), UDFToLong.class, false, UDFToLong.class.getSimpleName());
system.registerUDF(UDFToShort.class.getSimpleName(), UDFToShort.class, false, UDFToShort.class.getSimpleName());
system.registerUDF(UDFToByte.class.getSimpleName(), UDFToByte.class, false, UDFToByte.class.getSimpleName());
system.registerGenericUDF(serdeConstants.STRING_TYPE_NAME, GenericUDFToString.class);
system.registerGenericUDF(serdeConstants.DATE_TYPE_NAME, GenericUDFToDate.class);
system.registerGenericUDF(serdeConstants.TIMESTAMP_TYPE_NAME, GenericUDFTimestamp.class);
system.registerGenericUDF(serdeConstants.TIMESTAMPLOCALTZ_TYPE_NAME, GenericUDFToTimestampLocalTZ.class);
system.registerGenericUDF(serdeConstants.INTERVAL_YEAR_MONTH_TYPE_NAME, GenericUDFToIntervalYearMonth.class);
system.registerGenericUDF(serdeConstants.INTERVAL_DAY_TIME_TYPE_NAME, GenericUDFToIntervalDayTime.class);
system.registerGenericUDF(serdeConstants.BINARY_TYPE_NAME, GenericUDFToBinary.class);
system.registerGenericUDF(serdeConstants.DECIMAL_TYPE_NAME, GenericUDFToDecimal.class);
system.registerGenericUDF(serdeConstants.VARCHAR_TYPE_NAME, GenericUDFToVarchar.class);
system.registerGenericUDF(serdeConstants.CHAR_TYPE_NAME, GenericUDFToChar.class);
// Aggregate functions
system.registerGenericUDAF("max", new GenericUDAFMax());
system.registerGenericUDAF("min", new GenericUDAFMin());
system.registerGenericUDAF("sum", new GenericUDAFSum());
system.registerGenericUDAF("$SUM0", new GenericUDAFSumEmptyIsZero());
system.registerGenericUDAF("count", new GenericUDAFCount());
system.registerGenericUDAF("avg", new GenericUDAFAverage());
system.registerGenericUDAF("std", new GenericUDAFStd());
system.registerGenericUDAF("stddev", new GenericUDAFStd());
system.registerGenericUDAF("stddev_pop", new GenericUDAFStd());
system.registerGenericUDAF("stddev_samp", new GenericUDAFStdSample());
system.registerGenericUDAF("variance", new GenericUDAFVariance());
system.registerGenericUDAF("var_pop", new GenericUDAFVariance());
system.registerGenericUDAF("var_samp", new GenericUDAFVarianceSample());
system.registerGenericUDAF("covar_pop", new GenericUDAFCovariance());
system.registerGenericUDAF("covar_samp", new GenericUDAFCovarianceSample());
system.registerGenericUDAF("corr", new GenericUDAFCorrelation());
system.registerGenericUDAF("regr_slope", new GenericUDAFBinarySetFunctions.RegrSlope());
system.registerGenericUDAF("regr_intercept", new GenericUDAFBinarySetFunctions.RegrIntercept());
system.registerGenericUDAF("regr_r2", new GenericUDAFBinarySetFunctions.RegrR2());
system.registerGenericUDAF("regr_sxx", new GenericUDAFBinarySetFunctions.RegrSXX());
system.registerGenericUDAF("regr_syy", new GenericUDAFBinarySetFunctions.RegrSYY());
system.registerGenericUDAF("regr_sxy", new GenericUDAFBinarySetFunctions.RegrSXY());
system.registerGenericUDAF("regr_avgx", new GenericUDAFBinarySetFunctions.RegrAvgX());
system.registerGenericUDAF("regr_avgy", new GenericUDAFBinarySetFunctions.RegrAvgY());
system.registerGenericUDAF("regr_count", new GenericUDAFBinarySetFunctions.RegrCount());
system.registerGenericUDAF("histogram_numeric", new GenericUDAFHistogramNumeric());
system.registerGenericUDAF("percentile_approx", new GenericUDAFPercentileApprox());
system.registerGenericUDAF("collect_set", new GenericUDAFCollectSet());
system.registerGenericUDAF("collect_list", new GenericUDAFCollectList());
system.registerGenericUDAF("ngrams", new GenericUDAFnGrams());
system.registerGenericUDAF("context_ngrams", new GenericUDAFContextNGrams());
system.registerGenericUDF("ndv_compute_bit_vector", GenericUDFNDVComputeBitVector.class);
system.registerGenericUDAF("compute_bit_vector_hll", new GenericUDAFComputeBitVectorHLL());
system.registerGenericUDAF("compute_bit_vector_fm", new GenericUDAFComputeBitVectorFMSketch());
system.registerGenericUDAF(BLOOM_FILTER_FUNCTION, new GenericUDAFBloomFilter());
system.registerGenericUDAF("approx_distinct", new GenericUDAFApproximateDistinct());
system.registerUDAF("percentile", UDAFPercentile.class);
system.registerGenericUDAF("percentile_cont", new GenericUDAFPercentileCont());
system.registerGenericUDAF("percentile_disc", new GenericUDAFPercentileDisc());
system.registerGenericUDAF("exception_in_vertex_udaf", new GenericUDAFExceptionInVertex());
system.registerUDFPlugin(DataSketchesFunctions.INSTANCE);
// Generic UDFs
system.registerGenericUDF("reflect", GenericUDFReflect.class);
system.registerGenericUDF("reflect2", GenericUDFReflect2.class);
system.registerGenericUDF("java_method", GenericUDFReflect.class);
system.registerGenericUDF("exception_in_vertex_udf", GenericUDFExceptionInVertex.class);
system.registerGenericUDF(ARRAY_FUNC_NAME, GenericUDFArray.class);
system.registerGenericUDF("assert_true", GenericUDFAssertTrue.class);
system.registerGenericUDF("assert_true_oom", GenericUDFAssertTrueOOM.class);
system.registerGenericUDF("map", GenericUDFMap.class);
system.registerGenericUDF("struct", GenericUDFStruct.class);
system.registerGenericUDF("named_struct", GenericUDFNamedStruct.class);
system.registerGenericUDF("create_union", GenericUDFUnion.class);
system.registerGenericUDF("extract_union", GenericUDFExtractUnion.class);
system.registerGenericUDF("when", GenericUDFWhen.class);
system.registerGenericUDF("nullif", GenericUDFNullif.class);
system.registerGenericUDF("hash", GenericUDFHash.class);
system.registerGenericUDF("murmur_hash", GenericUDFMurmurHash.class);
system.registerGenericUDF("coalesce", GenericUDFCoalesce.class);
system.registerGenericUDF("index", GenericUDFIndex.class);
system.registerGenericUDF("in_file", GenericUDFInFile.class);
system.registerGenericUDF("instr", GenericUDFInstr.class);
system.registerGenericUDF("locate", GenericUDFLocate.class);
system.registerGenericUDF("position", GenericUDFLocate.class);
system.registerGenericUDF("elt", GenericUDFElt.class);
system.registerGenericUDF("concat_ws", GenericUDFConcatWS.class);
system.registerGenericUDF("sort_array", GenericUDFSortArray.class);
system.registerGenericUDF("sort_array_by", GenericUDFSortArrayByField.class);
system.registerGenericUDF("array_contains", GenericUDFArrayContains.class);
system.registerGenericUDF("array_min", GenericUDFArrayMin.class);
system.registerGenericUDF("array_max", GenericUDFArrayMax.class);
system.registerGenericUDF("array_distinct", GenericUDFArrayDistinct.class);
system.registerGenericUDF("array_join", GenericUDFArrayJoin.class);
system.registerGenericUDF("array_slice", GenericUDFArraySlice.class);
system.registerGenericUDF("array_except", GenericUDFArrayExcept.class);
system.registerGenericUDF("array_intersect", GenericUDFArrayIntersect.class);
system.registerGenericUDF("array_union", GenericUDFArrayUnion.class);
system.registerGenericUDF("array_remove", GenericUDFArrayRemove.class);
system.registerGenericUDF("array_position", GenericUDFArrayPosition.class);
system.registerGenericUDF("array_append", GenericUDFArrayAppend.class);
system.registerGenericUDF("array_compact", GenericUDFArrayCompact.class);
system.registerGenericUDF("deserialize", GenericUDFDeserialize.class);
system.registerGenericUDF("sentences", GenericUDFSentences.class);
system.registerGenericUDF("map_keys", GenericUDFMapKeys.class);
system.registerGenericUDF("map_values", GenericUDFMapValues.class);
system.registerGenericUDF("format_number", GenericUDFFormatNumber.class);
system.registerGenericUDF("printf", GenericUDFPrintf.class);
system.registerGenericUDF("greatest", GenericUDFGreatest.class);
system.registerGenericUDF("least", GenericUDFLeast.class);
system.registerGenericUDF("cardinality_violation", GenericUDFCardinalityViolation.class);
system.registerGenericUDF("width_bucket", GenericUDFWidthBucket.class);
system.registerGenericUDF("typeof", GenericUDFTypeOf.class);
system.registerGenericUDF("from_utc_timestamp", GenericUDFFromUtcTimestamp.class);
system.registerGenericUDF("to_utc_timestamp", GenericUDFToUtcTimestamp.class);
system.registerGenericUDF("unix_timestamp", GenericUDFUnixTimeStamp.class);
system.registerGenericUDF("to_unix_timestamp", GenericUDFToUnixTimeStamp.class);
system.registerGenericUDF("datetime_legacy_hybrid_calendar", GenericUDFDatetimeLegacyHybridCalendar.class);
system.registerGenericUDF("internal_interval", GenericUDFInternalInterval.class);
system.registerGenericUDF("to_epoch_milli", GenericUDFEpochMilli.class);
system.registerGenericUDF("bucket_number", GenericUDFBucketNumber.class);
system.registerGenericUDF("tumbling_window", GenericUDFTumbledWindow.class);
system.registerGenericUDF("cast_format", GenericUDFCastFormat.class);
// Generic UDTF's
system.registerGenericUDTF("explode", GenericUDTFExplode.class);
system.registerGenericUDTF("replicate_rows", GenericUDTFReplicateRows.class);
system.registerGenericUDTF(INLINE_FUNC_NAME, GenericUDTFInline.class);
system.registerGenericUDTF("json_tuple", GenericUDTFJSONTuple.class);
system.registerGenericUDTF("parse_url_tuple", GenericUDTFParseUrlTuple.class);
system.registerGenericUDTF("posexplode", GenericUDTFPosExplode.class);
system.registerGenericUDTF("stack", GenericUDTFStack.class);
system.registerGenericUDTF("get_splits", GenericUDTFGetSplits.class);
system.registerGenericUDTF("get_llap_splits", GenericUDTFGetSplits2.class);
system.registerGenericUDTF("get_sql_schema", GenericUDTFGetSQLSchema.class);
//PTF declarations
system.registerGenericUDF(LEAD_FUNC_NAME, GenericUDFLead.class);
system.registerGenericUDF(LAG_FUNC_NAME, GenericUDFLag.class);
system.registerGenericUDAF("row_number", new GenericUDAFRowNumber());
system.registerGenericUDAF("rank", new GenericUDAFRank());
system.registerGenericUDAF("dense_rank", new GenericUDAFDenseRank());
system.registerGenericUDAF("percent_rank", new GenericUDAFPercentRank());
system.registerGenericUDAF("cume_dist", new GenericUDAFCumeDist());
system.registerGenericUDAF("ntile", new GenericUDAFNTile());
system.registerGenericUDAF("first_value", new GenericUDAFFirstValue());
system.registerGenericUDAF("last_value", new GenericUDAFLastValue());
system.registerWindowFunction(LEAD_FUNC_NAME, new GenericUDAFLead());
system.registerWindowFunction(LAG_FUNC_NAME, new GenericUDAFLag());
system.registerTableFunction(NOOP_TABLE_FUNCTION, NoopResolver.class);
system.registerTableFunction(NOOP_MAP_TABLE_FUNCTION, NoopWithMapResolver.class);
system.registerTableFunction(NOOP_STREAMING_TABLE_FUNCTION, NoopStreamingResolver.class);
system.registerTableFunction(NOOP_STREAMING_MAP_TABLE_FUNCTION, NoopWithMapStreamingResolver.class);
system.registerTableFunction(WINDOWING_TABLE_FUNCTION, WindowingTableFunctionResolver.class);
system.registerTableFunction(MATCH_PATH_TABLE_FUNCTION, MatchPathResolver.class);
// Arithmetic specializations are done in a convoluted manner; mark them as built-in.
system.registerHiddenBuiltIn(GenericUDFOPDTIMinus.class);
system.registerHiddenBuiltIn(GenericUDFOPDTIPlus.class);
system.registerHiddenBuiltIn(GenericUDFOPNumericMinus.class);
system.registerHiddenBuiltIn(GenericUDFOPNumericPlus.class);
// No operator for nullsafe not equal, but add as built-in to allow for LLAP.
system.registerHiddenBuiltIn(GenericUDFOPNotEqualNS.class);
// mask UDFs
system.registerGenericUDF(GenericUDFMask.UDF_NAME, GenericUDFMask.class);
system.registerGenericUDF(GenericUDFMaskFirstN.UDF_NAME, GenericUDFMaskFirstN.class);
system.registerGenericUDF(GenericUDFMaskLastN.UDF_NAME, GenericUDFMaskLastN.class);
system.registerGenericUDF(GenericUDFMaskShowFirstN.UDF_NAME, GenericUDFMaskShowFirstN.class);
system.registerGenericUDF(GenericUDFMaskShowLastN.UDF_NAME, GenericUDFMaskShowLastN.class);
system.registerGenericUDF(GenericUDFMaskHash.UDF_NAME, GenericUDFMaskHash.class);
// GeoSpatial UDFs
system.registerFunction("ST_Length", ST_Length.class);
system.registerFunction("ST_LineString", ST_LineString.class);
system.registerFunction("ST_Point", ST_Point.class);
system.registerFunction("ST_AsText", ST_AsText.class);
system.registerFunction("ST_Aggr_ConvexHull", ST_Aggr_ConvexHull.class);
system.registerFunction("ST_Aggr_Union", ST_Aggr_Union.class);
system.registerFunction("ST_Area", ST_Area.class);
system.registerFunction("ST_AsBinary", ST_AsBinary.class);
system.registerFunction("ST_AsGeoJson", ST_AsGeoJson.class);
system.registerFunction("ST_AsJson", ST_AsJson.class);
system.registerFunction("ST_AsShape", ST_AsShape.class);
system.registerFunction("ST_Bin", ST_Bin.class);
system.registerFunction("ST_BinEnvelope", ST_BinEnvelope.class);
system.registerFunction("ST_Boundary", ST_Boundary.class);
system.registerFunction("ST_Buffer", ST_Buffer.class);
system.registerFunction("ST_Centroid", ST_Centroid.class);
system.registerFunction("ST_Contains", ST_Contains.class);
system.registerFunction("ST_ConvexHull", ST_ConvexHull.class);
system.registerFunction("ST_CoordDim", ST_CoordDim.class);
system.registerFunction("ST_Crosses", ST_Crosses.class);
system.registerFunction("ST_Difference", ST_Difference.class);
system.registerFunction("ST_Dimension", ST_Dimension.class);
system.registerFunction("ST_Disjoint", ST_Disjoint.class);
system.registerFunction("ST_Distance", ST_Distance.class);
system.registerFunction("ST_EndPoint", ST_EndPoint.class);
system.registerFunction("ST_Envelope", ST_Envelope.class);
system.registerFunction("ST_EnvIntersects", ST_EnvIntersects.class);
system.registerFunction("ST_Equals", ST_Equals.class);
system.registerFunction("ST_ExteriorRing", ST_ExteriorRing.class);
system.registerFunction("ST_GeodesicLengthWGS84", ST_GeodesicLengthWGS84.class);
system.registerFunction("ST_GeomCollection", ST_GeomCollection.class);
system.registerFunction("ST_GeometryN", ST_GeometryN.class);
system.registerFunction("ST_GeomFromGeoJson", ST_GeomFromGeoJson.class);
system.registerFunction("ST_GeomFromJson", ST_GeomFromJson.class);
system.registerFunction("ST_GeomFromShape", ST_GeomFromShape.class);
system.registerFunction("ST_GeomFromText", ST_GeomFromText.class);
system.registerFunction("ST_GeomFromWKB", ST_GeomFromWKB.class);
system.registerFunction("ST_GeometryType", ST_GeometryType.class);
system.registerFunction("ST_InteriorRingN", ST_InteriorRingN.class);
system.registerFunction("ST_Intersection", ST_Intersection.class);
system.registerFunction("ST_Intersects", ST_Intersects.class);
system.registerFunction("ST_Is3D", ST_Is3D.class);
system.registerFunction("ST_IsClosed", ST_IsClosed.class);
system.registerFunction("ST_IsEmpty", ST_IsEmpty.class);
system.registerFunction("ST_IsMeasured", ST_IsMeasured.class);
system.registerFunction("ST_IsRing", ST_IsRing.class);
system.registerFunction("ST_IsSimple", ST_IsSimple.class);
system.registerFunction("ST_LineFromWKB", ST_LineFromWKB.class);
system.registerFunction("ST_M", ST_M.class);
system.registerFunction("ST_MaxM", ST_MaxM.class);
system.registerFunction("ST_MaxX", ST_MaxX.class);
system.registerFunction("ST_MaxY", ST_MaxY.class);
system.registerFunction("ST_MaxZ", ST_MaxZ.class);
system.registerFunction("ST_MinM", ST_MinM.class);
system.registerFunction("ST_MinX", ST_MinX.class);
system.registerFunction("ST_MinY", ST_MinY.class);
system.registerFunction("ST_MinZ", ST_MinZ.class);
system.registerFunction("ST_MLineFromWKB", ST_MLineFromWKB.class);
system.registerFunction("ST_MPointFromWKB", ST_MPointFromWKB.class);
system.registerFunction("ST_MPolyFromWKB", ST_MPolyFromWKB.class);
system.registerFunction("ST_MultiLineString", ST_MultiLineString.class);
system.registerFunction("ST_MultiPoint", ST_MultiPoint.class);
system.registerFunction("ST_MultiPolygon", ST_MultiPolygon.class);
system.registerFunction("ST_NumGeometries", ST_NumGeometries.class);
system.registerFunction("ST_NumInteriorRing", ST_NumInteriorRing.class);
system.registerFunction("ST_NumPoints", ST_NumPoints.class);
system.registerFunction("ST_Overlaps", ST_Overlaps.class);
system.registerFunction("ST_PointFromWKB", ST_PointFromWKB.class);
system.registerFunction("ST_PointN", ST_PointN.class);
system.registerFunction("ST_PointZ", ST_PointZ.class);
system.registerFunction("ST_PolyFromWKB", ST_PolyFromWKB.class);
system.registerFunction("ST_Polygon", ST_Polygon.class);
system.registerFunction("ST_Relate", ST_Relate.class);
system.registerFunction("ST_SetSRID", ST_SetSRID.class);
system.registerFunction("ST_SRID", ST_SRID.class);
system.registerFunction("ST_StartPoint", ST_StartPoint.class);
system.registerFunction("ST_SymmetricDiff", ST_SymmetricDiff.class);
system.registerFunction("ST_Touches", ST_Touches.class);
system.registerFunction("ST_Union", ST_Union.class);
system.registerFunction("ST_Within", ST_Within.class);
system.registerFunction("ST_X", ST_X.class);
system.registerFunction("ST_Y", ST_Y.class);
system.registerFunction("ST_Z", ST_Z.class);
try {
system.registerGenericUDF("iceberg_bucket",
(Class<? extends GenericUDF>) Class.forName("org.apache.iceberg.mr.hive.udf.GenericUDFIcebergBucket"));
system.registerGenericUDF("iceberg_truncate",
(Class<? extends GenericUDF>) Class.forName("org.apache.iceberg.mr.hive.udf.GenericUDFIcebergTruncate"));
system.registerGenericUDF("iceberg_year",
(Class<? extends GenericUDF>) Class.forName("org.apache.iceberg.mr.hive.udf.GenericUDFIcebergYear"));
system.registerGenericUDF("iceberg_month",
(Class<? extends GenericUDF>) Class.forName("org.apache.iceberg.mr.hive.udf.GenericUDFIcebergMonth"));
system.registerGenericUDF("iceberg_day",
(Class<? extends GenericUDF>) Class.forName("org.apache.iceberg.mr.hive.udf.GenericUDFIcebergDay"));
system.registerGenericUDF("iceberg_hour",
(Class<? extends GenericUDF>) Class.forName("org.apache.iceberg.mr.hive.udf.GenericUDFIcebergHour"));
} catch (ClassNotFoundException e) {
LOG.warn("iceberg_bucket function could not be registered");
}
}