Class BinaryStringDataUtil


  • public class BinaryStringDataUtil
    extends Object
    Util for BinaryStringData.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static org.apache.flink.table.data.binary.BinaryStringData[] EMPTY_STRING_ARRAY  
      static org.apache.flink.table.data.binary.BinaryStringData FALSE_STRING  
      static org.apache.flink.table.data.binary.BinaryStringData NULL_STRING  
      static org.apache.flink.table.data.binary.BinaryStringData TRUE_STRING  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static org.apache.flink.table.data.binary.BinaryStringData concat​(Iterable<org.apache.flink.table.data.binary.BinaryStringData> inputs)  
      static org.apache.flink.table.data.binary.BinaryStringData concat​(org.apache.flink.table.data.binary.BinaryStringData... inputs)
      Concatenates input strings together into a single string.
      static org.apache.flink.table.data.binary.BinaryStringData concatWs​(org.apache.flink.table.data.binary.BinaryStringData separator, Iterable<org.apache.flink.table.data.binary.BinaryStringData> inputs)  
      static org.apache.flink.table.data.binary.BinaryStringData concatWs​(org.apache.flink.table.data.binary.BinaryStringData separator, org.apache.flink.table.data.binary.BinaryStringData... inputs)
      Concatenates input strings together into a single string using the separator.
      static org.apache.flink.table.data.binary.BinaryStringData hash​(byte[] bytes, MessageDigest md)
      Calculate the hash value of the given bytes use MessageDigest.
      static org.apache.flink.table.data.binary.BinaryStringData hash​(org.apache.flink.table.data.binary.BinaryStringData str, String algorithm)  
      static org.apache.flink.table.data.binary.BinaryStringData hash​(org.apache.flink.table.data.binary.BinaryStringData str, MessageDigest md)
      Calculate the hash value of a given string use MessageDigest.
      static boolean isEmpty​(org.apache.flink.table.data.binary.BinaryStringData str)  
      static boolean isSpaceString​(org.apache.flink.table.data.binary.BinaryStringData str)  
      static org.apache.flink.table.data.binary.BinaryStringData keyValue​(org.apache.flink.table.data.binary.BinaryStringData str, byte split1, byte split2, org.apache.flink.table.data.binary.BinaryStringData keyName)
      Parse target string as key-value string and return the value matches key name.
      static org.apache.flink.table.data.binary.BinaryStringData reverse​(org.apache.flink.table.data.binary.BinaryStringData str)
      Reverse each character in current string.
      static String safeToString​(org.apache.flink.table.data.binary.BinaryStringData str)  
      static org.apache.flink.table.data.binary.BinaryStringData[] splitByWholeSeparatorPreserveAllTokens​(org.apache.flink.table.data.binary.BinaryStringData str, org.apache.flink.table.data.binary.BinaryStringData separator)
      Splits the provided text into an array, separator string specified.
      static org.apache.flink.table.data.binary.BinaryStringData substringSQL​(org.apache.flink.table.data.binary.BinaryStringData str, int pos)  
      static org.apache.flink.table.data.binary.BinaryStringData substringSQL​(org.apache.flink.table.data.binary.BinaryStringData str, int pos, int length)  
      static boolean toBoolean​(org.apache.flink.table.data.binary.BinaryStringData str)
      Parse a StringData to boolean.
      static byte toByte​(org.apache.flink.table.data.binary.BinaryStringData str)  
      static int toDate​(org.apache.flink.table.data.binary.BinaryStringData input)  
      static org.apache.flink.table.data.DecimalData toDecimal​(org.apache.flink.table.data.binary.BinaryStringData str, int precision, int scale)
      Parses a BinaryStringData to DecimalData.
      static double toDouble​(org.apache.flink.table.data.binary.BinaryStringData str)  
      static float toFloat​(org.apache.flink.table.data.binary.BinaryStringData str)  
      static int toInt​(org.apache.flink.table.data.binary.BinaryStringData str)
      Parses this BinaryStringData to Int.
      static long toLong​(org.apache.flink.table.data.binary.BinaryStringData str)
      Parses this BinaryStringData to Long.
      static short toShort​(org.apache.flink.table.data.binary.BinaryStringData str)  
      static int toTime​(org.apache.flink.table.data.binary.BinaryStringData input)  
      static org.apache.flink.table.data.TimestampData toTimestamp​(org.apache.flink.table.data.binary.BinaryStringData input, int precision)
      Used by CAST(x as TIMESTAMP).
      static org.apache.flink.table.data.TimestampData toTimestamp​(org.apache.flink.table.data.binary.BinaryStringData input, int precision, TimeZone timeZone)
      Used by CAST(x as TIMESTAMP_LTZ).
      static org.apache.flink.table.data.binary.BinaryStringData trim​(org.apache.flink.table.data.binary.BinaryStringData str, boolean leading, boolean trailing, org.apache.flink.table.data.binary.BinaryStringData seek)  
      static org.apache.flink.table.data.binary.BinaryStringData trim​(org.apache.flink.table.data.binary.BinaryStringData str, org.apache.flink.table.data.binary.BinaryStringData trimStr)
      Walk each character of current string from both ends, remove the character if it is in trim string.
      static org.apache.flink.table.data.binary.BinaryStringData trimLeft​(org.apache.flink.table.data.binary.BinaryStringData str)  
      static org.apache.flink.table.data.binary.BinaryStringData trimLeft​(org.apache.flink.table.data.binary.BinaryStringData str, org.apache.flink.table.data.binary.BinaryStringData trimStr)
      Walk each character of current string from left end, remove the character if it is in trim string.
      static org.apache.flink.table.data.binary.BinaryStringData trimRight​(org.apache.flink.table.data.binary.BinaryStringData str)  
      static org.apache.flink.table.data.binary.BinaryStringData trimRight​(org.apache.flink.table.data.binary.BinaryStringData str, org.apache.flink.table.data.binary.BinaryStringData trimStr)
      Walk each character of current string from right end, remove the character if it is in trim string.
    • Field Detail

      • NULL_STRING

        public static final org.apache.flink.table.data.binary.BinaryStringData NULL_STRING
      • TRUE_STRING

        public static final org.apache.flink.table.data.binary.BinaryStringData TRUE_STRING
      • FALSE_STRING

        public static final org.apache.flink.table.data.binary.BinaryStringData FALSE_STRING
      • EMPTY_STRING_ARRAY

        public static final org.apache.flink.table.data.binary.BinaryStringData[] EMPTY_STRING_ARRAY
    • Constructor Detail

      • BinaryStringDataUtil

        public BinaryStringDataUtil()
    • Method Detail

      • splitByWholeSeparatorPreserveAllTokens

        public static org.apache.flink.table.data.binary.BinaryStringData[] splitByWholeSeparatorPreserveAllTokens​(org.apache.flink.table.data.binary.BinaryStringData str,
                                                                                                                   org.apache.flink.table.data.binary.BinaryStringData separator)
        Splits the provided text into an array, separator string specified.

        The separator is not included in the returned String array. Adjacent separators are treated as separators for empty tokens.

        A null separator splits on whitespace.

         "".splitByWholeSeparatorPreserveAllTokens(*)                 = []
         "ab de fg".splitByWholeSeparatorPreserveAllTokens(null)      = ["ab", "de", "fg"]
         "ab   de fg".splitByWholeSeparatorPreserveAllTokens(null)    = ["ab", "", "", "de", "fg"]
         "ab:cd:ef".splitByWholeSeparatorPreserveAllTokens(":")       = ["ab", "cd", "ef"]
         "ab-!-cd-!-ef".splitByWholeSeparatorPreserveAllTokens("-!-") = ["ab", "cd", "ef"]
         

        Note: returned binary strings reuse memory segments from the input str.

        Parameters:
        separator - String containing the String to be used as a delimiter, null splits on whitespace
        Returns:
        an array of parsed Strings, null if null String was input
      • toBoolean

        public static boolean toBoolean​(org.apache.flink.table.data.binary.BinaryStringData str)
                                 throws org.apache.flink.table.api.TableException
        Parse a StringData to boolean.
        Throws:
        org.apache.flink.table.api.TableException
      • hash

        public static org.apache.flink.table.data.binary.BinaryStringData hash​(byte[] bytes,
                                                                               MessageDigest md)
        Calculate the hash value of the given bytes use MessageDigest.
      • hash

        public static org.apache.flink.table.data.binary.BinaryStringData hash​(org.apache.flink.table.data.binary.BinaryStringData str,
                                                                               MessageDigest md)
        Calculate the hash value of a given string use MessageDigest.
      • toDecimal

        public static org.apache.flink.table.data.DecimalData toDecimal​(org.apache.flink.table.data.binary.BinaryStringData str,
                                                                        int precision,
                                                                        int scale)
                                                                 throws NumberFormatException
        Parses a BinaryStringData to DecimalData.
        Returns:
        DecimalData value if the parsing was successful.
        Throws:
        NumberFormatException
      • toLong

        public static long toLong​(org.apache.flink.table.data.binary.BinaryStringData str)
                           throws NumberFormatException
        Parses this BinaryStringData to Long.

        Note that, in this method we accumulate the result in negative format, and convert it to positive format at the end, if this string is not started with '-'. This is because min value is bigger than max value in digits, e.g. Long.MAX_VALUE is '9223372036854775807' and Long.MIN_VALUE is '-9223372036854775808'.

        This code is mostly copied from LazyLong.parseLong in Hive.

        Throws:
        NumberFormatException
      • toInt

        public static int toInt​(org.apache.flink.table.data.binary.BinaryStringData str)
                         throws NumberFormatException
        Parses this BinaryStringData to Int.

        Note that, in this method we accumulate the result in negative format, and convert it to positive format at the end, if this string is not started with '-'. This is because min value is bigger than max value in digits, e.g. Integer.MAX_VALUE is '2147483647' and Integer.MIN_VALUE is '-2147483648'.

        This code is mostly copied from LazyInt.parseInt in Hive.

        Note that, this method is almost same as `toLong`, but we leave it duplicated for performance reasons, like Hive does.

        Throws:
        NumberFormatException
      • toTimestamp

        public static org.apache.flink.table.data.TimestampData toTimestamp​(org.apache.flink.table.data.binary.BinaryStringData input,
                                                                            int precision)
                                                                     throws DateTimeException
        Used by CAST(x as TIMESTAMP).
        Throws:
        DateTimeException
      • toTimestamp

        public static org.apache.flink.table.data.TimestampData toTimestamp​(org.apache.flink.table.data.binary.BinaryStringData input,
                                                                            int precision,
                                                                            TimeZone timeZone)
                                                                     throws DateTimeException
        Used by CAST(x as TIMESTAMP_LTZ).
        Throws:
        DateTimeException
      • keyValue

        public static org.apache.flink.table.data.binary.BinaryStringData keyValue​(org.apache.flink.table.data.binary.BinaryStringData str,
                                                                                   byte split1,
                                                                                   byte split2,
                                                                                   org.apache.flink.table.data.binary.BinaryStringData keyName)
        Parse target string as key-value string and return the value matches key name. If accept any null arguments, return null. example: keyvalue('k1=v1;k2=v2', ';', '=', 'k2') = 'v2' keyvalue('k1:v1,k2:v2', ',', ':', 'k3') = NULL
        Parameters:
        split1 - separator between key-value tuple.
        split2 - separator between key and value.
        keyName - name of the key whose value you want return.
        Returns:
        target value.
      • substringSQL

        public static org.apache.flink.table.data.binary.BinaryStringData substringSQL​(org.apache.flink.table.data.binary.BinaryStringData str,
                                                                                       int pos)
      • substringSQL

        public static org.apache.flink.table.data.binary.BinaryStringData substringSQL​(org.apache.flink.table.data.binary.BinaryStringData str,
                                                                                       int pos,
                                                                                       int length)
      • concat

        public static org.apache.flink.table.data.binary.BinaryStringData concat​(org.apache.flink.table.data.binary.BinaryStringData... inputs)
        Concatenates input strings together into a single string. Returns NULL if any argument is NULL.
      • concat

        public static org.apache.flink.table.data.binary.BinaryStringData concat​(Iterable<org.apache.flink.table.data.binary.BinaryStringData> inputs)
      • concatWs

        public static org.apache.flink.table.data.binary.BinaryStringData concatWs​(org.apache.flink.table.data.binary.BinaryStringData separator,
                                                                                   org.apache.flink.table.data.binary.BinaryStringData... inputs)
        Concatenates input strings together into a single string using the separator. Returns NULL If the separator is NULL.

        Note: CONCAT_WS() does not skip any empty strings, however it does skip any NULL values after the separator. For example, concat_ws(",", "a", null, "c") would yield "a,c".

      • concatWs

        public static org.apache.flink.table.data.binary.BinaryStringData concatWs​(org.apache.flink.table.data.binary.BinaryStringData separator,
                                                                                   Iterable<org.apache.flink.table.data.binary.BinaryStringData> inputs)
      • reverse

        public static org.apache.flink.table.data.binary.BinaryStringData reverse​(org.apache.flink.table.data.binary.BinaryStringData str)
        Reverse each character in current string.
        Returns:
        a new string which character order is reverse to current string.
      • trim

        public static org.apache.flink.table.data.binary.BinaryStringData trim​(org.apache.flink.table.data.binary.BinaryStringData str,
                                                                               org.apache.flink.table.data.binary.BinaryStringData trimStr)
        Walk each character of current string from both ends, remove the character if it is in trim string. Return the new substring which both ends trim characters have been removed.
        Parameters:
        trimStr - the trim string
        Returns:
        A subString which both ends trim characters have been removed.
      • trimLeft

        public static org.apache.flink.table.data.binary.BinaryStringData trimLeft​(org.apache.flink.table.data.binary.BinaryStringData str)
      • isEmpty

        public static boolean isEmpty​(org.apache.flink.table.data.binary.BinaryStringData str)
      • isSpaceString

        public static boolean isSpaceString​(org.apache.flink.table.data.binary.BinaryStringData str)
      • trimLeft

        public static org.apache.flink.table.data.binary.BinaryStringData trimLeft​(org.apache.flink.table.data.binary.BinaryStringData str,
                                                                                   org.apache.flink.table.data.binary.BinaryStringData trimStr)
        Walk each character of current string from left end, remove the character if it is in trim string. Stops at the first character which is not in trim string. Return the new substring.
        Parameters:
        trimStr - the trim string
        Returns:
        A subString which removes all of the character from the left side that is in trim string.
      • trimRight

        public static org.apache.flink.table.data.binary.BinaryStringData trimRight​(org.apache.flink.table.data.binary.BinaryStringData str)
      • trimRight

        public static org.apache.flink.table.data.binary.BinaryStringData trimRight​(org.apache.flink.table.data.binary.BinaryStringData str,
                                                                                    org.apache.flink.table.data.binary.BinaryStringData trimStr)
        Walk each character of current string from right end, remove the character if it is in trim string. Stops at the first character which is not in trim string. Return the new substring.
        Parameters:
        trimStr - the trim string
        Returns:
        A subString which removes all of the character from the right side that is in trim string.
      • trim

        public static org.apache.flink.table.data.binary.BinaryStringData trim​(org.apache.flink.table.data.binary.BinaryStringData str,
                                                                               boolean leading,
                                                                               boolean trailing,
                                                                               org.apache.flink.table.data.binary.BinaryStringData seek)
      • safeToString

        public static String safeToString​(org.apache.flink.table.data.binary.BinaryStringData str)