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 2362339aa75 Merge MergedEncryptShowColumnsMergedResult and
DecoratedEncryptShowColumnsMergedResult into EncryptShowColumnsMergedResult
(#33602)
2362339aa75 is described below
commit 2362339aa75f62758bce5a6dc758f8d5c2c5f035
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Nov 9 11:34:00 2024 +0800
Merge MergedEncryptShowColumnsMergedResult and
DecoratedEncryptShowColumnsMergedResult into EncryptShowColumnsMergedResult
(#33602)
* Add more test cases on EncryptShowColumnsMergedResult
* Merge MergedEncryptShowColumnsMergedResult and
DecoratedEncryptShowColumnsMergedResult
* Merge MergedEncryptShowColumnsMergedResult and
DecoratedEncryptShowColumnsMergedResult
---
.../merge/dal/EncryptDALResultDecorator.java | 7 +-
.../DecoratedEncryptShowColumnsMergedResult.java | 52 -------
.../dal/show/EncryptShowColumnsMergedResult.java | 34 +++--
.../show/MergedEncryptShowColumnsMergedResult.java | 52 -------
.../merge/dal/EncryptDALResultDecoratorTest.java | 9 +-
...ava => EncryptShowColumnsMergedResultTest.java} | 46 ++++--
.../MergedEncryptShowColumnsMergedResultTest.java | 162 ---------------------
7 files changed, 56 insertions(+), 306 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 38bed7e82c0..9ec48af5266 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.DecoratedEncryptShowColumnsMergedResult;
import
org.apache.shardingsphere.encrypt.merge.dal.show.DecoratedEncryptShowCreateTableMergedResult;
-import
org.apache.shardingsphere.encrypt.merge.dal.show.MergedEncryptShowColumnsMergedResult;
+import
org.apache.shardingsphere.encrypt.merge.dal.show.EncryptShowColumnsMergedResult;
import
org.apache.shardingsphere.encrypt.merge.dal.show.MergedEncryptShowCreateTableMergedResult;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
@@ -46,7 +45,7 @@ public final class EncryptDALResultDecorator implements
ResultDecorator<EncryptR
public MergedResult decorate(final QueryResult queryResult, final
SQLStatementContext sqlStatementContext, final EncryptRule rule) {
SQLStatement sqlStatement = sqlStatementContext.getSqlStatement();
if (sqlStatement instanceof MySQLExplainStatement || sqlStatement
instanceof MySQLShowColumnsStatement) {
- return new MergedEncryptShowColumnsMergedResult(queryResult,
sqlStatementContext, rule);
+ return new EncryptShowColumnsMergedResult(new
TransparentMergedResult(queryResult), sqlStatementContext, rule);
}
if (sqlStatement instanceof MySQLShowCreateTableStatement) {
return new
MergedEncryptShowCreateTableMergedResult(globalRuleMetaData, queryResult,
sqlStatementContext, rule);
@@ -58,7 +57,7 @@ public final class EncryptDALResultDecorator implements
ResultDecorator<EncryptR
public MergedResult decorate(final MergedResult mergedResult, final
SQLStatementContext sqlStatementContext, final EncryptRule rule) {
SQLStatement sqlStatement = sqlStatementContext.getSqlStatement();
if (sqlStatement instanceof MySQLExplainStatement || sqlStatement
instanceof MySQLShowColumnsStatement) {
- return new DecoratedEncryptShowColumnsMergedResult(mergedResult,
sqlStatementContext, rule);
+ return new EncryptShowColumnsMergedResult(mergedResult,
sqlStatementContext, rule);
}
if (sqlStatement instanceof MySQLShowCreateTableStatement) {
return new
DecoratedEncryptShowCreateTableMergedResult(globalRuleMetaData, mergedResult,
sqlStatementContext, rule);
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowColumnsMergedResult.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowColumnsMergedResult.java
deleted file mode 100644
index b2cfc924559..00000000000
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowColumnsMergedResult.java
+++ /dev/null
@@ -1,52 +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 java.sql.SQLException;
-
-/**
- * Decorated encrypt show columns merged result.
- */
-public final class DecoratedEncryptShowColumnsMergedResult extends
EncryptShowColumnsMergedResult {
-
- private final MergedResult mergedResult;
-
- public DecoratedEncryptShowColumnsMergedResult(final MergedResult
mergedResult, final SQLStatementContext sqlStatementContext, final EncryptRule
encryptRule) {
- super(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/EncryptShowColumnsMergedResult.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowColumnsMergedResult.java
index d7c383fd533..652950ea70b 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowColumnsMergedResult.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowColumnsMergedResult.java
@@ -35,24 +35,27 @@ import java.util.Optional;
/**
* Encrypt show columns merged result.
*/
-public abstract class EncryptShowColumnsMergedResult implements MergedResult {
+public final class EncryptShowColumnsMergedResult implements MergedResult {
private static final int COLUMN_FIELD_INDEX = 1;
private final String tableName;
+ private final MergedResult mergedResult;
+
private final EncryptRule encryptRule;
- protected EncryptShowColumnsMergedResult(final SQLStatementContext
sqlStatementContext, final EncryptRule encryptRule) {
+ public EncryptShowColumnsMergedResult(final MergedResult mergedResult,
final SQLStatementContext sqlStatementContext, final EncryptRule encryptRule) {
ShardingSpherePreconditions.checkState(sqlStatementContext instanceof
TableAvailable && 1 == ((TableAvailable)
sqlStatementContext).getTablesContext().getSimpleTables().size(),
() -> new UnsupportedEncryptSQLException("SHOW COLUMNS FOR
MULTI TABLES"));
tableName = ((TableAvailable)
sqlStatementContext).getTablesContext().getSimpleTables().iterator().next().getTableName().getIdentifier().getValue();
+ this.mergedResult = mergedResult;
this.encryptRule = encryptRule;
}
@Override
- public final boolean next() throws SQLException {
- boolean hasNext = nextValue();
+ public boolean next() throws SQLException {
+ boolean hasNext = mergedResult.next();
Optional<EncryptTable> encryptTable =
encryptRule.findEncryptTable(tableName);
if (hasNext && !encryptTable.isPresent()) {
return true;
@@ -60,13 +63,13 @@ public abstract class EncryptShowColumnsMergedResult
implements MergedResult {
if (!hasNext) {
return false;
}
- String columnName = getOriginalValue(COLUMN_FIELD_INDEX,
String.class).toString();
+ String columnName = mergedResult.getValue(COLUMN_FIELD_INDEX,
String.class).toString();
while (isDerivedColumn(encryptTable.get(), columnName)) {
- hasNext = nextValue();
+ hasNext = mergedResult.next();
if (!hasNext) {
return false;
}
- columnName = getOriginalValue(COLUMN_FIELD_INDEX,
String.class).toString();
+ columnName = mergedResult.getValue(COLUMN_FIELD_INDEX,
String.class).toString();
}
return true;
}
@@ -76,9 +79,9 @@ public abstract class EncryptShowColumnsMergedResult
implements MergedResult {
}
@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 (COLUMN_FIELD_INDEX == columnIndex) {
- String columnName = getOriginalValue(COLUMN_FIELD_INDEX,
type).toString();
+ String columnName = mergedResult.getValue(COLUMN_FIELD_INDEX,
type).toString();
Optional<EncryptTable> encryptTable =
encryptRule.findEncryptTable(tableName);
if (!encryptTable.isPresent()) {
return columnName;
@@ -86,16 +89,16 @@ public abstract class EncryptShowColumnsMergedResult
implements MergedResult {
Optional<String> logicColumn =
encryptTable.get().isCipherColumn(columnName) ?
Optional.of(encryptTable.get().getLogicColumnByCipherColumn(columnName)) :
Optional.empty();
return logicColumn.orElse(columnName);
}
- return getOriginalValue(columnIndex, type);
+ return mergedResult.getValue(columnIndex, type);
}
@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("");
}
@@ -104,7 +107,8 @@ public abstract class EncryptShowColumnsMergedResult
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/MergedEncryptShowColumnsMergedResult.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowColumnsMergedResult.java
deleted file mode 100644
index 4a44254c0bc..00000000000
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowColumnsMergedResult.java
+++ /dev/null
@@ -1,52 +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 java.sql.SQLException;
-
-/**
- * Merged encrypt show columns merged result.
- */
-public final class MergedEncryptShowColumnsMergedResult extends
EncryptShowColumnsMergedResult {
-
- private final QueryResult queryResult;
-
- public MergedEncryptShowColumnsMergedResult(final QueryResult queryResult,
final SQLStatementContext sqlStatementContext, final EncryptRule encryptRule) {
- super(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 4c472602fd7..efda9b4babe 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.DecoratedEncryptShowColumnsMergedResult;
import
org.apache.shardingsphere.encrypt.merge.dal.show.DecoratedEncryptShowCreateTableMergedResult;
-import
org.apache.shardingsphere.encrypt.merge.dal.show.MergedEncryptShowColumnsMergedResult;
+import
org.apache.shardingsphere.encrypt.merge.dal.show.EncryptShowColumnsMergedResult;
import
org.apache.shardingsphere.encrypt.merge.dal.show.MergedEncryptShowCreateTableMergedResult;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
@@ -67,16 +66,14 @@ class EncryptDALResultDecoratorTest {
void assertMergedResultWithDescribeStatement() {
sqlStatementContext = getDescribeStatementContext();
EncryptDALResultDecorator encryptDALResultDecorator = new
EncryptDALResultDecorator(mock(RuleMetaData.class));
- assertThat(encryptDALResultDecorator.decorate(mock(QueryResult.class),
sqlStatementContext, rule),
instanceOf(MergedEncryptShowColumnsMergedResult.class));
-
assertThat(encryptDALResultDecorator.decorate(mock(MergedResult.class),
sqlStatementContext, rule),
instanceOf(DecoratedEncryptShowColumnsMergedResult.class));
+
assertThat(encryptDALResultDecorator.decorate(mock(MergedResult.class),
sqlStatementContext, rule), instanceOf(EncryptShowColumnsMergedResult.class));
}
@Test
void assertMergedResultWithShowColumnsStatement() {
sqlStatementContext = getShowColumnsStatementContext();
EncryptDALResultDecorator encryptDALResultDecorator = new
EncryptDALResultDecorator(mock(RuleMetaData.class));
- assertThat(encryptDALResultDecorator.decorate(mock(QueryResult.class),
sqlStatementContext, rule),
instanceOf(MergedEncryptShowColumnsMergedResult.class));
-
assertThat(encryptDALResultDecorator.decorate(mock(MergedResult.class),
sqlStatementContext, rule),
instanceOf(DecoratedEncryptShowColumnsMergedResult.class));
+
assertThat(encryptDALResultDecorator.decorate(mock(MergedResult.class),
sqlStatementContext, rule), instanceOf(EncryptShowColumnsMergedResult.class));
}
@Test
diff --git
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowColumnsMergedResultTest.java
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowColumnsMergedResultTest.java
similarity index 66%
rename from
features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowColumnsMergedResultTest.java
rename to
features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowColumnsMergedResultTest.java
index c3dd21ed9ec..46827d36337 100644
---
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowColumnsMergedResultTest.java
+++
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowColumnsMergedResultTest.java
@@ -17,9 +17,12 @@
package org.apache.shardingsphere.encrypt.merge.dal.show;
+import
org.apache.shardingsphere.encrypt.exception.syntax.UnsupportedEncryptSQLException;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.encrypt.rule.table.EncryptTable;
+import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.dal.ShowColumnsStatementContext;
+import
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.TableNameSegment;
@@ -49,41 +52,54 @@ import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
@MockitoSettings(strictness = Strictness.LENIENT)
-class DecoratedEncryptShowColumnsMergedResultTest {
+class EncryptShowColumnsMergedResultTest {
@Mock
private MergedResult mergedResult;
+ @Test
+ void assertNewInstanceWithNotTableAvailableStatement() {
+ SQLStatementContext sqlStatementContext =
mock(SQLStatementContext.class);
+ assertThrows(UnsupportedEncryptSQLException.class, () -> new
EncryptShowColumnsMergedResult(mergedResult, sqlStatementContext,
mock(EncryptRule.class)));
+ }
+
+ @Test
+ void assertNewInstanceWithEmptyTable() {
+ SelectStatementContext sqlStatementContext =
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
+
when(sqlStatementContext.getTablesContext().getSimpleTables()).thenReturn(Collections.emptyList());
+ assertThrows(UnsupportedEncryptSQLException.class, () -> new
EncryptShowColumnsMergedResult(mergedResult, sqlStatementContext,
mock(EncryptRule.class)));
+ }
+
@Test
void assertNextWithNotHasNext() throws SQLException {
-
assertFalse(createDecoratedEncryptShowColumnsMergedResult(mergedResult,
mock(EncryptRule.class)).next());
+ assertFalse(createEncryptShowColumnsMergedResult(mergedResult,
mock(EncryptRule.class)).next());
}
@Test
void assertNextWithHasNext() throws SQLException {
when(mergedResult.next()).thenReturn(true);
- assertTrue(createDecoratedEncryptShowColumnsMergedResult(mergedResult,
mock(EncryptRule.class)).next());
+ assertTrue(createEncryptShowColumnsMergedResult(mergedResult,
mock(EncryptRule.class)).next());
}
@Test
void assertNextWithAssistedQuery() throws SQLException {
when(mergedResult.next()).thenReturn(true).thenReturn(false);
when(mergedResult.getValue(1,
String.class)).thenReturn("user_id_assisted");
-
assertFalse(createDecoratedEncryptShowColumnsMergedResult(mergedResult,
mockEncryptRule()).next());
+ assertFalse(createEncryptShowColumnsMergedResult(mergedResult,
mockEncryptRule()).next());
}
@Test
void assertNextWithLikeQuery() throws SQLException {
when(mergedResult.next()).thenReturn(true).thenReturn(false);
when(mergedResult.getValue(1,
String.class)).thenReturn("user_id_like");
-
assertFalse(createDecoratedEncryptShowColumnsMergedResult(mergedResult,
mockEncryptRule()).next());
+ assertFalse(createEncryptShowColumnsMergedResult(mergedResult,
mockEncryptRule()).next());
}
@Test
void assertNextWithLikeQueryAndMultiColumns() throws SQLException {
when(mergedResult.next()).thenReturn(true, true, true, false);
when(mergedResult.getValue(1,
String.class)).thenReturn("user_id_like", "order_id", "content");
- DecoratedEncryptShowColumnsMergedResult actual =
createDecoratedEncryptShowColumnsMergedResult(mergedResult, mockEncryptRule());
+ EncryptShowColumnsMergedResult actual =
createEncryptShowColumnsMergedResult(mergedResult, mockEncryptRule());
assertTrue(actual.next());
assertTrue(actual.next());
assertFalse(actual.next());
@@ -92,7 +108,7 @@ class DecoratedEncryptShowColumnsMergedResultTest {
@Test
void assertGetValueWithCipherColumn() throws SQLException {
when(mergedResult.getValue(1,
String.class)).thenReturn("user_id_cipher");
- assertThat(createDecoratedEncryptShowColumnsMergedResult(mergedResult,
mockEncryptRule()).getValue(1, String.class), is("user_id"));
+ assertThat(createEncryptShowColumnsMergedResult(mergedResult,
mockEncryptRule()).getValue(1, String.class), is("user_id"));
}
private EncryptRule mockEncryptRule() {
@@ -109,39 +125,39 @@ class DecoratedEncryptShowColumnsMergedResultTest {
@Test
void assertGetValueWithOtherColumn() throws SQLException {
when(mergedResult.getValue(1,
String.class)).thenReturn("user_id_assisted");
- assertThat(createDecoratedEncryptShowColumnsMergedResult(mergedResult,
mock(EncryptRule.class)).getValue(1, String.class), is("user_id_assisted"));
+ assertThat(createEncryptShowColumnsMergedResult(mergedResult,
mock(EncryptRule.class)).getValue(1, String.class), is("user_id_assisted"));
}
@Test
void assertGetValueWithOtherIndex() throws SQLException {
when(mergedResult.getValue(2, String.class)).thenReturn("order_id");
- assertThat(createDecoratedEncryptShowColumnsMergedResult(mergedResult,
mock(EncryptRule.class)).getValue(2, String.class), is("order_id"));
+ assertThat(createEncryptShowColumnsMergedResult(mergedResult,
mock(EncryptRule.class)).getValue(2, String.class), is("order_id"));
}
@Test
void assertWasNull() throws SQLException {
-
assertFalse(createDecoratedEncryptShowColumnsMergedResult(mergedResult,
mock(EncryptRule.class)).wasNull());
+ assertFalse(createEncryptShowColumnsMergedResult(mergedResult,
mock(EncryptRule.class)).wasNull());
}
@Test
void assertGetCalendarValue() {
assertThrows(SQLFeatureNotSupportedException.class,
- () ->
createDecoratedEncryptShowColumnsMergedResult(mergedResult,
mock(EncryptRule.class)).getCalendarValue(1, Date.class,
Calendar.getInstance()));
+ () -> createEncryptShowColumnsMergedResult(mergedResult,
mock(EncryptRule.class)).getCalendarValue(1, Date.class,
Calendar.getInstance()));
}
@Test
void assertGetInputStream() {
- assertThrows(SQLFeatureNotSupportedException.class, () ->
createDecoratedEncryptShowColumnsMergedResult(mergedResult,
mock(EncryptRule.class)).getInputStream(1, "asc"));
+ assertThrows(SQLFeatureNotSupportedException.class, () ->
createEncryptShowColumnsMergedResult(mergedResult,
mock(EncryptRule.class)).getInputStream(1, "asc"));
}
@Test
void assertGetCharacterStream() {
- assertThrows(SQLFeatureNotSupportedException.class, () ->
createDecoratedEncryptShowColumnsMergedResult(mergedResult,
mock(EncryptRule.class)).getCharacterStream(1));
+ assertThrows(SQLFeatureNotSupportedException.class, () ->
createEncryptShowColumnsMergedResult(mergedResult,
mock(EncryptRule.class)).getCharacterStream(1));
}
- private DecoratedEncryptShowColumnsMergedResult
createDecoratedEncryptShowColumnsMergedResult(final MergedResult mergedResult,
final EncryptRule encryptRule) {
+ private EncryptShowColumnsMergedResult
createEncryptShowColumnsMergedResult(final MergedResult mergedResult, final
EncryptRule encryptRule) {
ShowColumnsStatementContext showColumnsStatementContext =
mock(ShowColumnsStatementContext.class, RETURNS_DEEP_STUBS);
when(showColumnsStatementContext.getTablesContext().getSimpleTables()).thenReturn(Collections.singleton(new
SimpleTableSegment(new TableNameSegment(0, 0, new
IdentifierValue("t_encrypt")))));
- return new DecoratedEncryptShowColumnsMergedResult(mergedResult,
showColumnsStatementContext, encryptRule);
+ return new EncryptShowColumnsMergedResult(mergedResult,
showColumnsStatementContext, encryptRule);
}
}
diff --git
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowColumnsMergedResultTest.java
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowColumnsMergedResultTest.java
deleted file mode 100644
index ed5a463caf2..00000000000
---
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowColumnsMergedResultTest.java
+++ /dev/null
@@ -1,162 +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.exception.syntax.UnsupportedEncryptSQLException;
-import org.apache.shardingsphere.encrypt.rule.EncryptRule;
-import org.apache.shardingsphere.encrypt.rule.table.EncryptTable;
-import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
-import
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
-import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-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 org.mockito.junit.jupiter.MockitoSettings;
-import org.mockito.quality.Strictness;
-
-import java.sql.SQLException;
-import java.sql.SQLFeatureNotSupportedException;
-import java.util.Calendar;
-import java.util.Collections;
-import java.util.Date;
-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.assertThrows;
-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)
-@MockitoSettings(strictness = Strictness.LENIENT)
-class MergedEncryptShowColumnsMergedResultTest {
-
- @Mock
- private QueryResult queryResult;
-
- @Test
- void assertNewInstanceWithNotTableAvailableStatement() {
- SQLStatementContext sqlStatementContext =
mock(SQLStatementContext.class);
- assertThrows(UnsupportedEncryptSQLException.class, () -> new
MergedEncryptShowColumnsMergedResult(queryResult, sqlStatementContext,
mock(EncryptRule.class)));
- }
-
- @Test
- void assertNewInstanceWithEmptyTable() {
- SelectStatementContext sqlStatementContext =
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
-
when(sqlStatementContext.getTablesContext().getSimpleTables()).thenReturn(Collections.emptyList());
- assertThrows(UnsupportedEncryptSQLException.class, () -> new
MergedEncryptShowColumnsMergedResult(queryResult, sqlStatementContext,
mock(EncryptRule.class)));
- }
-
- @Test
- void assertNextWithNotHasNext() throws SQLException {
- assertFalse(createMergedEncryptColumnsMergedResult(queryResult,
mock(EncryptRule.class)).next());
- }
-
- @Test
- void assertNextWithHasNext() throws SQLException {
- when(queryResult.next()).thenReturn(true);
- assertTrue(createMergedEncryptColumnsMergedResult(queryResult,
mock(EncryptRule.class)).next());
- }
-
- @Test
- void assertNextWithAssistedQuery() throws SQLException {
- when(queryResult.next()).thenReturn(true).thenReturn(false);
- when(queryResult.getValue(1,
String.class)).thenReturn("user_id_assisted");
- assertFalse(createMergedEncryptColumnsMergedResult(queryResult,
mockEncryptRule()).next());
- }
-
- @Test
- void assertNextWithLikeQuery() throws SQLException {
- when(queryResult.next()).thenReturn(true).thenReturn(false);
- when(queryResult.getValue(1, String.class)).thenReturn("user_id_like");
- assertFalse(createMergedEncryptColumnsMergedResult(queryResult,
mockEncryptRule()).next());
- }
-
- @Test
- void assertNextWithLikeQueryAndMultiColumns() throws SQLException {
- when(queryResult.next()).thenReturn(true, true, true, false);
- when(queryResult.getValue(1, String.class)).thenReturn("user_id_like",
"order_id", "content");
- MergedEncryptShowColumnsMergedResult actual =
createMergedEncryptColumnsMergedResult(queryResult, mockEncryptRule());
- assertTrue(actual.next());
- assertTrue(actual.next());
- assertFalse(actual.next());
- }
-
- @Test
- void assertGetValueWithCipherColumn() throws SQLException {
- when(queryResult.getValue(1,
String.class)).thenReturn("user_id_cipher");
- assertThat(createMergedEncryptColumnsMergedResult(queryResult,
mockEncryptRule()).getValue(1, String.class), is("user_id"));
- }
-
- private EncryptRule mockEncryptRule() {
- EncryptRule result = mock(EncryptRule.class);
- EncryptTable encryptTable = mock(EncryptTable.class);
-
when(result.findEncryptTable("t_encrypt")).thenReturn(Optional.of(encryptTable));
-
when(encryptTable.isAssistedQueryColumn("user_id_assisted")).thenReturn(true);
- when(encryptTable.isLikeQueryColumn("user_id_like")).thenReturn(true);
- when(encryptTable.isCipherColumn("user_id_cipher")).thenReturn(true);
-
when(encryptTable.getLogicColumnByCipherColumn("user_id_cipher")).thenReturn("user_id");
- return result;
- }
-
- @Test
- void assertGetValueWithOtherColumn() throws SQLException {
- when(queryResult.getValue(1,
String.class)).thenReturn("user_id_assisted");
- assertThat(createMergedEncryptColumnsMergedResult(queryResult,
mock(EncryptRule.class)).getValue(1, String.class), is("user_id_assisted"));
- }
-
- @Test
- void assertGetValueWithOtherIndex() throws SQLException {
- when(queryResult.getValue(2, String.class)).thenReturn("user_id");
- assertThat(createMergedEncryptColumnsMergedResult(queryResult,
mock(EncryptRule.class)).getValue(2, String.class), is("user_id"));
- }
-
- @Test
- void assertWasNull() throws SQLException {
- assertFalse(createMergedEncryptColumnsMergedResult(queryResult,
mock(EncryptRule.class)).wasNull());
- }
-
- @Test
- void assertGetCalendarValue() {
- assertThrows(SQLFeatureNotSupportedException.class,
- () -> createMergedEncryptColumnsMergedResult(queryResult,
mock(EncryptRule.class)).getCalendarValue(1, Date.class,
Calendar.getInstance()));
- }
-
- @Test
- void assertGetInputStream() {
- assertThrows(SQLFeatureNotSupportedException.class, () ->
createMergedEncryptColumnsMergedResult(queryResult,
mock(EncryptRule.class)).getInputStream(1, "asc"));
- }
-
- @Test
- void assertGetCharacterStream() {
- assertThrows(SQLFeatureNotSupportedException.class, () ->
createMergedEncryptColumnsMergedResult(queryResult,
mock(EncryptRule.class)).getCharacterStream(1));
- }
-
- private MergedEncryptShowColumnsMergedResult
createMergedEncryptColumnsMergedResult(final QueryResult queryResult, final
EncryptRule encryptRule) {
- SelectStatementContext sqlStatementContext =
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
-
when(sqlStatementContext.getTablesContext().getSimpleTables()).thenReturn(Collections.singleton(new
SimpleTableSegment(new TableNameSegment(0, 0, new
IdentifierValue("t_encrypt")))));
- return new MergedEncryptShowColumnsMergedResult(queryResult,
sqlStatementContext, encryptRule);
- }
-}