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