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

panjuan 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 62f82a6  Add QueryHeader.columnTypeName (#8417)
62f82a6 is described below

commit 62f82a62798f2bd734c27e3dc9841f8da3b1e3e4
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Nov 30 13:17:27 2020 +0800

    Add QueryHeader.columnTypeName (#8417)
---
 .../communication/jdbc/JDBCDatabaseCommunicationEngine.java   |  8 ++++----
 .../proxy/backend/response/query/QueryHeader.java             |  2 ++
 .../proxy/backend/response/query/QueryHeaderBuilder.java      |  3 ++-
 .../proxy/backend/text/admin/ShowDatabasesBackendHandler.java |  3 ++-
 .../proxy/backend/text/admin/ShowTablesBackendHandler.java    |  2 +-
 .../text/sctl/explain/ShardingCTLExplainBackendHandler.java   |  4 ++--
 .../sctl/hint/internal/executor/HintShowStatusExecutor.java   |  4 ++--
 .../hint/internal/executor/HintShowTableStatusExecutor.java   |  6 +++---
 .../backend/text/sctl/show/ShardingCTLShowBackendHandler.java |  2 +-
 .../command/query/builder/ResponsePacketBuilderTest.java      |  4 ++--
 .../command/query/text/PostgreSQLComQueryExecutor.java        | 11 ++++-------
 11 files changed, 25 insertions(+), 24 deletions(-)

diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
index 7b286f7..751c2d9 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
@@ -91,7 +91,8 @@ public final class JDBCDatabaseCommunicationEngine implements 
DatabaseCommunicat
         proxySQLExecutor.checkExecutePrerequisites(executionContext);
         response = proxySQLExecutor.execute(executionContext);
         refreshSchema(executionContext);
-        return merge(executionContext.getSqlStatementContext());
+        merge(executionContext.getSqlStatementContext());
+        return response;
     }
     
     @SuppressWarnings({"unchecked", "rawtypes"})
@@ -114,13 +115,12 @@ public final class JDBCDatabaseCommunicationEngine 
implements DatabaseCommunicat
         
OrderedSPIRegistry.getRegisteredServices(Collections.singletonList(schema), 
SchemaChangedNotifier.class).values().forEach(each -> each.notify(schemaName, 
schema));
     }
     
