You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by lz...@apache.org on 2021/08/24 08:06:28 UTC
[flink] branch release-1.12 updated: [FLINK-23579][table-runtime]
Fix compile exception in hash functions with varbinary arguments
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 <ts...@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)