You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by me...@apache.org on 2020/11/29 11:33:43 UTC

[shardingsphere] branch master updated: Refactor package structure of execute.result (#8408)

This is an automated email from the ASF dual-hosted git repository.

menghaoran 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 28e291c  Refactor package structure of execute.result (#8408)
28e291c is described below

commit 28e291c859e4c560d5bf85202f58eff0264e6a2c
Author: Liang Zhang <te...@163.com>
AuthorDate: Sun Nov 29 19:33:19 2020 +0800

    Refactor package structure of execute.result (#8408)
    
    * Rename RawQueryResultColumnMetaData
    
    * Move jdbc and raw to impl package
    
    * Reuse QueryResultDataRow on MemoryJDBCQueryResult
    
    * Add AbstractMemoryQueryResult
    
    * Move MemoryQueryResultDataRow to memory package
    
    * Add AbstractStreamQueryResult
    
    * Move package
    
    * Move package
---
 .../jdbc/metadata/JDBCQueryResultMetaData.java     |  2 +-
 .../jdbc/type/memory/JDBCMemoryQueryResult.java}   | 19 ++---
 .../driver/jdbc/type/memory/JDBCRowsLoader.java}   | 92 +++++-----------------
 .../jdbc/type/stream/JDBCStreamQueryResult.java}   | 16 ++--
 .../metadata/RawQueryResultColumnMetaData.java}    |  6 +-
 .../raw/metadata/RawQueryResultMetaData.java       |  4 +-
 .../raw/type/RawMemoryQueryResult.java}            | 17 ++--
 .../memory/AbstractMemoryQueryResult.java}         | 35 ++++----
 .../memory/row/MemoryQueryResultDataRow.java}      |  6 +-
 .../stream/AbstractStreamQueryResult.java}         | 12 +--
 .../jdbc/metadata/JDBCQueryResultMetaDataTest.java |  2 +-
 .../type/memory/JDBCMemoryQueryResultTest.java}    | 62 +++++++--------
 .../type/stream/JDBCStreamQueryResultTest.java}    | 56 ++++++-------
 .../fixture/decorator/ResultDecoratorFixture.java  |  6 +-
 .../merge/fixture/merger/ResultMergerFixture.java  |  4 +-
 .../driver/executor/PreparedStatementExecutor.java |  6 +-
 .../driver/executor/StatementExecutor.java         |  6 +-
 .../statement/ShardingSpherePreparedStatement.java |  4 +-
 .../core/statement/ShardingSphereStatement.java    |  4 +-
 .../engine/jdbc/ProxyJDBCExecutorCallback.java     |  6 +-
 .../text/admin/ShowTablesBackendHandler.java       | 14 ++--
 21 files changed, 161 insertions(+), 218 deletions(-)

diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/metadata/JDBCQueryResultMetaData.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/metadata/JDBCQueryResultMetaData.java
similarity index 98%
rename from shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/metadata/JDBCQueryResultMetaData.java
rename to shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/metadata/JDBCQueryResultMetaData.java
index a828769..6a56608 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/metadata/JDBCQueryResultMetaData.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/metadata/JDBCQueryResultMetaData.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc.metadata;
+package org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.metadata;
 
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/row/QueryResultDataRow.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/memory/JDBCMemoryQueryResult.java
similarity index 56%
copy from shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/row/QueryResultDataRow.java
copy to shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/memory/JDBCMemoryQueryResult.java
index 8a39122..1b00f1f 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/row/QueryResultDataRow.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/memory/JDBCMemoryQueryResult.java
@@ -15,19 +15,20 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.executor.sql.execute.result.query.raw.row;
+package org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.memory;
 
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.metadata.JDBCQueryResultMetaData;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.type.memory.AbstractMemoryQueryResult;
 
-import java.util.List;
+import java.sql.ResultSet;
+import java.sql.SQLException;
 
 /**
- * Query result data row.
+ * JDBC query result for memory loading.
  */
