You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2023/02/21 07:06:24 UTC

[shardingsphere] branch master updated: Move concrete QueryHeaderBuilder to db backend modules (#24272)

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

duanzhengqiang 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 ee9a4b10ef8 Move concrete QueryHeaderBuilder to db backend modules (#24272)
ee9a4b10ef8 is described below

commit ee9a4b10ef824625b19792a177fd8712932585b4
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Tue Feb 21 15:06:17 2023 +0800

    Move concrete QueryHeaderBuilder to db backend modules (#24272)
    
    * Move concrete StatementMemoryStrictlyFetchSizeSetter to db backend modules
    
    * Move concrete QueryHeaderBuilder to db backend modules
    
    * Move concrete QueryHeaderBuilder to db backend modules
---
 .../connector/jdbc/DatabaseConnectorTest.java      | 41 ++++++++++++----------
 .../jdbc/fixture/QueryHeaderBuilderFixture.java}   |  7 ++--
 .../DatabaseAdminQueryBackendHandlerTest.java      | 27 ++++++++++----
 .../header/query}/MySQLQueryHeaderBuilder.java     |  2 +-
 ...ackend.response.header.query.QueryHeaderBuilder |  4 +--
 .../header/query}/MySQLQueryHeaderBuilderTest.java |  2 +-
 .../header/query}/OpenGaussQueryHeaderBuilder.java |  3 +-
 ...ackend.response.header.query.QueryHeaderBuilder |  4 +--
 .../query}/OpenGaussQueryHeaderBuilderTest.java    |  3 +-
 .../query}/PostgreSQLQueryHeaderBuilder.java       |  2 +-
 ...ackend.response.header.query.QueryHeaderBuilder |  4 +--
 .../query}/PostgreSQLQueryHeaderBuilderTest.java   |  2 +-
 12 files changed, 55 insertions(+), 46 deletions(-)

diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/DatabaseConnectorTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/DatabaseConnectorTest.java
index 9b179c64781..a14cea449f3 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/DatabaseConnectorTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/DatabaseConnectorTest.java
@@ -48,12 +48,12 @@ import org.apache.shardingsphere.proxy.backend.connector.BackendConnection;
 import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnector;
 import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnectorFactory;
 import org.apache.shardingsphere.proxy.backend.connector.jdbc.executor.callback.ProxyJDBCExecutorCallback;
+import org.apache.shardingsphere.proxy.backend.connector.jdbc.fixture.QueryHeaderBuilderFixture;
 import org.apache.shardingsphere.proxy.backend.connector.jdbc.statement.JDBCBackendStatement;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow;
 import org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder;
 import org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilderEngine;
-import org.apache.shardingsphere.proxy.backend.response.header.query.impl.MySQLQueryHeaderBuilder;
 import org.apache.shardingsphere.proxy.backend.util.ProxyContextRestorer;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
 import org.apache.shardingsphere.sqlfederation.api.config.SQLFederationRuleConfiguration;
@@ -148,7 +148,7 @@ public final class DatabaseConnectorTest extends ProxyContextRestorer {
             when(resultSet.next()).thenReturn(true, false);
             when(resultSet.getObject(1)).thenReturn(Integer.MAX_VALUE);
             typedSPILoader.when(() -> TypedSPILoader.getService(SQLFederationExecutor.class, "NONE")).thenReturn(federationExecutor);
-            typedSPILoader.when(() -> TypedSPILoader.getService(QueryHeaderBuilder.class, "H2")).thenReturn(new MySQLQueryHeaderBuilder());
+            typedSPILoader.when(() -> TypedSPILoader.getService(QueryHeaderBuilder.class, "H2")).thenReturn(new QueryHeaderBuilderFixture());
             systemSchemaUtil.when(() -> SystemSchemaUtil.containsSystemSchema(any(DatabaseType.class), any(), any(ShardingSphereDatabase.class))).thenReturn(true);
             engine.execute();
         }
