You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by xi...@apache.org on 2020/12/02 11:44:06 UTC

[shardingsphere] branch master updated: Refactor ShowTablesBackendHandler (#8476)

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

xiaoyu 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 b3c6ea6  Refactor ShowTablesBackendHandler (#8476)
b3c6ea6 is described below

commit b3c6ea6c71eb0ba342a31d65f22f351fea7bc313
Author: Liang Zhang <te...@163.com>
AuthorDate: Wed Dec 2 19:43:50 2020 +0800

    Refactor ShowTablesBackendHandler (#8476)
---
 .../impl/raw/metadata/RawQueryResultMetaData.java  | 20 ++++++-------
 .../text/admin/ShowTablesBackendHandler.java       | 35 +++++++++++-----------
 .../text/admin/ShowTablesBackendHandlerTest.java   |  2 +-
 3 files changed, 29 insertions(+), 28 deletions(-)

diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/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
index c097db7..580a66f 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/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
@@ -37,51 +37,51 @@ public final class RawQueryResultMetaData implements QueryResultMetaData {
     
     @Override
     public String getTableName(final int columnIndex) {
-        return columns.get(columnIndex).getTableName();
+        return columns.get(columnIndex - 1).getTableName();
     }
     
     @Override
     public String getColumnName(final int columnIndex) {
-        return columns.get(columnIndex).getName();
+        return columns.get(columnIndex - 1).getName();
     }
     
     @Override
     public String getColumnLabel(final int columnIndex) {
-        return columns.get(columnIndex).getLabel();
+        return columns.get(columnIndex - 1).getLabel();
     }
     
     @Override
     public int getColumnType(final int columnIndex) {
-        return columns.get(columnIndex).getType();
+        return columns.get(columnIndex - 1).getType();
     }
     
     @Override
     public String getColumnTypeName(final int columnIndex) {
-        return columns.get(columnIndex).getTypeName();
+        return columns.get(columnIndex - 1).getTypeName();
     }
     
     @Override
     public int getColumnLength(final int columnIndex) {
-        return columns.get(columnIndex).getLength();
+        return columns.get(columnIndex - 1).getLength();
     }
     
     @Override
     public int getDecimals(final int columnIndex) {
-        return columns.get(columnIndex).getDecimals();
+        return columns.get(columnIndex - 1).getDecimals();
     }
     
     @Override
     public boolean isSigned(final int columnIndex) {
-        return columns.get(columnIndex).isSigned();
+        return columns.get(columnIndex - 1).isSigned();
     }
     
     @Override
     public boolean isNotNull(final int columnIndex) {
-        return columns.get(columnIndex).isNotNull();
+        return columns.get(columnIndex - 1).isNotNull();
     }
     
     @Override
     public boolean isAutoIncrement(final int columnIndex) {
-        return columns.get(columnIndex).isAutoIncrement();
+        return columns.get(columnIndex - 1).isAutoIncrement();
     }
 }
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 45bbbd3..e666f82 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,15 +19,16 @@ 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.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.header.query.impl.QueryHeader;
+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.type.RawMemoryQueryResult;
+import org.apache.shardingsphere.infra.executor.sql.execute.result.query.type.memory.row.MemoryQueryResultDataRow;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
 import org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
+import org.apache.shardingsphere.proxy.backend.response.header.query.impl.QueryHeaderBuilder;
 import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
 
 import java.sql.SQLException;
@@ -49,22 +50,22 @@ public final class ShowTablesBackendHandler implements TextProtocolBackendHandle
     private QueryResult queryResult;
     
     @Override
-    public ResponseHeader execute() {
-        QueryResponseHeader result = createQueryResponseHeader(backendConnection.getSchemaName());
-        if (!ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName()).isComplete()) {
-            return result;
+    public ResponseHeader execute() throws SQLException {
+        RawQueryResultMetaData queryResultMetaData = createQueryResultMetaData();
+        ShardingSphereMetaData metaData = ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName());
+        if (ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName()).isComplete()) {
+            Collection<String> allTableNames = ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName()).getSchema().getAllTableNames();
+            List<MemoryQueryResultDataRow> rows = allTableNames.stream().map(each -> new MemoryQueryResultDataRow(Collections.singletonList(each))).collect(Collectors.toList());
+            queryResult = new RawMemoryQueryResult(queryResultMetaData, rows);
+        } else {
+            queryResult = new RawMemoryQueryResult(queryResultMetaData, Collections.emptyList());
         }
-        RawQueryResultMetaData metaData = new RawQueryResultMetaData(Collections.singletonList(new RawQueryResultColumnMetaData(
-                "", 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<MemoryQueryResultDataRow> rows = allTableNames.stream().map(each -> new MemoryQueryResultDataRow(Collections.singletonList(each))).collect(Collectors.toList());
-        queryResult = new RawMemoryQueryResult(metaData, rows);
-        return result;
+        return new QueryResponseHeader(Collections.singletonList(QueryHeaderBuilder.build(queryResult, metaData, 1)));
     }
     
-    private QueryResponseHeader createQueryResponseHeader(final String schemaName) {
-        String column = String.format("Tables_in_%s", schemaName);
-        return new QueryResponseHeader(Collections.singletonList(new QueryHeader(schemaName, "", column, column, Types.VARCHAR, "VARCHAR", 255, 0, false, false, false, false)));
+    private RawQueryResultMetaData createQueryResultMetaData() {
+        String column = String.format("Tables_in_%s", backendConnection.getSchemaName());
+        return new RawQueryResultMetaData(Collections.singletonList(new RawQueryResultColumnMetaData("", column, column, Types.VARCHAR, "VARCHAR", 255, 0, false, false, false)));
     }
     
     @Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowTablesBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowTablesBackendHandlerTest.java
index 9d64771..513b1ed 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowTablesBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowTablesBackendHandlerTest.java
@@ -81,7 +81,7 @@ public final class ShowTablesBackendHandlerTest {
     }
     
     @Test
-    public void assertExecuteShowTablesBackendHandler() {
+    public void assertExecuteShowTablesBackendHandler() throws SQLException {
         QueryResponseHeader actual = (QueryResponseHeader) tablesBackendHandler.execute();
         assertThat(actual, instanceOf(QueryResponseHeader.class));
         assertThat(actual.getQueryHeaders().size(), is(1));