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));
}