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