Skip to content

Commit e0d4c5c

Browse files
committed
1
1 parent c85b2a6 commit e0d4c5c

File tree

16 files changed

+25
-759
lines changed

16 files changed

+25
-759
lines changed

fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java

+11-76
Original file line numberDiff line numberDiff line change
@@ -645,11 +645,7 @@ private String paramsToSql() {
645645
&& (fnName.getFunction().equalsIgnoreCase("aes_decrypt")
646646
|| fnName.getFunction().equalsIgnoreCase("aes_encrypt")
647647
|| fnName.getFunction().equalsIgnoreCase("sm4_decrypt")
648-
|| fnName.getFunction().equalsIgnoreCase("sm4_encrypt")
649-
|| fnName.getFunction().equalsIgnoreCase("aes_decrypt_v2")
650-
|| fnName.getFunction().equalsIgnoreCase("aes_encrypt_v2")
651-
|| fnName.getFunction().equalsIgnoreCase("sm4_decrypt_v2")
652-
|| fnName.getFunction().equalsIgnoreCase("sm4_encrypt_v2"))) {
648+
|| fnName.getFunction().equalsIgnoreCase("sm4_encrypt"))) {
653649
sb.append("\'***\'");
654650
} else if (orderByElements.size() > 0 && i == len - orderByElements.size()) {
655651
sb.append("ORDER BY ");
@@ -734,22 +730,13 @@ private String paramsToDigest() {
734730
if (fnName.getFunction().equalsIgnoreCase("aes_decrypt")
735731
|| fnName.getFunction().equalsIgnoreCase("aes_encrypt")
736732
|| fnName.getFunction().equalsIgnoreCase("sm4_decrypt")
737-
|| fnName.getFunction().equalsIgnoreCase("sm4_encrypt")
738-
|| fnName.getFunction().equalsIgnoreCase("aes_decrypt_v2")
739-
|| fnName.getFunction().equalsIgnoreCase("aes_encrypt_v2")
740-
|| fnName.getFunction().equalsIgnoreCase("sm4_decrypt_v2")
741-
|| fnName.getFunction().equalsIgnoreCase("sm4_encrypt_v2")) {
733+
|| fnName.getFunction().equalsIgnoreCase("sm4_encrypt")) {
742734
len = len - 1;
743735
}
744736
for (int i = 0; i < len; ++i) {
745737
if (i == 1 && (fnName.getFunction().equalsIgnoreCase("aes_decrypt")
746738
|| fnName.getFunction().equalsIgnoreCase("aes_encrypt")
747-
|| fnName.getFunction().equalsIgnoreCase("sm4_decrypt")
748-
|| fnName.getFunction().equalsIgnoreCase("sm4_encrypt")
749-
|| fnName.getFunction().equalsIgnoreCase("aes_decrypt_v2")
750-
|| fnName.getFunction().equalsIgnoreCase("aes_encrypt_v2")
751-
|| fnName.getFunction().equalsIgnoreCase("sm4_decrypt_v2")
752-
|| fnName.getFunction().equalsIgnoreCase("sm4_encrypt_v2"))) {
739+
|| fnName.getFunction().equalsIgnoreCase("sm4_decrypt"))) {
753740
result.add("\'***\'");
754741
} else {
755742
result.add(children.get(i).toDigest());
@@ -1152,13 +1139,8 @@ private void analyzeBuiltinAggFunction(Analyzer analyzer) throws AnalysisExcepti
11521139
if ((fnName.getFunction().equalsIgnoreCase("aes_decrypt")
11531140
|| fnName.getFunction().equalsIgnoreCase("aes_encrypt")
11541141
|| fnName.getFunction().equalsIgnoreCase("sm4_decrypt")
1155-
|| fnName.getFunction().equalsIgnoreCase("sm4_encrypt")
1156-
|| fnName.getFunction().equalsIgnoreCase("aes_decrypt_v2")
1157-
|| fnName.getFunction().equalsIgnoreCase("aes_encrypt_v2")
1158-
|| fnName.getFunction().equalsIgnoreCase("sm4_decrypt_v2")
1159-
|| fnName.getFunction().equalsIgnoreCase("sm4_encrypt_v2"))
1142+
|| fnName.getFunction().equalsIgnoreCase("sm4_encrypt"))
11601143
&& (children.size() == 2 || children.size() == 3)) {
1161-
String blockEncryptionMode = "";
11621144
Set<String> aesModes = new HashSet<>(Arrays.asList(
11631145
"AES_128_ECB",
11641146
"AES_192_ECB",
@@ -1192,80 +1174,33 @@ private void analyzeBuiltinAggFunction(Analyzer analyzer) throws AnalysisExcepti
11921174
"SM4_128_OFB",
11931175
"SM4_128_CTR"));
11941176

1177+
String blockEncryptionMode = "";
11951178
if (ConnectContext.get() != null) {
11961179
blockEncryptionMode = ConnectContext.get().getSessionVariable().getBlockEncryptionMode();
11971180
if (fnName.getFunction().equalsIgnoreCase("aes_decrypt")
1198-
|| fnName.getFunction().equalsIgnoreCase("aes_encrypt")
1199-
|| fnName.getFunction().equalsIgnoreCase("aes_decrypt_v2")
1200-
|| fnName.getFunction().equalsIgnoreCase("aes_encrypt_v2")) {
1181+
|| fnName.getFunction().equalsIgnoreCase("aes_encrypt")) {
12011182
if (StringUtils.isAllBlank(blockEncryptionMode)) {
12021183
blockEncryptionMode = "AES_128_ECB";
12031184
}
12041185
if (!aesModes.contains(blockEncryptionMode.toUpperCase())) {
12051186
throw new AnalysisException("session variable block_encryption_mode is invalid with aes");
12061187
}
1207-
if (children.size() == 2) {
1208-
boolean isECB = blockEncryptionMode.equalsIgnoreCase("AES_128_ECB")
1209-
|| blockEncryptionMode.equalsIgnoreCase("AES_192_ECB")
1210-
|| blockEncryptionMode.equalsIgnoreCase("AES_256_ECB");
1211-
if (fnName.getFunction().equalsIgnoreCase("aes_decrypt_v2")) {
1212-
if (!isECB) {
1213-
throw new AnalysisException(
1214-
"Incorrect parameter count in the call to native function 'aes_decrypt'");
1215-
}
1216-
} else if (fnName.getFunction().equalsIgnoreCase("aes_encrypt_v2")) {
1217-
if (!isECB) {
1218-
throw new AnalysisException(
1219-
"Incorrect parameter count in the call to native function 'aes_encrypt'");
1220-
}
1221-
} else {
1222-
// if there are only 2 params, we need set encryption mode to AES_128_ECB
1223-
// this keeps the behavior consistent with old doris ver.
1224-
blockEncryptionMode = "AES_128_ECB";
1225-
}
1226-
}
12271188
}
12281189
if (fnName.getFunction().equalsIgnoreCase("sm4_decrypt")
1229-
|| fnName.getFunction().equalsIgnoreCase("sm4_encrypt")
1230-
|| fnName.getFunction().equalsIgnoreCase("sm4_decrypt_v2")
1231-
|| fnName.getFunction().equalsIgnoreCase("sm4_encrypt_v2")) {
1190+
|| fnName.getFunction().equalsIgnoreCase("sm4_encrypt")) {
12321191
if (StringUtils.isAllBlank(blockEncryptionMode)) {
12331192
blockEncryptionMode = "SM4_128_ECB";
12341193
}
12351194
if (!sm4Modes.contains(blockEncryptionMode.toUpperCase())) {
12361195
throw new AnalysisException(
12371196
"session variable block_encryption_mode is invalid with sm4");
12381197
}
1239-
if (children.size() == 2) {
1240-
if (fnName.getFunction().equalsIgnoreCase("sm4_decrypt_v2")) {
1241-
throw new AnalysisException(
1242-
"Incorrect parameter count in the call to native function 'sm4_decrypt'");
1243-
} else if (fnName.getFunction().equalsIgnoreCase("sm4_encrypt_v2")) {
1244-
throw new AnalysisException(
1245-
"Incorrect parameter count in the call to native function 'sm4_encrypt'");
1246-
} else {
1247-
// if there are only 2 params, we need add an empty string as the third param
1248-
// and set encryption mode to SM4_128_ECB
1249-
// this keeps the behavior consistent with old doris ver.
1250-
children.add(new StringLiteral(""));
1251-
blockEncryptionMode = "SM4_128_ECB";
1252-
}
1253-
}
12541198
}
1199+
} else {
1200+
throw new AnalysisException(
1201+
"cannot get session variable `block_encryption_mode`, please explicitly specify by using 4-args function");
12551202
}
1256-
if (!blockEncryptionMode.equals(children.get(children.size() - 1).toString())) {
1257-
children.add(new StringLiteral(blockEncryptionMode));
1258-
}
1259-
1260-
if (fnName.getFunction().equalsIgnoreCase("aes_decrypt_v2")) {
1261-
fnName = FunctionName.createBuiltinName("aes_decrypt");
1262-
} else if (fnName.getFunction().equalsIgnoreCase("aes_encrypt_v2")) {
1263-
fnName = FunctionName.createBuiltinName("aes_encrypt");
1264-
} else if (fnName.getFunction().equalsIgnoreCase("sm4_decrypt_v2")) {
1265-
fnName = FunctionName.createBuiltinName("sm4_decrypt");
1266-
} else if (fnName.getFunction().equalsIgnoreCase("sm4_encrypt_v2")) {
1267-
fnName = FunctionName.createBuiltinName("sm4_encrypt");
1268-
}
1203+
children.add(new StringLiteral(blockEncryptionMode));
12691204
}
12701205
}
12711206

fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java

-8
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@
2222
import org.apache.doris.nereids.trees.expressions.functions.scalar.Abs;
2323
import org.apache.doris.nereids.trees.expressions.functions.scalar.Acos;
2424
import org.apache.doris.nereids.trees.expressions.functions.scalar.AesDecrypt;
25-
import org.apache.doris.nereids.trees.expressions.functions.scalar.AesDecryptV2;
2625
import org.apache.doris.nereids.trees.expressions.functions.scalar.AesEncrypt;
27-
import org.apache.doris.nereids.trees.expressions.functions.scalar.AesEncryptV2;
2826
import org.apache.doris.nereids.trees.expressions.functions.scalar.AppendTrailingCharIfAbsent;
2927
import org.apache.doris.nereids.trees.expressions.functions.scalar.Array;
3028
import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayApply;
@@ -370,9 +368,7 @@
370368
import org.apache.doris.nereids.trees.expressions.functions.scalar.Sm3;
371369
import org.apache.doris.nereids.trees.expressions.functions.scalar.Sm3sum;
372370
import org.apache.doris.nereids.trees.expressions.functions.scalar.Sm4Decrypt;
373-
import org.apache.doris.nereids.trees.expressions.functions.scalar.Sm4DecryptV2;
374371
import org.apache.doris.nereids.trees.expressions.functions.scalar.Sm4Encrypt;
375-
import org.apache.doris.nereids.trees.expressions.functions.scalar.Sm4EncryptV2;
376372
import org.apache.doris.nereids.trees.expressions.functions.scalar.Space;
377373
import org.apache.doris.nereids.trees.expressions.functions.scalar.SplitByChar;
378374
import org.apache.doris.nereids.trees.expressions.functions.scalar.SplitByRegexp;
@@ -479,9 +475,7 @@ public class BuiltinScalarFunctions implements FunctionHelper {
479475
scalar(Abs.class, "abs"),
480476
scalar(Acos.class, "acos"),
481477
scalar(AesDecrypt.class, "aes_decrypt"),
482-
scalar(AesDecryptV2.class, "aes_decrypt_v2"),
483478
scalar(AesEncrypt.class, "aes_encrypt"),
484-
scalar(AesEncryptV2.class, "aes_encrypt_v2"),
485479
scalar(AppendTrailingCharIfAbsent.class, "append_trailing_char_if_absent"),
486480
scalar(Array.class, "array"),
487481
scalar(ArrayApply.class, "array_apply"),
@@ -849,9 +843,7 @@ public class BuiltinScalarFunctions implements FunctionHelper {
849843
scalar(Sm3.class, "sm3"),
850844
scalar(Sm3sum.class, "sm3sum"),
851845
scalar(Sm4Decrypt.class, "sm4_decrypt"),
852-
scalar(Sm4DecryptV2.class, "sm4_decrypt_v2"),
853846
scalar(Sm4Encrypt.class, "sm4_encrypt"),
854-
scalar(Sm4EncryptV2.class, "sm4_encrypt_v2"),
855847
scalar(Space.class, "space"),
856848
scalar(SplitByChar.class, "split_by_char"),
857849
scalar(SplitByRegexp.class, "split_by_regexp"),

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/AesDecrypt.java

+1-11
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
package org.apache.doris.nereids.trees.expressions.functions.scalar;
1919

2020
import org.apache.doris.catalog.FunctionSignature;
21-
import org.apache.doris.nereids.exceptions.AnalysisException;
2221
import org.apache.doris.nereids.trees.expressions.Expression;
2322
import org.apache.doris.nereids.trees.expressions.literal.StringLiteral;
2423
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
@@ -58,16 +57,7 @@ public class AesDecrypt extends AesCryptoFunction {
5857
* AesDecrypt
5958
*/
6059
public AesDecrypt(Expression arg0, Expression arg1) {
61-
// if there are only 2 params, we need set encryption mode to AES_128_ECB
62-
// this keeps the behavior consistent with old doris ver.
63-
super("aes_decrypt", arg0, arg1, new StringLiteral("AES_128_ECB"));
64-
65-
// check if encryptionMode from session variables is valid
66-
StringLiteral encryptionMode = CryptoFunction.getDefaultBlockEncryptionMode("AES_128_ECB");
67-
if (!AES_MODES.contains(encryptionMode.getValue())) {
68-
throw new AnalysisException(
69-
"session variable block_encryption_mode is invalid with aes");
70-
}
60+
super("aes_decrypt", arg0, arg1, new StringLiteral(""), getDefaultBlockEncryptionMode());
7161
}
7262

7363
public AesDecrypt(Expression arg0, Expression arg1, Expression arg2) {

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/AesDecryptV2.java

-74
This file was deleted.

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/AesEncrypt.java

+1-11
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
package org.apache.doris.nereids.trees.expressions.functions.scalar;
1919

2020
import org.apache.doris.catalog.FunctionSignature;
21-
import org.apache.doris.nereids.exceptions.AnalysisException;
2221
import org.apache.doris.nereids.trees.expressions.Expression;
2322
import org.apache.doris.nereids.trees.expressions.literal.StringLiteral;
2423
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
@@ -58,16 +57,7 @@ public class AesEncrypt extends AesCryptoFunction {
5857
* Some javadoc for checkstyle...
5958
*/
6059
public AesEncrypt(Expression arg0, Expression arg1) {
61-
// if there are only 2 params, we need set encryption mode to AES_128_ECB
62-
// this keeps the behavior consistent with old doris ver.
63-
super("aes_encrypt", arg0, arg1, new StringLiteral("AES_128_ECB"));
64-
65-
// check if encryptionMode from session variables is valid
66-
StringLiteral encryptionMode = CryptoFunction.getDefaultBlockEncryptionMode("AES_128_ECB");
67-
if (!AES_MODES.contains(encryptionMode.getValue())) {
68-
throw new AnalysisException(
69-
"session variable block_encryption_mode is invalid with aes");
70-
}
60+
super("aes_encrypt", arg0, arg1, new StringLiteral(""), getDefaultBlockEncryptionMode());
7161
}
7262

7363
public AesEncrypt(Expression arg0, Expression arg1, Expression arg2) {

0 commit comments

Comments
 (0)