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 f5628e1b534 Refactor EncryptColumnSegment using 
EncryptColumnItemSegment (#26052)
f5628e1b534 is described below

commit f5628e1b534c6667d68b521d5abd443e6dcad992
Author: ChenJiaHao <[email protected]>
AuthorDate: Tue Jun 6 14:03:53 2023 +0800

    Refactor EncryptColumnSegment using EncryptColumnItemSegment (#26052)
    
    * Refactor EncryptColumnSegment using EncryptColumnItemSegment
    
    * Fix code style
    
    * Fix EncryptRuleStatementConverter
    
    * Fix encrypt DistSQL Updater
    
    * Fix code style
---
 .../converter/EncryptRuleStatementConverter.java   | 47 ++++++-----
 .../update/AlterEncryptRuleStatementUpdater.java   | 10 ++-
 .../update/CreateEncryptRuleStatementUpdater.java  | 10 ++-
 .../EncryptRuleStatementConverterTest.java         | 11 ++-
 .../AlterEncryptRuleStatementUpdaterTest.java      |  9 +-
 .../CreateEncryptRuleStatementUpdaterTest.java     | 39 +++++----
 .../core/EncryptDistSQLStatementVisitor.java       | 12 +--
 ...nSegment.java => EncryptColumnItemSegment.java} | 14 +---
 .../parser/segment/EncryptColumnSegment.java       | 13 +--
 .../segment/distsql/rdl/EncryptColumnAssert.java   | 21 ++++-
 .../impl/distsql/rdl/ExpectedEncryptColumn.java    | 17 ++--
 ...tColumn.java => ExpectedEncryptColumnItem.java} | 14 +---
 .../parser/src/main/resources/case/rdl/alter.xml   | 72 ++++++++++------
 .../parser/src/main/resources/case/rdl/create.xml  | 98 ++++++++++++++--------
 14 files changed, 218 insertions(+), 169 deletions(-)

diff --git 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleStatementConverter.java
 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleStatementConverter.java
index 69f644779da..ab105ee0406 100644
--- 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleStatementConverter.java
+++ 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleStatementConverter.java
@@ -23,6 +23,7 @@ import 
org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
 import 
org.apache.shardingsphere.encrypt.api.config.rule.EncryptColumnItemRuleConfiguration;
 import 
org.apache.shardingsphere.encrypt.api.config.rule.EncryptColumnRuleConfiguration;
 import 
org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfiguration;
+import 
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptColumnItemSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptColumnSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptRuleSegment;
 import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
@@ -63,43 +64,49 @@ public final class EncryptRuleStatementConverter {
     }
     
     private static EncryptColumnRuleConfiguration 
createEncryptColumnRuleConfiguration(final String tableName, final 
EncryptColumnSegment columnSegment) {
-        EncryptColumnItemRuleConfiguration cipherColumnConfig = new 
EncryptColumnItemRuleConfiguration(columnSegment.getCipherColumn(), 
getEncryptorName(tableName, columnSegment.getName()));
+        EncryptColumnItemRuleConfiguration cipherColumnConfig = new 
EncryptColumnItemRuleConfiguration(
+                columnSegment.getCipher().getName(), 
getEncryptorName(tableName, columnSegment.getName()));
         EncryptColumnRuleConfiguration result = new 
EncryptColumnRuleConfiguration(columnSegment.getName(), cipherColumnConfig);
-        String assistedQueryEncryptorName = null == 
columnSegment.getAssistedQueryEncryptor() ? null : 
getAssistedQueryEncryptorName(tableName, columnSegment.getName());
-        EncryptColumnItemRuleConfiguration assistedQueryColumnConfig = new 
EncryptColumnItemRuleConfiguration(columnSegment.getAssistedQueryColumn(), 
assistedQueryEncryptorName);
+        if (null != columnSegment.getAssistedQuery()) {
+            setAssistedQuery(tableName, columnSegment, result);
+        }
+        if (null != columnSegment.getLikeQuery()) {
+            setLikeQuery(tableName, columnSegment, result);
+        }
+        return result;
+    }
+    
+    private static void setAssistedQuery(final String tableName, final 
EncryptColumnSegment columnSegment, final EncryptColumnRuleConfiguration 
result) {
+        String assistedQueryEncryptorName = null == 
columnSegment.getAssistedQuery().getEncryptor() ? null
+                : getAssistedQueryEncryptorName(tableName, 
columnSegment.getName());
+        EncryptColumnItemRuleConfiguration assistedQueryColumnConfig = new 
EncryptColumnItemRuleConfiguration(columnSegment.getAssistedQuery().getName(), 
assistedQueryEncryptorName);
         result.setAssistedQuery(assistedQueryColumnConfig);
-        String likeQueryEncryptorName = null == 
columnSegment.getLikeQueryEncryptor() ? null : 
getLikeQueryEncryptorName(tableName, columnSegment.getName());
-        EncryptColumnItemRuleConfiguration likeQueryColumnConfig = new 
EncryptColumnItemRuleConfiguration(columnSegment.getLikeQueryColumn(), 
likeQueryEncryptorName);
+    }
+    
+    private static void setLikeQuery(final String tableName, final 
EncryptColumnSegment columnSegment, final EncryptColumnRuleConfiguration 
result) {
+        String likeQueryEncryptorName = null == 
columnSegment.getLikeQuery().getEncryptor() ? null : 
getLikeQueryEncryptorName(tableName, columnSegment.getName());
+        EncryptColumnItemRuleConfiguration likeQueryColumnConfig = new 
EncryptColumnItemRuleConfiguration(columnSegment.getLikeQuery().getName(), 
likeQueryEncryptorName);
         result.setLikeQuery(likeQueryColumnConfig);
-        return result;
     }
     
     private static Map<String, AlgorithmConfiguration> 
