This is an automated email from the ASF dual-hosted git repository.

lzljs3620320 pushed a commit to branch release-1.12
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/release-1.12 by this push:
     new 8a83d8b  [FLINK-23579][table-runtime] Fix compile exception in hash 
functions with varbinary arguments
8a83d8b is described below

commit 8a83d8b46e10231c8c129b80ba951c23c1ee52ef
Author: tsreaper <tsreape...@gmail.com>
AuthorDate: Tue Aug 24 16:05:57 2021 +0800

    [FLINK-23579][table-runtime] Fix compile exception in hash functions with 
varbinary arguments
    
    This closes #16903
---
 .../planner/expressions/ScalarFunctionsTest.scala  | 23 ++++++++++++++++++++++
 .../table/data/binary/BinaryStringDataUtil.java    |  7 ++++++-
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git 
a/flink-table/flink-table-planner-blink/src/test/scala/org/apache/flink/table/planner/expressions/ScalarFunctionsTest.scala
 
b/flink-table/flink-table-planner-blink/src/test/scala/org/apache/flink/table/planner/expressions/ScalarFunctionsTest.scala
index 953b688..093de44 100644
--- 
a/flink-table/flink-table-planner-blink/src/test/scala/org/apache/flink/table/planner/expressions/ScalarFunctionsTest.scala
+++ 
b/flink-table/flink-table-planner-blink/src/test/scala/org/apache/flink/table/planner/expressions/ScalarFunctionsTest.scala
@@ -3655,6 +3655,29 @@ class ScalarFunctionsTest extends ScalarTypesTestBase {
       "sha2('test', f44)",
       "SHA2('test', f44)",
       expectedSha256)
+
+    // bytes test
+    testSqlApi("MD5(cast('test' as varbinary))", expectedMd5)
+    testSqlApi("SHA1(cast('test' as varbinary))", expectedSha1)
+    testSqlApi("SHA224(cast('test' as varbinary))", expectedSha224)
+    testSqlApi("SHA2(cast('test' as varbinary), 224)", expectedSha224)
+    testSqlApi("SHA256(cast('test' as varbinary))", expectedSha256)
+    testSqlApi("SHA2(cast('test' as varbinary), 256)", expectedSha256)
+    testSqlApi("SHA384(cast('test' as varbinary))", expectedSha384)
+    testSqlApi("SHA2(cast('test' as varbinary), 384)", expectedSha384)
+    testSqlApi("SHA512(cast('test' as varbinary))", expectedSha512)
+    testSqlApi("SHA2(cast('test' as varbinary), 512)", expectedSha512)
+
+    testSqlApi("MD5(cast(null as varbinary))", "null")
+    testSqlApi("SHA1(cast(null as varbinary))", "null")
+    testSqlApi("SHA224(cast(null as varbinary))", "null")
+    testSqlApi("SHA2(cast(null as varbinary), 224)", "null")
+    testSqlApi("SHA256(cast(null as varbinary))", "null")
+    testSqlApi("SHA2(cast(null as varbinary), 256)", "null")
+    testSqlApi("SHA384(cast(null as varbinary))", "null")
+    testSqlApi("SHA2(cast(null as varbinary), 384)", "null")
+    testSqlApi("SHA512(cast(null as varbinary))", "null")
+    testSqlApi("SHA2(cast(null as varbinary), 512)", "null")
   }
 
   // 
----------------------------------------------------------------------------------------------
diff --git 
a/flink-table/flink-table-runtime-blink/src/main/java/org/apache/flink/table/data/binary/BinaryStringDataUtil.java
 
b/flink-table/flink-table-runtime-blink/src/main/java/org/apache/flink/table/data/binary/BinaryStringDataUtil.java
index 9cbe9c8..2aebca5 100644
--- 
a/flink-table/flink-table-runtime-blink/src/main/java/org/apache/flink/table/data/binary/BinaryStringDataUtil.java
+++ 
b/flink-table/flink-table-runtime-blink/src/main/java/org/apache/flink/table/data/binary/BinaryStringDataUtil.java
@@ -152,9 +152,14 @@ public class BinaryStringDataUtil {
                 : (FALSE_STRINGS.contains(lowerCase) ? Boolean.FALSE : null);
     }
 
+    /** Calculate the hash value of the given bytes use {@link MessageDigest}. 
*/
+    public static BinaryStringData hash(byte[] bytes, MessageDigest md) {
+        return fromString(EncodingUtils.hex(md.digest(bytes)));
+    }
+
     /** Calculate the hash value of a given string use {@link MessageDigest}. 
*/
     public static BinaryStringData hash(BinaryStringData str, MessageDigest 
md) {
-        return fromString(EncodingUtils.hex(md.digest(str.toBytes())));
+        return hash(str.toBytes(), md);
     }
 
     public static BinaryStringData hash(BinaryStringData str, String algorithm)

Reply via email to