You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ji...@apache.org on 2023/06/23 15:49:14 UTC
[shardingsphere] branch master updated: Refactor EncryptTable.getLogicAndCipherColumns() (#26511)
This is an automated email from the ASF dual-hosted git repository.
jianglongtao 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 ac1ea9d976e Refactor EncryptTable.getLogicAndCipherColumns() (#26511)
ac1ea9d976e is described below
commit ac1ea9d976eb68bdc327a992b213e29f3a4df09d
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Fri Jun 23 23:49:07 2023 +0800
Refactor EncryptTable.getLogicAndCipherColumns() (#26511)
* Refactor EncryptTable.getLogicAndCipherColumns()
* Fix EncryptAlterTableTokenGenerator
---
.../token/generator/EncryptAlterTableTokenGenerator.java | 2 +-
.../insert/EncryptInsertCipherNameTokenGenerator.java | 10 +++++-----
.../apache/shardingsphere/encrypt/rule/EncryptTable.java | 13 -------------
.../shardingsphere/encrypt/rule/EncryptTableTest.java | 6 ------
4 files changed, 6 insertions(+), 25 deletions(-)
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAlterTableTokenGenerator.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAlterTableTokenGenerator.java
index a85c902184d..493666cdb47 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAlterTableTokenGenerator.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAlterTableTokenGenerator.java
@@ -173,7 +173,7 @@ public final class EncryptAlterTableTokenGenerator implements CollectionSQLToken
private Collection<? extends SQLToken> getChangeColumnTokens(final EncryptTable encryptTable, final ChangeColumnDefinitionSegment segment) {
isSameEncryptColumn(encryptTable, segment);
String columnName = segment.getColumnDefinition().getColumnName().getIdentifier().getValue();
- String previousColumnName = segment.getColumnDefinition().getColumnName().getIdentifier().getValue();
+ String previousColumnName = segment.getPreviousColumn().getIdentifier().getValue();
if (!encryptTable.isEncryptColumn(columnName) || !encryptTable.isEncryptColumn(previousColumnName)) {
return Collections.emptyList();
}
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 0eb879bfb1e..684073a6ce0 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
@@ -21,6 +21,7 @@ import com.google.common.base.Preconditions;
import lombok.Setter;
import org.apache.shardingsphere.encrypt.rewrite.aware.EncryptRuleAware;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
+import org.apache.shardingsphere.encrypt.rule.EncryptTable;
import org.apache.shardingsphere.infra.binder.segment.select.projection.Projection;
import org.apache.shardingsphere.infra.binder.segment.select.projection.impl.ColumnProjection;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
@@ -34,7 +35,6 @@ import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.Insert
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
-import java.util.Map;
import java.util.Optional;
/**
@@ -58,12 +58,12 @@ public final class EncryptInsertCipherNameTokenGenerator implements CollectionSQ
public Collection<SQLToken> generateSQLTokens(final InsertStatementContext insertStatementContext) {
Optional<InsertColumnsSegment> insertColumnsSegment = insertStatementContext.getSqlStatement().getInsertColumns();
Preconditions.checkState(insertColumnsSegment.isPresent());
- Map<String, String> logicAndCipherColumns = encryptRule.getEncryptTable(
- insertStatementContext.getSqlStatement().getTable().getTableName().getIdentifier().getValue()).getLogicAndCipherColumns();
+ EncryptTable encryptTable = encryptRule.getEncryptTable(insertStatementContext.getSqlStatement().getTable().getTableName().getIdentifier().getValue());
Collection<SQLToken> result = new LinkedList<>();
for (ColumnSegment each : insertColumnsSegment.get().getColumns()) {
- if (logicAndCipherColumns.containsKey(each.getIdentifier().getValue())) {
- Collection<Projection> projections = Collections.singleton(new ColumnProjection(null, logicAndCipherColumns.get(each.getIdentifier().getValue()), null));
+ String columnName = each.getIdentifier().getValue();
+ if (encryptTable.isEncryptColumn(columnName)) {
+ Collection<Projection> projections = Collections.singleton(new ColumnProjection(null, encryptTable.getEncryptColumn(columnName).getCipher().getName(), null));
result.add(new SubstitutableColumnNameToken(each.getStartIndex(), each.getStopIndex(), projections));
}
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptTable.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptTable.java
index 1b54bb96e6b..5cb8471f7d3 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptTable.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptTable.java
@@ -153,19 +153,6 @@ public final class EncryptTable {
return result;
}
- /**
- * Get logic and cipher columns.
- *
- * @return logic and cipher columns
- */
- public Map<String, String> getLogicAndCipherColumns() {
- Map<String, String> result = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
- for (Entry<String, EncryptColumn> entry : columns.entrySet()) {
- result.put(entry.getKey(), entry.getValue().getCipher().getName());
- }
- return result;
- }
-
/**
* Is encrypt column or not.
*
diff --git a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rule/EncryptTableTest.java b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rule/EncryptTableTest.java
index 2ef886e9c67..66ce1c232af 100644
--- a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rule/EncryptTableTest.java
+++ b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rule/EncryptTableTest.java
@@ -87,10 +87,4 @@ class EncryptTableTest {
void assertGetAssistedQueryColumns() {
assertThat(encryptTable.getAssistedQueryColumns(), is(Collections.singletonList("assistedQueryColumn")));
}
-
- @Test
- void assertGetLogicAndCipherColumns() {
- assertThat(encryptTable.getLogicAndCipherColumns(), is(Collections.singletonMap("logicColumn", "cipherColumn")));
- assertTrue(encryptTable.getLogicAndCipherColumns().containsKey("LOGICCOLUMN"));
- }
}