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 <[email protected]>
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));
             }

Reply via email to