All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.flink.table.codegen.calls.BuiltInMethods.scala Maven / Gradle / Ivy

The newest version!
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.flink.table.codegen.calls

import java.lang.reflect.Method
import java.lang.{Byte => JByte, Integer => JInteger, Long => JLong, Short => JShort}
import java.util.{TimeZone, Date => JDate}
import java.sql.Time

import org.apache.calcite.avatica.util.TimeUnitRange
import org.apache.calcite.linq4j.tree.Types
import org.apache.calcite.runtime.SqlFunctions
import org.apache.flink.table.dataformat.Decimal
import org.apache.flink.table.runtime.functions.{BuildInScalarFunctions, DateTimeFunctions, ScalarFunctions}

object BuiltInMethods {

  val LOG = Types.lookupMethod(classOf[ScalarFunctions], "log", classOf[Double])

  val LOG_DEC = Types.lookupMethod(classOf[ScalarFunctions], "log", classOf[Decimal])

  val LOG_WITH_BASE =
    Types.lookupMethod(classOf[ScalarFunctions], "log", classOf[Double], classOf[Double])

  val LOG_WITH_BASE_DOU_DEC =
    Types.lookupMethod(classOf[ScalarFunctions], "log", classOf[Double], classOf[Decimal])

  val LOG_WITH_BASE_DEC_DOU =
    Types.lookupMethod(classOf[ScalarFunctions], "log", classOf[Decimal], classOf[Double])

  val LOG_WITH_BASE_DEC =
    Types.lookupMethod(classOf[ScalarFunctions], "log", classOf[Decimal], classOf[Decimal])

  val LOG10 = Types.lookupMethod(classOf[ScalarFunctions], "log10", classOf[Double])

  val LOG10_DEC = Types.lookupMethod(classOf[ScalarFunctions], "log10", classOf[Decimal])

  val EXP = Types.lookupMethod(classOf[Math], "exp", classOf[Double])

  val EXP_DEC = Types.lookupMethod(classOf[ScalarFunctions], "exp", classOf[Decimal])

  val POWER_NUM_NUM = Types.lookupMethod(classOf[Math], "pow", classOf[Double], classOf[Double])
  val POWER_NUM_DEC = Types.lookupMethod(
    classOf[ScalarFunctions], "power", classOf[Double], classOf[Decimal])
  val POWER_DEC_DEC = Types.lookupMethod(
    classOf[ScalarFunctions], "power", classOf[Decimal], classOf[Decimal])
  val POWER_DEC_NUM = Types.lookupMethod(
    classOf[ScalarFunctions], "power", classOf[Decimal], classOf[Double])

  val LN = Types.lookupMethod(classOf[ScalarFunctions], "log", classOf[Double])

  val LN_DEC = Types.lookupMethod(classOf[ScalarFunctions], "log", classOf[Decimal])

  val ABS = Types.lookupMethod(classOf[SqlFunctions], "abs", classOf[Double])
  val ABS_DEC = Types.lookupMethod(classOf[ScalarFunctions], "abs", classOf[Decimal])

  val FLOOR_DEC = Types.lookupMethod(classOf[ScalarFunctions], "floor", classOf[Decimal])
  val CEIL_DEC = Types.lookupMethod(classOf[ScalarFunctions], "ceil", classOf[Decimal])

  val LIKE_WITH_ESCAPE = Types.lookupMethod(classOf[SqlFunctions], "like",
    classOf[String], classOf[String], classOf[String])

  val SIMILAR_WITH_ESCAPE = Types.lookupMethod(classOf[SqlFunctions], "similar",
    classOf[String], classOf[String], classOf[String])

  val SIN = Types.lookupMethod(classOf[Math], "sin", classOf[Double])
  val SIN_DEC = Types.lookupMethod(classOf[ScalarFunctions], "sin", classOf[Decimal])

  val COS = Types.lookupMethod(classOf[Math], "cos", classOf[Double])
  val COS_DEC = Types.lookupMethod(classOf[ScalarFunctions], "cos", classOf[Decimal])

  val TAN = Types.lookupMethod(classOf[Math], "tan", classOf[Double])
  val TAN_DEC = Types.lookupMethod(classOf[ScalarFunctions], "tan", classOf[Decimal])

  val COT = Types.lookupMethod(classOf[SqlFunctions], "cot", classOf[Double])
  val COT_DEC = Types.lookupMethod(classOf[ScalarFunctions], "cot", classOf[Decimal])

