This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 6e7a35f9139 Support encrypt config queryWithCipherColumn with column
levels (#17603)
6e7a35f9139 is described below
commit 6e7a35f9139ffe51470d39e034cb358b66e20530
Author: zhaoguhong <[email protected]>
AuthorDate: Thu May 26 11:47:26 2022 +0800
Support encrypt config queryWithCipherColumn with column levels (#17603)
* Support encrypt config queryWithCipherColumn with column levels
* Fix checkstyle
* Fix encryptColumn constructor
* Refactor support encrypt config queryWithCipherColumn with column levels
* Refactor encrypt IsQueryWithCipherColumn UT
* Refactor support encrypt config queryWithCipherColumn with column levels
* Refactor support encrypt config queryWithCipherColumn with column levels
* Refactor support encrypt config queryWithCipherColumn with column levels
* Delete unnecessary comments
---
.../config/local/LocalEncryptConfiguration.java | 2 +-
.../jdbc/config/EncryptDatabasesConfiguration.java | 4 +--
.../jdbc/config/ShadowEncryptConfiguration.java | 4 +--
.../rule/EncryptColumnRuleConfiguration.java | 7 ++--
.../merge/dql/EncryptAlgorithmMetaData.java | 9 ++---
.../encrypt/merge/dql/EncryptMergedResult.java | 2 +-
.../EncryptPredicateParameterRewriter.java | 2 +-
.../EncryptOrderByItemTokenGenerator.java | 2 +-
.../EncryptPredicateColumnTokenGenerator.java | 2 +-
.../EncryptPredicateRightValueTokenGenerator.java | 2 +-
.../generator/EncryptProjectionTokenGenerator.java | 4 +--
.../shardingsphere/encrypt/rule/EncryptColumn.java | 2 ++
.../shardingsphere/encrypt/rule/EncryptRule.java | 11 +++---
.../shardingsphere/encrypt/rule/EncryptTable.java | 10 +++---
.../rule/YamlEncryptColumnRuleConfiguration.java | 2 ++
.../EncryptColumnRuleConfigurationYamlSwapper.java | 4 ++-
.../encrypt/context/EncryptContextBuilderTest.java | 2 +-
.../merge/dql/EncryptAlgorithmMetaDataTest.java | 4 +--
.../encrypt/merge/dql/EncryptMergedResultTest.java | 6 ++--
.../impl/EncryptAlterTableTokenGeneratorTest.java | 5 +--
.../impl/EncryptCreateTableTokenGeneratorTest.java | 2 +-
.../impl/EncryptProjectionTokenGeneratorTest.java | 2 +-
.../encrypt/rule/EncryptColumnTest.java | 4 +--
.../encrypt/rule/EncryptRuleTest.java | 42 +++++++++++++++-------
.../encrypt/rule/EncryptTableTest.java | 15 ++++++--
...ryptColumnRuleConfigurationYamlSwapperTest.java | 5 ++-
...cryptTableRuleConfigurationYamlSwapperTest.java | 6 ++--
.../converter/EncryptRuleStatementConverter.java | 2 +-
.../query/EncryptRuleQueryResultSetTest.java | 2 +-
.../DropEncryptRuleStatementUpdaterTest.java | 4 +--
.../parser/EncryptRuleBeanDefinitionParser.java | 1 +
.../main/resources/META-INF/namespace/encrypt.xsd | 1 +
.../namespace/EncryptSpringNamespaceTest.java | 3 ++
.../spring/encrypt-application-context.xml | 4 +--
34 files changed, 114 insertions(+), 65 deletions(-)
diff --git
a/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/cluster/mode/raw/jdbc/config/local/LocalEncryptConfiguration.java
b/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/cluster/mode/raw/jdbc/config/local/LocalEncryptConfiguration.java
index 3e5383db763..cc9c7bc4649 100644
---
a/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/cluster/mode/raw/jdbc/config/local/LocalEncryptConfiguration.java
+++
b/examples/shardingsphere-jdbc-example/single-feature-example/cluster-mode-example/cluster-mode-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/cluster/mode/raw/jdbc/config/local/LocalEncryptConfiguration.java
@@ -49,7 +49,7 @@ public final class LocalEncryptConfiguration implements
ExampleConfiguration {
}
private EncryptTableRuleConfiguration
createEncryptTableRuleConfiguration() {
- EncryptColumnRuleConfiguration encryptColumnRuleConfig = new
EncryptColumnRuleConfiguration("status", "status", "", "", "status_encryptor");
+ EncryptColumnRuleConfiguration encryptColumnRuleConfig = new
EncryptColumnRuleConfiguration("status", "status", "", "", "status_encryptor",
null);
return new EncryptTableRuleConfiguration("t_order",
Collections.singleton(encryptColumnRuleConfig), null);
}
diff --git
a/examples/shardingsphere-jdbc-example/single-feature-example/encrypt-example/encrypt-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/encrypt/raw/jdbc/config/EncryptDatabasesConfiguration.java
b/examples/shardingsphere-jdbc-example/single-feature-example/encrypt-example/encrypt-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/encrypt/raw/jdbc/config/EncryptDatabasesConfiguration.java
index eda528ffbc4..a352186c2e6 100644
---
a/examples/shardingsphere-jdbc-example/single-feature-example/encrypt-example/encrypt-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/encrypt/raw/jdbc/config/EncryptDatabasesConfiguration.java
+++
b/examples/shardingsphere-jdbc-example/single-feature-example/encrypt-example/encrypt-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/encrypt/raw/jdbc/config/EncryptDatabasesConfiguration.java
@@ -39,8 +39,8 @@ public final class EncryptDatabasesConfiguration implements
ExampleConfiguration
public DataSource getDataSource() {
Properties props = new Properties();
props.setProperty("aes-key-value", "123456");
- EncryptColumnRuleConfiguration columnConfigAes = new
EncryptColumnRuleConfiguration("username", "username", "", "username_plain",
"name_encryptor");
- EncryptColumnRuleConfiguration columnConfigTest = new
EncryptColumnRuleConfiguration("pwd", "pwd", "assisted_query_pwd", "",
"pwd_encryptor");
+ EncryptColumnRuleConfiguration columnConfigAes = new
EncryptColumnRuleConfiguration("username", "username", "", "username_plain",
"name_encryptor", null);
+ EncryptColumnRuleConfiguration columnConfigTest = new
EncryptColumnRuleConfiguration("pwd", "pwd", "assisted_query_pwd", "",
"pwd_encryptor", null);
EncryptTableRuleConfiguration encryptTableRuleConfig = new
EncryptTableRuleConfiguration("t_user", Arrays.asList(columnConfigAes,
columnConfigTest), null);
Map<String, ShardingSphereAlgorithmConfiguration>
encryptAlgorithmConfigs = new LinkedHashMap<>(2, 1);
encryptAlgorithmConfigs.put("name_encryptor", new
ShardingSphereAlgorithmConfiguration("AES", props));
diff --git
a/examples/shardingsphere-jdbc-example/single-feature-example/shadow-example/shadow-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/shadow/raw/jdbc/config/ShadowEncryptConfiguration.java
b/examples/shardingsphere-jdbc-example/single-feature-example/shadow-example/shadow-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/shadow/raw/jdbc/config/ShadowEncryptConfiguration.java
index 2998b9e0547..550c6191ba1 100644
---
a/examples/shardingsphere-jdbc-example/single-feature-example/shadow-example/shadow-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/shadow/raw/jdbc/config/ShadowEncryptConfiguration.java
+++
b/examples/shardingsphere-jdbc-example/single-feature-example/shadow-example/shadow-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/shadow/raw/jdbc/config/ShadowEncryptConfiguration.java
@@ -80,8 +80,8 @@ public final class ShadowEncryptConfiguration extends
BaseShadowConfiguration {
private Collection<EncryptTableRuleConfiguration>
getEncryptTableRuleConfigurations() {
Collection<EncryptTableRuleConfiguration> result = new LinkedList<>();
Collection<EncryptColumnRuleConfiguration> columns = new
LinkedList<>();
- columns.add(new EncryptColumnRuleConfiguration("username", "username",
"", "username_plain", "name_encryptor"));
- columns.add(new EncryptColumnRuleConfiguration("pwd", "pwd",
"assisted_query_pwd", "", "pwd_encryptor"));
+ columns.add(new EncryptColumnRuleConfiguration("username", "username",
"", "username_plain", "name_encryptor", null));
+ columns.add(new EncryptColumnRuleConfiguration("pwd", "pwd",
"assisted_query_pwd", "", "pwd_encryptor", null));
result.add(new EncryptTableRuleConfiguration("t_user", columns, null));
return result;
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-api/src/main/java/org/apache/shardingsphere/encrypt/api/config/rule/EncryptColumnRuleConfiguration.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-api/src/main/java/org/apache/shardingsphere/encrypt/api/config/rule/EncryptColumnRuleConfiguration.java
index 5c8f2d52750..f591a6a4648 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-api/src/main/java/org/apache/shardingsphere/encrypt/api/config/rule/EncryptColumnRuleConfiguration.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-api/src/main/java/org/apache/shardingsphere/encrypt/api/config/rule/EncryptColumnRuleConfiguration.java
@@ -45,7 +45,10 @@ public final class EncryptColumnRuleConfiguration {
private final String encryptorName;
- public EncryptColumnRuleConfiguration(final String logicColumn, final
String cipherColumn, final String assistedQueryColumn, final String
plainColumn, final String encryptorName) {
- this(logicColumn, null, cipherColumn, null, assistedQueryColumn, null,
plainColumn, null, encryptorName);
+ private final Boolean queryWithCipherColumn;
+
+ public EncryptColumnRuleConfiguration(final String logicColumn, final
String cipherColumn, final String assistedQueryColumn, final String
plainColumn, final String encryptorName,
+ final Boolean queryWithCipherColumn)
{
+ this(logicColumn, null, cipherColumn, null, assistedQueryColumn, null,
plainColumn, null, encryptorName, queryWithCipherColumn);
}
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaData.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaData.java
index e52cf6e1005..df086485d6b 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaData.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaData.java
@@ -60,13 +60,14 @@ public final class EncryptAlgorithmMetaData {
}
/**
- * Judge whether table is support QueryWithCipherColumn or not.
+ * Judge whether column is support QueryWithCipherColumn or not.
*
* @param tableName table name
- * @return whether table is support QueryWithCipherColumn or not
+ * @param columnName column name
+ * @return whether column is support QueryWithCipherColumn or not
*/
- public boolean isQueryWithCipherColumn(final String tableName) {
- return encryptRule.isQueryWithCipherColumn(tableName);
+ public boolean isQueryWithCipherColumn(final String tableName, final
String columnName) {
+ return encryptRule.isQueryWithCipherColumn(tableName, columnName);
}
/**
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java
index a235e1f08b5..c3acd574b21 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java
@@ -46,7 +46,7 @@ public final class EncryptMergedResult implements
MergedResult {
@Override
public Object getValue(final int columnIndex, final Class<?> type) throws
SQLException {
Optional<EncryptContext> encryptContext =
metaData.findEncryptContext(columnIndex);
- if (!encryptContext.isPresent() ||
!metaData.isQueryWithCipherColumn(encryptContext.get().getTableName())) {
+ if (!encryptContext.isPresent() ||
!metaData.isQueryWithCipherColumn(encryptContext.get().getTableName(),
encryptContext.get().getColumnName())) {
return mergedResult.getValue(columnIndex, type);
}
Optional<EncryptAlgorithm> encryptAlgorithm =
metaData.findEncryptor(encryptContext.get().getTableName(),
encryptContext.get().getColumnName());
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/parameter/rewriter/EncryptPredicateParameterRewriter.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/parameter/rewriter/EncryptPredicateParameterRewriter.java
index 5ef30cce53a..b5b81bf7416 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/parameter/rewriter/EncryptPredicateParameterRewriter.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/parameter/rewriter/EncryptPredicateParameterRewriter.java
@@ -56,7 +56,7 @@ public final class EncryptPredicateParameterRewriter
implements ParameterRewrite
public void rewrite(final ParameterBuilder parameterBuilder, final
SQLStatementContext<?> sqlStatementContext, final List<Object> parameters) {
String schemaName =
sqlStatementContext.getTablesContext().getSchemaName().orElseGet(() ->
DatabaseTypeEngine.getDefaultSchemaName(sqlStatementContext.getDatabaseType(),
databaseName));
for (EncryptCondition each : encryptConditions) {
- boolean queryWithCipherColumn =
encryptRule.isQueryWithCipherColumn(each.getTableName());
+ boolean queryWithCipherColumn =
encryptRule.isQueryWithCipherColumn(each.getTableName(), each.getColumnName());
if (queryWithCipherColumn) {
encryptParameters(parameterBuilder,
each.getPositionIndexMap(), getEncryptedValues(schemaName, each,
each.getValues(parameters)));
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptOrderByItemTokenGenerator.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptOrderByItemTokenGenerator.java
index 0875f62948b..3919693bec5 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptOrderByItemTokenGenerator.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptOrderByItemTokenGenerator.java
@@ -84,7 +84,7 @@ public final class EncryptOrderByItemTokenGenerator
implements CollectionSQLToke
}
int startIndex = column.getOwner().isPresent() ?
column.getOwner().get().getStopIndex() + 2 : column.getStartIndex();
int stopIndex = column.getStopIndex();
- boolean queryWithCipherColumn =
encryptRule.isQueryWithCipherColumn(tableName);
+ boolean queryWithCipherColumn =
encryptRule.isQueryWithCipherColumn(tableName,
column.getIdentifier().getValue());
if (!queryWithCipherColumn) {
Optional<String> plainColumn =
encryptTable.get().findPlainColumn(column.getIdentifier().getValue());
if (plainColumn.isPresent()) {
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateColumnTokenGenerator.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateColumnTokenGenerator.java
index 2f306fb569f..350f27a4685 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateColumnTokenGenerator.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateColumnTokenGenerator.java
@@ -73,7 +73,7 @@ public final class EncryptPredicateColumnTokenGenerator
implements CollectionSQL
}
int startIndex = each.getOwner().isPresent() ?
each.getOwner().get().getStopIndex() + 2 : each.getStartIndex();
int stopIndex = each.getStopIndex();
- boolean queryWithCipherColumn =
encryptRule.isQueryWithCipherColumn(tableName);
+ boolean queryWithCipherColumn =
encryptRule.isQueryWithCipherColumn(tableName, each.getIdentifier().getValue());
if (!queryWithCipherColumn) {
Optional<String> plainColumn =
encryptTable.get().findPlainColumn(each.getIdentifier().getValue());
if (plainColumn.isPresent()) {
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateRightValueTokenGenerator.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateRightValueTokenGenerator.java
index 1b03e22cfbb..d8b061ccac8 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateRightValueTokenGenerator.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateRightValueTokenGenerator.java
@@ -73,7 +73,7 @@ public final class EncryptPredicateRightValueTokenGenerator
implements Collectio
private SQLToken generateSQLToken(final String schemaName, final
EncryptCondition encryptCondition) {
List<Object> originalValues = encryptCondition.getValues(parameters);
int startIndex = encryptCondition.getStartIndex();
- boolean queryWithCipherColumn =
encryptRule.isQueryWithCipherColumn(encryptCondition.getTableName());
+ boolean queryWithCipherColumn =
encryptRule.isQueryWithCipherColumn(encryptCondition.getTableName(),
encryptCondition.getColumnName());
return queryWithCipherColumn ?
generateSQLTokenForQueryWithCipherColumn(schemaName, encryptCondition,
originalValues, startIndex)
: generateSQLTokenForQueryWithoutCipherColumn(schemaName,
encryptCondition, originalValues, startIndex);
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
index 98349c303cc..54cde261c47 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
@@ -167,7 +167,7 @@ public final class EncryptProjectionTokenGenerator
implements CollectionSQLToken
}
private ColumnProjection generatePredicateSubqueryProjection(final String
tableName, final ColumnProjection column) {
- boolean queryWithCipherColumn =
encryptRule.isQueryWithCipherColumn(tableName);
+ boolean queryWithCipherColumn =
encryptRule.isQueryWithCipherColumn(tableName, column.getName());
if (!queryWithCipherColumn) {
Optional<String> plainColumn =
encryptRule.findPlainColumn(tableName, column.getName());
if (plainColumn.isPresent()) {
@@ -205,7 +205,7 @@ public final class EncryptProjectionTokenGenerator
implements CollectionSQLToken
}
private String getEncryptColumnName(final String tableName, final String
logicEncryptColumnName) {
- boolean queryWithCipherColumn =
encryptRule.isQueryWithCipherColumn(tableName);
+ boolean queryWithCipherColumn =
encryptRule.isQueryWithCipherColumn(tableName, logicEncryptColumnName);
if (!queryWithCipherColumn) {
return encryptRule.findPlainColumn(tableName,
logicEncryptColumnName).orElseGet(() -> encryptRule.getCipherColumn(tableName,
logicEncryptColumnName));
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptColumn.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptColumn.java
index b26188c326a..0c30c949f17 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptColumn.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptColumn.java
@@ -47,6 +47,8 @@ public final class EncryptColumn {
private final String encryptorName;
+ private final Boolean queryWithCipherColumn;
+
/**
* Get assisted query column.
*
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java
index 8bedb679070..0518777c507 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java
@@ -285,13 +285,14 @@ public final class EncryptRule implements SchemaRule,
TableContainedRule {
}
/**
- * Judge whether table is support QueryWithCipherColumn or not.
+ * Judge whether column is support QueryWithCipherColumn or not.
*
- * @param tableName table name
- * @return whether table is support QueryWithCipherColumn or not
+ * @param logicTable logic table name
+ * @param logicColumn logic column name
+ * @return whether column is support QueryWithCipherColumn or not
*/
- public boolean isQueryWithCipherColumn(final String tableName) {
- return
findEncryptTable(tableName).flatMap(EncryptTable::getQueryWithCipherColumn).orElse(queryWithCipherColumn);
+ public boolean isQueryWithCipherColumn(final String logicTable, final
String logicColumn) {
+ return findEncryptTable(logicTable).flatMap(encryptTable ->
encryptTable.getQueryWithCipherColumn(logicColumn)).orElse(queryWithCipherColumn);
}
private Optional<String> findOriginColumnName(final String logicTable,
final String logicColumn) {
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptTable.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptTable.java
index 785021d6015..ffcf1ee62e2 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptTable.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptTable.java
@@ -48,7 +48,7 @@ public final class EncryptTable {
columns.put(each.getLogicColumn(), new
EncryptColumn(getEncryptColumnDataType(each.getLogicDataType(), dataTypes),
each.getCipherColumn(),
getEncryptColumnDataType(each.getCipherDataType(),
dataTypes), each.getAssistedQueryColumn(),
getEncryptColumnDataType(each.getAssistedQueryDataType(),
dataTypes),
- each.getPlainColumn(),
getEncryptColumnDataType(each.getPlainDataType(), dataTypes),
each.getEncryptorName()));
+ each.getPlainColumn(),
getEncryptColumnDataType(each.getPlainDataType(), dataTypes),
each.getEncryptorName(), each.getQueryWithCipherColumn()));
}
queryWithCipherColumn = config.getQueryWithCipherColumn();
}
@@ -180,11 +180,12 @@ public final class EncryptTable {
/**
* Get query with cipher column.
- *
+ *
+ * @param logicColumn logic column
* @return query with cipher column
*/
- public Optional<Boolean> getQueryWithCipherColumn() {
- return Optional.ofNullable(queryWithCipherColumn);
+ public Optional<Boolean> getQueryWithCipherColumn(final String
logicColumn) {
+ return
Optional.ofNullable(findEncryptColumn(logicColumn).map(EncryptColumn::getQueryWithCipherColumn).orElse(queryWithCipherColumn));
}
/**
@@ -196,4 +197,5 @@ public final class EncryptTable {
public Optional<EncryptColumn> findEncryptColumn(final String logicColumn)
{
return Optional.ofNullable(columns.get(logicColumn));
}
+
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/yaml/config/rule/YamlEncryptColumnRuleConfiguration.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/yaml/config/rule/YamlEncryptColumnRuleConfiguration.java
index d6a6e6fa321..111869a3b69 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/yaml/config/rule/YamlEncryptColumnRuleConfiguration.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/yaml/config/rule/YamlEncryptColumnRuleConfiguration.java
@@ -37,4 +37,6 @@ public final class YamlEncryptColumnRuleConfiguration
implements YamlConfigurati
private String plainColumn;
private String encryptorName;
+
+ private Boolean queryWithCipherColumn;
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/yaml/swapper/rule/EncryptColumnRuleConfigurationYamlSwapper.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/yaml/swapper/rule/EncryptColumnRuleConfigurationYamlSwapper.java
index a95f41dbfed..b1c3f1d58a0 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/yaml/swapper/rule/EncryptColumnRuleConfigurationYamlSwapper.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/yaml/swapper/rule/EncryptColumnRuleConfigurationYamlSwapper.java
@@ -33,12 +33,14 @@ public final class
EncryptColumnRuleConfigurationYamlSwapper implements YamlConf
result.setCipherColumn(data.getCipherColumn());
result.setAssistedQueryColumn(data.getAssistedQueryColumn());
result.setEncryptorName(data.getEncryptorName());
+ result.setQueryWithCipherColumn(data.getQueryWithCipherColumn());
return result;
}
@Override
public EncryptColumnRuleConfiguration swapToObject(final
YamlEncryptColumnRuleConfiguration yamlConfig) {
return new EncryptColumnRuleConfiguration(
- yamlConfig.getLogicColumn(), yamlConfig.getCipherColumn(),
yamlConfig.getAssistedQueryColumn(), yamlConfig.getPlainColumn(),
yamlConfig.getEncryptorName());
+ yamlConfig.getLogicColumn(), yamlConfig.getCipherColumn(),
yamlConfig.getAssistedQueryColumn(), yamlConfig.getPlainColumn(),
yamlConfig.getEncryptorName(),
+ yamlConfig.getQueryWithCipherColumn());
}
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/context/EncryptContextBuilderTest.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/context/EncryptContextBuilderTest.java
index 05358b8ab14..0c45bd89cb6 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/context/EncryptContextBuilderTest.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/context/EncryptContextBuilderTest.java
@@ -92,6 +92,6 @@ public final class EncryptContextBuilderTest {
EncryptColumnDataType assistedQueryDataType = new
EncryptColumnDataType("varchar(200) not null", dataTypes);
EncryptColumnDataType plainDataType = new
EncryptColumnDataType("int(20) unsigned not null default 0", dataTypes);
return new EncryptColumn(logicDataType, "cipher_certificate_number",
cipherDataType, "assisted_certificate_number",
- assistedQueryDataType, "certificate_number_plain",
plainDataType, "test");
+ assistedQueryDataType, "certificate_number_plain",
plainDataType, "test", null);
}
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaDataTest.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaDataTest.java
index 400b0bcd4a1..f31479a4189 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaDataTest.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaDataTest.java
@@ -137,8 +137,8 @@ public final class EncryptAlgorithmMetaDataTest {
@Test
public void assertIsQueryWithCipherColumn() {
- when(encryptRule.isQueryWithCipherColumn("t_order")).thenReturn(true);
+ when(encryptRule.isQueryWithCipherColumn("t_order",
"id")).thenReturn(true);
EncryptAlgorithmMetaData encryptAlgorithmMetaData = new
EncryptAlgorithmMetaData(DefaultDatabase.LOGIC_NAME, database, encryptRule,
selectStatementContext);
-
assertTrue(encryptAlgorithmMetaData.isQueryWithCipherColumn("t_order"));
+ assertTrue(encryptAlgorithmMetaData.isQueryWithCipherColumn("t_order",
"id"));
}
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResultTest.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResultTest.java
index 40add9e1f10..11d76658657 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResultTest.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResultTest.java
@@ -75,7 +75,7 @@ public final class EncryptMergedResultTest {
when(mergedResult.getValue(1, String.class)).thenReturn("VALUE");
EncryptContext encryptContext =
EncryptContextBuilder.build(DefaultDatabase.LOGIC_NAME,
DefaultDatabase.LOGIC_NAME, "t_encrypt", "order_id", mock(EncryptRule.class));
when(metaData.findEncryptContext(1)).thenReturn(Optional.of(encryptContext));
- when(metaData.isQueryWithCipherColumn("t_encrypt")).thenReturn(true);
+ when(metaData.isQueryWithCipherColumn("t_encrypt",
"order_id")).thenReturn(true);
when(metaData.findEncryptor("t_encrypt",
"order_id")).thenReturn(Optional.empty());
assertThat(new EncryptMergedResult(metaData, mergedResult).getValue(1,
String.class), is("VALUE"));
}
@@ -88,7 +88,7 @@ public final class EncryptMergedResultTest {
EncryptContext encryptContext =
EncryptContextBuilder.build(DefaultDatabase.LOGIC_NAME,
DefaultDatabase.LOGIC_NAME, "t_encrypt", "order_id", mock(EncryptRule.class));
when(encryptAlgorithm.decrypt("VALUE",
encryptContext)).thenReturn("ORIGINAL_VALUE");
when(metaData.findEncryptContext(1)).thenReturn(Optional.of(encryptContext));
- when(metaData.isQueryWithCipherColumn("t_encrypt")).thenReturn(true);
+ when(metaData.isQueryWithCipherColumn("t_encrypt",
"order_id")).thenReturn(true);
when(metaData.findEncryptor("t_encrypt",
"order_id")).thenReturn(Optional.of(encryptAlgorithm));
assertThat(new EncryptMergedResult(metaData, mergedResult).getValue(1,
String.class), is("ORIGINAL_VALUE"));
}
@@ -99,7 +99,7 @@ public final class EncryptMergedResultTest {
EncryptAlgorithm<String, String> encryptAlgorithm =
mock(EncryptAlgorithm.class);
EncryptContext encryptContext =
EncryptContextBuilder.build(DefaultDatabase.LOGIC_NAME,
DefaultDatabase.LOGIC_NAME, "t_encrypt", "order_id", mock(EncryptRule.class));
when(metaData.findEncryptContext(1)).thenReturn(Optional.of(encryptContext));
- when(metaData.isQueryWithCipherColumn("t_encrypt")).thenReturn(true);
+ when(metaData.isQueryWithCipherColumn("t_encrypt",
"order_id")).thenReturn(true);
when(metaData.findEncryptor("t_encrypt",
"order_id")).thenReturn(Optional.of(encryptAlgorithm));
assertNull(new EncryptMergedResult(metaData, mergedResult).getValue(1,
String.class));
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/impl/EncryptAlterTableTokenGeneratorTest.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/impl/EncryptAlterTableTokenGeneratorTest.java
index 730c1f664db..0f58e1024ce 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/impl/EncryptAlterTableTokenGeneratorTest.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/impl/EncryptAlterTableTokenGeneratorTest.java
@@ -89,7 +89,8 @@ public final class EncryptAlterTableTokenGeneratorTest {
EncryptColumnDataType cipherDataType = new
EncryptColumnDataType("varchar(200) not null default ''", dataTypes);
EncryptColumnDataType assistedQueryDataType = new
EncryptColumnDataType("varchar(200) not null", dataTypes);
EncryptColumnDataType plainDataType = new
EncryptColumnDataType("int(20) unsigned not null default 0", dataTypes);
- return new EncryptColumn(logicDataType, "cipher_certificate_number",
cipherDataType, "assisted_certificate_number", assistedQueryDataType,
"certificate_number_plain", plainDataType, "test");
+ return new EncryptColumn(logicDataType, "cipher_certificate_number",
cipherDataType, "assisted_certificate_number", assistedQueryDataType,
"certificate_number_plain", plainDataType,
+ "test", null);
}
private EncryptColumn mockNewEncryptColumn() {
@@ -101,7 +102,7 @@ public final class EncryptAlterTableTokenGeneratorTest {
EncryptColumnDataType assistedQueryDataType = new
EncryptColumnDataType("varchar(200) not null", dataTypes);
EncryptColumnDataType plainDataType = new
EncryptColumnDataType("int(20) unsigned not null default 0", dataTypes);
return new EncryptColumn(logicDataType,
"cipher_certificate_number_new", cipherDataType,
- "assisted_certificate_number_new", assistedQueryDataType,
"certificate_number_new_plain", plainDataType, "test");
+ "assisted_certificate_number_new", assistedQueryDataType,
"certificate_number_new_plain", plainDataType, "test", null);
}
@Test
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/impl/EncryptCreateTableTokenGeneratorTest.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/impl/EncryptCreateTableTokenGeneratorTest.java
index dc7d5a05c6d..0eb8f60bb79 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/impl/EncryptCreateTableTokenGeneratorTest.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/impl/EncryptCreateTableTokenGeneratorTest.java
@@ -108,6 +108,6 @@ public final class EncryptCreateTableTokenGeneratorTest {
EncryptColumnDataType assistedQueryDataType = new
EncryptColumnDataType("varchar(200) not null", dataTypes);
EncryptColumnDataType plainDataType = new
EncryptColumnDataType("int(20) unsigned not null default 0", dataTypes);
return new EncryptColumn(logicDataType, "cipher_certificate_number",
cipherDataType,
- "assisted_certificate_number", assistedQueryDataType,
"certificate_number_plain", plainDataType, "test");
+ "assisted_certificate_number", assistedQueryDataType,
"certificate_number_plain", plainDataType, "test", null);
}
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/impl/EncryptProjectionTokenGeneratorTest.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/impl/EncryptProjectionTokenGeneratorTest.java
index ce61796a056..923b7559611 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/impl/EncryptProjectionTokenGeneratorTest.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/impl/EncryptProjectionTokenGeneratorTest.java
@@ -70,7 +70,7 @@ public final class EncryptProjectionTokenGeneratorTest {
when(result.findPlainColumn("doctor1",
"mobile")).thenReturn(Optional.of("Mobile"));
when(result.findEncryptTable("doctor")).thenReturn(Optional.of(encryptTable1));
when(result.findEncryptTable("doctor1")).thenReturn(Optional.of(encryptTable2));
- EncryptColumn column = new EncryptColumn(null, "mobile", null, null,
null, "mobile", null, null);
+ EncryptColumn column = new EncryptColumn(null, "mobile", null, null,
null, "mobile", null, null, null);
when(result.findEncryptColumn("doctor",
"mobile")).thenReturn(Optional.of(column));
return result;
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rule/EncryptColumnTest.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rule/EncryptColumnTest.java
index d4d4a8b5b10..b3b13be3ce5 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rule/EncryptColumnTest.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rule/EncryptColumnTest.java
@@ -25,11 +25,11 @@ public final class EncryptColumnTest {
@Test
public void assertGetAssistedQueryColumn() {
- assertTrue(new EncryptColumn(null, "cipherColumn", null,
"assistedQueryColumn", null, "plainColumn", null,
"encryptorName").getAssistedQueryColumn().isPresent());
+ assertTrue(new EncryptColumn(null, "cipherColumn", null,
"assistedQueryColumn", null, "plainColumn", null, "encryptorName",
null).getAssistedQueryColumn().isPresent());
}
@Test
public void assertGetPlainColumn() {
- assertTrue(new EncryptColumn(null, "cipherColumn", null,
"assistedQueryColumn", null, "plainColumn", null,
"encryptorName").getPlainColumn().isPresent());
+ assertTrue(new EncryptColumn(null, "cipherColumn", null,
"assistedQueryColumn", null, "plainColumn", null, "encryptorName",
null).getPlainColumn().isPresent());
}
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rule/EncryptRuleTest.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rule/EncryptRuleTest.java
index a3206717de1..f98ab154348 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rule/EncryptRuleTest.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rule/EncryptRuleTest.java
@@ -50,7 +50,7 @@ public final class EncryptRuleTest {
@Test
public void
assertNewInstanceWithAlgorithmProvidedEncryptRuleConfiguration() {
- EncryptColumnRuleConfiguration encryptColumnConfig = new
EncryptColumnRuleConfiguration("encrypt_column", "encrypt_cipher", "", "",
"test_encryptor");
+ EncryptColumnRuleConfiguration encryptColumnConfig = new
EncryptColumnRuleConfiguration("encrypt_column", "encrypt_cipher", "", "",
"test_encryptor", null);
EncryptTableRuleConfiguration tableConfig = new
EncryptTableRuleConfiguration("t_encrypt",
Collections.singletonList(encryptColumnConfig), null);
AlgorithmProvidedEncryptRuleConfiguration ruleConfig = new
AlgorithmProvidedEncryptRuleConfiguration(
Collections.singleton(tableConfig),
Collections.singletonMap("test_encryptor", new CoreEncryptAlgorithmFixture()),
true);
@@ -61,7 +61,7 @@ public final class EncryptRuleTest {
@Test(expected = IllegalArgumentException.class)
public void assertNewInstanceWithInvalidConfiguration() {
ShardingSphereAlgorithmConfiguration encryptAlgorithmConfig = new
ShardingSphereAlgorithmConfiguration("CORE.FIXTURE", new Properties());
- EncryptColumnRuleConfiguration encryptColumnConfig = new
EncryptColumnRuleConfiguration("encrypt_column", "encrypt_cipher", "", "",
"test_encryptor");
+ EncryptColumnRuleConfiguration encryptColumnConfig = new
EncryptColumnRuleConfiguration("encrypt_column", "encrypt_cipher", "", "",
"test_encryptor", null);
EncryptTableRuleConfiguration tableConfig = new
EncryptTableRuleConfiguration("t_encrypt",
Collections.singletonList(encryptColumnConfig), null);
EncryptRuleConfiguration ruleConfig = new
EncryptRuleConfiguration(Collections.singleton(tableConfig),
Collections.singletonMap("invalid_encryptor", encryptAlgorithmConfig));
new EncryptRule(ruleConfig, Collections.emptyMap());
@@ -69,7 +69,7 @@ public final class EncryptRuleTest {
@Test(expected = IllegalArgumentException.class)
public void
assertNewInstanceWithInvalidAlgorithmProvidedEncryptRuleConfiguration() {
- EncryptColumnRuleConfiguration encryptColumnConfig = new
EncryptColumnRuleConfiguration("encrypt_column", "encrypt_cipher", "", "",
"test_encryptor");
+ EncryptColumnRuleConfiguration encryptColumnConfig = new
EncryptColumnRuleConfiguration("encrypt_column", "encrypt_cipher", "", "",
"test_encryptor", null);
EncryptTableRuleConfiguration tableConfig = new
EncryptTableRuleConfiguration("t_encrypt",
Collections.singletonList(encryptColumnConfig), null);
AlgorithmProvidedEncryptRuleConfiguration ruleConfig = new
AlgorithmProvidedEncryptRuleConfiguration(
Collections.singleton(tableConfig),
Collections.singletonMap("invalid_encryptor", new
CoreEncryptAlgorithmFixture()), true);
@@ -143,12 +143,30 @@ public final class EncryptRuleTest {
@Test
public void assertIsQueryWithCipherColumn() {
- EncryptColumnRuleConfiguration encryptColumnConfig = new
EncryptColumnRuleConfiguration("encrypt_column", "encrypt_cipher", "", "",
"test_encryptor");
- EncryptTableRuleConfiguration tableConfig = new
EncryptTableRuleConfiguration("t_encrypt",
Collections.singletonList(encryptColumnConfig), true);
+ EncryptColumnRuleConfiguration encryptColumnConfig = new
EncryptColumnRuleConfiguration("encrypt_column", "encrypt_cipher", "", "",
"test_encryptor", null);
+ EncryptTableRuleConfiguration tableConfig = new
EncryptTableRuleConfiguration("t_encrypt",
Collections.singletonList(encryptColumnConfig), null);
AlgorithmProvidedEncryptRuleConfiguration ruleConfig = new
AlgorithmProvidedEncryptRuleConfiguration(
Collections.singleton(tableConfig),
Collections.singletonMap("test_encryptor", new CoreEncryptAlgorithmFixture()),
true);
EncryptRule actual = new EncryptRule(ruleConfig,
Collections.emptyMap());
- assertTrue(actual.isQueryWithCipherColumn("t_encrypt"));
+ assertTrue(actual.isQueryWithCipherColumn("t_encrypt",
"encrypt_column"));
+
+ encryptColumnConfig = new
EncryptColumnRuleConfiguration("encrypt_column", "encrypt_cipher", "", "",
"test_encryptor", null);
+ tableConfig = new EncryptTableRuleConfiguration("t_encrypt",
Collections.singletonList(encryptColumnConfig), false);
+ ruleConfig = new
AlgorithmProvidedEncryptRuleConfiguration(Collections.singleton(tableConfig),
Collections.singletonMap("test_encryptor", new CoreEncryptAlgorithmFixture()),
true);
+ actual = new EncryptRule(ruleConfig, Collections.emptyMap());
+ assertFalse(actual.isQueryWithCipherColumn("t_encrypt",
"encrypt_column"));
+
+ encryptColumnConfig = new
EncryptColumnRuleConfiguration("encrypt_column", "encrypt_cipher", "", "",
"test_encryptor", true);
+ tableConfig = new EncryptTableRuleConfiguration("t_encrypt",
Collections.singletonList(encryptColumnConfig), false);
+ ruleConfig = new
AlgorithmProvidedEncryptRuleConfiguration(Collections.singleton(tableConfig),
Collections.singletonMap("test_encryptor", new CoreEncryptAlgorithmFixture()),
true);
+ actual = new EncryptRule(ruleConfig, Collections.emptyMap());
+ assertTrue(actual.isQueryWithCipherColumn("t_encrypt",
"encrypt_column"));
+
+ encryptColumnConfig = new
EncryptColumnRuleConfiguration("encrypt_column", "encrypt_cipher", "", "",
"test_encryptor", false);
+ tableConfig = new EncryptTableRuleConfiguration("t_encrypt",
Collections.singletonList(encryptColumnConfig), null);
+ ruleConfig = new
AlgorithmProvidedEncryptRuleConfiguration(Collections.singleton(tableConfig),
Collections.singletonMap("test_encryptor", new CoreEncryptAlgorithmFixture()),
true);
+ actual = new EncryptRule(ruleConfig, Collections.emptyMap());
+ assertFalse(actual.isQueryWithCipherColumn("t_encrypt",
"encrypt_column"));
}
@Test
@@ -185,9 +203,9 @@ public final class EncryptRuleTest {
private EncryptRuleConfiguration createEncryptRuleConfiguration() {
ShardingSphereAlgorithmConfiguration queryAssistedEncryptConfig = new
ShardingSphereAlgorithmConfiguration("CORE.QUERY_ASSISTED.FIXTURE", new
Properties());
ShardingSphereAlgorithmConfiguration metaDataAwareEncryptConfig = new
ShardingSphereAlgorithmConfiguration("CORE.METADATA_AWARE.FIXTURE", new
Properties());
- EncryptColumnRuleConfiguration pwdColumnConfig = new
EncryptColumnRuleConfiguration("pwd", "pwd_cipher", "", "pwd_plain",
"test_encryptor");
- EncryptColumnRuleConfiguration creditCardColumnConfig = new
EncryptColumnRuleConfiguration("credit_card", "credit_card_cipher", "",
"credit_card_plain", "test_encryptor");
- EncryptColumnRuleConfiguration nameColumnConfig = new
EncryptColumnRuleConfiguration("name", "name_cipher", "", "name_plain",
"customized_encryptor");
+ EncryptColumnRuleConfiguration pwdColumnConfig = new
EncryptColumnRuleConfiguration("pwd", "pwd_cipher", "", "pwd_plain",
"test_encryptor", null);
+ EncryptColumnRuleConfiguration creditCardColumnConfig = new
EncryptColumnRuleConfiguration("credit_card", "credit_card_cipher", "",
"credit_card_plain", "test_encryptor", null);
+ EncryptColumnRuleConfiguration nameColumnConfig = new
EncryptColumnRuleConfiguration("name", "name_cipher", "", "name_plain",
"customized_encryptor", null);
EncryptTableRuleConfiguration tableConfig = new
EncryptTableRuleConfiguration("t_encrypt", Arrays.asList(pwdColumnConfig,
creditCardColumnConfig, nameColumnConfig), null);
return new
EncryptRuleConfiguration(Collections.singleton(tableConfig),
getEncryptors(queryAssistedEncryptConfig, metaDataAwareEncryptConfig));
}
@@ -195,9 +213,9 @@ public final class EncryptRuleTest {
private EncryptRuleConfiguration
createEncryptRuleConfigurationWithUpperCaseLogicTable() {
ShardingSphereAlgorithmConfiguration queryAssistedEncryptConfig = new
ShardingSphereAlgorithmConfiguration("CORE.QUERY_ASSISTED.FIXTURE", new
Properties());
ShardingSphereAlgorithmConfiguration metaDataAwareEncryptConfig = new
ShardingSphereAlgorithmConfiguration("CORE.METADATA_AWARE.FIXTURE", new
Properties());
- EncryptColumnRuleConfiguration pwdColumnConfig = new
EncryptColumnRuleConfiguration("pwd", "pwd_cipher", "", "pwd_plain",
"test_encryptor");
- EncryptColumnRuleConfiguration creditCardColumnConfig = new
EncryptColumnRuleConfiguration("credit_card", "credit_card_cipher", "",
"credit_card_plain", "test_encryptor");
- EncryptColumnRuleConfiguration nameColumnConfig = new
EncryptColumnRuleConfiguration("name", "name_cipher", "", "name_plain",
"customized_encryptor");
+ EncryptColumnRuleConfiguration pwdColumnConfig = new
EncryptColumnRuleConfiguration("pwd", "pwd_cipher", "", "pwd_plain",
"test_encryptor", null);
+ EncryptColumnRuleConfiguration creditCardColumnConfig = new
EncryptColumnRuleConfiguration("credit_card", "credit_card_cipher", "",
"credit_card_plain", "test_encryptor", null);
+ EncryptColumnRuleConfiguration nameColumnConfig = new
EncryptColumnRuleConfiguration("name", "name_cipher", "", "name_plain",
"customized_encryptor", null);
EncryptTableRuleConfiguration tableConfig = new
EncryptTableRuleConfiguration("T_ENCRYPT", Arrays.asList(pwdColumnConfig,
creditCardColumnConfig, nameColumnConfig), null);
return new
EncryptRuleConfiguration(Collections.singleton(tableConfig),
getEncryptors(queryAssistedEncryptConfig, metaDataAwareEncryptConfig));
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rule/EncryptTableTest.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rule/EncryptTableTest.java
index 962c2a89135..3d4513b4c19 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rule/EncryptTableTest.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rule/EncryptTableTest.java
@@ -39,7 +39,7 @@ public final class EncryptTableTest {
@Before
public void setUp() {
encryptTable = new EncryptTable(new
EncryptTableRuleConfiguration("t_encrypt",
- Collections.singleton(new
EncryptColumnRuleConfiguration("logicColumn", "cipherColumn",
"assistedQueryColumn", "plainColumn", "myEncryptor")), null),
Collections.emptyMap());
+ Collections.singleton(new
EncryptColumnRuleConfiguration("logicColumn", "cipherColumn",
"assistedQueryColumn", "plainColumn", "myEncryptor", null)), null),
Collections.emptyMap());
}
@Test
@@ -123,10 +123,19 @@ public final class EncryptTableTest {
@Test
public void assertGetQueryWithCipherColumn() {
+ Optional<Boolean> actual =
encryptTable.getQueryWithCipherColumn("logicColumn");
+ assertFalse(actual.isPresent());
+
encryptTable = new EncryptTable(new
EncryptTableRuleConfiguration("t_encrypt",
- Collections.singleton(new
EncryptColumnRuleConfiguration("logicColumn", "cipherColumn",
"assistedQueryColumn", "plainColumn", "myEncryptor")), true),
Collections.emptyMap());
- Optional<Boolean> actual = encryptTable.getQueryWithCipherColumn();
+ Collections.singleton(new
EncryptColumnRuleConfiguration("logicColumn", "cipherColumn",
"assistedQueryColumn", "plainColumn", "myEncryptor", null)), true),
Collections.emptyMap());
+ actual = encryptTable.getQueryWithCipherColumn("logicColumn");
assertTrue(actual.isPresent());
assertTrue(actual.get());
+
+ encryptTable = new EncryptTable(new
EncryptTableRuleConfiguration("t_encrypt",
+ Collections.singleton(new
EncryptColumnRuleConfiguration("logicColumn", "cipherColumn",
"assistedQueryColumn", "plainColumn", "myEncryptor", false)), true),
Collections.emptyMap());
+ actual = encryptTable.getQueryWithCipherColumn("logicColumn");
+ assertTrue(actual.isPresent());
+ assertFalse(actual.get());
}
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/yaml/swapper/rule/EncryptColumnRuleConfigurationYamlSwapperTest.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/yaml/swapper/rule/EncryptColumnRuleConfigurationYamlSwapperTest.java
index 5f69ae425d0..1aba7d1fd07 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/yaml/swapper/rule/EncryptColumnRuleConfigurationYamlSwapperTest.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/yaml/swapper/rule/EncryptColumnRuleConfigurationYamlSwapperTest.java
@@ -29,12 +29,13 @@ public final class
EncryptColumnRuleConfigurationYamlSwapperTest {
@Test
public void assertSwapToYamlConfiguration() {
EncryptColumnRuleConfigurationYamlSwapper swapper = new
EncryptColumnRuleConfigurationYamlSwapper();
- EncryptColumnRuleConfiguration encryptColumnRuleConfig = new
EncryptColumnRuleConfiguration("logicColumn", "cipherColumn",
"assistedQueryColumn", "plainColumn", "encryptorName");
+ EncryptColumnRuleConfiguration encryptColumnRuleConfig = new
EncryptColumnRuleConfiguration("logicColumn", "cipherColumn",
"assistedQueryColumn", "plainColumn", "encryptorName", true);
YamlEncryptColumnRuleConfiguration actual =
swapper.swapToYamlConfiguration(encryptColumnRuleConfig);
assertThat(actual.getCipherColumn(), is("cipherColumn"));
assertThat(actual.getAssistedQueryColumn(), is("assistedQueryColumn"));
assertThat(actual.getPlainColumn(), is("plainColumn"));
assertThat(actual.getEncryptorName(), is("encryptorName"));
+ assertThat(actual.getQueryWithCipherColumn(), is(true));
}
@Test
@@ -46,11 +47,13 @@ public final class
EncryptColumnRuleConfigurationYamlSwapperTest {
yamlEncryptColumnRuleConfig.setAssistedQueryColumn("assistedQueryColumn");
yamlEncryptColumnRuleConfig.setPlainColumn("plainColumn");
yamlEncryptColumnRuleConfig.setEncryptorName("encryptorName");
+ yamlEncryptColumnRuleConfig.setQueryWithCipherColumn(true);
EncryptColumnRuleConfiguration actual =
swapper.swapToObject(yamlEncryptColumnRuleConfig);
assertThat(actual.getLogicColumn(), is("logicColumn"));
assertThat(actual.getCipherColumn(), is("cipherColumn"));
assertThat(actual.getAssistedQueryColumn(), is("assistedQueryColumn"));
assertThat(actual.getPlainColumn(), is("plainColumn"));
assertThat(actual.getEncryptorName(), is("encryptorName"));
+ assertThat(actual.getQueryWithCipherColumn(), is(true));
}
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/yaml/swapper/rule/EncryptTableRuleConfigurationYamlSwapperTest.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/yaml/swapper/rule/EncryptTableRuleConfigurationYamlSwapperTest.java
index 7bc89ee6258..62adebab4da 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/yaml/swapper/rule/EncryptTableRuleConfigurationYamlSwapperTest.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/yaml/swapper/rule/EncryptTableRuleConfigurationYamlSwapperTest.java
@@ -39,9 +39,9 @@ public final class
EncryptTableRuleConfigurationYamlSwapperTest {
@Test
public void assertSwapToYamlConfiguration() {
Collection<EncryptColumnRuleConfiguration> encryptColumnRuleConfigs =
Arrays.asList(
- new EncryptColumnRuleConfiguration("encrypt_column_1",
"encrypt_cipher_1", "", "", "test_encryptor_1"),
- new EncryptColumnRuleConfiguration("encrypt_column_2",
"encrypt_cipher_2", "", "", "test_encryptor_2"),
- new EncryptColumnRuleConfiguration("encrypt_column_3",
"encrypt_cipher_3", "", "", "test_encryptor_3"));
+ new EncryptColumnRuleConfiguration("encrypt_column_1",
"encrypt_cipher_1", "", "", "test_encryptor_1", null),
+ new EncryptColumnRuleConfiguration("encrypt_column_2",
"encrypt_cipher_2", "", "", "test_encryptor_2", null),
+ new EncryptColumnRuleConfiguration("encrypt_column_3",
"encrypt_cipher_3", "", "", "test_encryptor_3", null));
EncryptTableRuleConfiguration encryptTableRuleConfig = new
EncryptTableRuleConfiguration("test_table", encryptColumnRuleConfigs, null);
YamlEncryptTableRuleConfiguration actualYamlEncryptTableRuleConfig =
tableRuleConfigYamlSwapper.swapToYamlConfiguration(encryptTableRuleConfig);
Map<String, YamlEncryptColumnRuleConfiguration> actualColumns =
actualYamlEncryptTableRuleConfig.getColumns();
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleStatementConverter.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleStatementConverter.java
index 370bce1e52b..84321f98f51 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleStatementConverter.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleStatementConverter.java
@@ -62,7 +62,7 @@ public final class EncryptRuleStatementConverter {
private static EncryptColumnRuleConfiguration
createEncryptColumnRuleConfiguration(final String tableName, final
EncryptColumnSegment columnSegment) {
return new EncryptColumnRuleConfiguration(columnSegment.getName(),
columnSegment.getDataType(), columnSegment.getCipherColumn(),
columnSegment.getCipherDataType(),
columnSegment.getAssistedQueryColumn(),
columnSegment.getAssistedQueryDataType(),
- columnSegment.getPlainColumn(),
columnSegment.getPlainDataType(), getEncryptorName(tableName,
columnSegment.getName()));
+ columnSegment.getPlainColumn(),
columnSegment.getPlainDataType(), getEncryptorName(tableName,
columnSegment.getName()), null);
}
private static Map<String, ShardingSphereAlgorithmConfiguration>
createEncryptorConfigurations(final EncryptRuleSegment ruleSegment) {
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 fb278c45df1..1fe7edc6f24 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
@@ -59,7 +59,7 @@ public final class EncryptRuleQueryResultSetTest {
private RuleConfiguration getRuleConfiguration() {
EncryptColumnRuleConfiguration encryptColumnRuleConfig = new
EncryptColumnRuleConfiguration("user_id", "varchar(10)", "user_cipher",
"varchar(10)", null, null,
- "user_plain", "varchar(10)", "test");
+ "user_plain", "varchar(10)", "test", null);
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-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleStatementUpdaterTest.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleStatementUpdaterTest.java
index f83dee638a8..b9e01ba324c 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleStatementUpdaterTest.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleStatementUpdaterTest.java
@@ -91,7 +91,7 @@ public final class DropEncryptRuleStatementUpdaterTest {
}
private EncryptRuleConfiguration createCurrentRuleConfiguration() {
- EncryptColumnRuleConfiguration columnRuleConfig = new
EncryptColumnRuleConfiguration("user_id", "user_cipher", "", "user_plain",
"t_encrypt_user_id_MD5");
+ EncryptColumnRuleConfiguration columnRuleConfig = new
EncryptColumnRuleConfiguration("user_id", "user_cipher", "", "user_plain",
"t_encrypt_user_id_MD5", null);
EncryptTableRuleConfiguration tableRuleConfig = new
EncryptTableRuleConfiguration("t_encrypt",
Collections.singleton(columnRuleConfig), null);
Map<String, ShardingSphereAlgorithmConfiguration> encryptors = new
HashMap<>(
Collections.singletonMap("t_encrypt_user_id_MD5", new
ShardingSphereAlgorithmConfiguration("TEST", new Properties())));
@@ -99,7 +99,7 @@ public final class DropEncryptRuleStatementUpdaterTest {
}
private EncryptRuleConfiguration
createCurrentRuleConfigurationWithMultipleTableRules() {
- EncryptColumnRuleConfiguration columnRuleConfig = new
EncryptColumnRuleConfiguration("user_id", "user_cipher", "", "user_plain",
"t_encrypt_user_id_MD5");
+ EncryptColumnRuleConfiguration columnRuleConfig = new
EncryptColumnRuleConfiguration("user_id", "user_cipher", "", "user_plain",
"t_encrypt_user_id_MD5", null);
EncryptTableRuleConfiguration tableRuleConfig = new
EncryptTableRuleConfiguration("t_encrypt",
Collections.singleton(columnRuleConfig), null);
Map<String, ShardingSphereAlgorithmConfiguration> encryptors =
Collections.singletonMap("t_encrypt_user_id_MD5", new
ShardingSphereAlgorithmConfiguration("TEST", new Properties()));
return new EncryptRuleConfiguration(new
LinkedList<>(Arrays.asList(tableRuleConfig,
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-namespace/src/main/java/org/apache/shardingsphere/encrypt/spring/namespace/parser/EncryptRuleBeanDefinitionParser.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-namespace/src/main/java/org/apache/shardingsphere/encrypt/spring/namespace/parser/EncryptRuleBeanDefinitionParser.java
index c1261bb10bf..578c0ba771a 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-namespace/src/main/java/org/apache/shardingsphere/encrypt/spring/namespace/parser/EncryptRuleBeanDefinitionParser.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-namespace/src/main/java/org/apache/shardingsphere/encrypt/spring/namespace/parser/EncryptRuleBeanDefinitionParser.java
@@ -83,6 +83,7 @@ public final class EncryptRuleBeanDefinitionParser extends
AbstractBeanDefinitio
factory.addConstructorArgValue(element.getAttribute(EncryptRuleBeanDefinitionTag.ASSISTED_QUERY_COLUMN_ATTRIBUTE));
factory.addConstructorArgValue(element.getAttribute(EncryptRuleBeanDefinitionTag.PLAIN_COLUMN_ATTRIBUTE));
factory.addConstructorArgValue(element.getAttribute(EncryptRuleBeanDefinitionTag.ENCRYPT_ALGORITHM_REF_ATTRIBUTE));
+
factory.addConstructorArgValue(element.getAttribute(EncryptRuleBeanDefinitionTag.QUERY_WITH_CIPHER_COLUMN));
return factory.getBeanDefinition();
}
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-namespace/src/main/resources/META-INF/namespace/encrypt.xsd
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-namespace/src/main/resources/META-INF/namespace/encrypt.xsd
index 36418c71f71..261aa3fdda3 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-namespace/src/main/resources/META-INF/namespace/encrypt.xsd
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-namespace/src/main/resources/META-INF/namespace/encrypt.xsd
@@ -49,6 +49,7 @@
<xsd:attribute name="assisted-query-column" type="xsd:string" />
<xsd:attribute name="plain-column" type="xsd:string" />
<xsd:attribute name="encrypt-algorithm-ref" type="xsd:string"
use="required" />
+ <xsd:attribute name="query-with-cipher-column" type="xsd:boolean"
/>
</xsd:complexType>
</xsd:element>
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-namespace/src/test/java/org/apache/shardingsphere/encrypt/spring/namespace/EncryptSpringNamespaceTest.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-namespace/src/test/java/org/apache/shardingsphere/encrypt/spring/namespace/EncryptSpringNamespaceTest.java
index 431cab4e402..6ef3cfc2b9b 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-namespace/src/test/java/org/apache/shardingsphere/encrypt/spring/namespace/EncryptSpringNamespaceTest.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-namespace/src/test/java/org/apache/shardingsphere/encrypt/spring/namespace/EncryptSpringNamespaceTest.java
@@ -35,6 +35,7 @@ import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
@ContextConfiguration(locations =
"classpath:META-INF/spring/encrypt-application-context.xml")
public final class EncryptSpringNamespaceTest extends
AbstractJUnit4SpringContextTests {
@@ -86,6 +87,7 @@ public final class EncryptSpringNamespaceTest extends
AbstractJUnit4SpringContex
assertThat(columnRuleConfig.getLogicColumn(), is("pwd"));
assertThat(columnRuleConfig.getCipherColumn(), is("pwd_cipher"));
assertThat(columnRuleConfig.getEncryptorName(), is("aesEncryptor"));
+ assertTrue(columnRuleConfig.getQueryWithCipherColumn());
}
private void assertEncryptColumn2(final EncryptColumnRuleConfiguration
columnRuleConfig) {
@@ -94,5 +96,6 @@ public final class EncryptSpringNamespaceTest extends
AbstractJUnit4SpringContex
assertThat(columnRuleConfig.getAssistedQueryColumn(),
is("credit_card_assisted_query"));
assertThat(columnRuleConfig.getPlainColumn(), is("credit_card_plain"));
assertThat(columnRuleConfig.getEncryptorName(), is("md5Encryptor"));
+ assertFalse(columnRuleConfig.getQueryWithCipherColumn());
}
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-namespace/src/test/resources/META-INF/spring/encrypt-application-context.xml
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-namespace/src/test/resources/META-INF/spring/encrypt-application-context.xml
index 11e47e022d5..772ae6cd945 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-namespace/src/test/resources/META-INF/spring/encrypt-application-context.xml
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-namespace/src/test/resources/META-INF/spring/encrypt-application-context.xml
@@ -38,8 +38,8 @@
<encrypt:rule id="encryptRule">
<encrypt:table name="t_order" query-with-cipher-column="false">
- <encrypt:column logic-column="pwd" cipher-column="pwd_cipher"
encrypt-algorithm-ref="aesEncryptor" />
- <encrypt:column logic-column="credit_card"
cipher-column="credit_card_cipher"
assisted-query-column="credit_card_assisted_query"
plain-column="credit_card_plain" encrypt-algorithm-ref="md5Encryptor" />
+ <encrypt:column logic-column="pwd" cipher-column="pwd_cipher"
encrypt-algorithm-ref="aesEncryptor" query-with-cipher-column="true" />
+ <encrypt:column logic-column="credit_card"
cipher-column="credit_card_cipher"
assisted-query-column="credit_card_assisted_query"
plain-column="credit_card_plain" encrypt-algorithm-ref="md5Encryptor"
query-with-cipher-column="false" />
</encrypt:table>
</encrypt:rule>
</beans>