createEncryptorConfigurations(final EncryptRuleSegment ruleSegment) {
         Map<String, AlgorithmConfiguration> result = new 
HashMap<>(ruleSegment.getColumns().size(), 1F);
         for (EncryptColumnSegment each : ruleSegment.getColumns()) {
-            result.put(getEncryptorName(ruleSegment.getTableName(), 
each.getName()), createEncryptorConfiguration(each));
-            if (null != each.getAssistedQueryEncryptor()) {
-                
result.put(getAssistedQueryEncryptorName(ruleSegment.getTableName(), 
each.getName()), createAssistedQueryEncryptorConfiguration(each));
+            result.put(getEncryptorName(ruleSegment.getTableName(), 
each.getName()), createEncryptorConfiguration(each.getCipher()));
+            if (null != each.getAssistedQuery() && null != 
each.getAssistedQuery().getEncryptor()) {
+                
result.put(getAssistedQueryEncryptorName(ruleSegment.getTableName(), 
each.getName()), createEncryptorConfiguration(each.getAssistedQuery()));
             }
-            if (null != each.getLikeQueryEncryptor()) {
-                
result.put(getLikeQueryEncryptorName(ruleSegment.getTableName(), 
each.getName()), createLikeQueryEncryptorConfiguration(each));
+            if (null != each.getLikeQuery() && null != 
each.getLikeQuery().getEncryptor()) {
+                
result.put(getLikeQueryEncryptorName(ruleSegment.getTableName(), 
each.getName()), createEncryptorConfiguration(each.getLikeQuery()));
             }
         }
         return result;
     }
     
-    private static AlgorithmConfiguration createEncryptorConfiguration(final 
EncryptColumnSegment columnSegment) {
+    private static AlgorithmConfiguration createEncryptorConfiguration(final 
EncryptColumnItemSegment columnSegment) {
         return new 
AlgorithmConfiguration(columnSegment.getEncryptor().getName(), 
columnSegment.getEncryptor().getProps());
     }
     
-    private static AlgorithmConfiguration 
createAssistedQueryEncryptorConfiguration(final EncryptColumnSegment 
columnSegment) {
-        return new 
AlgorithmConfiguration(columnSegment.getAssistedQueryEncryptor().getName(), 
columnSegment.getAssistedQueryEncryptor().getProps());
-    }
-    
-    private static AlgorithmConfiguration 
createLikeQueryEncryptorConfiguration(final EncryptColumnSegment columnSegment) 
{
-        return new 
AlgorithmConfiguration(columnSegment.getLikeQueryEncryptor().getName(), 
columnSegment.getLikeQueryEncryptor().getProps());
-    }
-    
     private static String getEncryptorName(final String tableName, final 
String columnName) {
         return String.format("%s_%s", tableName, columnName);
     }
diff --git 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java
 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java
index 5feafe1afab..e2a22cf2f68 100644
--- 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java
+++ 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java
@@ -70,9 +70,13 @@ public final class AlterEncryptRuleStatementUpdater 
implements RuleDefinitionAlt
     private void checkToBeAlteredEncryptors(final AlterEncryptRuleStatement 
sqlStatement) {
         Collection<AlgorithmSegment> encryptors = new LinkedHashSet<>();
         sqlStatement.getRules().forEach(each -> 
each.getColumns().forEach(column -> {
-            encryptors.add(column.getEncryptor());
-            encryptors.add(column.getAssistedQueryEncryptor());
-            encryptors.add(column.getLikeQueryEncryptor());
+            encryptors.add(column.getCipher().getEncryptor());
+            if (null != column.getAssistedQuery()) {
+                encryptors.add(column.getAssistedQuery().getEncryptor());
+            }
+            if (null != column.getLikeQuery()) {
+                encryptors.add(column.getLikeQuery().getEncryptor());
+            }
         }));
         encryptors.stream().filter(Objects::nonNull).forEach(each -> 
TypedSPILoader.checkService(EncryptAlgorithm.class, each.getName(), 
each.getProps()));
     }
diff --git 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdater.java
 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdater.java
index 03af2258db5..c653346ee75 100644
--- 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdater.java
+++ 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdater.java
@@ -82,9 +82,13 @@ public final class CreateEncryptRuleStatementUpdater 
implements RuleDefinitionCr
     private void checkToBeCreatedEncryptors(final CreateEncryptRuleStatement 
sqlStatement) {
         Collection<AlgorithmSegment> encryptors = new LinkedHashSet<>();
         sqlStatement.getRules().forEach(each -> 
each.getColumns().forEach(column -> {
-            encryptors.add(column.getEncryptor());
-            encryptors.add(column.getAssistedQueryEncryptor());
-            encryptors.add(column.getLikeQueryEncryptor());
+            encryptors.add(column.getCipher().getEncryptor());
+            if (null != column.getAssistedQuery()) {
+                encryptors.add(column.getAssistedQuery().getEncryptor());
+            }
+            if (null != column.getLikeQuery()) {
+                encryptors.add(column.getLikeQuery().getEncryptor());
+            }
         }));
         encryptors.stream().filter(Objects::nonNull).forEach(each -> 
TypedSPILoader.checkService(EncryptAlgorithm.class, each.getName(), 
each.getProps()));
     }
diff --git 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleStatementConverterTest.java
 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleStatementConverterTest.java
index b9a4660ef20..ef1c1549495 100644
--- 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleStatementConverterTest.java
+++ 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleStatementConverterTest.java
@@ -19,6 +19,7 @@ package 
org.apache.shardingsphere.encrypt.distsql.handler.converter;
 
 import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
+import 
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptColumnItemSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptColumnSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptRuleSegment;
 import org.apache.shardingsphere.test.util.PropertiesBuilder;
@@ -43,12 +44,14 @@ class EncryptRuleStatementConverterTest {
         
assertTrue(actual.getTables().iterator().next().getColumns().iterator().next().getAssistedQuery().isPresent());
         
assertThat(actual.getTables().iterator().next().getColumns().iterator().next().getAssistedQuery().get().getName(),
 is("assisted_column"));
         
assertThat(actual.getTables().iterator().next().getColumns().iterator().next().getCipher().getEncryptorName(),
 is("t_encrypt_user_id"));
+        
assertThat(actual.getTables().iterator().next().getColumns().iterator().next().getAssistedQuery().get().getEncryptorName(),
 is("assist_t_encrypt_user_id"));
+        
assertThat(actual.getTables().iterator().next().getColumns().iterator().next().getLikeQuery().get().getEncryptorName(),
 is("like_t_encrypt_user_id"));
     }
     
     private Collection<EncryptColumnSegment> createColumns() {
-        return Collections.singleton(new EncryptColumnSegment("user_id", 
"user_cipher", "assisted_column", "like_column",
-                new AlgorithmSegment("MD5", PropertiesBuilder.build(new 
Property("MD5-key", "MD5-value"))),
-                new AlgorithmSegment("MD5", PropertiesBuilder.build(new 
Property("MD5-key", "MD5-value"))),
-                new AlgorithmSegment("CHAR_DIGEST_LIKE", 
PropertiesBuilder.build(new Property("MD5-key", "MD5-value")))));
+        return Collections.singleton(new EncryptColumnSegment("user_id",
+                new EncryptColumnItemSegment("user_cipher", new 
AlgorithmSegment("MD5", PropertiesBuilder.build(new Property("MD5-key", 
"MD5-value")))),
+                new EncryptColumnItemSegment("assisted_column", new 
AlgorithmSegment("MD5", PropertiesBuilder.build(new Property("MD5-key", 
"MD5-value")))),
+                new EncryptColumnItemSegment("like_column", new 
AlgorithmSegment("MD5", PropertiesBuilder.build(new Property("MD5-key", 
"MD5-value"))))));
     }
 }
diff --git 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdaterTest.java
 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdaterTest.java
index 4a0afd28b6c..387815c1125 100644
--- 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdaterTest.java
+++ 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdaterTest.java
@@ -23,6 +23,7 @@ import 
org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
 import 
org.apache.shardingsphere.encrypt.api.config.rule.EncryptColumnItemRuleConfiguration;
 import 
org.apache.shardingsphere.encrypt.api.config.rule.EncryptColumnRuleConfiguration;
 import 
org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfiguration;
+import 
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptColumnItemSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptColumnSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptRuleSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.AlterEncryptRuleStatement;
@@ -77,10 +78,10 @@ class AlterEncryptRuleStatementUpdaterTest {
     }
     
     private AlterEncryptRuleStatement createSQLStatement(final String 
encryptorName) {
-        EncryptColumnSegment columnSegment = new 
EncryptColumnSegment("user_id", "user_cipher", "assisted_column", "like_column",
-                new AlgorithmSegment(encryptorName, new Properties()),
-                new AlgorithmSegment("test", new Properties()),
-                new AlgorithmSegment("test", new Properties()));
+        EncryptColumnSegment columnSegment = new 
EncryptColumnSegment("user_id",
+                new EncryptColumnItemSegment("user_cipher", new 
AlgorithmSegment(encryptorName, new Properties())),
+                new EncryptColumnItemSegment("assisted_column", new 
AlgorithmSegment("test", new Properties())),
+                new EncryptColumnItemSegment("like_column", new 
AlgorithmSegment("test", new Properties())));
         EncryptRuleSegment ruleSegment = new EncryptRuleSegment("t_encrypt", 
Collections.singleton(columnSegment));
         return new 
AlterEncryptRuleStatement(Collections.singleton(ruleSegment));
     }
diff --git 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdaterTest.java
 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdaterTest.java
index 1f5d42fd0ed..f94bb8caf2f 100644
--- 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdaterTest.java
+++ 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdaterTest.java
@@ -21,6 +21,7 @@ import 
org.apache.shardingsphere.distsql.handler.exception.rule.DuplicateRuleExc
 import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
 import 
org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfiguration;
+import 
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptColumnItemSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptColumnSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptRuleSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.CreateEncryptRuleStatement;
@@ -76,22 +77,24 @@ class CreateEncryptRuleStatementUpdaterTest {
     }
     
     private CreateEncryptRuleStatement createAESEncryptRuleSQLStatement(final 
boolean ifNotExists) {
-        EncryptColumnSegment encryptColumnSegment = new 
EncryptColumnSegment("user_id", "user_cipher", "assisted_column", "like_column",
-                new AlgorithmSegment("AES", PropertiesBuilder.build(new 
Property("aes-key-value", "abc"))), null, null);
+        EncryptColumnSegment encryptColumnSegment = new 
EncryptColumnSegment("user_id",
+                new EncryptColumnItemSegment("user_cipher", new 
AlgorithmSegment("AES", PropertiesBuilder.build(new Property("aes-key-value", 
"abc")))),
+                new EncryptColumnItemSegment("assisted_column", null),
+                new EncryptColumnItemSegment("like_column", null));
         Collection<EncryptRuleSegment> rules = new LinkedList<>();
         rules.add(new EncryptRuleSegment("t_user", 
Collections.singleton(encryptColumnSegment)));
         return new CreateEncryptRuleStatement(ifNotExists, rules);
     }
     
     private CreateEncryptRuleStatement createSQLStatement(final boolean 
ifNotExists, final String encryptorName) {
-        EncryptColumnSegment tUserColumnSegment = new 
EncryptColumnSegment("user_id", "user_cipher", "assisted_column", "like_column",
-                new AlgorithmSegment(encryptorName, new Properties()),
-                new AlgorithmSegment(encryptorName, new Properties()),
-                new AlgorithmSegment(encryptorName, new Properties()));
-        EncryptColumnSegment tOrderColumnSegment = new 
EncryptColumnSegment("order_id", "order_cipher", "assisted_column", 
"like_column",
-                new AlgorithmSegment(encryptorName, new Properties()),
-                new AlgorithmSegment(encryptorName, new Properties()),
-                new AlgorithmSegment(encryptorName, new Properties()));
+        EncryptColumnSegment tUserColumnSegment = new 
EncryptColumnSegment("user_id",
+                new EncryptColumnItemSegment("user_cipher", new 
AlgorithmSegment(encryptorName, new Properties())),
+                new EncryptColumnItemSegment("assisted_column", new 
AlgorithmSegment(encryptorName, new Properties())),
+                new EncryptColumnItemSegment("like_column", new 
AlgorithmSegment(encryptorName, new Properties())));
+        EncryptColumnSegment tOrderColumnSegment = new 
EncryptColumnSegment("order_id",
+                new EncryptColumnItemSegment("order_cipher", new 
AlgorithmSegment(encryptorName, new Properties())),
+                new EncryptColumnItemSegment("assisted_column", new 
AlgorithmSegment(encryptorName, new Properties())),
+                new EncryptColumnItemSegment("like_column", new 
AlgorithmSegment(encryptorName, new Properties())));
         EncryptRuleSegment tUserRuleSegment = new EncryptRuleSegment("t_user", 
Collections.singleton(tUserColumnSegment));
         EncryptRuleSegment tOrderRuleSegment = new 
EncryptRuleSegment("t_order", Collections.singleton(tOrderColumnSegment));
         Collection<EncryptRuleSegment> rules = new LinkedList<>();
@@ -115,14 +118,14 @@ class CreateEncryptRuleStatementUpdaterTest {
     }
     
     private CreateEncryptRuleStatement createWrongAESEncryptorSQLStatement() {
-        EncryptColumnSegment tUserColumnSegment = new 
EncryptColumnSegment("user_id", "user_cipher", "assisted_column", "like_column",
-                new AlgorithmSegment("AES", new Properties()),
-                new AlgorithmSegment("AES", new Properties()),
-                new AlgorithmSegment("CHAR_DIGEST_LIKE", new Properties()));
-        EncryptColumnSegment tOrderColumnSegment = new 
EncryptColumnSegment("order_id", "order_cipher", "assisted_column", 
"like_column",
-                new AlgorithmSegment("AES", new Properties()),
-                new AlgorithmSegment("AES", new Properties()),
-                new AlgorithmSegment("CHAR_DIGEST_LIKE", new Properties()));
+        EncryptColumnSegment tUserColumnSegment = new 
EncryptColumnSegment("user_id",
+                new EncryptColumnItemSegment("user_cipher", new 
AlgorithmSegment("AES", new Properties())),
+                new EncryptColumnItemSegment("assisted_column", new 
AlgorithmSegment("AES", new Properties())),
+                new EncryptColumnItemSegment("like_column", new 
AlgorithmSegment("CHAR_DIGEST_LIKE", new Properties())));
+        EncryptColumnSegment tOrderColumnSegment = new 
EncryptColumnSegment("order_id",
+                new EncryptColumnItemSegment("order_cipher", new 
AlgorithmSegment("AES", new Properties())),
+                new EncryptColumnItemSegment("assisted_column", new 
AlgorithmSegment("AES", new Properties())),
+                new EncryptColumnItemSegment("like_column", new 
AlgorithmSegment("CHAR_DIGEST_LIKE", new Properties())));
         EncryptRuleSegment tUserRuleSegment = new EncryptRuleSegment("t_user", 
Collections.singleton(tUserColumnSegment));
         EncryptRuleSegment tOrderRuleSegment = new 
EncryptRuleSegment("t_order", Collections.singleton(tOrderColumnSegment));
         Collection<EncryptRuleSegment> rules = new LinkedList<>();
diff --git 
a/features/encrypt/distsql/parser/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.java
 
b/features/encrypt/distsql/parser/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.java
index 27a0faed8e9..770cfe9e4ce 100644
--- 
a/features/encrypt/distsql/parser/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.java
+++ 
b/features/encrypt/distsql/parser/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.java
@@ -32,6 +32,7 @@ import 
org.apache.shardingsphere.distsql.parser.autogen.EncryptDistSQLStatementP
 import 
org.apache.shardingsphere.distsql.parser.autogen.EncryptDistSQLStatementParser.ShowEncryptRulesContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.EncryptDistSQLStatementParser.TableNameContext;
 import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
+import 
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptColumnItemSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptColumnSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptRuleSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.AlterEncryptRuleStatement;
@@ -84,12 +85,11 @@ public final class EncryptDistSQLStatementVisitor extends 
EncryptDistSQLStatemen
     @Override
     public ASTNode visitEncryptColumnDefinition(final 
EncryptColumnDefinitionContext ctx) {
         return new 
EncryptColumnSegment(getIdentifierValue(ctx.columnDefinition().columnName()),
-                
getIdentifierValue(ctx.cipherColumnDefinition().cipherColumnName()),
-                null == ctx.assistedQueryColumnDefinition() ? null : 
getIdentifierValue(ctx.assistedQueryColumnDefinition().assistedQueryColumnName()),
-                null == ctx.likeQueryColumnDefinition() ? null : 
getIdentifierValue(ctx.likeQueryColumnDefinition().likeQueryColumnName()),
-                (AlgorithmSegment) 
visit(ctx.encryptAlgorithm().algorithmDefinition()),
-                null == ctx.assistedQueryAlgorithm() ? null : 
(AlgorithmSegment) visit(ctx.assistedQueryAlgorithm().algorithmDefinition()),
-                null == ctx.likeQueryAlgorithm() ? null : (AlgorithmSegment) 
visit(ctx.likeQueryAlgorithm().algorithmDefinition()));
+                new 
EncryptColumnItemSegment(getIdentifierValue(ctx.cipherColumnDefinition().cipherColumnName()),
 (AlgorithmSegment) visit(ctx.encryptAlgorithm().algorithmDefinition())),
+                null == ctx.assistedQueryColumnDefinition() ? null : new 
EncryptColumnItemSegment(getIdentifierValue(ctx.assistedQueryColumnDefinition().assistedQueryColumnName()),
+                        null == ctx.assistedQueryAlgorithm() ? null : 
(AlgorithmSegment) visit(ctx.assistedQueryAlgorithm().algorithmDefinition())),
+                null == ctx.likeQueryColumnDefinition() ? null : new 
EncryptColumnItemSegment(getIdentifierValue(ctx.likeQueryColumnDefinition().likeQueryColumnName()),
+                        null == ctx.likeQueryAlgorithm() ? null : 
(AlgorithmSegment) visit(ctx.likeQueryAlgorithm().algorithmDefinition())));
     }
     
     @Override
diff --git 
a/features/encrypt/distsql/statement/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/segment/EncryptColumnSegment.java
 
b/features/encrypt/distsql/statement/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/segment/EncryptColumnItemSegment.java
similarity index 77%
copy from 
features/encrypt/distsql/statement/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/segment/EncryptColumnSegment.java
copy to 
features/encrypt/distsql/statement/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/segment/EncryptColumnItemSegment.java
index 21360eccd3f..ae60ba3d124 100644
--- 
a/features/encrypt/distsql/statement/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/segment/EncryptColumnSegment.java
+++ 
b/features/encrypt/distsql/statement/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/segment/EncryptColumnItemSegment.java
@@ -23,23 +23,13 @@ import 
org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import org.apache.shardingsphere.sql.parser.api.ASTNode;
 
 /**
- * Encrypt column segment.
+ * Encrypt column item segment.
  */
 @RequiredArgsConstructor
 @Getter
-public final class EncryptColumnSegment implements ASTNode {
+public final class EncryptColumnItemSegment implements ASTNode {
     
     private final String name;
     
-    private final String cipherColumn;
-    
-    private final String assistedQueryColumn;
-    
-    private final String likeQueryColumn;
-    
     private final AlgorithmSegment encryptor;
-    
-    private final AlgorithmSegment assistedQueryEncryptor;
-    
-    private final AlgorithmSegment likeQueryEncryptor;
 }
diff --git 
a/features/encrypt/distsql/statement/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/segment/EncryptColumnSegment.java
 
b/features/encrypt/distsql/statement/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/segment/EncryptColumnSegment.java
index 21360eccd3f..1c6a3918e9b 100644
--- 
a/features/encrypt/distsql/statement/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/segment/EncryptColumnSegment.java
+++ 
b/features/encrypt/distsql/statement/src/main/java/org/apache/shardingsphere/encrypt/distsql/parser/segment/EncryptColumnSegment.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.encrypt.distsql.parser.segment;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import org.apache.shardingsphere.sql.parser.api.ASTNode;
 
 /**
@@ -31,15 +30,9 @@ public final class EncryptColumnSegment implements ASTNode {
     
     private final String name;
     
-    private final String cipherColumn;
+    private final EncryptColumnItemSegment cipher;
     
-    private final String assistedQueryColumn;
+    private final EncryptColumnItemSegment assistedQuery;
     
-    private final String likeQueryColumn;
-    
-    private final AlgorithmSegment encryptor;
-    
-    private final AlgorithmSegment assistedQueryEncryptor;
-    
-    private final AlgorithmSegment likeQueryEncryptor;
+    private final EncryptColumnItemSegment likeQuery;
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/distsql/rdl/EncryptColumnAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/distsql/rdl/EncryptColumnAssert.java
index 8403ee5257c..47a96317f1c 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/distsql/rdl/EncryptColumnAssert.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/distsql/rdl/EncryptColumnAssert.java
@@ -48,10 +48,23 @@ public final class EncryptColumnAssert {
         } else {
             assertNotNull(actual, assertContext.getText("Actual encrypt column 
should exist."));
             assertThat(assertContext.getText(String.format("`%s`'s assertion 
error", actual.getClass().getSimpleName())), actual.getName(), 
is(expected.getName()));
-            assertThat(assertContext.getText(String.format("`%s`'s assertion 
error", actual.getClass().getSimpleName())), actual.getCipherColumn(), 
is(expected.getCipherColumn()));
-            assertThat(assertContext.getText(String.format("`%s`'s assertion 
error", actual.getClass().getSimpleName())), actual.getAssistedQueryColumn(), 
is(expected.getAssistedQueryColumn()));
-            AlgorithmAssert.assertIs(assertContext, actual.getEncryptor(), 
expected.getEncryptor());
-            AlgorithmAssert.assertIs(assertContext, 
actual.getAssistedQueryEncryptor(), expected.getAssistedQueryEncryptor());
+            assertThat(assertContext.getText(String.format("`%s`'s assertion 
error", actual.getClass().getSimpleName())),
+                    actual.getCipher().getName(), 
is(expected.getCipher().getName()));
+            AlgorithmAssert.assertIs(assertContext, 
actual.getCipher().getEncryptor(), expected.getCipher().getEncryptor());
+            if (null == expected.getAssistedQuery()) {
+                assertNull(actual.getAssistedQuery(), 
assertContext.getText(String.format("`%s`'s assertion error", 
actual.getClass().getSimpleName())));
+            } else {
+                assertThat(assertContext.getText(String.format("`%s`'s 
assertion error", actual.getClass().getSimpleName())),
+                        actual.getAssistedQuery().getName(), 
is(expected.getAssistedQuery().getName()));
+                AlgorithmAssert.assertIs(assertContext, 
actual.getAssistedQuery().getEncryptor(), 
expected.getAssistedQuery().getEncryptor());
+            }
+            if (null == expected.getLikeQuery()) {
+                assertNull(actual.getLikeQuery(), 
assertContext.getText(String.format("`%s`'s assertion error", 
actual.getClass().getSimpleName())));
+            } else {
+                assertThat(assertContext.getText(String.format("`%s`'s 
assertion error", actual.getClass().getSimpleName())),
+                        actual.getLikeQuery().getName(), 
is(expected.getLikeQuery().getName()));
+                AlgorithmAssert.assertIs(assertContext, 
actual.getLikeQuery().getEncryptor(), expected.getLikeQuery().getEncryptor());
+            } 
         }
     }
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/distsql/rdl/ExpectedEncryptColumn.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/distsql/rdl/ExpectedEncryptColumn.java
index b4ca6baadea..85bc635f6d0 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/distsql/rdl/ExpectedEncryptColumn.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/distsql/rdl/ExpectedEncryptColumn.java
@@ -20,9 +20,7 @@ package 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.
 import lombok.Getter;
 import lombok.Setter;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.AbstractExpectedIdentifierSQLSegment;
-import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.distsql.ExpectedAlgorithm;
 
-import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 
 /**
@@ -32,15 +30,12 @@ import javax.xml.bind.annotation.XmlElement;
 @Setter
 public final class ExpectedEncryptColumn extends 
AbstractExpectedIdentifierSQLSegment {
     
-    @XmlAttribute(name = "cipher-column")
-    private String cipherColumn;
+    @XmlElement(name = "cipher")
+    private ExpectedEncryptColumnItem cipher;
     
-    @XmlAttribute(name = "assisted-query-column")
-    private String assistedQueryColumn;
+    @XmlElement(name = "assisted-query")
+    private ExpectedEncryptColumnItem assistedQuery;
     
-    @XmlElement
-    private ExpectedAlgorithm encryptor;
-    
-    @XmlElement(name = "assisted-query-encryptor")
-    private ExpectedAlgorithm assistedQueryEncryptor;
+    @XmlElement(name = "like-query")
+    private ExpectedEncryptColumnItem likeQuery;
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/distsql/rdl/ExpectedEncryptColumn.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/distsql/rdl/ExpectedEncryptColumnItem.java
similarity index 74%
copy from 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/distsql/rdl/ExpectedEncryptColumn.java
copy to 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/distsql/rdl/ExpectedEncryptColumnItem.java
index b4ca6baadea..17818d97105 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/distsql/rdl/ExpectedEncryptColumn.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/distsql/rdl/ExpectedEncryptColumnItem.java
@@ -22,25 +22,15 @@ import lombok.Setter;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.AbstractExpectedIdentifierSQLSegment;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.distsql.ExpectedAlgorithm;
 
-import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 
 /**
- * Expected encrypt column.
+ * Expected encrypt column item.
  */
 @Getter
 @Setter
-public final class ExpectedEncryptColumn extends 
AbstractExpectedIdentifierSQLSegment {
-    
-    @XmlAttribute(name = "cipher-column")
-    private String cipherColumn;
-    
-    @XmlAttribute(name = "assisted-query-column")
-    private String assistedQueryColumn;
+public final class ExpectedEncryptColumnItem extends 
AbstractExpectedIdentifierSQLSegment {
     
     @XmlElement
     private ExpectedAlgorithm encryptor;
-    
-    @XmlElement(name = "assisted-query-encryptor")
-    private ExpectedAlgorithm assistedQueryEncryptor;
 }
diff --git a/test/it/parser/src/main/resources/case/rdl/alter.xml 
b/test/it/parser/src/main/resources/case/rdl/alter.xml
index e69d252e24c..72c25894648 100644
--- a/test/it/parser/src/main/resources/case/rdl/alter.xml
+++ b/test/it/parser/src/main/resources/case/rdl/alter.xml
@@ -200,54 +200,74 @@
     
     <alter-encrypt-rule sql-case-id="alter-encrypt-rule">
         <rule name="t_encrypt">
-            <column name="user_id" cipher-column="user_cipher">
-                <encryptor algorithm-name="AES">
-                    <property key="aes-key-value" value="123456abc" />
-                </encryptor>
+            <column name="user_id">
+                <cipher name="user_cipher">
+                    <encryptor algorithm-name="AES">
+                        <property key="aes-key-value" value="123456abc" />
+                    </encryptor>
+                </cipher>
             </column>
-            <column name="order_id" cipher-column="order_cipher">
-                <encryptor algorithm-name="MD5" />
+            <column name="order_id">
+                <cipher name="order_cipher">
+                    <encryptor algorithm-name="MD5" />
+                </cipher>
             </column>
         </rule>
     </alter-encrypt-rule>
 
     <alter-encrypt-rule 
sql-case-id="alter-encrypt-rule-with-assisted-query-column">
         <rule name="t_encrypt">
-            <column name="user_id" cipher-column="user_cipher" 
assisted-query-column="assisted_column">
-                <encryptor algorithm-name="AES">
-                    <property key="aes-key-value" value="123456abc" />
-                </encryptor>
-                <assisted-query-encryptor algorithm-name="MD5" />
+            <column name="user_id">
+                <cipher name="user_cipher">
+                    <encryptor algorithm-name="AES">
+                        <property key="aes-key-value" value="123456abc" />
+                    </encryptor>
+                </cipher>
+                <assisted-query name="assisted_column">
+                    <encryptor algorithm-name="MD5" />
+                </assisted-query>
             </column>
-            <column name="order_id" cipher-column="order_cipher">
-                <encryptor algorithm-name="MD5" />
+            <column name="order_id">
+                <cipher name="order_cipher">
+                    <encryptor algorithm-name="MD5" />
+                </cipher>
             </column>
         </rule>
     </alter-encrypt-rule>
     
     <alter-encrypt-rule 
sql-case-id="alter-encrypt-rule-with-like-query-column">
         <rule name="t_encrypt">
-            <column name="user_id" cipher-column="user_cipher" 
like-query-column="like_column">
-                <encryptor algorithm-name="AES">
-                    <property key="aes-key-value" value="123456abc" />
-                </encryptor>
-                <like-query-encryptor algorithm-name="CHAR_DIGEST_LIKE" />
+            <column name="user_id">
+                <cipher name="user_cipher">
+                    <encryptor algorithm-name="AES">
+                        <property key="aes-key-value" value="123456abc" />
+                    </encryptor>
+                </cipher>
+                <like-query name="like_column">
+                    <encryptor algorithm-name="CHAR_DIGEST_LIKE" />
+                </like-query>
             </column>
-            <column name="order_id" cipher-column="order_cipher">
-                <encryptor algorithm-name="MD5" />
+            <column name="order_id">
+                <cipher name="order_cipher">
+                    <encryptor algorithm-name="MD5" />
+                </cipher>
             </column>
         </rule>
     </alter-encrypt-rule>
     
     <alter-encrypt-rule 
sql-case-id="alter-encrypt-rule-with-query-with-cipher-column">
         <rule name="t_encrypt" query-with-cipher-column="false">
-            <column name="user_id" cipher-column="user_cipher">
-                <encryptor algorithm-name="AES">
-                    <property key="aes-key-value" value="123456abc" />
-                </encryptor>
+            <column name="user_id">
+                <cipher name="user_cipher">
+                    <encryptor algorithm-name="AES">
+                        <property key="aes-key-value" value="123456abc" />
+                    </encryptor>
+                </cipher>
             </column>
-            <column name="order_id" cipher-column="order_cipher">
-                <encryptor algorithm-name="MD5" />
+            <column name="order_id">
+                <cipher name="order_cipher">
+                    <encryptor algorithm-name="MD5" />
+                </cipher>
             </column>
         </rule>
     </alter-encrypt-rule>
diff --git a/test/it/parser/src/main/resources/case/rdl/create.xml 
b/test/it/parser/src/main/resources/case/rdl/create.xml
index d1e44ab7660..377cb397e0a 100644
--- a/test/it/parser/src/main/resources/case/rdl/create.xml
+++ b/test/it/parser/src/main/resources/case/rdl/create.xml
@@ -372,77 +372,103 @@
     
     <create-encrypt-rule sql-case-id="create-encrypt-rule">
         <rule name="t_encrypt">
-            <column name="user_id" cipher-column="user_cipher">
-                <encryptor algorithm-name="AES">
-                    <property key="aes-key-value" value="123456abc" />
-                </encryptor>
+            <column name="user_id">
+                <cipher name="user_cipher">
+                    <encryptor algorithm-name="AES">
+                        <property key="aes-key-value" value="123456abc" />
+                    </encryptor>
+                </cipher>
             </column>
-            <column name="order_id" cipher-column="order_cipher">
-                <encryptor algorithm-name="MD5" />
+            <column name="order_id">
+                <cipher name="order_cipher">
+                    <encryptor algorithm-name="MD5" />
+                </cipher>
             </column>
         </rule>
     </create-encrypt-rule>
     
     <create-encrypt-rule sql-case-id="create-encrypt-rule-if-not-exists" 
if-not-exists="true">
         <rule name="t_encrypt">
-            <column name="user_id" cipher-column="user_cipher">
-                <encryptor algorithm-name="AES">
-                    <property key="aes-key-value" value="123456abc" />
-                </encryptor>
+            <column name="user_id">
+                <cipher name="user_cipher">
+                    <encryptor algorithm-name="AES">
+                        <property key="aes-key-value" value="123456abc" />
+                    </encryptor>
+                </cipher>
             </column>
-            <column name="order_id" cipher-column="order_cipher">
-                <encryptor algorithm-name="MD5" />
+            <column name="order_id">
+                <cipher name="order_cipher">
+                    <encryptor algorithm-name="MD5" />
+                </cipher>
             </column>
         </rule>
     </create-encrypt-rule>
 
     <create-encrypt-rule sql-case-id="create-encrypt-rule-with-quota">
         <rule name="encrypt">
-            <column name="user_id" cipher-column="user_cipher">
-                <encryptor algorithm-name="AES">
-                    <property key="aes-key-value" value="123456abc" />
-                </encryptor>
+            <column name="user_id">
+                <cipher name="user_cipher">
+                    <encryptor algorithm-name="AES">
+                        <property key="aes-key-value" value="123456abc" />
+                    </encryptor>
+                </cipher>
             </column>
-            <column name="order_id" cipher-column="order_cipher">
-                <encryptor algorithm-name="MD5" />
+            <column name="order_id">
+                <cipher name="order_cipher">
+                    <encryptor algorithm-name="MD5" />
+                </cipher>
             </column>
         </rule>
     </create-encrypt-rule>
     
     <create-encrypt-rule 
sql-case-id="create-encrypt-rule-with-assisted-query-column">
         <rule name="t_encrypt">
-            <column name="user_id" cipher-column="user_cipher" 
assisted-query-column="assisted_column">
-                <encryptor algorithm-name="AES">
-                    <property key="aes-key-value" value="123456abc" />
-                </encryptor>
-                <assisted-query-encryptor algorithm-name="MD5" />
+            <column name="user_id">
+                <cipher name="user_cipher">
+                    <encryptor algorithm-name="AES">
+                        <property key="aes-key-value" value="123456abc" />
+                    </encryptor>
+                </cipher>
+                <assisted-query name="assisted_column">
+                    <encryptor algorithm-name="MD5" />
+                </assisted-query>
             </column>
-            <column name="order_id" cipher-column="order_cipher">
-                <encryptor algorithm-name="MD5" />
+            <column name="order_id">
+                <cipher name="order_cipher">
+                    <encryptor algorithm-name="MD5" />
+                </cipher>
             </column>
         </rule>
     </create-encrypt-rule>
     
     <create-encrypt-rule 
sql-case-id="create-encrypt-rule-with-like-query-column">
         <rule name="t_encrypt">
-            <column name="user_id" cipher-column="user_cipher" 
like-query-column="like_column">
-                <encryptor algorithm-name="AES">
-                    <property key="aes-key-value" value="123456abc" />
-                </encryptor>
-                <like-query-encryptor algorithm-name="CHAR_DIGEST_LIKE" />
+            <column name="user_id">
+                <cipher name="user_cipher">
+                    <encryptor algorithm-name="AES">
+                        <property key="aes-key-value" value="123456abc" />
+                    </encryptor>
+                </cipher>
+                <like-query name="like_column">
+                    <encryptor algorithm-name="CHAR_DIGEST_LIKE" />
+                </like-query>
             </column>
-            <column name="order_id" cipher-column="order_cipher">
-                <encryptor algorithm-name="MD5" />
+            <column name="order_id">
+                <cipher name="order_cipher">
+                    <encryptor algorithm-name="MD5" />
+                </cipher>
             </column>
         </rule>
     </create-encrypt-rule>
     
     <create-encrypt-rule 
sql-case-id="create-encrypt-rule-with-query-with-cipher-column">
         <rule name="encrypt" query-with-cipher-column="false">
-            <column name="user_id" cipher-column="user_cipher">
-                <encryptor algorithm-name="AES">
-                    <property key="aes-key-value" value="123456abc" />
-                </encryptor>
+            <column name="user_id">
+                <cipher name="user_cipher">
+                    <encryptor algorithm-name="AES">
+                        <property key="aes-key-value" value="123456abc" />
+                    </encryptor>
+                </cipher>
             </column>
         </rule>
     </create-encrypt-rule>


Reply via email to