  val ASIN = Types.lookupMethod(classOf[Math], "asin", classOf[Double])
  val ASIN_DEC = Types.lookupMethod(classOf[ScalarFunctions], "asin", classOf[Decimal])

  val ACOS = Types.lookupMethod(classOf[Math], "acos", classOf[Double])
  val ACOS_DEC = Types.lookupMethod(classOf[ScalarFunctions], "acos", classOf[Decimal])

  val ATAN = Types.lookupMethod(classOf[Math], "atan", classOf[Double])
  val ATAN_DEC = Types.lookupMethod(classOf[ScalarFunctions], "atan", classOf[Decimal])

  val SINH = Types.lookupMethod(classOf[Math], "sinh", classOf[Double])
  val SINH_DEC = Types.lookupMethod(classOf[ScalarFunctions], "sinh", classOf[Decimal])

  val COSH = Types.lookupMethod(classOf[Math], "cosh", classOf[Double])
  val COSH_DEC = Types.lookupMethod(classOf[ScalarFunctions], "cosh", classOf[Decimal])

  val TANH = Types.lookupMethod(classOf[Math], "tanh", classOf[Double])
  val TANH_DEC = Types.lookupMethod(classOf[ScalarFunctions], "tanh", classOf[Decimal])

  val ATAN2_DOUBLE_DOUBLE = Types.lookupMethod(
    classOf[Math],
    "atan2",
    classOf[Double],
    classOf[Double])
  val ATAN2_DEC_DEC = Types.lookupMethod(
    classOf[ScalarFunctions],
    "atan2",
    classOf[Decimal],
    classOf[Decimal])

  val DEGREES = Types.lookupMethod(classOf[Math], "toDegrees", classOf[Double])
  val DEGREES_DEC = Types.lookupMethod(classOf[ScalarFunctions], "degrees", classOf[Decimal])

  val RADIANS = Types.lookupMethod(classOf[Math], "toRadians", classOf[Double])
  val RADIANS_DEC = Types.lookupMethod(classOf[ScalarFunctions], "radians", classOf[Decimal])

  val SIGN_DOUBLE = Types.lookupMethod(classOf[Math], "signum", classOf[Double])
  val SIGN_INT = Types.lookupMethod(classOf[Integer], "signum", classOf[Int])
  val SIGN_LONG = Types.lookupMethod(classOf[JLong], "signum", classOf[Long])
  val SIGN_DEC = Types.lookupMethod(classOf[BuildInScalarFunctions], "sign", classOf[Decimal])

  val ROUND_DOUBLE = Types.lookupMethod(classOf[SqlFunctions], "sround", classOf[Double],
    classOf[Int])
  val ROUND_INT = Types.lookupMethod(classOf[SqlFunctions], "sround", classOf[Int], classOf[Int])
  val ROUND_LONG = Types.lookupMethod(classOf[SqlFunctions], "sround", classOf[Long], classOf[Int])
  val ROUND_DEC = Types.lookupMethod(classOf[BuildInScalarFunctions], "sround",
    classOf[Decimal], classOf[Int])

