This is an automated email from the ASF dual-hosted git repository. zhaojinchao 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 307c253f08c Minor refactor for encrypt insert token generator (#34575) 307c253f08c is described below commit 307c253f08ceb5b189e200c3bdb4ed4fd30538b7 Author: Zhengqiang Duan <duanzhengqi...@apache.org> AuthorDate: Thu Feb 6 19:11:09 2025 +0800 Minor refactor for encrypt insert token generator (#34575) --- .../insert/EncryptInsertCipherNameTokenGenerator.java | 12 +++++++----- .../insert/EncryptInsertDerivedColumnsTokenGenerator.java | 8 ++++++-- .../EncryptInsertDerivedColumnsTokenGeneratorTest.java | 2 +- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertCipherNameTokenGenerator.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertCipherNameTokenGenerator.java index fc7a31bef0f..a65860305af 100644 --- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertCipherNameTokenGenerator.java +++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertCipherNameTokenGenerator.java @@ -70,14 +70,16 @@ public final class EncryptInsertCipherNameTokenGenerator implements CollectionSQ if (null != insertStatementContext.getInsertSelectContext()) { checkInsertSelectEncryptor(insertStatementContext.getInsertSelectContext().getSelectStatementContext(), insertColumns); } - EncryptTable encryptTable = rule.getEncryptTable(insertStatementContext.getSqlStatement().getTable().map(optional -> optional.getTableName().getIdentifier().getValue()).orElse("")); + Optional<EncryptTable> encryptTable = rule.findEncryptTable(insertStatementContext.getSqlStatement().getTable().map(optional -> optional.getTableName().getIdentifier().getValue()).orElse("")); + if (!encryptTable.isPresent()) { + return Collections.emptyList(); + } Collection<SQLToken> result = new LinkedList<>(); for (ColumnSegment each : insertColumns) { String columnName = each.getIdentifier().getValue(); - if (encryptTable.isEncryptColumn(columnName)) { - Collection<Projection> projections = - Collections.singleton(new ColumnProjection(null, new IdentifierValue(encryptTable.getEncryptColumn(columnName).getCipher().getName(), each.getIdentifier().getQuoteCharacter()), - null, insertStatementContext.getDatabaseType())); + if (encryptTable.get().isEncryptColumn(columnName)) { + IdentifierValue name = new IdentifierValue(encryptTable.get().getEncryptColumn(columnName).getCipher().getName(), each.getIdentifier().getQuoteCharacter()); + Collection<Projection> projections = Collections.singleton(new ColumnProjection(null, name, null, insertStatementContext.getDatabaseType())); result.add(new SubstitutableColumnNameToken(each.getStartIndex(), each.getStopIndex(), projections, insertStatementContext.getDatabaseType())); } } diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGenerator.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGenerator.java index 2385ce37b22..189dfb30711 100644 --- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGenerator.java +++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGenerator.java @@ -34,6 +34,7 @@ import java.util.Collection; import java.util.Collections; import java.util.LinkedList; import java.util.List; +import java.util.Optional; /** * Insert derived columns token generator for encrypt. @@ -53,9 +54,12 @@ public final class EncryptInsertDerivedColumnsTokenGenerator implements Collecti @Override public Collection<SQLToken> generateSQLTokens(final InsertStatementContext insertStatementContext) { Collection<SQLToken> result = new LinkedList<>(); - EncryptTable encryptTable = rule.getEncryptTable(insertStatementContext.getSqlStatement().getTable().map(optional -> optional.getTableName().getIdentifier().getValue()).orElse("")); + Optional<EncryptTable> encryptTable = rule.findEncryptTable(insertStatementContext.getSqlStatement().getTable().map(optional -> optional.getTableName().getIdentifier().getValue()).orElse("")); + if (!encryptTable.isPresent()) { + return Collections.emptyList(); + } for (ColumnSegment each : insertStatementContext.getSqlStatement().getColumns()) { - List<String> derivedColumnNames = getDerivedColumnNames(encryptTable, each); + List<String> derivedColumnNames = getDerivedColumnNames(encryptTable.get(), each); if (!derivedColumnNames.isEmpty()) { result.add(new InsertColumnsToken(each.getStopIndex() + 1, derivedColumnNames, each.getIdentifier().getQuoteCharacter())); } diff --git a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGeneratorTest.java b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGeneratorTest.java index 0aeaad64c43..6f4f0577f75 100644 --- a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGeneratorTest.java +++ b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertDerivedColumnsTokenGeneratorTest.java @@ -92,7 +92,7 @@ class EncryptInsertDerivedColumnsTokenGeneratorTest { EncryptTable encryptTable = mock(EncryptTable.class, RETURNS_DEEP_STUBS); when(encryptTable.isEncryptColumn("foo_col")).thenReturn(true); when(encryptTable.getEncryptColumn("foo_col").getAssistedQuery()).thenReturn(Optional.of(new AssistedQueryColumnItem("assisted_query_col", mock(EncryptAlgorithm.class)))); - when(result.getEncryptTable("foo_tbl")).thenReturn(encryptTable); + when(result.findEncryptTable("foo_tbl")).thenReturn(Optional.of(encryptTable)); return result; }