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)