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);
-    }
-}


Reply via email to