  val ROUND_DOUBLE_0 =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "sround", classOf[Double])
  val ROUND_INT_0 =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "sround", classOf[Int])
  val ROUND_LONG_0 =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "sround", classOf[Long])
  val ROUND_DEC_0 =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "sround", classOf[Decimal])

  val CONCAT = Types.lookupMethod(classOf[ScalarFunctions], "concat", classOf[Array[String]])
  val CONCAT_WS =
    Types.lookupMethod(
      classOf[ScalarFunctions], "concat_ws", classOf[String], classOf[Array[String]])


  // Blink-build-in functions
  val JSON_VALUE = Types.lookupMethod(
      classOf[BuildInScalarFunctions], "jsonValue", classOf[String], classOf[String])

  val STR_TO_MAP = Types.lookupMethod(classOf[BuildInScalarFunctions], "strToMap", classOf[String])

  val STR_TO_MAP_WITH_DELIMITER = Types.lookupMethod(
    classOf[BuildInScalarFunctions],
    "strToMap",
    classOf[String], classOf[String], classOf[String])

  val LOG2 = Types.lookupMethod(classOf[ScalarFunctions], "log2", classOf[Double])

  val LOG2_DEC = Types.lookupMethod(classOf[ScalarFunctions], "log2", classOf[Decimal])

  val IS_DECIMAL = Types.lookupMethod(
    classOf[BuildInScalarFunctions], "isDecimal", classOf[String])

  val IS_DIGIT = Types.lookupMethod(
    classOf[BuildInScalarFunctions], "isDigit", classOf[String])

  val IS_ALPHA = Types.lookupMethod(
    classOf[BuildInScalarFunctions], "isAlpha", classOf[String])

  val CHR = Types.lookupMethod(
    classOf[ScalarFunctions], "chr", classOf[Long])

  val LPAD = Types.lookupMethod(
    classOf[ScalarFunctions], "lpad", classOf[String], classOf[Int], classOf[String])

  val RPAD = Types.lookupMethod(
    classOf[ScalarFunctions], "rpad", classOf[String], classOf[Int], classOf[String])

  val REPEAT = Types.lookupMethod(
    classOf[ScalarFunctions], "repeat", classOf[String], classOf[Int])

  val REVERSE = Types.lookupMethod(
    classOf[ScalarFunctions], "reverse", classOf[String])

  val REPLACE = Types.lookupMethod(
    classOf[ScalarFunctions], "replace", classOf[String], classOf[String], classOf[String]
  )

  val SPLIT_INDEX_CHR = Types.lookupMethod(
    classOf[ScalarFunctions], "splitIndex", classOf[String], classOf[Int], classOf[Int])

  val SPLIT_INDEX_STR = Types.lookupMethod(
    classOf[ScalarFunctions], "splitIndex", classOf[String], classOf[String], classOf[Int])

  val REGEXP_REPLACE = Types.lookupMethod(
    classOf[ScalarFunctions], "regExpReplace", classOf[String], classOf[String], classOf[String])

  val REGEXP_EXTRACT = Types.lookupMethod(
    classOf[ScalarFunctions], "regExpExtract", classOf[String], classOf[String], classOf[Long])

  val KEYVALUE = Types.lookupMethod(
    classOf[ScalarFunctions], "keyValue",
    classOf[String], classOf[String], classOf[String], classOf[String])

  val HASH_CODE = Types.lookupMethod(
    classOf[BuildInScalarFunctions], "hashCode", classOf[String])

  val REGEXP = Types.lookupMethod(
    classOf[BuildInScalarFunctions], "regExp", classOf[String], classOf[String])

  val PARSE_URL = Types.lookupMethod(
    classOf[ScalarFunctions], "parseUrl", classOf[String], classOf[String])

  val PARSE_URL_KEY = Types.lookupMethod(
    classOf[ScalarFunctions], "parseUrl", classOf[String], classOf[String], classOf[String])

  val NOW = Types.lookupMethod(
    classOf[DateTimeFunctions], "now")

  val NOW_OFFSET = Types.lookupMethod(
    classOf[DateTimeFunctions], "now", classOf[Long])

  val DATE_FORMAT_STRING_STRING_STRING = Types.lookupMethod(
    classOf[DateTimeFunctions], "dateFormat", classOf[String],
    classOf[String], classOf[String], classOf[TimeZone])

  val DATE_FORMAT_STIRNG_STRING = Types.lookupMethod(
    classOf[DateTimeFunctions], "dateFormat", classOf[String], classOf[String], classOf[TimeZone])

  val DATE_FORMAT_LONG_STRING = Types.lookupMethod(
    classOf[DateTimeFunctions], "dateFormat", classOf[Long], classOf[String], classOf[TimeZone])


  val UNIX_TIMESTAMP_FORMAT = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "unixTimestamp",
    classOf[String],
    classOf[String],
    classOf[TimeZone])

  val UNIX_TIMESTAMP_STR = Types.lookupMethod(
    classOf[DateTimeFunctions], "unixTimestamp", classOf[String], classOf[TimeZone])

  val UNIX_TIMESTAMP = Types.lookupMethod(
    classOf[DateTimeFunctions], "unixTimestamp")

  val UNIX_TIMESTAMP_TS = Types.lookupMethod(
    classOf[DateTimeFunctions], "unixTimestamp", classOf[Long])

  val FROM_UNIXTIME_FORMAT = Types.lookupMethod(
    classOf[DateTimeFunctions], "fromUnixtime", classOf[Long], classOf[String], classOf[TimeZone])

  val FROM_UNIXTIME = Types.lookupMethod(
    classOf[DateTimeFunctions], "fromUnixtime", classOf[Long], classOf[TimeZone])

  val FROM_UNIXTIME_AS_DOUBLE = Types.lookupMethod(
    classOf[DateTimeFunctions], "fromUnixtime", classOf[Double], classOf[TimeZone])

  val FROM_UNIXTIME_AS_DECIMAL = Types.lookupMethod(
    classOf[DateTimeFunctions], "fromUnixtime", classOf[Decimal], classOf[TimeZone])

  val DATEDIFF_T_S = Types.lookupMethod(
    classOf[DateTimeFunctions], "dateDiff", classOf[Long], classOf[String], classOf[TimeZone])

  val DATEDIFF_S_S = Types.lookupMethod(
    classOf[DateTimeFunctions], "dateDiff", classOf[String], classOf[String], classOf[TimeZone])

  val DATEDIFF_S_T = Types.lookupMethod(
    classOf[DateTimeFunctions], "dateDiff", classOf[String], classOf[Long], classOf[TimeZone])

  val DATEDIFF_T_T = Types.lookupMethod(
    classOf[DateTimeFunctions], "dateDiff", classOf[Long], classOf[Long], classOf[TimeZone])

  val DATE_SUB_S = Types.lookupMethod(
    classOf[DateTimeFunctions], "dateSub", classOf[String], classOf[Int], classOf[TimeZone])

  val DATE_SUB_T = Types.lookupMethod(
    classOf[DateTimeFunctions], "dateSub", classOf[Long], classOf[Int], classOf[TimeZone])

  val DATE_ADD_S = Types.lookupMethod(
    classOf[DateTimeFunctions], "dateAdd", classOf[String], classOf[Int], classOf[TimeZone])

  val DATE_ADD_T = Types.lookupMethod(
    classOf[DateTimeFunctions], "dateAdd", classOf[Long], classOf[Int], classOf[TimeZone])

  val BIN = Types.lookupMethod(classOf[JLong], "toBinaryString", classOf[Long])

  val BITAND_BYTE =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "bitAnd", classOf[JByte], classOf[JByte])
  val BITAND_SHORT =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "bitAnd", classOf[JShort], classOf[JShort])
  val BITAND_INTEGER =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "bitAnd", classOf[JInteger],
                       classOf[JInteger])
  val BITAND_LONG =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "bitAnd", classOf[JLong], classOf[JLong])

  val BITNOT_BYTE =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "bitNot", classOf[JByte])
  val BITNOT_SHORT =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "bitNot", classOf[JShort])
  val BITNOT_INTEGER =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "bitNot", classOf[JInteger])
  val BITNOT_LONG =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "bitNot", classOf[JLong])

  val BITOR_BYTE =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "bitOr", classOf[JByte], classOf[JByte])
  val BITOR_SHORT =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "bitOr", classOf[JShort], classOf[JShort])
  val BITOR_INTEGER =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "bitOr", classOf[JInteger],
                       classOf[JInteger])
  val BITOR_LONG =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "bitOr", classOf[JLong], classOf[JLong])

  val BITXOR_BYTE =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "bitXor", classOf[JByte], classOf[JByte])
  val BITXOR_SHORT =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "bitXor", classOf[JShort], classOf[JShort])
  val BITXOR_INTEGER =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "bitXor", classOf[JInteger],
                       classOf[JInteger])
  val BITXOR_LONG =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "bitXor", classOf[JLong], classOf[JLong])

  val DIV =
    Types.lookupMethod(classOf[BuildInScalarFunctions], "divide", classOf[Double], classOf[Double])
  val DIV_INT =
    Types.lookupMethod(
      classOf[ScalarFunctions],
      "divideInteger",
      classOf[Integer],
      classOf[Integer])

  val TO_BASE64 = Types.lookupMethod(
    classOf[BuildInScalarFunctions],
    "toBase64",
    classOf[Array[Byte]])

  val FROM_BASE64 = Types.lookupMethod(
    classOf[BuildInScalarFunctions],
    "fromBase64",
    classOf[String])

  val HEX_LONG: Method = Types.lookupMethod(classOf[ScalarFunctions], "hex", classOf[Long])
  val HEX_STRING: Method = Types.lookupMethod(classOf[ScalarFunctions], "hex", classOf[String])

  val UUID = Types.lookupMethod(
    classOf[BuildInScalarFunctions],
    "uuid")

  val UUID_BIN = Types.lookupMethod(
    classOf[BuildInScalarFunctions],
    "uuid", classOf[Array[Byte]])

  val SUBSTRING = Types.lookupMethod(
    classOf[ScalarFunctions],
    "subString",
    classOf[String], classOf[Long])

  val SUBSTRING_WITHLEN = Types.lookupMethod(
    classOf[ScalarFunctions],
    "subString",
    classOf[String], classOf[Long], classOf[Long])

  val OVERLAY = Types.lookupMethod(
    classOf[ScalarFunctions],
    "overlay",
    classOf[String], classOf[String], classOf[Long])

  val OVERLAY_WITHLEN = Types.lookupMethod(
    classOf[ScalarFunctions],
    "overlay",
    classOf[String], classOf[String], classOf[Long], classOf[Long])

  val INTERNAL_TO_DATE = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "internalToDate",
    classOf[Int], classOf[TimeZone])

  val INTERNAL_TO_TIME = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "internalToTime",
    classOf[Int], classOf[TimeZone])

  val INTERNAL_TO_TIMESTAMP = Types.lookupMethod(
    classOf[BuildInScalarFunctions],
    "internalToTimestamp",
    classOf[Long])

  val DATE_TO_INT = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "dateToInternal",
    classOf[JDate], classOf[TimeZone])

  val TIME_TO_INT = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "timeToInternal",
    classOf[Time], classOf[TimeZone])

  val TIMESTAMP_TO_LONG = Types.lookupMethod(
    classOf[BuildInScalarFunctions],
    "toLong",
    classOf[JDate])

  val INT_TO_DATE = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "toDate",
    classOf[Int])

  val LONG_TO_TIMESTAMP = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "toTimestamp",
    classOf[Long])

  val DOUBLE_TO_TIMESTAMP = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "toTimestamp",
    classOf[Double])

  val DECIMAL_TO_TIMESTAMP = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "toTimestamp",
    classOf[Decimal])

  val STRING_TO_DATE_WITH_FORMAT = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "toDate",
    classOf[String], classOf[String])

  val STRING_TO_TIMESTAMP = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "toTimestamp",
    classOf[String], classOf[TimeZone])

  val STRING_TO_TIMESTAMP_WITH_FORMAT = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "toTimestamp",
    classOf[String], classOf[String], classOf[TimeZone])

  val TIMESTAMP_TO_BIGINT = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "fromTimestamp",
    classOf[Long])

  val EXTRACT_FROM_TIMESTAMP = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "extractFromTimestamp",
    classOf[TimeUnitRange], classOf[Long], classOf[TimeZone])

  val EXTRACT_FROM_DATE = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "extractFromDate",
    classOf[TimeUnitRange], classOf[Long])

  val UNIX_TIME_EXTRACT = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "unixTimeExtract",
    classOf[TimeUnitRange], classOf[Int])

  val EXTRACT_YEAR_MONTH = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "extractYearMonth",
    classOf[TimeUnitRange], classOf[Int])

  val UNIX_TIME_TO_STRING = Types.lookupMethod(
    classOf[BuildInScalarFunctions],
    "unixTimeToString",
    classOf[Int])

  val TIMESTAMP_TO_STRING = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "timestampToStringPrecision",
    classOf[Long], classOf[Int], classOf[TimeZone])

  val TIMESTAMP_FLOOR = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "timestampFloor",
    classOf[TimeUnitRange], classOf[Long], classOf[TimeZone])

  val TIMESTAMP_CEIL = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "timestampCeil",
    classOf[TimeUnitRange], classOf[Long], classOf[TimeZone])

  val STRING_TO_TIMESTAMP_TZ = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "toTimestampTz",
    classOf[String], classOf[String])

  val STRING_TO_TIMESTAMP_FORMAT_TZ = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "toTimestampTz",
    classOf[String], classOf[String], classOf[String])

  val DATE_FORMAT_LONG_ZONE = Types.lookupMethod(
    classOf[DateTimeFunctions], "dateFormatTz", classOf[Long], classOf[String])

  val DATE_FORMAT_LONG_STRING_ZONE = Types.lookupMethod(
    classOf[DateTimeFunctions], "dateFormatTz", classOf[Long], classOf[String], classOf[String])

  val CONVERT_TZ = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "convertTz",
    classOf[String], classOf[String], classOf[String])

  val CONVERT_FORMAT_TZ = Types.lookupMethod(
    classOf[DateTimeFunctions],
    "convertTz",
    classOf[String], classOf[String], classOf[String], classOf[String])

  val REGEXP_EXTRACT_WITHOUT_INDEX = Types.lookupMethod(
    classOf[ScalarFunctions],
    "regExpExtract",
    classOf[String],
    classOf[String])
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy