You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ch...@apache.org on 2023/08/07 05:32:50 UTC
[shardingsphere] branch master updated: Modify EncryptProjectionTokenGenerator projection logic when column set derived alias (#27959)
This is an automated email from the ASF dual-hosted git repository.
chengzhang 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 80dc4744054 Modify EncryptProjectionTokenGenerator projection logic when column set derived alias (#27959)
80dc4744054 is described below
commit 80dc47440546ed5d1093564aa4d66c5e98825254
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Mon Aug 7 13:32:44 2023 +0800
Modify EncryptProjectionTokenGenerator projection logic when column set derived alias (#27959)
---
.../rewrite/token/generator/EncryptProjectionTokenGenerator.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
index 01b2e176ecc..9bfdd0879b5 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
@@ -25,6 +25,7 @@ import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.encrypt.rule.EncryptTable;
import org.apache.shardingsphere.encrypt.rule.column.EncryptColumn;
import org.apache.shardingsphere.encrypt.rule.column.item.AssistedQueryColumnItem;
+import org.apache.shardingsphere.infra.binder.context.segment.select.projection.DerivedColumn;
import org.apache.shardingsphere.infra.binder.context.segment.select.projection.Projection;
import org.apache.shardingsphere.infra.binder.context.segment.select.projection.ProjectionsContext;
import org.apache.shardingsphere.infra.binder.context.segment.select.projection.impl.ColumnProjection;
@@ -130,7 +131,8 @@ public final class EncryptProjectionTokenGenerator implements CollectionSQLToken
String tableName = columnTableNames.get(each.getExpression());
Optional<EncryptTable> encryptTable = null == tableName ? Optional.empty() : encryptRule.findEncryptTable(tableName);
if (!encryptTable.isPresent() || !encryptTable.get().isEncryptColumn(each.getColumnLabel()) || containsTableSubquery(selectStatementContext)) {
- projections.add(each.getAlias().map(optional -> (Projection) new ColumnProjection(null, optional, null, databaseType)).orElse(each));
+ projections.add(each.getAlias().filter(alias -> !DerivedColumn.isDerivedColumnName(alias.getValue()))
+ .map(optional -> (Projection) new ColumnProjection(null, optional, null, databaseType)).orElse(each));
} else if (each instanceof ColumnProjection) {
projections.addAll(generateProjections(encryptTable.get().getEncryptColumn(((ColumnProjection) each).getName().getValue()), (ColumnProjection) each, subqueryType, true, segment));
}