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 1b0f897 [DistSQL]show encrypt rules syntax add display of data type
(#15458)
1b0f897 is described below
commit 1b0f897ebc76c2280d16111aaac7b89c47fb7e1f
Author: lanchengx <[email protected]>
AuthorDate: Fri Feb 18 11:53:24 2022 +0800
[DistSQL]show encrypt rules syntax add display of data type (#15458)
* `show encrypt rules` syntax add display of data type
* Update integration tests, modify format.
* Update integration testst.
* Update integration tests.
* Revert "Update integration tests."
This reverts commit 08ef8bd485002f5b86f7348796d88841f2f4bb63.
* Update integration tests.
* Update integration tests.
* Update integration tests.
* Update integration tests.
* Update integration tests.
* Update integration tests.
* Update default value & Reformat.
* Revert YamlEncryptColumnRuleConfiguration
* Update integration tests.
* Update integration tests.
* Update integration tests.
---
.../handler/query/EncryptRuleQueryResultSet.java | 47 ++++++++++------------
.../query/EncryptRuleQueryResultSetTest.java | 9 +++--
.../rdl/dataset/empty_rules/alter_encrypt_rule.xml | 8 +++-
.../dataset/empty_rules/create_encrypt_rule.xml | 8 +++-
.../rdl/dataset/empty_rules/drop_encrypt_rule.xml | 6 +++
.../show_encrypt_rule.xml | 8 +++-
.../show_encrypt_rules.xml | 16 +++++---
.../rql/dataset/encrypt/show_encrypt_rule.xml | 8 +++-
.../rql/dataset/encrypt/show_encrypt_rules.xml | 12 ++++--
9 files changed, 81 insertions(+), 41 deletions(-)
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/query/EncryptRuleQueryResultSet.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/query/EncryptRuleQueryResultSet.java
index 0381e6c..66cf693 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/query/EncryptRuleQueryResultSet.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/query/EncryptRuleQueryResultSet.java
@@ -18,22 +18,20 @@
package org.apache.shardingsphere.encrypt.distsql.handler.query;
import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
-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.statement.ShowEncryptRulesStatement;
import
org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
+import org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.properties.PropertiesConverter;
-import org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedList;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
@@ -43,36 +41,35 @@ import java.util.stream.Collectors;
*/
public final class EncryptRuleQueryResultSet implements DistSQLResultSet {
- private Iterator<Entry<String, EncryptColumnRuleConfiguration>> data;
-
- private Map<String, ShardingSphereAlgorithmConfiguration> encryptors;
+ private Iterator<Collection<Object>> data = Collections.emptyIterator();
@Override
public void init(final ShardingSphereMetaData metaData, final SQLStatement
sqlStatement) {
- Optional<EncryptRuleConfiguration> ruleConfig =
metaData.getRuleMetaData().getConfigurations()
- .stream().filter(each -> each instanceof
EncryptRuleConfiguration).map(each -> (EncryptRuleConfiguration)
each).findAny();
- data = ruleConfig.map(optional -> getAllEncryptColumns(optional,
((ShowEncryptRulesStatement)
sqlStatement).getTableName()).entrySet().iterator()).orElse(Collections.emptyIterator());
- encryptors =
ruleConfig.map(EncryptRuleConfiguration::getEncryptors).orElseGet(Collections::emptyMap);
+ Optional<EncryptRuleConfiguration> ruleConfiguration =
metaData.getRuleMetaData().findRuleConfiguration(EncryptRuleConfiguration.class).stream().findAny();
+ ruleConfiguration.ifPresent(op -> data = buildData(op,
(ShowEncryptRulesStatement) sqlStatement).iterator());
}
- private Map<String, EncryptColumnRuleConfiguration>
getAllEncryptColumns(final EncryptRuleConfiguration encryptRuleConfig, final
String tableName) {
- Map<String, EncryptColumnRuleConfiguration> result = new HashMap<>();
- if (Objects.nonNull(tableName)) {
- encryptRuleConfig.getTables().stream().filter(each ->
tableName.equalsIgnoreCase(each.getName()))
- .findAny().ifPresent(each ->
result.putAll(buildEncryptColumnRuleConfigurationMap(each)));
- } else {
- encryptRuleConfig.getTables().forEach(each ->
result.putAll(buildEncryptColumnRuleConfigurationMap(each)));
- }
- return result;
+ private Collection<Collection<Object>> buildData(final
EncryptRuleConfiguration configuration, final ShowEncryptRulesStatement
sqlStatement) {
+ return configuration.getTables().stream().filter(each ->
Objects.isNull(sqlStatement.getTableName()) ||
each.getName().equals(sqlStatement.getTableName()))
+ .map(each -> buildColumnData(each,
configuration.getEncryptors())).flatMap(Collection::stream).collect(Collectors.toCollection(LinkedList::new));
}
- private Map<String, EncryptColumnRuleConfiguration>
buildEncryptColumnRuleConfigurationMap(final EncryptTableRuleConfiguration
encryptTableRuleConfig) {
- return
encryptTableRuleConfig.getColumns().stream().collect(Collectors.toMap(each ->
String.join(".", encryptTableRuleConfig.getName(), each.getLogicColumn()), each
-> each));
+ private Collection<Collection<Object>> buildColumnData(final
EncryptTableRuleConfiguration tableRuleConfiguration, final Map<String,
ShardingSphereAlgorithmConfiguration> algorithmMap) {
+ Collection<Collection<Object>> result = new LinkedList<>();
+ tableRuleConfiguration.getColumns().forEach(each -> {
+ ShardingSphereAlgorithmConfiguration algorithmConfiguration =
algorithmMap.get(each.getEncryptorName());
+ result.add(Arrays.asList(tableRuleConfiguration.getName(),
each.getLogicColumn(), each.getLogicDataType(), each.getCipherColumn(),
each.getCipherDataType(),
+ each.getPlainColumn(), each.getPlainDataType(),
each.getAssistedQueryColumn(), each.getAssistedQueryDataType(),
+ algorithmConfiguration.getType(),
PropertiesConverter.convert(algorithmConfiguration.getProps()),
+
Objects.isNull(tableRuleConfiguration.getQueryWithCipherColumn()) ?
Boolean.TRUE.toString() :
tableRuleConfiguration.getQueryWithCipherColumn().toString()));
+ });
+ return result;
}
@Override
public Collection<String> getColumnNames() {
- return Arrays.asList("table", "logic_column", "cipher_column",
"plain_column", "encryptor_type", "encryptor_props");
+ return Arrays.asList("table", "logic_column", "logic_data_type",
"cipher_column", "cipher_data_type", "plain_column", "plain_data_type",
+ "assisted_query_column", "assisted_query_data_type",
"encryptor_type", "encryptor_props", "query_with_cipher_column");
}
@Override
@@ -82,9 +79,7 @@ public final class EncryptRuleQueryResultSet implements
DistSQLResultSet {
@Override
public Collection<Object> getRowData() {
- Entry<String, EncryptColumnRuleConfiguration> entry = data.next();
- return Arrays.asList(entry.getKey().split("\\.")[0],
entry.getValue().getLogicColumn(), entry.getValue().getCipherColumn(),
entry.getValue().getPlainColumn(),
- encryptors.get(entry.getValue().getEncryptorName()).getType(),
PropertiesConverter.convert(encryptors.get(entry.getValue().getEncryptorName()).getProps()));
+ return data.next();
}
@Override
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/query/EncryptRuleQueryResultSetTest.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/query/EncryptRuleQueryResultSetTest.java
index 3548408..3d8d86a 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/query/EncryptRuleQueryResultSetTest.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/query/EncryptRuleQueryResultSetTest.java
@@ -34,6 +34,7 @@ import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -43,20 +44,22 @@ public final class EncryptRuleQueryResultSetTest {
@Test
public void assertGetRowData() {
ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class,
RETURNS_DEEP_STUBS);
-
when(metaData.getRuleMetaData().getConfigurations()).thenReturn(Collections.singleton(getRuleConfiguration()));
+
when(metaData.getRuleMetaData().findRuleConfiguration(any())).thenReturn(Collections.singleton(getRuleConfiguration()));
DistSQLResultSet resultSet = new EncryptRuleQueryResultSet();
resultSet.init(metaData, mock(ShowEncryptRulesStatement.class));
Collection<Object> actual = resultSet.getRowData();
- assertThat(actual.size(), is(6));
+ assertThat(actual.size(), is(12));
assertTrue(actual.contains("t_encrypt"));
assertTrue(actual.contains("user_id"));
assertTrue(actual.contains("user_cipher"));
assertTrue(actual.contains("user_plain"));
assertTrue(actual.contains("md5"));
+ assertTrue(actual.contains("varchar(10)"));
}
private RuleConfiguration getRuleConfiguration() {
- EncryptColumnRuleConfiguration encryptColumnRuleConfig = new
EncryptColumnRuleConfiguration("user_id", "user_cipher", null, "user_plain",
"test");
+ EncryptColumnRuleConfiguration encryptColumnRuleConfig = new
EncryptColumnRuleConfiguration("user_id", "varchar(10)", "user_cipher",
"varchar(10)", null, null,
+ "user_plain", "varchar(10)", "test");
EncryptTableRuleConfiguration encryptTableRuleConfig = new
EncryptTableRuleConfiguration("t_encrypt",
Collections.singleton(encryptColumnRuleConfig), null);
ShardingSphereAlgorithmConfiguration shardingSphereAlgorithmConfig =
new ShardingSphereAlgorithmConfiguration("md5", new Properties());
return new
EncryptRuleConfiguration(Collections.singleton(encryptTableRuleConfig),
Collections.singletonMap("test", shardingSphereAlgorithmConfig));
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rdl/dataset/empty_rules/alter_encrypt_rule.xml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rdl/dataset/empty_rules/alter_encrypt_rule.xml
index 5964923..a129a88 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rdl/dataset/empty_rules/alter_encrypt_rule.xml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rdl/dataset/empty_rules/alter_encrypt_rule.xml
@@ -19,10 +19,16 @@
<metadata>
<column name="table" />
<column name="logic_column" />
+ <column name="logic_data_type" />
<column name="cipher_column" />
+ <column name="cipher_data_type" />
<column name="plain_column" />
+ <column name="plain_data_type" />
+ <column name="assisted_query_column" />
+ <column name="assisted_query_data_type" />
<column name="encryptor_type" />
<column name="encryptor_props" />
+ <column name="query_with_cipher_column" />
</metadata>
- <row values="t_user| pwd| pwd_cipher| pwd_plain| AES|
aes-key-value=123abc" />
+ <row values="t_user| pwd| null| pwd_cipher| null| pwd_plain| null| null|
null| AES| aes-key-value=123abc| true" />
</dataset>
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rdl/dataset/empty_rules/create_encrypt_rule.xml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rdl/dataset/empty_rules/create_encrypt_rule.xml
index fe97e0a..ea38960 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rdl/dataset/empty_rules/create_encrypt_rule.xml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rdl/dataset/empty_rules/create_encrypt_rule.xml
@@ -19,10 +19,16 @@
<metadata>
<column name="table" />
<column name="logic_column" />
+ <column name="logic_data_type" />
<column name="cipher_column" />
+ <column name="cipher_data_type" />
<column name="plain_column" />
+ <column name="plain_data_type" />
+ <column name="assisted_query_column" />
+ <column name="assisted_query_data_type" />
<column name="encryptor_type" />
<column name="encryptor_props" />
+ <column name="query_with_cipher_column" />
</metadata>
- <row values="t_user| pwd| pwd_cipher| pwd_plain| AES|
aes-key-value=123456abc" />
+ <row values="t_user| pwd| null| pwd_cipher| null| pwd_plain| null| null|
null| AES| aes-key-value=123456abc| true" />
</dataset>
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rdl/dataset/empty_rules/drop_encrypt_rule.xml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rdl/dataset/empty_rules/drop_encrypt_rule.xml
index d28df47..12278b7 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rdl/dataset/empty_rules/drop_encrypt_rule.xml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rdl/dataset/empty_rules/drop_encrypt_rule.xml
@@ -19,9 +19,15 @@
<metadata>
<column name="table" />
<column name="logic_column" />
+ <column name="logic_data_type" />
<column name="cipher_column" />
+ <column name="cipher_data_type" />
<column name="plain_column" />
+ <column name="plain_data_type" />
+ <column name="assisted_query_column" />
+ <column name="assisted_query_data_type" />
<column name="encryptor_type" />
<column name="encryptor_props" />
+ <column name="query_with_cipher_column" />
</metadata>
</dataset>
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/show_encrypt_rule.xml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/show_encrypt_rule.xml
index fe97e0a..ea38960 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/show_encrypt_rule.xml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/show_encrypt_rule.xml
@@ -19,10 +19,16 @@
<metadata>
<column name="table" />
<column name="logic_column" />
+ <column name="logic_data_type" />
<column name="cipher_column" />
+ <column name="cipher_data_type" />
<column name="plain_column" />
+ <column name="plain_data_type" />
+ <column name="assisted_query_column" />
+ <column name="assisted_query_data_type" />
<column name="encryptor_type" />
<column name="encryptor_props" />
+ <column name="query_with_cipher_column" />
</metadata>
- <row values="t_user| pwd| pwd_cipher| pwd_plain| AES|
aes-key-value=123456abc" />
+ <row values="t_user| pwd| null| pwd_cipher| null| pwd_plain| null| null|
null| AES| aes-key-value=123456abc| true" />
</dataset>
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/show_encrypt_rules.xml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/show_encrypt_rules.xml
index cb32ae2..7a8df25 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/show_encrypt_rules.xml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/show_encrypt_rules.xml
@@ -19,14 +19,20 @@
<metadata>
<column name="table" />
<column name="logic_column" />
+ <column name="logic_data_type" />
<column name="cipher_column" />
+ <column name="cipher_data_type" />
<column name="plain_column" />
+ <column name="plain_data_type" />
+ <column name="assisted_query_column" />
+ <column name="assisted_query_data_type" />
<column name="encryptor_type" />
<column name="encryptor_props" />
+ <column name="query_with_cipher_column" />
</metadata>
- <row values="t_user_details| number_new| number_new_cipher|
number_new_plain| AES| aes-key-value=123456abc" />
- <row values="t_user| pwd| pwd_cipher| pwd_plain| AES|
aes-key-value=123456abc" />
- <row values="t_user_details| number| number_cipher| number_plain| AES|
aes-key-value=123456abc" />
- <row values="t_user_encrypt_federate| pwd| cipher_pwd| plain_pwd| AES|
aes-key-value=123456abc" />
- <row values="t_user_encrypt_federate_sharding| pwd| cipher_pwd| plain_pwd|
AES| aes-key-value=123456abc" />
+ <row values="t_user| pwd| null| pwd_cipher| null| pwd_plain| null| null|
null| AES| aes-key-value=123456abc| true" />
+ <row values="t_user_details| number| null| number_cipher| null|
number_plain| null| null| null| AES| aes-key-value=123456abc| true" />
+ <row values="t_user_details| number_new| null| number_new_cipher| null|
number_new_plain| null| null| null| AES| aes-key-value=123456abc| true" />
+ <row values="t_user_encrypt_federate| pwd| null| cipher_pwd| null|
plain_pwd| null| null| null| AES| aes-key-value=123456abc| true" />
+ <row values="t_user_encrypt_federate_sharding| pwd| null| cipher_pwd|
null| plain_pwd| null| null| null| AES| aes-key-value=123456abc| true" />
</dataset>
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rql/dataset/encrypt/show_encrypt_rule.xml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rql/dataset/encrypt/show_encrypt_rule.xml
index fe97e0a..ea38960 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rql/dataset/encrypt/show_encrypt_rule.xml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rql/dataset/encrypt/show_encrypt_rule.xml
@@ -19,10 +19,16 @@
<metadata>
<column name="table" />
<column name="logic_column" />
+ <column name="logic_data_type" />
<column name="cipher_column" />
+ <column name="cipher_data_type" />
<column name="plain_column" />
+ <column name="plain_data_type" />
+ <column name="assisted_query_column" />
+ <column name="assisted_query_data_type" />
<column name="encryptor_type" />
<column name="encryptor_props" />
+ <column name="query_with_cipher_column" />
</metadata>
- <row values="t_user| pwd| pwd_cipher| pwd_plain| AES|
aes-key-value=123456abc" />
+ <row values="t_user| pwd| null| pwd_cipher| null| pwd_plain| null| null|
null| AES| aes-key-value=123456abc| true" />
</dataset>
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rql/dataset/encrypt/show_encrypt_rules.xml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rql/dataset/encrypt/show_encrypt_rules.xml
index 0e73642..d9ac3bd 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rql/dataset/encrypt/show_encrypt_rules.xml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/rql/dataset/encrypt/show_encrypt_rules.xml
@@ -19,12 +19,18 @@
<metadata>
<column name="table" />
<column name="logic_column" />
+ <column name="logic_data_type" />
<column name="cipher_column" />
+ <column name="cipher_data_type" />
<column name="plain_column" />
+ <column name="plain_data_type" />
+ <column name="assisted_query_column" />
+ <column name="assisted_query_data_type" />
<column name="encryptor_type" />
<column name="encryptor_props" />
+ <column name="query_with_cipher_column" />
</metadata>
- <row values="t_user| pwd| pwd_cipher| pwd_plain| AES|
aes-key-value=123456abc" />
- <row values="t_user_details| number| number_cipher| number_plain| AES|
aes-key-value=123456abc" />
- <row values="t_user_details| number_new| number_new_cipher|
number_new_plain| AES| aes-key-value=123456abc" />
+ <row values="t_user| pwd| null| pwd_cipher| null| pwd_plain| null| null|
null| AES| aes-key-value=123456abc| true" />
+ <row values="t_user_details| number| null| number_cipher| null|
number_plain| null| null| null| AES| aes-key-value=123456abc| true" />
+ <row values="t_user_details| number_new| null| number_new_cipher| null|
number_new_plain| null| null| null| AES| aes-key-value=123456abc| true" />
</dataset>