This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 43d90990278 Refactor EncryptPredicateRightValueTokenGenerator (#32381)
43d90990278 is described below
commit 43d90990278ee0aea97c7651482a90e4c1fbfbf8
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Aug 3 19:18:13 2024 +0800
Refactor EncryptPredicateRightValueTokenGenerator (#32381)
---
.../predicate/EncryptPredicateRightValueTokenGenerator.java | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateRightValueTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateRightValueTokenGenerator.java
index 7bd4bd9f6c8..da884430264 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateRightValueTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/predicate/EncryptPredicateRightValueTokenGenerator.java
@@ -18,7 +18,7 @@
package org.apache.shardingsphere.encrypt.rewrite.token.generator.predicate;
import lombok.Setter;
-import
org.apache.shardingsphere.encrypt.exception.syntax.UnsupportedEncryptSQLException;
+import
org.apache.shardingsphere.encrypt.exception.metadata.MissingMatchedEncryptQueryAlgorithmException;
import org.apache.shardingsphere.encrypt.rewrite.aware.DatabaseNameAware;
import org.apache.shardingsphere.encrypt.rewrite.aware.EncryptConditionsAware;
import org.apache.shardingsphere.encrypt.rewrite.aware.EncryptRuleAware;
@@ -29,9 +29,9 @@ import
org.apache.shardingsphere.encrypt.rewrite.token.pojo.EncryptPredicateEqua
import
org.apache.shardingsphere.encrypt.rewrite.token.pojo.EncryptPredicateFunctionRightValueToken;
import
org.apache.shardingsphere.encrypt.rewrite.token.pojo.EncryptPredicateInRightValueToken;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
-import org.apache.shardingsphere.encrypt.rule.table.EncryptTable;
import org.apache.shardingsphere.encrypt.rule.column.EncryptColumn;
import org.apache.shardingsphere.encrypt.rule.column.item.LikeQueryColumnItem;
+import org.apache.shardingsphere.encrypt.rule.table.EncryptTable;
import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
@@ -81,11 +81,11 @@ public final class EncryptPredicateRightValueTokenGenerator
implements Collectio
private SQLToken generateSQLToken(final String schemaName, final
EncryptTable encryptTable, final EncryptCondition encryptCondition) {
List<Object> originalValues = encryptCondition.getValues(parameters);
- int startIndex = encryptCondition.getStartIndex();
- return generateSQLToken(schemaName, encryptTable, encryptCondition,
originalValues, startIndex);
+ return generateSQLToken(schemaName, encryptTable, encryptCondition,
originalValues);
}
- private SQLToken generateSQLToken(final String schemaName, final
EncryptTable encryptTable, final EncryptCondition encryptCondition, final
List<Object> originalValues, final int startIndex) {
+ private SQLToken generateSQLToken(final String schemaName, final
EncryptTable encryptTable, final EncryptCondition encryptCondition, final
List<Object> originalValues) {
+ int startIndex = encryptCondition.getStartIndex();
int stopIndex = encryptCondition.getStopIndex();
Map<Integer, Object> indexValues =
getPositionValues(encryptCondition.getPositionValueMap().keySet(),
getEncryptedValues(schemaName, encryptTable, encryptCondition, originalValues));
Collection<Integer> parameterMarkerIndexes =
encryptCondition.getPositionIndexMap().keySet();
@@ -101,7 +101,8 @@ public final class EncryptPredicateRightValueTokenGenerator
implements Collectio
private List<Object> getEncryptedValues(final String schemaName, final
EncryptTable encryptTable, final EncryptCondition encryptCondition, final
List<Object> originalValues) {
EncryptColumn encryptColumn =
encryptTable.getEncryptColumn(encryptCondition.getColumnName());
if (encryptCondition instanceof EncryptBinaryCondition &&
"LIKE".equalsIgnoreCase(((EncryptBinaryCondition)
encryptCondition).getOperator())) {
- LikeQueryColumnItem likeQueryColumnItem =
encryptColumn.getLikeQuery().orElseThrow(() -> new
UnsupportedEncryptSQLException("LIKE"));
+ LikeQueryColumnItem likeQueryColumnItem =
encryptColumn.getLikeQuery()
+ .orElseThrow(() -> new
MissingMatchedEncryptQueryAlgorithmException(encryptTable.getTable(),
encryptCondition.getColumnName(), "LIKE"));
return likeQueryColumnItem.encrypt(databaseName, schemaName,
encryptCondition.getTableName(), encryptCondition.getColumnName(),
originalValues);
}
return encryptColumn.getAssistedQuery()