This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 f489e895f50 Merge MergedEncryptShowCreateTableMergedResult and
DecoratedEncryptShowCreateTableMergedResult into
EncryptShowCreateTableMergedResult (#33603)
f489e895f50 is described below
commit f489e895f501755bf12174aa71d4ff81bb8a5d96
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Nov 9 11:53:34 2024 +0800
Merge MergedEncryptShowCreateTableMergedResult and
DecoratedEncryptShowCreateTableMergedResult into
EncryptShowCreateTableMergedResult (#33603)
* Add more test cases on EncryptShowColumnsMergedResult
* Merge MergedEncryptShowColumnsMergedResult and
DecoratedEncryptShowColumnsMergedResult
* Merge MergedEncryptShowColumnsMergedResult and
DecoratedEncryptShowColumnsMergedResult
* Merge MergedEncryptShowCreateTableMergedResult and
DecoratedEncryptShowCreateTableMergedResult into
EncryptShowCreateTableMergedResult
* Merge MergedEncryptShowCreateTableMergedResult and
DecoratedEncryptShowCreateTableMergedResult into
EncryptShowCreateTableMergedResult
* Merge MergedEncryptShowCreateTableMergedResult and
DecoratedEncryptShowCreateTableMergedResult into
EncryptShowCreateTableMergedResult
* Merge MergedEncryptShowCreateTableMergedResult and
DecoratedEncryptShowCreateTableMergedResult into
EncryptShowCreateTableMergedResult
---
.../merge/dal/EncryptDALResultDecorator.java | 7 +-
...ecoratedEncryptShowCreateTableMergedResult.java | 54 --------
.../show/EncryptShowCreateTableMergedResult.java | 29 +++--
.../MergedEncryptShowCreateTableMergedResult.java | 54 --------
.../merge/dal/EncryptDALResultDecoratorTest.java | 6 +-
...=> EncryptShowCreateTableMergedResultTest.java} | 20 +--
...rgedEncryptShowCreateTableMergedResultTest.java | 136 ---------------------
7 files changed, 32 insertions(+), 274 deletions(-)
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecorator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecorator.java
index 9ec48af5266..167fdb45214 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecorator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecorator.java
@@ -18,9 +18,8 @@
package org.apache.shardingsphere.encrypt.merge.dal;
import lombok.RequiredArgsConstructor;
-import
org.apache.shardingsphere.encrypt.merge.dal.show.DecoratedEncryptShowCreateTableMergedResult;
import
org.apache.shardingsphere.encrypt.merge.dal.show.EncryptShowColumnsMergedResult;
-import
org.apache.shardingsphere.encrypt.merge.dal.show.MergedEncryptShowCreateTableMergedResult;
+import
org.apache.shardingsphere.encrypt.merge.dal.show.EncryptShowCreateTableMergedResult;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
@@ -48,7 +47,7 @@ public final class EncryptDALResultDecorator implements
ResultDecorator<EncryptR
return new EncryptShowColumnsMergedResult(new
TransparentMergedResult(queryResult), sqlStatementContext, rule);
}
if (sqlStatement instanceof MySQLShowCreateTableStatement) {
- return new
MergedEncryptShowCreateTableMergedResult(globalRuleMetaData, queryResult,
sqlStatementContext, rule);
+ return new EncryptShowCreateTableMergedResult(globalRuleMetaData,
new TransparentMergedResult(queryResult), sqlStatementContext, rule);
}
return new TransparentMergedResult(queryResult);
}
@@ -60,7 +59,7 @@ public final class EncryptDALResultDecorator implements
ResultDecorator<EncryptR
return new EncryptShowColumnsMergedResult(mergedResult,
sqlStatementContext, rule);
}
if (sqlStatement instanceof MySQLShowCreateTableStatement) {
- return new
DecoratedEncryptShowCreateTableMergedResult(globalRuleMetaData, mergedResult,
sqlStatementContext, rule);
+ return new EncryptShowCreateTableMergedResult(globalRuleMetaData,
mergedResult, sqlStatementContext, rule);
}
return mergedResult;
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowCreateTableMergedResult.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowCreateTableMergedResult.java
deleted file mode 100644
index 2c8b6624cba..00000000000
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowCreateTableMergedResult.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.encrypt.merge.dal.show;
-
-import org.apache.shardingsphere.encrypt.rule.EncryptRule;
-import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
-import org.apache.shardingsphere.infra.merge.result.MergedResult;
-import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
-
-import java.sql.SQLException;
-
-/**
- * Decorated encrypt show create table merged result.
- */
-public final class DecoratedEncryptShowCreateTableMergedResult extends
EncryptShowCreateTableMergedResult {
-
- private final MergedResult mergedResult;
-
- public DecoratedEncryptShowCreateTableMergedResult(final RuleMetaData
globalRuleMetaData, final MergedResult mergedResult, final SQLStatementContext
sqlStatementContext,
- final EncryptRule
encryptRule) {
- super(globalRuleMetaData, sqlStatementContext, encryptRule);
- this.mergedResult = mergedResult;
- }
-
- @Override
- protected boolean nextValue() throws SQLException {
- return mergedResult.next();
- }
-
- @Override
- protected Object getOriginalValue(final int columnIndex, final Class<?>
type) throws SQLException {
- return mergedResult.getValue(columnIndex, type);
- }
-
- @Override
- public boolean wasNull() throws SQLException {
- return mergedResult.wasNull();
- }
-}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
index 38df599b838..bdada6bdefe 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
@@ -43,35 +43,39 @@ import java.util.Optional;
/**
* Encrypt show create table merged result.
*/
-public abstract class EncryptShowCreateTableMergedResult implements
MergedResult {
+public final class EncryptShowCreateTableMergedResult implements MergedResult {
private static final String COMMA = ", ";
private static final int CREATE_TABLE_DEFINITION_INDEX = 2;
+ private final MergedResult mergedResult;
+
private final String tableName;
private final EncryptRule encryptRule;
private final SQLParserEngine sqlParserEngine;
- protected EncryptShowCreateTableMergedResult(final RuleMetaData
globalRuleMetaData, final SQLStatementContext sqlStatementContext, final
EncryptRule encryptRule) {
+ public EncryptShowCreateTableMergedResult(final RuleMetaData
globalRuleMetaData, final MergedResult mergedResult,
+ final SQLStatementContext
sqlStatementContext, final EncryptRule encryptRule) {
ShardingSpherePreconditions.checkState(sqlStatementContext instanceof
TableAvailable && 1 == ((TableAvailable)
sqlStatementContext).getTablesContext().getSimpleTables().size(),
() -> new UnsupportedEncryptSQLException("SHOW CREATE TABLE
FOR MULTI TABLE"));
+ this.mergedResult = mergedResult;
tableName = ((TableAvailable)
sqlStatementContext).getTablesContext().getSimpleTables().iterator().next().getTableName().getIdentifier().getValue();
this.encryptRule = encryptRule;
sqlParserEngine =
globalRuleMetaData.getSingleRule(SQLParserRule.class).getSQLParserEngine(sqlStatementContext.getDatabaseType());
}
@Override
- public final boolean next() throws SQLException {
- return nextValue();
+ public boolean next() throws SQLException {
+ return mergedResult.next();
}
@Override
- public final Object getValue(final int columnIndex, final Class<?> type)
throws SQLException {
+ public Object getValue(final int columnIndex, final Class<?> type) throws
SQLException {
if (CREATE_TABLE_DEFINITION_INDEX == columnIndex) {
- String result = getOriginalValue(CREATE_TABLE_DEFINITION_INDEX,
type).toString();
+ String result =
mergedResult.getValue(CREATE_TABLE_DEFINITION_INDEX, type).toString();
Optional<EncryptTable> encryptTable =
encryptRule.findEncryptTable(tableName);
if (!encryptTable.isPresent() || !result.contains("(")) {
return result;
@@ -86,7 +90,7 @@ public abstract class EncryptShowCreateTableMergedResult
implements MergedResult
builder.delete(builder.length() - COMMA.length(),
builder.length()).append(result.substring(columnDefinitions.get(columnDefinitions.size()
- 1).getStopIndex() + 1));
return builder.toString();
}
- return getOriginalValue(columnIndex, type);
+ return mergedResult.getValue(columnIndex, type);
}
private Optional<String> findLogicColumnDefinition(final
ColumnDefinitionSegment columnDefinition, final EncryptTable encryptTable,
final String sql) {
@@ -108,12 +112,12 @@ public abstract class EncryptShowCreateTableMergedResult
implements MergedResult
}
@Override
- public final Object getCalendarValue(final int columnIndex, final Class<?>
type, final Calendar calendar) throws SQLException {
+ public Object getCalendarValue(final int columnIndex, final Class<?> type,
final Calendar calendar) throws SQLException {
throw new SQLFeatureNotSupportedException("");
}
@Override
- public final InputStream getInputStream(final int columnIndex, final
String type) throws SQLException {
+ public InputStream getInputStream(final int columnIndex, final String
type) throws SQLException {
throw new SQLFeatureNotSupportedException("");
}
@@ -122,7 +126,8 @@ public abstract class EncryptShowCreateTableMergedResult
implements MergedResult
throw new SQLFeatureNotSupportedException("");
}
- protected abstract boolean nextValue() throws SQLException;
-
- protected abstract Object getOriginalValue(int columnIndex, Class<?> type)
throws SQLException;
+ @Override
+ public boolean wasNull() throws SQLException {
+ return mergedResult.wasNull();
+ }
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowCreateTableMergedResult.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowCreateTableMergedResult.java
deleted file mode 100644
index db7485ea2ec..00000000000
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowCreateTableMergedResult.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.encrypt.merge.dal.show;
-
-import org.apache.shardingsphere.encrypt.rule.EncryptRule;
-import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
-import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
-
-import java.sql.SQLException;
-
-/**
- * Merged encrypt show create table merged result.
- */
-public final class MergedEncryptShowCreateTableMergedResult extends
EncryptShowCreateTableMergedResult {
-
- private final QueryResult queryResult;
-
- public MergedEncryptShowCreateTableMergedResult(final RuleMetaData
globalRuleMetaData, final QueryResult queryResult, final SQLStatementContext
sqlStatementContext,
- final EncryptRule
encryptRule) {
- super(globalRuleMetaData, sqlStatementContext, encryptRule);
- this.queryResult = queryResult;
- }
-
- @Override
- protected boolean nextValue() throws SQLException {
- return queryResult.next();
- }
-
- @Override
- protected Object getOriginalValue(final int columnIndex, final Class<?>
type) throws SQLException {
- return queryResult.getValue(columnIndex, type);
- }
-
- @Override
- public boolean wasNull() throws SQLException {
- return queryResult.wasNull();
- }
-}
diff --git
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecoratorTest.java
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecoratorTest.java
index efda9b4babe..252d75954a3 100644
---
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecoratorTest.java
+++
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecoratorTest.java
@@ -17,9 +17,8 @@
package org.apache.shardingsphere.encrypt.merge.dal;
-import
org.apache.shardingsphere.encrypt.merge.dal.show.DecoratedEncryptShowCreateTableMergedResult;
import
org.apache.shardingsphere.encrypt.merge.dal.show.EncryptShowColumnsMergedResult;
-import
org.apache.shardingsphere.encrypt.merge.dal.show.MergedEncryptShowCreateTableMergedResult;
+import
org.apache.shardingsphere.encrypt.merge.dal.show.EncryptShowCreateTableMergedResult;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.dal.ExplainStatementContext;
@@ -82,8 +81,7 @@ class EncryptDALResultDecoratorTest {
RuleMetaData ruleMetaData = mock(RuleMetaData.class);
when(ruleMetaData.getSingleRule(SQLParserRule.class)).thenReturn(mock(SQLParserRule.class));
EncryptDALResultDecorator encryptDALResultDecorator = new
EncryptDALResultDecorator(ruleMetaData);
- assertThat(encryptDALResultDecorator.decorate(mock(QueryResult.class),
sqlStatementContext, rule),
instanceOf(MergedEncryptShowCreateTableMergedResult.class));
-
assertThat(encryptDALResultDecorator.decorate(mock(MergedResult.class),
sqlStatementContext, rule),
instanceOf(DecoratedEncryptShowCreateTableMergedResult.class));
+
assertThat(encryptDALResultDecorator.decorate(mock(MergedResult.class),
sqlStatementContext, rule),
instanceOf(EncryptShowCreateTableMergedResult.class));
}
@Test
diff --git
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowCreateTableMergedResultTest.java
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResultTest.java
similarity index 86%
rename from
features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowCreateTableMergedResultTest.java
rename to
features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResultTest.java
index 056d14559a9..fbef912fe40 100644
---
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowCreateTableMergedResultTest.java
+++
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResultTest.java
@@ -53,20 +53,20 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
-class DecoratedEncryptShowCreateTableMergedResultTest {
+class EncryptShowCreateTableMergedResultTest {
@Mock
private MergedResult mergedResult;
@Test
void assertNextWhenNextExist() throws SQLException {
-
assertFalse(createDecoratedEncryptShowCreateTableMergedResult(mergedResult,
mock(EncryptRule.class)).next());
+ assertFalse(createEncryptShowCreateTableMergedResult(mergedResult,
mock(EncryptRule.class)).next());
}
@Test
void assertNextWhenNextNotExist() throws SQLException {
when(mergedResult.next()).thenReturn(true);
-
assertTrue(createDecoratedEncryptShowCreateTableMergedResult(mergedResult,
mock(EncryptRule.class)).next());
+ assertTrue(createEncryptShowCreateTableMergedResult(mergedResult,
mock(EncryptRule.class)).next());
}
@Test
@@ -76,7 +76,7 @@ class DecoratedEncryptShowCreateTableMergedResultTest {
"CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id_cipher`
FLOAT(10, 2) NOT NULL "
+ "COMMENT ',123\\&/\\`\"abc', `order_id` VARCHAR(30)
NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
EncryptColumnRuleConfiguration columnRuleConfig = new
EncryptColumnRuleConfiguration("user_id", new
EncryptColumnItemRuleConfiguration("user_id_cipher", "foo_encryptor"));
- DecoratedEncryptShowCreateTableMergedResult actual =
createDecoratedEncryptShowCreateTableMergedResult(mergedResult,
mockEncryptRule(Collections.singleton(columnRuleConfig)));
+ EncryptShowCreateTableMergedResult actual =
createEncryptShowCreateTableMergedResult(mergedResult,
mockEncryptRule(Collections.singleton(columnRuleConfig)));
assertTrue(actual.next());
assertThat(actual.getValue(2, String.class),
is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id`
FLOAT(10, 2) NOT NULL "
@@ -91,7 +91,7 @@ class DecoratedEncryptShowCreateTableMergedResultTest {
+ "`user_id_assisted` VARCHAR(100) NOT NULL,
`order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT
CHARSET=utf8mb4;");
EncryptColumnRuleConfiguration columnRuleConfig = new
EncryptColumnRuleConfiguration("user_id", new
EncryptColumnItemRuleConfiguration("user_id_cipher", "foo_encryptor"));
columnRuleConfig.setAssistedQuery(new
EncryptColumnItemRuleConfiguration("user_id_assisted",
"foo_assist_query_encryptor"));
- DecoratedEncryptShowCreateTableMergedResult actual =
createDecoratedEncryptShowCreateTableMergedResult(mergedResult,
mockEncryptRule(Collections.singleton(columnRuleConfig)));
+ EncryptShowCreateTableMergedResult actual =
createEncryptShowCreateTableMergedResult(mergedResult,
mockEncryptRule(Collections.singleton(columnRuleConfig)));
assertTrue(actual.next());
assertThat(actual.getValue(2, String.class),
is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id`
VARCHAR(100) NOT NULL, `order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`))
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"));
@@ -104,7 +104,7 @@ class DecoratedEncryptShowCreateTableMergedResultTest {
+ "`user_id_like` VARCHAR(100) NOT NULL, `order_id`
VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT
CHARSET=utf8mb4;");
EncryptColumnRuleConfiguration columnRuleConfig = new
EncryptColumnRuleConfiguration("user_id", new
EncryptColumnItemRuleConfiguration("user_id_cipher", "foo_encryptor"));
columnRuleConfig.setLikeQuery(new
EncryptColumnItemRuleConfiguration("user_id_like", "foo_like_encryptor"));
- DecoratedEncryptShowCreateTableMergedResult actual =
createDecoratedEncryptShowCreateTableMergedResult(mergedResult,
mockEncryptRule(Collections.singleton(columnRuleConfig)));
+ EncryptShowCreateTableMergedResult actual =
createEncryptShowCreateTableMergedResult(mergedResult,
mockEncryptRule(Collections.singleton(columnRuleConfig)));
assertTrue(actual.next());
assertThat(actual.getValue(2, String.class),
is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id`
VARCHAR(100) NOT NULL, `order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`))
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"));
@@ -130,7 +130,7 @@ class DecoratedEncryptShowCreateTableMergedResultTest {
EncryptColumnRuleConfiguration orderIdColumnConfig = new
EncryptColumnRuleConfiguration("order_id", new
EncryptColumnItemRuleConfiguration("order_id_cipher", "foo_encryptor"));
orderIdColumnConfig.setLikeQuery(new
EncryptColumnItemRuleConfiguration("order_id_like", "foo_like_encryptor"));
columns.add(orderIdColumnConfig);
- DecoratedEncryptShowCreateTableMergedResult actual =
createDecoratedEncryptShowCreateTableMergedResult(mergedResult,
mockEncryptRule(columns));
+ EncryptShowCreateTableMergedResult actual =
createEncryptShowCreateTableMergedResult(mergedResult,
mockEncryptRule(columns));
assertTrue(actual.next());
assertThat(actual.getValue(2, String.class),
is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id`
VARCHAR(100) NOT NULL, `order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`))
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"));
@@ -138,10 +138,10 @@ class DecoratedEncryptShowCreateTableMergedResultTest {
@Test
void assertWasNull() throws SQLException {
-
assertFalse(createDecoratedEncryptShowCreateTableMergedResult(mergedResult,
mock(EncryptRule.class)).wasNull());
+ assertFalse(createEncryptShowCreateTableMergedResult(mergedResult,
mock(EncryptRule.class)).wasNull());
}
- private DecoratedEncryptShowCreateTableMergedResult
createDecoratedEncryptShowCreateTableMergedResult(final MergedResult
mergedResult, final EncryptRule encryptRule) {
+ private EncryptShowCreateTableMergedResult
createEncryptShowCreateTableMergedResult(final MergedResult mergedResult, final
EncryptRule encryptRule) {
ShowCreateTableStatementContext sqlStatementContext =
mock(ShowCreateTableStatementContext.class, RETURNS_DEEP_STUBS);
IdentifierValue identifierValue = new IdentifierValue("t_encrypt");
TableNameSegment tableNameSegment = new TableNameSegment(1, 4,
identifierValue);
@@ -150,6 +150,6 @@ class DecoratedEncryptShowCreateTableMergedResultTest {
when(sqlStatementContext.getDatabaseType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"MySQL"));
RuleMetaData ruleMetaData = mock(RuleMetaData.class);
when(ruleMetaData.getSingleRule(SQLParserRule.class)).thenReturn(new
SQLParserRule(new SQLParserRuleConfiguration(new CacheOption(128, 1024L), new
CacheOption(2000, 65535L))));
- return new DecoratedEncryptShowCreateTableMergedResult(ruleMetaData,
mergedResult, sqlStatementContext, encryptRule);
+ return new EncryptShowCreateTableMergedResult(ruleMetaData,
mergedResult, sqlStatementContext, encryptRule);
}
}
diff --git
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowCreateTableMergedResultTest.java
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowCreateTableMergedResultTest.java
deleted file mode 100644
index c250c4ee1a0..00000000000
---
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowCreateTableMergedResultTest.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.encrypt.merge.dal.show;
-
-import
org.apache.shardingsphere.encrypt.config.rule.EncryptColumnItemRuleConfiguration;
-import
org.apache.shardingsphere.encrypt.config.rule.EncryptColumnRuleConfiguration;
-import
org.apache.shardingsphere.encrypt.config.rule.EncryptTableRuleConfiguration;
-import org.apache.shardingsphere.encrypt.rule.EncryptRule;
-import org.apache.shardingsphere.encrypt.rule.table.EncryptTable;
-import
org.apache.shardingsphere.infra.binder.context.statement.dal.ShowCreateTableStatementContext;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.parser.config.SQLParserRuleConfiguration;
-import org.apache.shardingsphere.parser.rule.SQLParserRule;
-import org.apache.shardingsphere.sql.parser.api.CacheOption;
-import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.TableNameSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-import java.sql.SQLException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Optional;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-@ExtendWith(MockitoExtension.class)
-class MergedEncryptShowCreateTableMergedResultTest {
-
- @Mock
- private QueryResult queryResult;
-
- @Test
- void assertNextWhenNextExist() throws SQLException {
-
assertFalse(createMergedEncryptShowCreateTableMergedResult(queryResult,
mock(EncryptRule.class)).next());
- }
-
- @Test
- void assertNextWhenNextNotExist() throws SQLException {
- when(queryResult.next()).thenReturn(true);
- assertTrue(createMergedEncryptShowCreateTableMergedResult(queryResult,
mock(EncryptRule.class)).next());
- }
-
- @Test
- void assertGetValueWhenConfigFloatDataTypeAndComment() throws SQLException
{
- when(queryResult.next()).thenReturn(true).thenReturn(false);
- when(queryResult.getValue(2, String.class)).thenReturn(
- "CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id_cipher`
FLOAT(10, 2) NOT NULL "
- + "COMMENT ',123\\&/\\`\"abc', `order_id` VARCHAR(30)
NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
- EncryptColumnRuleConfiguration columnRuleConfig = new
EncryptColumnRuleConfiguration("user_id", new
EncryptColumnItemRuleConfiguration("user_id_cipher", "foo_encryptor"));
- MergedEncryptShowCreateTableMergedResult actual =
createMergedEncryptShowCreateTableMergedResult(queryResult,
mockEncryptRule(Collections.singleton(columnRuleConfig)));
- assertTrue(actual.next());
- assertThat(actual.getValue(2, String.class),
- is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id`
FLOAT(10, 2) NOT NULL "
- + "COMMENT ',123\\&/\\`\"abc', `order_id` VARCHAR(30)
NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"));
- }
-
- @Test
- void assertGetValueWhenConfigAssistedQueryColumn() throws SQLException {
- when(queryResult.next()).thenReturn(true).thenReturn(false);
- when(queryResult.getValue(2, String.class)).thenReturn(
- "CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id_cipher`
VARCHAR(100) NOT NULL, "
- + "`user_id_assisted` VARCHAR(100) NOT NULL,
`order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT
CHARSET=utf8mb4;");
- EncryptColumnRuleConfiguration columnRuleConfig = new
EncryptColumnRuleConfiguration("user_id", new
EncryptColumnItemRuleConfiguration("user_id_cipher", "foo_encryptor"));
- columnRuleConfig.setAssistedQuery(new
EncryptColumnItemRuleConfiguration("user_id_assisted",
"foo_assist_query_encryptor"));
- MergedEncryptShowCreateTableMergedResult actual =
createMergedEncryptShowCreateTableMergedResult(queryResult,
mockEncryptRule(Collections.singleton(columnRuleConfig)));
- assertTrue(actual.next());
- assertThat(actual.getValue(2, String.class),
- is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id`
VARCHAR(100) NOT NULL, `order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`))
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"));
- }
-
- @Test
- void assertGetValueWhenConfigLikeQueryColumn() throws SQLException {
- when(queryResult.next()).thenReturn(true).thenReturn(false);
- when(queryResult.getValue(2, String.class)).thenReturn(
- "CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id_cipher`
VARCHAR(100) NOT NULL, "
- + "`user_id_like` VARCHAR(100) NOT NULL, `order_id`
VARCHAR(30) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT
CHARSET=utf8mb4;");
- EncryptColumnRuleConfiguration columnRuleConfig = new
EncryptColumnRuleConfiguration("user_id", new
EncryptColumnItemRuleConfiguration("user_id_cipher", "foo_encryptor"));
- columnRuleConfig.setLikeQuery(new
EncryptColumnItemRuleConfiguration("user_id_like", "foo_like_encryptor"));
- MergedEncryptShowCreateTableMergedResult actual =
createMergedEncryptShowCreateTableMergedResult(queryResult,
mockEncryptRule(Collections.singleton(columnRuleConfig)));
- assertTrue(actual.next());
- assertThat(actual.getValue(2, String.class),
- is("CREATE TABLE `t_encrypt` (`id` INT NOT NULL, `user_id`
VARCHAR(100) NOT NULL, `order_id` VARCHAR(30) NOT NULL, PRIMARY KEY (`id`))
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"));
- }
-
- private EncryptRule mockEncryptRule(final
Collection<EncryptColumnRuleConfiguration> columnRuleConfigs) {
- EncryptRule result = mock(EncryptRule.class);
- EncryptTable encryptTable = new EncryptTable(new
EncryptTableRuleConfiguration("t_encrypt", columnRuleConfigs),
Collections.emptyMap());
-
when(result.findEncryptTable("t_encrypt")).thenReturn(Optional.of(encryptTable));
- return result;
- }
-
- @Test
- void assertWasNull() throws SQLException {
-
assertFalse(createMergedEncryptShowCreateTableMergedResult(queryResult,
mock(EncryptRule.class)).wasNull());
- }
-
- private MergedEncryptShowCreateTableMergedResult
createMergedEncryptShowCreateTableMergedResult(final QueryResult queryResult,
final EncryptRule encryptRule) {
- ShowCreateTableStatementContext sqlStatementContext =
mock(ShowCreateTableStatementContext.class, RETURNS_DEEP_STUBS);
- IdentifierValue identifierValue = new IdentifierValue("t_encrypt");
- TableNameSegment tableNameSegment = new TableNameSegment(1, 4,
identifierValue);
- SimpleTableSegment simpleTableSegment = new
SimpleTableSegment(tableNameSegment);
-
when(sqlStatementContext.getTablesContext().getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment));
-
when(sqlStatementContext.getDatabaseType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"MySQL"));
- RuleMetaData ruleMetaData = mock(RuleMetaData.class);
- when(ruleMetaData.getSingleRule(SQLParserRule.class)).thenReturn(new
SQLParserRule(new SQLParserRuleConfiguration(new CacheOption(128, 1024L), new
CacheOption(2000, 65535L))));
- return new MergedEncryptShowCreateTableMergedResult(ruleMetaData,
queryResult, sqlStatementContext, encryptRule);
- }
-}