-@RequiredArgsConstructor
-@Getter
-public final class QueryResultDataRow {
+public final class JDBCMemoryQueryResult extends AbstractMemoryQueryResult {
     
-    private final List<Object> value;
+    public JDBCMemoryQueryResult(final ResultSet resultSet) throws SQLException {
+        super(new JDBCQueryResultMetaData(resultSet.getMetaData()), JDBCRowsLoader.load(resultSet.getMetaData().getColumnCount(), resultSet).iterator());
+    }
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/MemoryJDBCQueryResult.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/memory/JDBCRowsLoader.java
similarity index 58%
rename from shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/MemoryJDBCQueryResult.java
rename to shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/memory/JDBCRowsLoader.java
index d4a9170..92cba4c 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/MemoryJDBCQueryResult.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/memory/JDBCRowsLoader.java
@@ -15,63 +15,51 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc;
+package org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.memory;
 
-import lombok.Getter;
-import lombok.SneakyThrows;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc.metadata.JDBCQueryResultMetaData;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.type.memory.row.MemoryQueryResultDataRow;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectOutputStream;
 import java.math.BigDecimal;
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
 import java.sql.Types;
 import java.util.ArrayList;
-import java.util.Calendar;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 
 /**
- * JDBC query result for memory loading.
+ * JDBC rows loader.
  */
-public final class MemoryJDBCQueryResult implements QueryResult {
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class JDBCRowsLoader {
     
-    @Getter
-    private final JDBCQueryResultMetaData metaData;
-    
-    private final Iterator<List<Object>> rows;
-    
-    private List<Object> currentRow;
-    
-    public MemoryJDBCQueryResult(final ResultSet resultSet) throws SQLException {
-        metaData = new JDBCQueryResultMetaData(resultSet.getMetaData());
-        rows = loadRows(resultSet);
-    }
-    
-    private Iterator<List<Object>> loadRows(final ResultSet resultSet) throws SQLException {
-        Collection<List<Object>> result = new LinkedList<>();
-        int columnCount = metaData.getColumnCount();
+    /**
+     * Load rows.
+     * 
+     * @param columnCount column count
+     * @param resultSet result set of JDBC
+     * @return Query result data rows
+     * @throws SQLException SQL exception
+     */
+    public static Collection<MemoryQueryResultDataRow> load(final int columnCount, final ResultSet resultSet) throws SQLException {
+        Collection<MemoryQueryResultDataRow> result = new LinkedList<>();
         while (resultSet.next()) {
             List<Object> rowData = new ArrayList<>(columnCount);
             for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
                 Object rowValue = loadRowValue(resultSet, columnIndex);
                 rowData.add(resultSet.wasNull() ? null : rowValue);
             }
-            result.add(rowData);
+            result.add(new MemoryQueryResultDataRow(rowData));
         }
-        return result.iterator();
+        return result;
     }
     
     @SuppressWarnings("ReturnOfNull")
-    private Object loadRowValue(final ResultSet resultSet, final int columnIndex) throws SQLException {
+    private static Object loadRowValue(final ResultSet resultSet, final int columnIndex) throws SQLException {
         ResultSetMetaData metaData = resultSet.getMetaData();
         switch (metaData.getColumnType(columnIndex)) {
             case Types.BOOLEAN:
@@ -119,44 +107,4 @@ public final class MemoryJDBCQueryResult implements QueryResult {
                 return resultSet.getObject(columnIndex);
         }
     }
-    
-    @Override
-    public boolean next() {
-        if (rows.hasNext()) {
-            currentRow = rows.next();
-            return true;
-        }
-        currentRow = null;
-        return false;
-    }
-    
-    @Override
-    public Object getValue(final int columnIndex, final Class<?> type) {
-        return currentRow.get(columnIndex - 1);
-    }
-    
-    @Override
-    public Object getCalendarValue(final int columnIndex, final Class<?> type, final Calendar calendar) {
-        return currentRow.get(columnIndex - 1);
-    }
-    
-    @Override
-    public InputStream getInputStream(final int columnIndex, final String type) {
-        return getInputStream(currentRow.get(columnIndex - 1));
-    }
-    
-    @SneakyThrows(IOException.class)
-    private InputStream getInputStream(final Object value) {
-        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-        ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
-        objectOutputStream.writeObject(value);
-        objectOutputStream.flush();
-        objectOutputStream.close();
-        return new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
-    }
-    
-    @Override
-    public boolean wasNull() {
-        return null == currentRow;
-    }
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/StreamJDBCQueryResult.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/stream/JDBCStreamQueryResult.java
similarity index 92%
rename from shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/StreamJDBCQueryResult.java
rename to shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/stream/JDBCStreamQueryResult.java
index 0fd675b..d63605e 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/StreamJDBCQueryResult.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/stream/JDBCStreamQueryResult.java
@@ -15,11 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc;
+package org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.stream;
 
-import lombok.Getter;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc.metadata.JDBCQueryResultMetaData;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.metadata.JDBCQueryResultMetaData;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.type.stream.AbstractStreamQueryResult;
 
 import java.io.InputStream;
 import java.math.BigDecimal;
@@ -36,15 +35,12 @@ import java.util.Calendar;
 /**
  * JDBC query result for stream loading.
  */
-public final class StreamJDBCQueryResult implements QueryResult {
-    
-    @Getter
-    private final JDBCQueryResultMetaData metaData;
+public final class JDBCStreamQueryResult extends AbstractStreamQueryResult {
     
     private final ResultSet resultSet;
     
-    public StreamJDBCQueryResult(final ResultSet resultSet) throws SQLException {
-        metaData = new JDBCQueryResultMetaData(resultSet.getMetaData());
+    public JDBCStreamQueryResult(final ResultSet resultSet) throws SQLException {
+        super(new JDBCQueryResultMetaData(resultSet.getMetaData()));
         this.resultSet = resultSet;
     }
     
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/metadata/QueryResultColumnMetaData.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/raw/metadata/RawQueryResultColumnMetaData.java
similarity index 92%
rename from shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/metadata/QueryResultColumnMetaData.java
rename to shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/raw/metadata/RawQueryResultColumnMetaData.java
index 8dee208..4a7da68 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/metadata/QueryResultColumnMetaData.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/raw/metadata/RawQueryResultColumnMetaData.java
@@ -15,17 +15,17 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.executor.sql.execute.result.query.raw.metadata;
+package org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.raw.metadata;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 
 /**
- * Query result column meta data.
+ * Raw query result column meta data.
  */
 @RequiredArgsConstructor
 @Getter
-public final class QueryResultColumnMetaData {
+public final class RawQueryResultColumnMetaData {
     
     private final String tableName;
     
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/metadata/RawQueryResultMetaData.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/raw/metadata/RawQueryResultMetaData.java
similarity index 96%
rename from shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/metadata/RawQueryResultMetaData.java
rename to shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/raw/metadata/RawQueryResultMetaData.java
index 0c1db3b..c097db7 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/metadata/RawQueryResultMetaData.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/raw/metadata/RawQueryResultMetaData.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.executor.sql.execute.result.query.raw.metadata;
+package org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.raw.metadata;
 
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
@@ -28,7 +28,7 @@ import java.util.List;
 @RequiredArgsConstructor
 public final class RawQueryResultMetaData implements QueryResultMetaData {
     
-    private final List<QueryResultColumnMetaData> columns;
+    private final List<RawQueryResultColumnMetaData> columns;
     
     @Override
     public int getColumnCount() {
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/row/QueryResultDataRow.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/raw/type/RawMemoryQueryResult.java
similarity index 58%
copy from shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/row/QueryResultDataRow.java
copy to shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/raw/type/RawMemoryQueryResult.java
index 8a39122..0c2cb35 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/row/QueryResultDataRow.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/raw/type/RawMemoryQueryResult.java
@@ -15,19 +15,20 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.executor.sql.execute.result.query.raw.row;
+package org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.raw.type;
 
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.raw.metadata.RawQueryResultMetaData;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.type.memory.row.MemoryQueryResultDataRow;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.type.memory.AbstractMemoryQueryResult;
 
 import java.util.List;
 
 /**
- * Query result data row.
+ * Raw query result for memory loading.
  */
-@RequiredArgsConstructor
-@Getter
-public final class QueryResultDataRow {
+public final class RawMemoryQueryResult extends AbstractMemoryQueryResult {
     
-    private final List<Object> value;
+    public RawMemoryQueryResult(final RawQueryResultMetaData metaData, final List<MemoryQueryResultDataRow> rows) {
+        super(metaData, rows.iterator());
+    }
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/RawQueryResult.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/type/memory/AbstractMemoryQueryResult.java
similarity index 73%
rename from shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/RawQueryResult.java
rename to shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/type/memory/AbstractMemoryQueryResult.java
index cb98b83..8e8a1e1 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/RawQueryResult.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/type/memory/AbstractMemoryQueryResult.java
@@ -15,13 +15,15 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.executor.sql.execute.result.query.raw;
+package org.apache.shardingsphere.infra.executor.sql.execute.result.query.type.memory;
 
+import lombok.AccessLevel;
 import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.raw.metadata.RawQueryResultMetaData;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.raw.row.QueryResultDataRow;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.type.memory.row.MemoryQueryResultDataRow;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -30,27 +32,22 @@ import java.io.InputStream;
 import java.io.ObjectOutputStream;
 import java.util.Calendar;
 import java.util.Iterator;
-import java.util.List;
 
 /**
- * Raw query result.
+ * Abstract memory query result.
  */
-public final class RawQueryResult implements QueryResult {
+@RequiredArgsConstructor(access = AccessLevel.PROTECTED)
+public abstract class AbstractMemoryQueryResult implements QueryResult {
     
     @Getter
-    private final RawQueryResultMetaData metaData;
+    private final QueryResultMetaData metaData;
     
-    private final Iterator<QueryResultDataRow> rows;
+    private final Iterator<MemoryQueryResultDataRow> rows;
     
-    private QueryResultDataRow currentRow;
-    
-    public RawQueryResult(final RawQueryResultMetaData metaData, final List<QueryResultDataRow> rows) {
-        this.metaData = metaData;
-        this.rows = rows.iterator();
-    }
+    private MemoryQueryResultDataRow currentRow;
     
     @Override
-    public boolean next() {
+    public final boolean next() {
         if (rows.hasNext()) {
             currentRow = rows.next();
             return true;
@@ -60,17 +57,17 @@ public final class RawQueryResult implements QueryResult {
     }
     
     @Override
-    public Object getValue(final int columnIndex, final Class<?> type) {
+    public final Object getValue(final int columnIndex, final Class<?> type) {
         return currentRow.getValue().get(columnIndex - 1);
     }
     
     @Override
-    public Object getCalendarValue(final int columnIndex, final Class<?> type, final Calendar calendar) {
+    public final Object getCalendarValue(final int columnIndex, final Class<?> type, final Calendar calendar) {
         return currentRow.getValue().get(columnIndex - 1);
     }
     
     @Override
-    public InputStream getInputStream(final int columnIndex, final String type) {
+    public final InputStream getInputStream(final int columnIndex, final String type) {
         return getInputStream(currentRow.getValue().get(columnIndex - 1));
     }
     
@@ -85,7 +82,7 @@ public final class RawQueryResult implements QueryResult {
     }
     
     @Override
-    public boolean wasNull() {
+    public final boolean wasNull() {
         return null == currentRow;
     }
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/row/QueryResultDataRow.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/type/memory/row/MemoryQueryResultDataRow.java
similarity index 90%
copy from shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/row/QueryResultDataRow.java
copy to shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/type/memory/row/MemoryQueryResultDataRow.java
index 8a39122..6ed9179 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/row/QueryResultDataRow.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/type/memory/row/MemoryQueryResultDataRow.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.executor.sql.execute.result.query.raw.row;
+package org.apache.shardingsphere.infra.executor.sql.execute.result.query.type.memory.row;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
@@ -23,11 +23,11 @@ import lombok.RequiredArgsConstructor;
 import java.util.List;
 
 /**
- * Query result data row.
+ * Memory query result data row.
  */
 @RequiredArgsConstructor
 @Getter
-public final class QueryResultDataRow {
+public final class MemoryQueryResultDataRow {
     
     private final List<Object> value;
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/row/QueryResultDataRow.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/type/stream/AbstractStreamQueryResult.java
similarity index 73%
rename from shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/row/QueryResultDataRow.java
rename to shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/type/stream/AbstractStreamQueryResult.java
index 8a39122..ea286af 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/raw/row/QueryResultDataRow.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/type/stream/AbstractStreamQueryResult.java
@@ -15,19 +15,19 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.executor.sql.execute.result.query.raw.row;
+package org.apache.shardingsphere.infra.executor.sql.execute.result.query.type.stream;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
-
-import java.util.List;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
 
 /**
- * Query result data row.
+ * Abstract stream query result.
  */
 @RequiredArgsConstructor
 @Getter
-public final class QueryResultDataRow {
+public abstract class AbstractStreamQueryResult implements QueryResult {
     
-    private final List<Object> value;
+    private final QueryResultMetaData metaData;
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/metadata/JDBCQueryResultMetaDataTest.java b/shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/metadata/JDBCQueryResultMetaDataTest.java
similarity index 98%
rename from shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/metadata/JDBCQueryResultMetaDataTest.java
rename to shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/metadata/JDBCQueryResultMetaDataTest.java
index 1ccb171..07a7a28 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/metadata/JDBCQueryResultMetaDataTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/metadata/JDBCQueryResultMetaDataTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc.metadata;
+package org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.metadata;
 
 import org.junit.Before;
 import org.junit.Test;
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/MemoryJDBCQueryResultTest.java b/shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/memory/JDBCMemoryQueryResultTest.java
similarity index 87%
rename from shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/MemoryJDBCQueryResultTest.java
rename to shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/memory/JDBCMemoryQueryResultTest.java
index 71543b4..7fabb24 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/MemoryJDBCQueryResultTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/memory/JDBCMemoryQueryResultTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc;
+package org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.memory;
 
 import org.hamcrest.core.Is;
 import org.junit.Test;
@@ -47,18 +47,18 @@ import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-public final class MemoryJDBCQueryResultTest {
+public final class JDBCMemoryQueryResultTest {
     
     @Test(expected = SQLException.class)
     public void assertConstructorWithSqlException() throws SQLException {
         ResultSet resultSet = mockResultSet();
         when(resultSet.next()).thenThrow(new SQLException(""));
-        new MemoryJDBCQueryResult(resultSet);
+        new JDBCMemoryQueryResult(resultSet);
     }
     
     @Test
     public void assertNext() throws SQLException {
-        MemoryJDBCQueryResult queryResult = new MemoryJDBCQueryResult(mockResultSet());
+        JDBCMemoryQueryResult queryResult = new JDBCMemoryQueryResult(mockResultSet());
         assertTrue(queryResult.next());
         assertFalse(queryResult.next());
     }
@@ -71,7 +71,7 @@ public final class MemoryJDBCQueryResultTest {
         ResultSetMetaData resultSetMetaData = mock(ResultSetMetaData.class);
         when(resultSetMetaData.getColumnCount()).thenReturn(1);
         when(resultSet.getMetaData()).thenReturn(resultSetMetaData);
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertNull(actual.getValue(1, boolean.class));
         assertFalse(actual.next());
@@ -81,7 +81,7 @@ public final class MemoryJDBCQueryResultTest {
     public void assertGetValueByBoolean() throws SQLException {
         ResultSet resultSet = getMockedResultSet(Types.BOOLEAN);
         when(resultSet.getBoolean(1)).thenReturn(true);
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertTrue((boolean) actual.getValue(1, boolean.class));
         assertFalse(actual.next());
@@ -91,7 +91,7 @@ public final class MemoryJDBCQueryResultTest {
     public void assertGetValueByTinyInt() throws SQLException {
         ResultSet resultSet = getMockedResultSet(Types.TINYINT);
         when(resultSet.getInt(1)).thenReturn(1);
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, int.class), is(1));
         assertFalse(actual.next());
@@ -101,7 +101,7 @@ public final class MemoryJDBCQueryResultTest {
     public void assertGetValueBySmallInt() throws SQLException {
         ResultSet resultSet = getMockedResultSet(Types.SMALLINT);
         when(resultSet.getInt(1)).thenReturn(1);
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, int.class), is(1));
         assertFalse(actual.next());
@@ -112,7 +112,7 @@ public final class MemoryJDBCQueryResultTest {
         ResultSet resultSet = getMockedResultSet(Types.INTEGER);
         when(resultSet.getInt(1)).thenReturn(1);
         when(resultSet.getMetaData().isSigned(1)).thenReturn(true);
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, int.class), is(1));
         assertFalse(actual.next());
@@ -123,7 +123,7 @@ public final class MemoryJDBCQueryResultTest {
         ResultSet resultSet = getMockedResultSet(Types.INTEGER);
         when(resultSet.getLong(1)).thenReturn(1L);
         when(resultSet.getMetaData().isSigned(1)).thenReturn(false);
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, int.class), is(1L));
         assertFalse(actual.next());
@@ -134,7 +134,7 @@ public final class MemoryJDBCQueryResultTest {
         ResultSet resultSet = getMockedResultSet(Types.BIGINT);
         when(resultSet.getLong(1)).thenReturn(1L);
         when(resultSet.getMetaData().isSigned(1)).thenReturn(true);
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, long.class), is(1L));
         assertFalse(actual.next());
@@ -145,7 +145,7 @@ public final class MemoryJDBCQueryResultTest {
         ResultSet resultSet = getMockedResultSet(Types.BIGINT);
         when(resultSet.getBigDecimal(1)).thenReturn(new BigDecimal("1"));
         when(resultSet.getMetaData().isSigned(1)).thenReturn(false);
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, long.class), is(new BigDecimal("1").toBigInteger()));
         assertFalse(actual.next());
@@ -155,7 +155,7 @@ public final class MemoryJDBCQueryResultTest {
     public void assertGetValueByNumeric() throws SQLException {
         ResultSet resultSet = getMockedResultSet(Types.NUMERIC);
         when(resultSet.getBigDecimal(1)).thenReturn(new BigDecimal("1"));
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, BigDecimal.class), is(new BigDecimal("1")));
         assertFalse(actual.next());
@@ -165,7 +165,7 @@ public final class MemoryJDBCQueryResultTest {
     public void assertGetValueByDecimal() throws SQLException {
         ResultSet resultSet = getMockedResultSet(Types.DECIMAL);
         when(resultSet.getBigDecimal(1)).thenReturn(new BigDecimal("1"));
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, BigDecimal.class), is(new BigDecimal("1")));
         assertFalse(actual.next());
@@ -175,7 +175,7 @@ public final class MemoryJDBCQueryResultTest {
     public void assertGetValueByFloat() throws SQLException {
         ResultSet resultSet = getMockedResultSet(Types.FLOAT);
         when(resultSet.getDouble(1)).thenReturn(1.0D);
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, double.class), is(1.0D));
         assertFalse(actual.next());
@@ -185,7 +185,7 @@ public final class MemoryJDBCQueryResultTest {
     public void assertGetValueByDouble() throws SQLException {
         ResultSet resultSet = getMockedResultSet(Types.DOUBLE);
         when(resultSet.getDouble(1)).thenReturn(1.0D);
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, double.class), is(1.0D));
         assertFalse(actual.next());
@@ -195,7 +195,7 @@ public final class MemoryJDBCQueryResultTest {
     public void assertGetValueByChar() throws SQLException {
         ResultSet resultSet = getMockedResultSet(Types.CHAR);
         when(resultSet.getString(1)).thenReturn("value");
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, String.class), is("value"));
         assertFalse(actual.next());
@@ -205,7 +205,7 @@ public final class MemoryJDBCQueryResultTest {
     public void assertGetValueByVarchar() throws SQLException {
         ResultSet resultSet = getMockedResultSet(Types.VARCHAR);
         when(resultSet.getString(1)).thenReturn("value");
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, String.class), is("value"));
         assertFalse(actual.next());
@@ -215,7 +215,7 @@ public final class MemoryJDBCQueryResultTest {
     public void assertGetValueByLongVarchar() throws SQLException {
         ResultSet resultSet = getMockedResultSet(Types.LONGVARCHAR);
         when(resultSet.getString(1)).thenReturn("value");
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, String.class), is("value"));
         assertFalse(actual.next());
@@ -225,7 +225,7 @@ public final class MemoryJDBCQueryResultTest {
     public void assertGetValueByDate() throws SQLException {
         ResultSet resultSet = getMockedResultSet(Types.DATE);
         when(resultSet.getDate(1)).thenReturn(new Date(0L));
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, Date.class), is(new Date(0L)));
         assertFalse(actual.next());
@@ -235,7 +235,7 @@ public final class MemoryJDBCQueryResultTest {
     public void assertGetValueByTime() throws SQLException {
         ResultSet resultSet = getMockedResultSet(Types.TIME);
         when(resultSet.getTime(1)).thenReturn(new Time(0L));
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, Time.class), is(new Time(0L)));
         assertFalse(actual.next());
@@ -245,7 +245,7 @@ public final class MemoryJDBCQueryResultTest {
     public void assertGetValueByTimestamp() throws SQLException {
         ResultSet resultSet = getMockedResultSet(Types.TIMESTAMP);
         when(resultSet.getTimestamp(1)).thenReturn(new Timestamp(0L));
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, Timestamp.class), is(new Timestamp(0L)));
         assertFalse(actual.next());
@@ -256,7 +256,7 @@ public final class MemoryJDBCQueryResultTest {
         ResultSet resultSet = getMockedResultSet(Types.CLOB);
         Clob value = mock(Clob.class);
         when(resultSet.getClob(1)).thenReturn(value);
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, Clob.class), is(value));
         assertFalse(actual.next());
@@ -267,7 +267,7 @@ public final class MemoryJDBCQueryResultTest {
         ResultSet resultSet = getMockedResultSet(Types.BLOB);
         Blob value = mock(Blob.class);
         when(resultSet.getBlob(1)).thenReturn(value);
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, Blob.class), is(value));
         assertFalse(actual.next());
@@ -278,7 +278,7 @@ public final class MemoryJDBCQueryResultTest {
         ResultSet resultSet = getMockedResultSet(Types.BINARY);
         Blob value = mock(Blob.class);
         when(resultSet.getBlob(1)).thenReturn(value);
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, Blob.class), is(value));
         assertFalse(actual.next());
@@ -289,7 +289,7 @@ public final class MemoryJDBCQueryResultTest {
         ResultSet resultSet = getMockedResultSet(Types.VARBINARY);
         Blob value = mock(Blob.class);
         when(resultSet.getBlob(1)).thenReturn(value);
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, Blob.class), is(value));
         assertFalse(actual.next());
@@ -300,7 +300,7 @@ public final class MemoryJDBCQueryResultTest {
         ResultSet resultSet = getMockedResultSet(Types.LONGVARBINARY);
         Blob value = mock(Blob.class);
         when(resultSet.getBlob(1)).thenReturn(value);
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, Blob.class), is(value));
         assertFalse(actual.next());
@@ -311,7 +311,7 @@ public final class MemoryJDBCQueryResultTest {
         ResultSet resultSet = getMockedResultSet(Types.ARRAY);
         Array value = mock(Array.class);
         when(resultSet.getArray(1)).thenReturn(value);
-        MemoryJDBCQueryResult actual = new MemoryJDBCQueryResult(resultSet);
+        JDBCMemoryQueryResult actual = new JDBCMemoryQueryResult(resultSet);
         assertTrue(actual.next());
         assertThat(actual.getValue(1, Array.class), is(value));
         assertFalse(actual.next());
@@ -329,14 +329,14 @@ public final class MemoryJDBCQueryResultTest {
     
     @Test
     public void assertGetCalendarValue() throws SQLException {
-        MemoryJDBCQueryResult queryResult = new MemoryJDBCQueryResult(mockResultSet());
+        JDBCMemoryQueryResult queryResult = new JDBCMemoryQueryResult(mockResultSet());
         queryResult.next();
         assertThat(queryResult.getCalendarValue(1, Integer.class, Calendar.getInstance()), Is.is(1));
     }
     
     @Test
     public void assertGetInputStream() throws SQLException, IOException {
-        MemoryJDBCQueryResult queryResult = new MemoryJDBCQueryResult(mockResultSet());
+        JDBCMemoryQueryResult queryResult = new JDBCMemoryQueryResult(mockResultSet());
         queryResult.next();
         InputStream inputStream = queryResult.getInputStream(1, "Unicode");
         assertThat(inputStream.read(), is(getInputStream(1).read()));
@@ -353,7 +353,7 @@ public final class MemoryJDBCQueryResultTest {
     
     @Test
     public void assertWasNull() throws SQLException {
-        MemoryJDBCQueryResult queryResult = new MemoryJDBCQueryResult(mockResultSet());
+        JDBCMemoryQueryResult queryResult = new JDBCMemoryQueryResult(mockResultSet());
         queryResult.next();
         assertFalse(queryResult.wasNull());
         queryResult.next();
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/StreamJDBCQueryResultTest.java b/shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/stream/JDBCStreamQueryResultTest.java
similarity index 82%
rename from shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/StreamJDBCQueryResultTest.java
rename to shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/stream/JDBCStreamQueryResultTest.java
index bea1706..6eb5ec3 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/jdbc/StreamJDBCQueryResultTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/stream/JDBCStreamQueryResultTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc;
+package org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.stream;
 
 import org.junit.Test;
 
@@ -38,11 +38,11 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-public final class StreamJDBCQueryResultTest {
+public final class JDBCStreamQueryResultTest {
     
     @Test
     public void assertNext() throws SQLException {
-        StreamJDBCQueryResult queryResult = new StreamJDBCQueryResult(getResultSet());
+        JDBCStreamQueryResult queryResult = new JDBCStreamQueryResult(getResultSet());
         assertTrue(queryResult.next());
         assertFalse(queryResult.next());
     }
@@ -51,63 +51,63 @@ public final class StreamJDBCQueryResultTest {
     public void assertGetValueByBoolean() throws SQLException {
         ResultSet resultSet = mock(ResultSet.class);
         when(resultSet.getBoolean(1)).thenReturn(true);
-        assertTrue((boolean) new StreamJDBCQueryResult(resultSet).getValue(1, boolean.class));
+        assertTrue((boolean) new JDBCStreamQueryResult(resultSet).getValue(1, boolean.class));
     }
     
     @Test
     public void assertGetValueByByte() throws SQLException {
         ResultSet resultSet = mock(ResultSet.class);
         when(resultSet.getByte(1)).thenReturn((byte) 0x00);
-        assertThat(new StreamJDBCQueryResult(resultSet).getValue(1, byte.class), is((byte) 0x00));
+        assertThat(new JDBCStreamQueryResult(resultSet).getValue(1, byte.class), is((byte) 0x00));
     }
     
     @Test
     public void assertGetValueByShort() throws SQLException {
         ResultSet resultSet = mock(ResultSet.class);
         when(resultSet.getShort(1)).thenReturn((short) 1);
-        assertThat(new StreamJDBCQueryResult(resultSet).getValue(1, short.class), is((short) 1));
+        assertThat(new JDBCStreamQueryResult(resultSet).getValue(1, short.class), is((short) 1));
     }
     
     @Test
     public void assertGetValueByInt() throws SQLException {
         ResultSet resultSet = mock(ResultSet.class);
         when(resultSet.getInt(1)).thenReturn(1);
-        assertThat(new StreamJDBCQueryResult(resultSet).getValue(1, int.class), is(1));
+        assertThat(new JDBCStreamQueryResult(resultSet).getValue(1, int.class), is(1));
     }
     
     @Test
     public void assertGetValueByLong() throws SQLException {
         ResultSet resultSet = mock(ResultSet.class);
         when(resultSet.getLong(1)).thenReturn(1L);
-        assertThat(new StreamJDBCQueryResult(resultSet).getValue(1, long.class), is(1L));
+        assertThat(new JDBCStreamQueryResult(resultSet).getValue(1, long.class), is(1L));
     }
     
     @Test
     public void assertGetValueByFloat() throws SQLException {
         ResultSet resultSet = mock(ResultSet.class);
         when(resultSet.getFloat(1)).thenReturn(1.0F);
-        assertThat(new StreamJDBCQueryResult(resultSet).getValue(1, float.class), is(1.0F));
+        assertThat(new JDBCStreamQueryResult(resultSet).getValue(1, float.class), is(1.0F));
     }
     
     @Test
     public void assertGetValueByDouble() throws SQLException {
         ResultSet resultSet = mock(ResultSet.class);
         when(resultSet.getDouble(1)).thenReturn(1.0D);
-        assertThat(new StreamJDBCQueryResult(resultSet).getValue(1, double.class), is(1.0D));
+        assertThat(new JDBCStreamQueryResult(resultSet).getValue(1, double.class), is(1.0D));
     }
     
     @Test
     public void assertGetValueByString() throws SQLException {
         ResultSet resultSet = mock(ResultSet.class);
         when(resultSet.getString(1)).thenReturn("value");
-        assertThat(new StreamJDBCQueryResult(resultSet).getValue(1, String.class), is("value"));
+        assertThat(new JDBCStreamQueryResult(resultSet).getValue(1, String.class), is("value"));
     }
     
     @Test
     public void assertGetValueByBigDecimal() throws SQLException {
         ResultSet resultSet = mock(ResultSet.class);
         when(resultSet.getBigDecimal(1)).thenReturn(new BigDecimal("0"));
-        assertThat(new StreamJDBCQueryResult(resultSet).getValue(1, BigDecimal.class), is(new BigDecimal("0")));
+        assertThat(new JDBCStreamQueryResult(resultSet).getValue(1, BigDecimal.class), is(new BigDecimal("0")));
     }
     
     @Test
@@ -115,21 +115,21 @@ public final class StreamJDBCQueryResultTest {
         ResultSet resultSet = mock(ResultSet.class);
         byte[] value = {1};
         when(resultSet.getBytes(1)).thenReturn(value);
-        assertThat(new StreamJDBCQueryResult(resultSet).getValue(1, byte[].class), is(value));
+        assertThat(new JDBCStreamQueryResult(resultSet).getValue(1, byte[].class), is(value));
     }
     
     @Test
     public void assertGetValueByDate() throws SQLException {
         ResultSet resultSet = mock(ResultSet.class);
         when(resultSet.getDate(1)).thenReturn(new Date(0L));
-        assertThat(new StreamJDBCQueryResult(resultSet).getValue(1, Date.class), is(new Date(0L)));
+        assertThat(new JDBCStreamQueryResult(resultSet).getValue(1, Date.class), is(new Date(0L)));
     }
     
     @Test
     public void assertGetValueByTime() throws SQLException {
         ResultSet resultSet = mock(ResultSet.class);
         when(resultSet.getTime(1)).thenReturn(new Time(0L));
-        assertThat(new StreamJDBCQueryResult(resultSet).getValue(1, Time.class), is(new Time(0L)));
+        assertThat(new JDBCStreamQueryResult(resultSet).getValue(1, Time.class), is(new Time(0L)));
     }
     
     @Test
@@ -137,7 +137,7 @@ public final class StreamJDBCQueryResultTest {
         ResultSet resultSet = mock(ResultSet.class);
         Blob value = mock(Blob.class);
         when(resultSet.getBlob(1)).thenReturn(value);
-        assertThat(new StreamJDBCQueryResult(resultSet).getValue(1, Blob.class), is(value));
+        assertThat(new JDBCStreamQueryResult(resultSet).getValue(1, Blob.class), is(value));
     }
     
     @Test
@@ -145,7 +145,7 @@ public final class StreamJDBCQueryResultTest {
         ResultSet resultSet = mock(ResultSet.class);
         Clob value = mock(Clob.class);
         when(resultSet.getClob(1)).thenReturn(value);
-        assertThat(new StreamJDBCQueryResult(resultSet).getValue(1, Clob.class), is(value));
+        assertThat(new JDBCStreamQueryResult(resultSet).getValue(1, Clob.class), is(value));
     }
     
     @Test
@@ -153,21 +153,21 @@ public final class StreamJDBCQueryResultTest {
         ResultSet resultSet = mock(ResultSet.class);
         Array value = mock(Array.class);
         when(resultSet.getArray(1)).thenReturn(value);
-        assertThat(new StreamJDBCQueryResult(resultSet).getValue(1, Array.class), is(value));
+        assertThat(new JDBCStreamQueryResult(resultSet).getValue(1, Array.class), is(value));
     }
     
     @Test
     public void assertGetValueByTimestamp() throws SQLException {
         ResultSet resultSet = mock(ResultSet.class);
         when(resultSet.getTimestamp(1)).thenReturn(new Timestamp(0L));
-        assertThat(new StreamJDBCQueryResult(resultSet).getValue(1, Timestamp.class), is(new Timestamp(0L)));
+        assertThat(new JDBCStreamQueryResult(resultSet).getValue(1, Timestamp.class), is(new Timestamp(0L)));
     }
     
     @Test
     public void assertGetCalendarValueWithDate() throws SQLException {
         ResultSet result = getResultSet();
         Calendar calendar = Calendar.getInstance();
-        StreamJDBCQueryResult queryResult = new StreamJDBCQueryResult(result);
+        JDBCStreamQueryResult queryResult = new JDBCStreamQueryResult(result);
         queryResult.next();
         queryResult.getCalendarValue(1, Date.class, calendar);
         verify(result).getDate(1, calendar);
@@ -177,7 +177,7 @@ public final class StreamJDBCQueryResultTest {
     public void assertGetCalendarValueWithTime() throws SQLException {
         ResultSet resultSet = getResultSet();
         Calendar calendar = Calendar.getInstance();
-        StreamJDBCQueryResult queryResult = new StreamJDBCQueryResult(resultSet);
+        JDBCStreamQueryResult queryResult = new JDBCStreamQueryResult(resultSet);
         queryResult.next();
         queryResult.getCalendarValue(1, Time.class, calendar);
         verify(resultSet).getTime(1, calendar);
@@ -187,7 +187,7 @@ public final class StreamJDBCQueryResultTest {
     public void assertGetCalendarValueWithTimestamp() throws SQLException {
         ResultSet resultSet = getResultSet();
         Calendar calendar = Calendar.getInstance();
-        StreamJDBCQueryResult queryResult = new StreamJDBCQueryResult(resultSet);
+        JDBCStreamQueryResult queryResult = new JDBCStreamQueryResult(resultSet);
         queryResult.next();
         queryResult.getCalendarValue(1, Timestamp.class, calendar);
         verify(resultSet).getTimestamp(1, calendar);
@@ -195,7 +195,7 @@ public final class StreamJDBCQueryResultTest {
     
     @Test(expected = SQLException.class)
     public void assertGetCalendarValueWithUnsupportedType() throws SQLException {
-        StreamJDBCQueryResult queryResult = new StreamJDBCQueryResult(getResultSet());
+        JDBCStreamQueryResult queryResult = new JDBCStreamQueryResult(getResultSet());
         queryResult.next();
         queryResult.getCalendarValue(1, Object.class, Calendar.getInstance());
     }
@@ -203,7 +203,7 @@ public final class StreamJDBCQueryResultTest {
     @Test
     public void assertGetInputStreamWithAscii() throws SQLException {
         ResultSet resultSet = getResultSet();
-        StreamJDBCQueryResult queryResult = new StreamJDBCQueryResult(resultSet);
+        JDBCStreamQueryResult queryResult = new JDBCStreamQueryResult(resultSet);
         queryResult.next();
         queryResult.getInputStream(1, "Ascii");
         verify(resultSet).getAsciiStream(1);
@@ -213,7 +213,7 @@ public final class StreamJDBCQueryResultTest {
     @Test
     public void assertGetInputStreamWithUnicode() throws SQLException {
         ResultSet resultSet = getResultSet();
-        StreamJDBCQueryResult queryResult = new StreamJDBCQueryResult(resultSet);
+        JDBCStreamQueryResult queryResult = new JDBCStreamQueryResult(resultSet);
         queryResult.next();
         queryResult.getInputStream(1, "Unicode");
         verify(resultSet).getUnicodeStream(1);
@@ -222,7 +222,7 @@ public final class StreamJDBCQueryResultTest {
     @Test
     public void assertGetInputStreamWithBinary() throws SQLException {
         ResultSet resultSet = getResultSet();
-        StreamJDBCQueryResult queryResult = new StreamJDBCQueryResult(resultSet);
+        JDBCStreamQueryResult queryResult = new JDBCStreamQueryResult(resultSet);
         queryResult.next();
         queryResult.getInputStream(1, "Binary");
         verify(resultSet).getBinaryStream(1);
@@ -230,14 +230,14 @@ public final class StreamJDBCQueryResultTest {
     
     @Test(expected = SQLException.class)
     public void assertGetInputStreamWithUnsupportedType() throws SQLException {
-        StreamJDBCQueryResult queryResult = new StreamJDBCQueryResult(getResultSet());
+        JDBCStreamQueryResult queryResult = new JDBCStreamQueryResult(getResultSet());
         queryResult.next();
         queryResult.getInputStream(1, "Unsupported Type");
     }
     
     @Test
     public void assertWasNull() throws SQLException {
-        StreamJDBCQueryResult queryResult = new StreamJDBCQueryResult(getResultSet());
+        JDBCStreamQueryResult queryResult = new JDBCStreamQueryResult(getResultSet());
         queryResult.next();
         assertFalse(queryResult.wasNull());
         queryResult.next();
diff --git a/shardingsphere-infra/shardingsphere-infra-merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/decorator/ResultDecoratorFixture.java b/shardingsphere-infra/shardingsphere-infra-merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/decorator/ResultDecoratorFixture.java
index 239cf19..dd20dcc 100644
--- a/shardingsphere-infra/shardingsphere-infra-merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/decorator/ResultDecoratorFixture.java
+++ b/shardingsphere-infra/shardingsphere-infra-merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/decorator/ResultDecoratorFixture.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.merge.fixture.decorator;
 
 import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc.StreamJDBCQueryResult;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.stream.JDBCStreamQueryResult;
 import org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecorator;
 import org.apache.shardingsphere.infra.merge.fixture.rule.DecoratorRuleFixture;
 import org.apache.shardingsphere.infra.merge.result.MergedResult;
@@ -37,13 +37,13 @@ public final class ResultDecoratorFixture implements ResultDecorator<DecoratorRu
     public MergedResult decorate(final QueryResult queryResult, final SQLStatementContext<?> sqlStatementContext, final DecoratorRuleFixture rule) throws SQLException {
         ResultSet resultSet = mock(ResultSet.class);
         when(resultSet.getString(1)).thenReturn("decorated_value");
-        return new TransparentMergedResult(new StreamJDBCQueryResult(resultSet));
+        return new TransparentMergedResult(new JDBCStreamQueryResult(resultSet));
     }
     
     @Override
     public MergedResult decorate(final MergedResult mergedResult, final SQLStatementContext<?> sqlStatementContext, final DecoratorRuleFixture rule) throws SQLException {
         ResultSet resultSet = mock(ResultSet.class);
         when(resultSet.getString(1)).thenReturn("decorated_merged_value");
-        return new TransparentMergedResult(new StreamJDBCQueryResult(resultSet));
+        return new TransparentMergedResult(new JDBCStreamQueryResult(resultSet));
     }
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/merger/ResultMergerFixture.java b/shardingsphere-infra/shardingsphere-infra-merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/merger/ResultMergerFixture.java
index e39c472..05d99eb 100644
--- a/shardingsphere-infra/shardingsphere-infra-merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/merger/ResultMergerFixture.java
+++ b/shardingsphere-infra/shardingsphere-infra-merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/merger/ResultMergerFixture.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.infra.merge.fixture.merger;
 
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc.StreamJDBCQueryResult;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.stream.JDBCStreamQueryResult;
 import org.apache.shardingsphere.infra.merge.engine.merger.ResultMerger;
 import org.apache.shardingsphere.infra.merge.result.MergedResult;
 import org.apache.shardingsphere.infra.merge.result.impl.transparent.TransparentMergedResult;
@@ -38,7 +38,7 @@ public final class ResultMergerFixture implements ResultMerger {
     public MergedResult merge(final List<QueryResult> queryResults, final SQLStatementContext<?> sqlStatementContext, final ShardingSphereSchema schema) throws SQLException {
         ResultSet resultSet = mock(ResultSet.class);
         when(resultSet.getString(1)).thenReturn("merged_value");
-        QueryResult queryResult = new StreamJDBCQueryResult(resultSet);
+        QueryResult queryResult = new JDBCStreamQueryResult(resultSet);
         return new TransparentMergedResult(queryResult);
     }
 }
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
index d295b88..447c7cc 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
@@ -26,8 +26,8 @@ import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.J
 import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutor;
 import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutorCallback;
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc.MemoryJDBCQueryResult;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc.StreamJDBCQueryResult;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.memory.JDBCMemoryQueryResult;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.stream.JDBCStreamQueryResult;
 import org.apache.shardingsphere.infra.route.context.RouteUnit;
 import org.apache.shardingsphere.infra.rule.type.DataNodeContainedRule;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -69,7 +69,7 @@ public final class PreparedStatementExecutor extends AbstractStatementExecutor {
             private QueryResult createQueryResult(final Statement statement, final ConnectionMode connectionMode) throws SQLException {
                 PreparedStatement preparedStatement = (PreparedStatement) statement;
                 ResultSet resultSet = preparedStatement.executeQuery();
-                return ConnectionMode.MEMORY_STRICTLY == connectionMode ? new StreamJDBCQueryResult(resultSet) : new MemoryJDBCQueryResult(resultSet);
+                return ConnectionMode.MEMORY_STRICTLY == connectionMode ? new JDBCStreamQueryResult(resultSet) : new JDBCMemoryQueryResult(resultSet);
             }
         };
     }
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
index 20b571a..760378a 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
@@ -26,8 +26,8 @@ import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.J
 import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutor;
 import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutorCallback;
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc.MemoryJDBCQueryResult;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc.StreamJDBCQueryResult;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.memory.JDBCMemoryQueryResult;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.stream.JDBCStreamQueryResult;
 import org.apache.shardingsphere.infra.route.context.RouteUnit;
 import org.apache.shardingsphere.infra.rule.type.DataNodeContainedRule;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -62,7 +62,7 @@ public final class StatementExecutor extends AbstractStatementExecutor {
             
             private QueryResult createQueryResult(final String sql, final Statement statement, final ConnectionMode connectionMode) throws SQLException {
                 ResultSet resultSet = statement.executeQuery(sql);
-                return ConnectionMode.MEMORY_STRICTLY == connectionMode ? new StreamJDBCQueryResult(resultSet) : new MemoryJDBCQueryResult(resultSet);
+                return ConnectionMode.MEMORY_STRICTLY == connectionMode ? new JDBCStreamQueryResult(resultSet) : new JDBCMemoryQueryResult(resultSet);
             }
         };
         return getJdbcExecutor().execute(executionGroups, jdbcExecutorCallback);
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index 2d4b7c5..26b2a25 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -47,7 +47,7 @@ import org.apache.shardingsphere.infra.executor.sql.execute.engine.raw.RawExecut
 import org.apache.shardingsphere.infra.executor.sql.execute.engine.raw.RawSQLExecutionUnit;
 import org.apache.shardingsphere.infra.executor.sql.execute.engine.raw.callback.RawSQLExecutorCallback;
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc.StreamJDBCQueryResult;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.stream.JDBCStreamQueryResult;
 import org.apache.shardingsphere.infra.executor.sql.log.SQLLogger;
 import org.apache.shardingsphere.infra.executor.sql.prepare.driver.DriverExecutionPrepareEngine;
 import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.StatementOption;
@@ -256,7 +256,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
         List<QueryResult> result = new ArrayList<>(resultSets.size());
         for (ResultSet each : resultSets) {
             if (null != each) {
-                result.add(new StreamJDBCQueryResult(each));
+                result.add(new JDBCStreamQueryResult(each));
             }
         }
         return result;
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
index 8876dc7..ef8da6b 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
@@ -45,7 +45,7 @@ import org.apache.shardingsphere.infra.executor.sql.execute.engine.raw.RawExecut
 import org.apache.shardingsphere.infra.executor.sql.execute.engine.raw.RawSQLExecutionUnit;
 import org.apache.shardingsphere.infra.executor.sql.execute.engine.raw.callback.RawSQLExecutorCallback;
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc.StreamJDBCQueryResult;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.stream.JDBCStreamQueryResult;
 import org.apache.shardingsphere.infra.executor.sql.log.SQLLogger;
 import org.apache.shardingsphere.infra.executor.sql.prepare.driver.DriverExecutionPrepareEngine;
 import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.StatementOption;
@@ -359,7 +359,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
         List<QueryResult> result = new ArrayList<>(resultSets.size());
         for (ResultSet each : resultSets) {
             if (null != each) {
-                result.add(new StreamJDBCQueryResult(each));
+                result.add(new JDBCStreamQueryResult(each));
             }
         }
         return result;
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/jdbc/ProxyJDBCExecutorCallback.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/jdbc/ProxyJDBCExecutorCallback.java
index d8f42ee..1dde71a 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/jdbc/ProxyJDBCExecutorCallback.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/jdbc/ProxyJDBCExecutorCallback.java
@@ -22,8 +22,8 @@ import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMod
 import org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutorCallback;
 import org.apache.shardingsphere.infra.executor.sql.execute.result.ExecuteResult;
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc.MemoryJDBCQueryResult;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.jdbc.StreamJDBCQueryResult;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.memory.JDBCMemoryQueryResult;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.stream.JDBCStreamQueryResult;
 import org.apache.shardingsphere.infra.executor.sql.execute.result.update.UpdateResult;
 import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
 import org.apache.shardingsphere.proxy.backend.communication.jdbc.statement.accessor.JDBCAccessor;
@@ -76,7 +76,7 @@ public final class ProxyJDBCExecutorCallback extends JDBCExecutorCallback<Execut
     }
     
     private QueryResult createQueryResult(final ResultSet resultSet, final ConnectionMode connectionMode) throws SQLException {
-        return connectionMode == ConnectionMode.MEMORY_STRICTLY ? new StreamJDBCQueryResult(resultSet) : new MemoryJDBCQueryResult(resultSet);
+        return connectionMode == ConnectionMode.MEMORY_STRICTLY ? new JDBCStreamQueryResult(resultSet) : new JDBCMemoryQueryResult(resultSet);
     }
     
     private long getGeneratedKey(final Statement statement) throws SQLException {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowTablesBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowTablesBackendHandler.java
index a962226..95b31f0 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowTablesBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowTablesBackendHandler.java
@@ -19,10 +19,10 @@ package org.apache.shardingsphere.proxy.backend.text.admin;
 
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.raw.row.QueryResultDataRow;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.raw.RawQueryResult;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.raw.metadata.RawQueryResultMetaData;
-import org.apache.shardingsphere.infra.executor.sql.execute.result.query.raw.metadata.QueryResultColumnMetaData;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.type.memory.row.MemoryQueryResultDataRow;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.raw.type.RawMemoryQueryResult;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.raw.metadata.RawQueryResultMetaData;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.raw.metadata.RawQueryResultColumnMetaData;
 import org.apache.shardingsphere.proxy.backend.response.query.QueryHeader;
 import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
@@ -54,11 +54,11 @@ public final class ShowTablesBackendHandler implements TextProtocolBackendHandle
         if (!ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName()).isComplete()) {
             return result;
         }
-        RawQueryResultMetaData metaData = new RawQueryResultMetaData(Collections.singletonList(new QueryResultColumnMetaData(
+        RawQueryResultMetaData metaData = new RawQueryResultMetaData(Collections.singletonList(new RawQueryResultColumnMetaData(
                 null, result.getQueryHeaders().get(0).getColumnName(), result.getQueryHeaders().get(0).getColumnLabel(), Types.VARCHAR, "VARCHAR", 255, 0, false, false, false)));
         Collection<String> allTableNames = ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName()).getSchema().getAllTableNames();
-        List<QueryResultDataRow> rows = allTableNames.stream().map(each -> new QueryResultDataRow(Collections.singletonList(each))).collect(Collectors.toList());
-        QueryResult queryResult = new RawQueryResult(metaData, rows);
+        List<MemoryQueryResultDataRow> rows = allTableNames.stream().map(each -> new MemoryQueryResultDataRow(Collections.singletonList(each))).collect(Collectors.toList());
+        QueryResult queryResult = new RawMemoryQueryResult(metaData, rows);
         result.getQueryResults().add(queryResult);
         queryResponse = result;
         return result;