-    private BackendResponse merge(final SQLStatementContext<?> 
sqlStatementContext) throws SQLException {
+    private void merge(final SQLStatementContext<?> sqlStatementContext) 
throws SQLException {
         if (response instanceof UpdateResponse) {
             mergeUpdateCount(sqlStatementContext);
-            return response;
+            return;
         }
         mergedResult = mergeQuery(sqlStatementContext, ((QueryResponse) 
response).getQueryResults());
-        return response;
     }
     
     private void mergeUpdateCount(final SQLStatementContext<?> 
sqlStatementContext) {
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/query/QueryHeader.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/query/QueryHeader.java
index 72b6d58..559fb46 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/query/QueryHeader.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/query/QueryHeader.java
@@ -39,6 +39,8 @@ public final class QueryHeader {
     
     private final int columnType;
     
+    private final String columnTypeName;
+    
     private final int decimals;
     
     private final boolean signed;
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/query/QueryHeaderBuilder.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/query/QueryHeaderBuilder.java
index c34e597..61120f4 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/query/QueryHeaderBuilder.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/query/QueryHeaderBuilder.java
@@ -81,11 +81,12 @@ public final class QueryHeaderBuilder {
         String columnLabel = 
queryResult.getMetaData().getColumnLabel(columnIndex);
         int columnLength = 
queryResult.getMetaData().getColumnLength(columnIndex);
         int columnType = queryResult.getMetaData().getColumnType(columnIndex);
+        String columnTypeName = 
queryResult.getMetaData().getColumnTypeName(columnIndex);
         int decimals = queryResult.getMetaData().getDecimals(columnIndex);
         boolean signed = queryResult.getMetaData().isSigned(columnIndex);
         boolean notNull = queryResult.getMetaData().isNotNull(columnIndex);
         boolean autoIncrement = 
queryResult.getMetaData().isAutoIncrement(columnIndex);
-        return new QueryHeader(schemaName, tableName, columnLabel, columnName, 
columnLength, columnType, decimals, signed, primaryKey, notNull, autoIncrement);
+        return new QueryHeader(schemaName, tableName, columnLabel, columnName, 
columnLength, columnType, columnTypeName, decimals, signed, primaryKey, 
notNull, autoIncrement);
     }
     
     private static String getColumnName(final ProjectionsContext 
projectionsContext, final QueryResult queryResult, final int columnIndex) 
throws SQLException {
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowDatabasesBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowDatabasesBackendHandler.java
index d53e57b..b26717f 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowDatabasesBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowDatabasesBackendHandler.java
@@ -46,7 +46,8 @@ public final class ShowDatabasesBackendHandler implements 
TextProtocolBackendHan
     @Override
     public BackendResponse execute() {
         mergedResult = new SingleLocalDataMergedResult(getSchemaNames());
-        return new QueryResponse(Collections.singletonList(new 
QueryHeader("information_schema", "SCHEMATA", "Database", "SCHEMA_NAME", 100, 
Types.VARCHAR, 0, false, false, false, false)));
+        return new QueryResponse(Collections.singletonList(
+                new QueryHeader("information_schema", "SCHEMATA", "Database", 
"SCHEMA_NAME", 100, Types.VARCHAR, "VARCHAR", 0, false, false, false, false)));
     }
     
     private Collection<Object> getSchemaNames() {
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 95b31f0..21419b0 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
@@ -66,7 +66,7 @@ public final class ShowTablesBackendHandler implements 
TextProtocolBackendHandle
     
     private QueryResponse createQueryResponse(final String schemaName) {
         String column = String.format("Tables_in_%s", schemaName);
-        return new QueryResponse(Collections.singletonList(new 
QueryHeader(schemaName, "", column, column, 64, Types.VARCHAR, 0, false, false, 
false, false)));
+        return new QueryResponse(Collections.singletonList(new 
QueryHeader(schemaName, "", column, column, 64, Types.VARCHAR, "VARCHAR", 0, 
false, false, false, false)));
     }
     
     @Override
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandler.java
index a31d803..55085b6 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandler.java
@@ -74,8 +74,8 @@ public final class ShardingCTLExplainBackendHandler 
implements TextProtocolBacke
         LogicSQL logicSQL = createLogicSQL(metaData, explainStatement.get());
         executionUnits = kernelProcessor.generateExecutionContext(logicSQL, 
metaData, 
ProxyContext.getInstance().getMetaDataContexts().getProps()).getExecutionUnits().iterator();
         queryHeaders = new ArrayList<>(2);
-        queryHeaders.add(new QueryHeader("", "", "datasource_name", "", 255, 
Types.CHAR, 0, false, false, false, false));
-        queryHeaders.add(new QueryHeader("", "", "sql", "", 255, Types.CHAR, 
0, false, false, false, false));
+        queryHeaders.add(new QueryHeader("", "", "datasource_name", "", 255, 
Types.CHAR, "CHAR", 0, false, false, false, false));
+        queryHeaders.add(new QueryHeader("", "", "sql", "", 255, Types.CHAR, 
"CHAR", 0, false, false, false, false));
         return new QueryResponse(queryHeaders);
     }
     
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintShowStatusExecutor.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintShowStatusExecutor.java
index e0a75ba..e622ca4 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintShowStatusExecutor.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintShowStatusExecutor.java
@@ -37,8 +37,8 @@ public final class HintShowStatusExecutor extends 
AbstractHintQueryExecutor<Hint
     @Override
     protected List<QueryHeader> createQueryHeaders() {
         List<QueryHeader> result = new ArrayList<>(2);
-        result.add(new QueryHeader("", "", "primary_only", "", 5, Types.CHAR, 
0, false, false, false, false));
-        result.add(new QueryHeader("", "", "sharding_type", "", 255, 
Types.CHAR, 0, false, false, false, false));
+        result.add(new QueryHeader("", "", "primary_only", "", 5, Types.CHAR, 
"CHAR", 0, false, false, false, false));
+        result.add(new QueryHeader("", "", "sharding_type", "", 255, 
Types.CHAR, "CHAR", 0, false, false, false, false));
         return result;
     }
     
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintShowTableStatusExecutor.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintShowTableStatusExecutor.java
index 30c3d73..a9954b4 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintShowTableStatusExecutor.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintShowTableStatusExecutor.java
@@ -49,9 +49,9 @@ public final class HintShowTableStatusExecutor extends 
AbstractHintQueryExecutor
     @Override
     protected List<QueryHeader> createQueryHeaders() {
         List<QueryHeader> result = new ArrayList<>(3);
-        result.add(new QueryHeader("", "", "table_name", "", 255, Types.CHAR, 
0, false, false, false, false));
-        result.add(new QueryHeader("", "", "database_sharding_values", "", 
255, Types.CHAR, 0, false, false, false, false));
-        result.add(new QueryHeader("", "", "table_sharding_values", "", 255, 
Types.CHAR, 0, false, false, false, false));
+        result.add(new QueryHeader("", "", "table_name", "", 255, Types.CHAR, 
"CHAR", 0, false, false, false, false));
+        result.add(new QueryHeader("", "", "database_sharding_values", "", 
255, Types.CHAR, "CHAR", 0, false, false, false, false));
+        result.add(new QueryHeader("", "", "table_sharding_values", "", 255, 
Types.CHAR, "CHAR", 0, false, false, false, false));
         return result;
     }
     
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/show/ShardingCTLShowBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/show/ShardingCTLShowBackendHandler.java
index b803e34..6032972 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/show/ShardingCTLShowBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/show/ShardingCTLShowBackendHandler.java
@@ -68,7 +68,7 @@ public final class ShardingCTLShowBackendHandler implements 
TextProtocolBackendH
     
     private BackendResponse createResponsePackets(final String columnName, 
final Object... values) {
         mergedResult = new 
MultipleLocalDataMergedResult(Collections.singletonList(Arrays.asList(values)));
-        return new QueryResponse(Collections.singletonList(new QueryHeader("", 
"", columnName, columnName, 100, Types.VARCHAR, 0, false, false, false, 
false)));
+        return new QueryResponse(Collections.singletonList(new QueryHeader("", 
"", columnName, columnName, 100, Types.VARCHAR, "VARCHAR", 0, false, false, 
false, false)));
     }
     
     @Override
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/builder/ResponsePacketBuilderTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/builder/ResponsePacketBuilderTest.java
index f9241e8..1977fb5 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/builder/ResponsePacketBuilderTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/builder/ResponsePacketBuilderTest.java
@@ -42,8 +42,8 @@ public final class ResponsePacketBuilderTest {
     
     @Test
     public void assertBuildQueryResponsePackets() {
-        QueryHeader queryHeader1 = new QueryHeader("schema1", "table1", 
"columnLabel1", "columnName1", 4, 5, 6, false, true, false, true);
-        QueryHeader queryHeader2 = new QueryHeader("schema2", "table2", 
"columnLabel2", "columnName2", 7, 8, 9, false, true, true, true);
+        QueryHeader queryHeader1 = new QueryHeader("schema1", "table1", 
"columnLabel1", "columnName1", 4, 5, "VARCHAR", 6, false, true, false, true);
+        QueryHeader queryHeader2 = new QueryHeader("schema2", "table2", 
"columnLabel2", "columnName2", 7, 8, "VARCHAR", 9, false, true, true, true);
         List<QueryHeader> queryHeaders = Arrays.asList(queryHeader1, 
queryHeader2);
         QueryResponse queryResponse = new QueryResponse(queryHeaders);
         Collection<DatabasePacket<?>> actual = 
ResponsePacketBuilder.buildQueryResponsePackets(queryResponse);
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/text/PostgreSQLComQueryExecutor.java
 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/text/PostgreSQLComQueryExecutor.java
index af9632d..6806f41 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/text/PostgreSQLComQueryExecutor.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/text/PostgreSQLComQueryExecutor.java
@@ -26,10 +26,9 @@ import 
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.tex
 import 
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.text.PostgreSQLDataRowPacket;
 import 
org.apache.shardingsphere.db.protocol.postgresql.packet.generic.PostgreSQLCommandCompletePacket;
 import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
-import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-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.response.BackendResponse;
+import org.apache.shardingsphere.proxy.backend.response.query.QueryHeader;
 import org.apache.shardingsphere.proxy.backend.response.query.QueryResponse;
 import org.apache.shardingsphere.proxy.backend.response.update.UpdateResponse;
 import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
@@ -69,7 +68,7 @@ public final class PostgreSQLComQueryExecutor implements 
QueryCommandExecutor {
         return Collections.singletonList(createUpdatePacket((UpdateResponse) 
backendResponse));
     }
     
-    private Optional<PostgreSQLRowDescriptionPacket> createQueryPacket(final 
QueryResponse queryResponse) throws SQLException {
+    private Optional<PostgreSQLRowDescriptionPacket> createQueryPacket(final 
QueryResponse queryResponse) {
         Collection<PostgreSQLColumnDescription> columnDescriptions = 
createColumnDescriptions(queryResponse);
         if (columnDescriptions.isEmpty()) {
             responseType = ResponseType.QUERY;
@@ -80,13 +79,11 @@ public final class PostgreSQLComQueryExecutor implements 
QueryCommandExecutor {
         return Optional.of(new 
PostgreSQLRowDescriptionPacket(columnDescriptions.size(), columnDescriptions));
     }
     
-    private Collection<PostgreSQLColumnDescription> 
createColumnDescriptions(final QueryResponse queryResponse) throws SQLException 
{
+    private Collection<PostgreSQLColumnDescription> 
createColumnDescriptions(final QueryResponse queryResponse) {
         Collection<PostgreSQLColumnDescription> result = new LinkedList<>();
-        List<QueryResult> queryResults = queryResponse.getQueryResults();
         int columnIndex = 0;
         for (QueryHeader each : queryResponse.getQueryHeaders()) {
-            String columnTypeName = queryResults.isEmpty() ? null : 
queryResults.get(0).getMetaData().getColumnTypeName(columnIndex + 1);
-            result.add(new PostgreSQLColumnDescription(each.getColumnName(), 
++columnIndex, each.getColumnType(), each.getColumnLength(), columnTypeName));
+            result.add(new PostgreSQLColumnDescription(each.getColumnName(), 
++columnIndex, each.getColumnType(), each.getColumnLength(), 
each.getColumnTypeName()));
         }
         return result;
     }

Reply via email to