@@ -172,24 +172,27 @@ public final class DatabaseConnectorTest extends ProxyContextRestorer {
         Field queryHeadersField = DatabaseConnector.class.getDeclaredField("queryHeaders");
         ShardingSphereDatabase database = createDatabaseMetaData();
         MemberAccessor accessor = Plugins.getMemberAccessor();
-        accessor.set(queryHeadersField, engine, Collections.singletonList(
-                new QueryHeaderBuilderEngine(new MySQLDatabaseType()).build(createQueryResultMetaData(), database, 1)));
-        Field mergedResultField = DatabaseConnector.class.getDeclaredField("mergedResult");
-        accessor.set(mergedResultField, engine, new MemoryMergedResult<ShardingSphereRule>(null, null, null, Collections.emptyList()) {
-            
-            @Override
-            protected List<MemoryQueryResultRow> init(final ShardingSphereRule rule, final ShardingSphereSchema schema,
-                                                      final SQLStatementContext<?> sqlStatementContext, final List<QueryResult> queryResults) {
-                return Collections.singletonList(mock(MemoryQueryResultRow.class));
+        try (MockedStatic<TypedSPILoader> typedSPILoader = mockStatic(TypedSPILoader.class)) {
+            typedSPILoader.when(() -> TypedSPILoader.getService(QueryHeaderBuilder.class, "MySQL")).thenReturn(new QueryHeaderBuilderFixture());
+            accessor.set(queryHeadersField, engine, Collections.singletonList(
+                    new QueryHeaderBuilderEngine(new MySQLDatabaseType()).build(createQueryResultMetaData(), database, 1)));
+            Field mergedResultField = DatabaseConnector.class.getDeclaredField("mergedResult");
+            accessor.set(mergedResultField, engine, new MemoryMergedResult<ShardingSphereRule>(null, null, null, Collections.emptyList()) {
+                
+                @Override
+                protected List<MemoryQueryResultRow> init(final ShardingSphereRule rule, final ShardingSphereSchema schema,
+                                                          final SQLStatementContext<?> sqlStatementContext, final List<QueryResult> queryResults) {
+                    return Collections.singletonList(mock(MemoryQueryResultRow.class));
+                }
+            });
+            Exception ex = null;
+            try {
+                engine.getRowData();
+            } catch (final SQLException | IndexOutOfBoundsException e) {
+                ex = e;
+            } finally {
+                assertFalse(ex instanceof IndexOutOfBoundsException);
             }
-        });
-        Exception ex = null;
-        try {
-            engine.getRowData();
-        } catch (final SQLException | IndexOutOfBoundsException e) {
-            ex = e;
-        } finally {
-            assertFalse(ex instanceof IndexOutOfBoundsException);
         }
     }
     
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/MySQLQueryHeaderBuilder.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/fixture/QueryHeaderBuilderFixture.java
similarity index 95%
copy from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/MySQLQueryHeaderBuilder.java
copy to proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/fixture/QueryHeaderBuilderFixture.java
index 981f8139324..0ca15e7a72b 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/MySQLQueryHeaderBuilder.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/fixture/QueryHeaderBuilderFixture.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.response.header.query.impl;
+package org.apache.shardingsphere.proxy.backend.connector.jdbc.fixture;
 
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -28,10 +28,7 @@ import org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeader
 import java.sql.SQLException;
 import java.util.Optional;
 
-/**
- * Query header builder for MySQL.
- */
-public final class MySQLQueryHeaderBuilder implements QueryHeaderBuilder {
+public final class QueryHeaderBuilderFixture implements QueryHeaderBuilder {
     
     @Override
     public QueryHeader build(final QueryResultMetaData queryResultMetaData,
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandlerTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandlerTest.java
index 9b431a19b9a..fb603597aab 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandlerTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandlerTest.java
@@ -26,16 +26,19 @@ import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryRes
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
+import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminQueryExecutor;
+import org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder;
 import org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import org.apache.shardingsphere.proxy.backend.util.ProxyContextRestorer;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.MockedStatic;
 
 import java.sql.SQLException;
 import java.util.Collections;
@@ -49,6 +52,7 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockStatic;
 import static org.mockito.Mockito.when;
 
 public final class DatabaseAdminQueryBackendHandlerTest extends ProxyContextRestorer {
@@ -82,20 +86,29 @@ public final class DatabaseAdminQueryBackendHandlerTest extends ProxyContextRest
     
     @Test
     public void assertExecute() throws SQLException {
-        assertThat(((QueryResponseHeader) handler.execute()).getQueryHeaders().size(), is(1));
+        try (MockedStatic<TypedSPILoader> typedSPILoader = mockStatic(TypedSPILoader.class)) {
+            typedSPILoader.when(() -> TypedSPILoader.getService(QueryHeaderBuilder.class, "MySQL")).thenReturn(mock(QueryHeaderBuilder.class));
+            assertThat(((QueryResponseHeader) handler.execute()).getQueryHeaders().size(), is(1));
+        }
     }
     
     @Test
     public void assertNext() throws SQLException {
-        handler.execute();
-        assertTrue(handler.next());
-        assertFalse(handler.next());
+        try (MockedStatic<TypedSPILoader> typedSPILoader = mockStatic(TypedSPILoader.class)) {
+            typedSPILoader.when(() -> TypedSPILoader.getService(QueryHeaderBuilder.class, "MySQL")).thenReturn(mock(QueryHeaderBuilder.class));
+            handler.execute();
+            assertTrue(handler.next());
+            assertFalse(handler.next());
+        }
     }
     
     @Test
     public void assertGetRowData() throws SQLException {
-        handler.execute();
-        assertTrue(handler.next());
-        assertThat(handler.getRowData().getData().size(), is(1));
+        try (MockedStatic<TypedSPILoader> typedSPILoader = mockStatic(TypedSPILoader.class)) {
+            typedSPILoader.when(() -> TypedSPILoader.getService(QueryHeaderBuilder.class, "MySQL")).thenReturn(mock(QueryHeaderBuilder.class));
+            handler.execute();
+            assertTrue(handler.next());
+            assertThat(handler.getRowData().getData().size(), is(1));
+        }
     }
 }
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/MySQLQueryHeaderBuilder.java b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/response/header/query/MySQLQueryHeaderBuilder.java
similarity index 98%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/MySQLQueryHeaderBuilder.java
rename to proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/response/header/query/MySQLQueryHeaderBuilder.java
index 981f8139324..1bd72432721 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/MySQLQueryHeaderBuilder.java
+++ b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/response/header/query/MySQLQueryHeaderBuilder.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.response.header.query.impl;
+package org.apache.shardingsphere.proxy.backend.mysql.response.header.query;
 
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
diff --git a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder b/proxy/backend/type/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder
similarity index 73%
copy from proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder
copy to proxy/backend/type/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder
index 25596f901fd..dfcb99351ca 100644
--- a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder
+++ b/proxy/backend/type/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder
@@ -15,6 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.proxy.backend.response.header.query.impl.PostgreSQLQueryHeaderBuilder
-org.apache.shardingsphere.proxy.backend.response.header.query.impl.MySQLQueryHeaderBuilder
-org.apache.shardingsphere.proxy.backend.response.header.query.impl.OpenGaussQueryHeaderBuilder
+org.apache.shardingsphere.proxy.backend.mysql.response.header.query.MySQLQueryHeaderBuilder
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/MySQLQueryHeaderBuilderTest.java b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/response/header/query/MySQLQueryHeaderBuilderTest.java
similarity index 98%
rename from proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/MySQLQueryHeaderBuilderTest.java
rename to proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/response/header/query/MySQLQueryHeaderBuilderTest.java
index 94b6204932a..375883e367e 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/MySQLQueryHeaderBuilderTest.java
+++ b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/response/header/query/MySQLQueryHeaderBuilderTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.response.header.query.impl;
+package org.apache.shardingsphere.proxy.backend.mysql.response.header.query;
 
 import org.apache.shardingsphere.infra.database.DefaultDatabase;
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/OpenGaussQueryHeaderBuilder.java b/proxy/backend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/response/header/query/OpenGaussQueryHeaderBuilder.java
similarity index 90%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/OpenGaussQueryHeaderBuilder.java
rename to proxy/backend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/response/header/query/OpenGaussQueryHeaderBuilder.java
index 17a9cbac26a..3b775679581 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/OpenGaussQueryHeaderBuilder.java
+++ b/proxy/backend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/response/header/query/OpenGaussQueryHeaderBuilder.java
@@ -15,12 +15,13 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.response.header.query.impl;
+package org.apache.shardingsphere.proxy.backend.opengauss.response.header.query;
 
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeader;
 import org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder;
+import org.apache.shardingsphere.proxy.backend.postgresql.response.header.query.PostgreSQLQueryHeaderBuilder;
 
 import java.sql.SQLException;
 
diff --git a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder b/proxy/backend/type/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder
similarity index 73%
copy from proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder
copy to proxy/backend/type/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder
index 25596f901fd..906830a6212 100644
--- a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder
+++ b/proxy/backend/type/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder
@@ -15,6 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.proxy.backend.response.header.query.impl.PostgreSQLQueryHeaderBuilder
-org.apache.shardingsphere.proxy.backend.response.header.query.impl.MySQLQueryHeaderBuilder
-org.apache.shardingsphere.proxy.backend.response.header.query.impl.OpenGaussQueryHeaderBuilder
+org.apache.shardingsphere.proxy.backend.opengauss.response.header.query.OpenGaussQueryHeaderBuilder
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/OpenGaussQueryHeaderBuilderTest.java b/proxy/backend/type/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/response/header/query/OpenGaussQueryHeaderBuilderTest.java
similarity index 92%
rename from proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/OpenGaussQueryHeaderBuilderTest.java
rename to proxy/backend/type/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/response/header/query/OpenGaussQueryHeaderBuilderTest.java
index d760384d2a3..28200667c52 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/OpenGaussQueryHeaderBuilderTest.java
+++ b/proxy/backend/type/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/response/header/query/OpenGaussQueryHeaderBuilderTest.java
@@ -15,10 +15,11 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.response.header.query.impl;
+package org.apache.shardingsphere.proxy.backend.opengauss.response.header.query;
 
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
 import org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeader;
+import org.apache.shardingsphere.proxy.backend.postgresql.response.header.query.PostgreSQLQueryHeaderBuilder;
 import org.junit.Test;
 
 import java.sql.SQLException;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/PostgreSQLQueryHeaderBuilder.java b/proxy/backend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/backend/postgresql/response/header/query/PostgreSQLQueryHeaderBuilder.java
similarity index 96%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/PostgreSQLQueryHeaderBuilder.java
rename to proxy/backend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/backend/postgresql/response/header/query/PostgreSQLQueryHeaderBuilder.java
index f007701f085..260d49545b1 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/PostgreSQLQueryHeaderBuilder.java
+++ b/proxy/backend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/backend/postgresql/response/header/query/PostgreSQLQueryHeaderBuilder.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.response.header.query.impl;
+package org.apache.shardingsphere.proxy.backend.postgresql.response.header.query;
 
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
diff --git a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder b/proxy/backend/type/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder
similarity index 73%
rename from proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder
rename to proxy/backend/type/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder
index 25596f901fd..5ecc7fd6b02 100644
--- a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder
+++ b/proxy/backend/type/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder
@@ -15,6 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.proxy.backend.response.header.query.impl.PostgreSQLQueryHeaderBuilder
-org.apache.shardingsphere.proxy.backend.response.header.query.impl.MySQLQueryHeaderBuilder
-org.apache.shardingsphere.proxy.backend.response.header.query.impl.OpenGaussQueryHeaderBuilder
+org.apache.shardingsphere.proxy.backend.postgresql.response.header.query.PostgreSQLQueryHeaderBuilder
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/PostgreSQLQueryHeaderBuilderTest.java b/proxy/backend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/backend/postgresql/response/header/query/PostgreSQLQueryHeaderBuilderTest.java
similarity index 96%
rename from proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/PostgreSQLQueryHeaderBuilderTest.java
rename to proxy/backend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/backend/postgresql/response/header/query/PostgreSQLQueryHeaderBuilderTest.java
index 5daf7d1f4c6..47110dcca5d 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/PostgreSQLQueryHeaderBuilderTest.java
+++ b/proxy/backend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/backend/postgresql/response/header/query/PostgreSQLQueryHeaderBuilderTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.response.header.query.impl;
+package org.apache.shardingsphere.proxy.backend.postgresql.response.header.query;
 
 import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
 import org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeader;