From ab7e77f6ecb3f11d6ff5fcea561548670919d346 Mon Sep 17 00:00:00 2001 From: xy720 <22125576+xy720@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:23:08 +0800 Subject: [PATCH] [fix](function) Hide secret key for aes_decrypt/encrypt in result header (#39969) Fix the case: The secret key is being shown beside '***' in result header ``` MySQL [lambxu]> set experimental_enable_nereids_planner = false; Query OK, 0 rows affected (0.01 sec) MySQL [lambxu]> SELECT aes_decrypt( from_base64("EXp7k7M9Zv1mIwPpno28Hg=="), '17IMZrGdwWf2Piy8', 'II2HLtihr5TQpQgR' , 'AES_128_CBC'); +------------------------------------------------------------------------------------------------------------------+ | aes_decrypt(from_base64('EXp7k7M9Zv1mIwPpno28Hg=='), '***''17IMZrGdwWf2Piy8', 'II2HLtihr5TQpQgR', 'AES_128_CBC') | +------------------------------------------------------------------------------------------------------------------+ | 17777208882 | +------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) ``` --- .../org/apache/doris/analysis/FunctionCallExpr.java | 1 + regression-test/data/view_p0/view_p0.out | 6 ++++++ regression-test/suites/view_p0/view_p0.groovy | 11 ++++++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java index d06c661f9da9fc..369f4594dcab5e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java @@ -648,6 +648,7 @@ private String paramsToSql() { || fnName.getFunction().equalsIgnoreCase("sm4_decrypt") || fnName.getFunction().equalsIgnoreCase("sm4_encrypt"))) { sb.append("\'***\'"); + continue; } else if (orderByElements.size() > 0 && i == len - orderByElements.size()) { sb.append("ORDER BY "); } diff --git a/regression-test/data/view_p0/view_p0.out b/regression-test/data/view_p0/view_p0.out index 976d4a3cb2ad07..21d23110a91969 100644 --- a/regression-test/data/view_p0/view_p0.out +++ b/regression-test/data/view_p0/view_p0.out @@ -18,3 +18,9 @@ -- !sql2 -- +-- !select_aes -- +17777208882 + +-- !show_aes -- +test_view_aes CREATE VIEW `test_view_aes` AS SELECT aes_decrypt(from_base64("EXp7k7M9Zv1mIwPpno28Hg=="), '17IMZrGdwWf2Piy8', 'II2HLtihr5TQpQgR', 'AES_128_CBC'); utf8mb4 utf8mb4_0900_bin + diff --git a/regression-test/suites/view_p0/view_p0.groovy b/regression-test/suites/view_p0/view_p0.groovy index d6ae3a9313a83f..7ee8c9e913ccc4 100644 --- a/regression-test/suites/view_p0/view_p0.groovy +++ b/regression-test/suites/view_p0/view_p0.groovy @@ -135,7 +135,16 @@ suite("view_p0") { sql """CREATE VIEW IF NOT EXISTS `test_view_abc`(`a`) AS WITH T1 AS (SELECT 1 AS 'a'), T2 AS (SELECT 2 AS 'a') SELECT T1.a FROM T1 UNION ALL SELECT T2.a FROM T2;""" - sql "drop view if exists test_view_abc;" + sql "drop view if exists test_view_abc;" + + sql "drop view if exists test_view_aes;" + sql """CREATE VIEW IF NOT EXISTS `test_view_aes` + AS + SELECT aes_decrypt(from_base64("EXp7k7M9Zv1mIwPpno28Hg=="), '17IMZrGdwWf2Piy8', 'II2HLtihr5TQpQgR', 'AES_128_CBC'); + """ + qt_select_aes "SELECT * FROM test_view_aes;" + qt_show_aes "SHOW CREATE VIEW test_view_aes;" + sql "drop view if exists test_view_aes;" sql """DROP TABLE IF EXISTS test_view_table2"""