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

zhangliang 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 f5a0e3ef098 Split MySQL, PostgreSQL, Oracle and OpenGauss binder into 
separate modules (#35456)
f5a0e3ef098 is described below

commit f5a0e3ef0981328da9397652df5205627237faaa
Author: Liang Zhang <[email protected]>
AuthorDate: Sun May 18 18:00:01 2025 +0800

    Split MySQL, PostgreSQL, Oracle and OpenGauss binder into separate modules 
(#35456)
    
    * Split MySQL, PostgreSQL, Oracle and OpenGauss binder into separate modules
    
    - Create new modules for each database type in infra/binder/dialect
    - Move database-specific projection identifier extractors to new modules
    - Update dependencies in distribution modules to include new binder modules
    - Modify parent pom structure to include new dialect modules
    
    * Split MySQL, PostgreSQL, Oracle and OpenGauss binder into separate modules
    
    - Create new modules for each database type in infra/binder/dialect
    - Move database-specific projection identifier extractors to new modules
    - Update dependencies in distribution modules to include new binder modules
    - Modify parent pom structure to include new dialect modules
    
    * Split MySQL, PostgreSQL, Oracle and OpenGauss binder into separate modules
    
    - Create new modules for each database type in infra/binder/dialect
    - Move database-specific projection identifier extractors to new modules
    - Update dependencies in distribution modules to include new binder modules
    - Modify parent pom structure to include new dialect modules
    
    * Split MySQL, PostgreSQL, Oracle and OpenGauss binder into separate modules
    
    - Create new modules for each database type in infra/binder/dialect
    - Move database-specific projection identifier extractors to new modules
    - Update dependencies in distribution modules to include new binder modules
    - Modify parent pom structure to include new dialect modules
    
    * Split MySQL, PostgreSQL, Oracle and OpenGauss binder into separate modules
    
    - Create new modules for each database type in infra/binder/dialect
    - Move database-specific projection identifier extractors to new modules
    - Update dependencies in distribution modules to include new binder modules
    - Modify parent pom structure to include new dialect modules
    
    * Split MySQL, PostgreSQL, Oracle and OpenGauss binder into separate modules
    
    - Create new modules for each database type in infra/binder/dialect
    - Move database-specific projection identifier extractors to new modules
    - Update dependencies in distribution modules to include new binder modules
    - Modify parent pom structure to include new dialect modules
    
    * Split MySQL, PostgreSQL, Oracle and OpenGauss binder into separate modules
    
    - Create new modules for each database type in infra/binder/dialect
    - Move database-specific projection identifier extractors to new modules
    - Update dependencies in distribution modules to include new binder modules
    - Modify parent pom structure to include new dialect modules
---
 distribution/jdbc/pom.xml                          | 58 ++++++++++++++++++++++
 distribution/proxy-native/pom.xml                  | 55 ++++++++++++++++++++
 distribution/proxy/pom.xml                         | 55 ++++++++++++++++++++
 .../projection/impl/AggregationProjectionTest.java | 54 +++++---------------
 infra/binder/{ => dialect/mysql}/pom.xml           | 15 +++---
 .../mysql}/MySQLProjectionIdentifierExtractor.java |  2 +-
 ....extractor.DialectProjectionIdentifierExtractor |  5 +-
 infra/binder/{ => dialect/opengauss}/pom.xml       | 15 +++---
 .../OpenGaussProjectionIdentifierExtractor.java    |  2 +-
 ....extractor.DialectProjectionIdentifierExtractor |  5 +-
 ...OpenGaussProjectionIdentifierExtractorTest.java |  2 +-
 infra/binder/{ => dialect/oracle}/pom.xml          | 15 +++---
 .../OracleProjectionIdentifierExtractor.java       |  2 +-
 ....extractor.DialectProjectionIdentifierExtractor |  5 +-
 .../OracleProjectionIdentifierExtractorTest.java   |  2 +-
 infra/binder/{ => dialect}/pom.xml                 |  9 ++--
 infra/binder/{ => dialect/postgresql}/pom.xml      | 15 +++---
 .../PostgreSQLProjectionIdentifierExtractor.java   |  2 +-
 ....extractor.DialectProjectionIdentifierExtractor |  5 +-
 ...ostgreSQLProjectionIdentifierExtractorTest.java |  2 +-
 infra/binder/pom.xml                               |  1 +
 .../reflect-config.json                            |  8 +--
 proxy/bootstrap/pom.xml                            | 25 ++++++++++
 test/e2e/fixture/pom.xml                           | 25 ++++++++++
 test/native/pom.xml                                | 35 +++++++++++--
 25 files changed, 318 insertions(+), 101 deletions(-)

diff --git a/distribution/jdbc/pom.xml b/distribution/jdbc/pom.xml
index 47bd63d5c78..64352566177 100644
--- a/distribution/jdbc/pom.xml
+++ b/distribution/jdbc/pom.xml
@@ -116,30 +116,58 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    
<artifactId>shardingsphere-infra-binder-postgresql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
+                
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-parser-sql-mysql</artifactId>
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-mysql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
+                
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-parser-sql-oracle</artifactId>
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-oracle</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
+                
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     
<artifactId>shardingsphere-parser-sql-sqlserver</artifactId>
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     
<artifactId>shardingsphere-parser-sql-opengauss</artifactId>
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    
<artifactId>shardingsphere-infra-binder-opengauss</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
@@ -171,6 +199,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    
<artifactId>shardingsphere-infra-binder-postgresql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
             </dependencies>
         </profile>
         <profile>
@@ -182,6 +216,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-mysql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
             </dependencies>
         </profile>
         <profile>
@@ -193,6 +233,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-oracle</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
             </dependencies>
         </profile>
         <profile>
@@ -215,6 +261,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    
<artifactId>shardingsphere-infra-binder-opengauss</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
             </dependencies>
         </profile>
         <profile>
@@ -287,6 +339,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-mysql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
             </dependencies>
         </profile>
         
diff --git a/distribution/proxy-native/pom.xml 
b/distribution/proxy-native/pom.xml
index 721609548ee..8b5321aedc8 100644
--- a/distribution/proxy-native/pom.xml
+++ b/distribution/proxy-native/pom.xml
@@ -245,6 +245,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    
<artifactId>shardingsphere-infra-binder-postgresql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-postgresql-protocol</artifactId>
@@ -270,6 +276,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-mysql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-mysql-protocol</artifactId>
@@ -295,6 +307,13 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-oracle</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
+                
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     
<artifactId>shardingsphere-parser-sql-sqlserver</artifactId>
@@ -308,6 +327,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    
<artifactId>shardingsphere-infra-binder-opengauss</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-opengauss-protocol</artifactId>
@@ -373,6 +398,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    
<artifactId>shardingsphere-infra-binder-postgresql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-postgresql-protocol</artifactId>
@@ -407,6 +438,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-mysql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-mysql-protocol</artifactId>
@@ -436,6 +473,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-oracle</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
             </dependencies>
         </profile>
         <profile>
@@ -458,6 +501,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    
<artifactId>shardingsphere-infra-binder-opengauss</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-opengauss-protocol</artifactId>
@@ -574,6 +623,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-mysql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-mysql-protocol</artifactId>
diff --git a/distribution/proxy/pom.xml b/distribution/proxy/pom.xml
index 60e45811eeb..49c7b1e96a6 100644
--- a/distribution/proxy/pom.xml
+++ b/distribution/proxy/pom.xml
@@ -245,6 +245,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    
<artifactId>shardingsphere-infra-binder-postgresql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-postgresql-protocol</artifactId>
@@ -270,6 +276,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-mysql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-mysql-protocol</artifactId>
@@ -295,6 +307,13 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-oracle</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
+                
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     
<artifactId>shardingsphere-parser-sql-sqlserver</artifactId>
@@ -308,6 +327,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    
<artifactId>shardingsphere-infra-binder-opengauss</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-opengauss-protocol</artifactId>
@@ -373,6 +398,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    
<artifactId>shardingsphere-infra-binder-postgresql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-postgresql-protocol</artifactId>
@@ -407,6 +438,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-mysql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-mysql-protocol</artifactId>
@@ -436,6 +473,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-oracle</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
             </dependencies>
         </profile>
         <profile>
@@ -458,6 +501,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    
<artifactId>shardingsphere-infra-binder-opengauss</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-opengauss-protocol</artifactId>
@@ -574,6 +623,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-mysql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-mysql-protocol</artifactId>
diff --git 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/impl/AggregationProjectionTest.java
 
b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/impl/AggregationProjectionTest.java
index 089b4a4eabe..52b70d05055 100644
--- 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/impl/AggregationProjectionTest.java
+++ 
b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/impl/AggregationProjectionTest.java
@@ -31,70 +31,40 @@ import java.util.Optional;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.Mockito.mock;
 
 class AggregationProjectionTest {
     
+    private final DatabaseType databaseType = 
TypedSPILoader.getService(DatabaseType.class, "FIXTURE");
+    
     @Test
     void assertGetColumnName() {
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"), null,
-                TypedSPILoader.getService(DatabaseType.class, 
"MySQL")).getColumnName(), is("COUNT( A.\"DIRECTION\" )"));
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "count( 
a.\"direction\" )"), null,
-                TypedSPILoader.getService(DatabaseType.class, 
"MySQL")).getColumnName(), is("count( a.\"direction\" )"));
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"), null,
-                TypedSPILoader.getService(DatabaseType.class, 
"PostgreSQL")).getColumnName(), is("count"));
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"), null,
-                TypedSPILoader.getService(DatabaseType.class, 
"openGauss")).getColumnName(), is("count"));
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
a.\"direction\" )"), null,
-                TypedSPILoader.getService(DatabaseType.class, 
"Oracle")).getColumnName(), is("COUNT(A.\"DIRECTION\")"));
+        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"), null, databaseType).getColumnName(),
+                is("COUNT( A.\"DIRECTION\" )"));
     }
     
     @Test
     void assertGetColumnLabelWithAliasNoQuote() {
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"), new IdentifierValue("DIRECTION_COUNT"),
-                TypedSPILoader.getService(DatabaseType.class, 
"MySQL")).getColumnLabel(), is("DIRECTION_COUNT"));
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"), new IdentifierValue("DIRECTION_COUNT"),
-                TypedSPILoader.getService(DatabaseType.class, 
"PostgreSQL")).getColumnLabel(), is("direction_count"));
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"), new IdentifierValue("DIRECTION_COUNT"),
-                TypedSPILoader.getService(DatabaseType.class, 
"openGauss")).getColumnLabel(), is("direction_count"));
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"), new IdentifierValue("direction_count"),
-                TypedSPILoader.getService(DatabaseType.class, 
"Oracle")).getColumnLabel(), is("DIRECTION_COUNT"));
+        assertThat(new AggregationProjection(AggregationType.COUNT,
+                new AggregationProjectionSegment(0, 0, AggregationType.COUNT, 
"COUNT( A.\"DIRECTION\" )"), new IdentifierValue("DIRECTION_COUNT"), 
databaseType).getColumnLabel(),
+                is("DIRECTION_COUNT"));
     }
     
     @Test
     void assertGetColumnLabelWithAliasAndQuote() {
         assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"),
-                new IdentifierValue("DIRECTION_COUNT", 
QuoteCharacter.BACK_QUOTE),
-                TypedSPILoader.getService(DatabaseType.class, 
"MySQL")).getColumnLabel(), is("DIRECTION_COUNT"));
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"),
-                new IdentifierValue("DIRECTION_COUNT", QuoteCharacter.QUOTE),
-                TypedSPILoader.getService(DatabaseType.class, 
"PostgreSQL")).getColumnLabel(), is("DIRECTION_COUNT"));
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"),
-                new IdentifierValue("DIRECTION_COUNT", QuoteCharacter.QUOTE),
-                TypedSPILoader.getService(DatabaseType.class, 
"openGauss")).getColumnLabel(), is("DIRECTION_COUNT"));
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"),
-                new IdentifierValue("direction_count", QuoteCharacter.QUOTE),
-                TypedSPILoader.getService(DatabaseType.class, 
"Oracle")).getColumnLabel(), is("direction_count"));
+                new IdentifierValue("DIRECTION_COUNT", 
QuoteCharacter.BACK_QUOTE), databaseType).getColumnLabel(), 
is("DIRECTION_COUNT"));
     }
     
     @Test
     void assertGetColumnLabelWithoutAlias() {
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"), null,
-                TypedSPILoader.getService(DatabaseType.class, 
"MySQL")).getColumnLabel(), is("COUNT( A.\"DIRECTION\" )"));
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "count( 
a.\"direction\" )"), null,
-                TypedSPILoader.getService(DatabaseType.class, 
"MySQL")).getColumnLabel(), is("count( a.\"direction\" )"));
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"), null,
-                TypedSPILoader.getService(DatabaseType.class, 
"PostgreSQL")).getColumnLabel(), is("count"));
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"), null,
-                TypedSPILoader.getService(DatabaseType.class, 
"openGauss")).getColumnLabel(), is("count"));
-        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
a.\"direction\" )"), null,
-                TypedSPILoader.getService(DatabaseType.class, 
"Oracle")).getColumnLabel(), is("COUNT(A.\"DIRECTION\")"));
+        assertThat(new AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"), null, databaseType).getColumnLabel(),
+                is("COUNT( A.\"DIRECTION\" )"));
     }
     
     @Test
     void assertGetAlias() {
-        Projection projection = new 
AggregationProjection(AggregationType.COUNT, new 
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT( 
A.\"DIRECTION\" )"),
-                new IdentifierValue("AVG_DERIVED_COUNT_0"), 
mock(DatabaseType.class));
+        Projection projection = new 
AggregationProjection(AggregationType.COUNT,
+                new AggregationProjectionSegment(0, 0, AggregationType.COUNT, 
"COUNT( A.\"DIRECTION\" )"), new IdentifierValue("AVG_DERIVED_COUNT_0"), 
databaseType);
         Optional<IdentifierValue> actual = projection.getAlias();
         assertTrue(actual.isPresent());
         assertThat(actual.get().getValue(), is("AVG_DERIVED_COUNT_0"));
diff --git a/infra/binder/pom.xml b/infra/binder/dialect/mysql/pom.xml
similarity index 76%
copy from infra/binder/pom.xml
copy to infra/binder/dialect/mysql/pom.xml
index 3a6c065e250..e8f34c2e09d 100644
--- a/infra/binder/pom.xml
+++ b/infra/binder/dialect/mysql/pom.xml
@@ -20,14 +20,17 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.shardingsphere</groupId>
-        <artifactId>shardingsphere-infra</artifactId>
+        <artifactId>shardingsphere-infra-binder-dialect</artifactId>
         <version>5.5.3-SNAPSHOT</version>
     </parent>
-    <artifactId>shardingsphere-infra-binder</artifactId>
-    <packaging>pom</packaging>
+    <artifactId>shardingsphere-infra-binder-mysql</artifactId>
     <name>${project.artifactId}</name>
     
-    <modules>
-        <module>core</module>
-    </modules>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-infra-binder-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
 </project>
diff --git 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/MySQLProjectionIdentifierExtractor.java
 
b/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/MySQLProjectionIdentifierExtractor.java
similarity index 95%
rename from 
infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/MySQLProjectionIdentifierExtractor.java
rename to 
infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/MySQLProjectionIdentifierExtractor.java
index 6f7ffe4653a..0dbadb0f64c 100644
--- 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/MySQLProjectionIdentifierExtractor.java
+++ 
b/infra/binder/dialect/mysql/src/main/java/org/apache/shardingsphere/infra/binder/mysql/MySQLProjectionIdentifierExtractor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect;
+package org.apache.shardingsphere.infra.binder.mysql;
 
 import 
org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.ExpressionSegment;
diff --git 
a/infra/binder/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
 
b/infra/binder/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
similarity index 60%
copy from 
infra/binder/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
copy to 
infra/binder/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
index d80e1633187..3cd99484db2 100644
--- 
a/infra/binder/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
+++ 
b/infra/binder/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
@@ -15,7 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.MySQLProjectionIdentifierExtractor
-org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.PostgreSQLProjectionIdentifierExtractor
-org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.OpenGaussProjectionIdentifierExtractor
-org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.OracleProjectionIdentifierExtractor
+org.apache.shardingsphere.infra.binder.mysql.MySQLProjectionIdentifierExtractor
diff --git a/infra/binder/pom.xml b/infra/binder/dialect/opengauss/pom.xml
similarity index 76%
copy from infra/binder/pom.xml
copy to infra/binder/dialect/opengauss/pom.xml
index 3a6c065e250..037fe07cc45 100644
--- a/infra/binder/pom.xml
+++ b/infra/binder/dialect/opengauss/pom.xml
@@ -20,14 +20,17 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.shardingsphere</groupId>
-        <artifactId>shardingsphere-infra</artifactId>
+        <artifactId>shardingsphere-infra-binder-dialect</artifactId>
         <version>5.5.3-SNAPSHOT</version>
     </parent>
-    <artifactId>shardingsphere-infra-binder</artifactId>
-    <packaging>pom</packaging>
+    <artifactId>shardingsphere-infra-binder-opengauss</artifactId>
     <name>${project.artifactId}</name>
     
-    <modules>
-        <module>core</module>
-    </modules>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-infra-binder-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
 </project>
diff --git 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/OpenGaussProjectionIdentifierExtractor.java
 
b/infra/binder/dialect/opengauss/src/main/java/org/apache/shardingsphere/infra/binder/opengauss/OpenGaussProjectionIdentifierExtractor.java
similarity index 96%
rename from 
infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/OpenGaussProjectionIdentifierExtractor.java
rename to 
infra/binder/dialect/opengauss/src/main/java/org/apache/shardingsphere/infra/binder/opengauss/OpenGaussProjectionIdentifierExtractor.java
index 9471b600a5c..58eab321343 100644
--- 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/OpenGaussProjectionIdentifierExtractor.java
+++ 
b/infra/binder/dialect/opengauss/src/main/java/org/apache/shardingsphere/infra/binder/opengauss/OpenGaussProjectionIdentifierExtractor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect;
+package org.apache.shardingsphere.infra.binder.opengauss;
 
 import 
org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.ExpressionSegment;
diff --git 
a/infra/binder/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
 
b/infra/binder/dialect/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
similarity index 60%
copy from 
infra/binder/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
copy to 
infra/binder/dialect/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
index d80e1633187..4a14f21eaff 100644
--- 
a/infra/binder/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
+++ 
b/infra/binder/dialect/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
@@ -15,7 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.MySQLProjectionIdentifierExtractor
-org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.PostgreSQLProjectionIdentifierExtractor
-org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.OpenGaussProjectionIdentifierExtractor
-org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.OracleProjectionIdentifierExtractor
+org.apache.shardingsphere.infra.binder.opengauss.OpenGaussProjectionIdentifierExtractor
diff --git 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/OpenGaussProjectionIdentifierExtractorTest.java
 
b/infra/binder/dialect/opengauss/src/test/java/org/apache/shardingsphere/infra/binder/opengauss/OpenGaussProjectionIdentifierExtractorTest.java
similarity index 96%
rename from 
infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/OpenGaussProjectionIdentifierExtractorTest.java
rename to 
infra/binder/dialect/opengauss/src/test/java/org/apache/shardingsphere/infra/binder/opengauss/OpenGaussProjectionIdentifierExtractorTest.java
index 8afc81ef87d..199677f74e5 100644
--- 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/OpenGaussProjectionIdentifierExtractorTest.java
+++ 
b/infra/binder/dialect/opengauss/src/test/java/org/apache/shardingsphere/infra/binder/opengauss/OpenGaussProjectionIdentifierExtractorTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect;
+package org.apache.shardingsphere.infra.binder.opengauss;
 
 import 
org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.enums.QuoteCharacter;
diff --git a/infra/binder/pom.xml b/infra/binder/dialect/oracle/pom.xml
similarity index 76%
copy from infra/binder/pom.xml
copy to infra/binder/dialect/oracle/pom.xml
index 3a6c065e250..6f27dfcc513 100644
--- a/infra/binder/pom.xml
+++ b/infra/binder/dialect/oracle/pom.xml
@@ -20,14 +20,17 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.shardingsphere</groupId>
-        <artifactId>shardingsphere-infra</artifactId>
+        <artifactId>shardingsphere-infra-binder-dialect</artifactId>
         <version>5.5.3-SNAPSHOT</version>
     </parent>
-    <artifactId>shardingsphere-infra-binder</artifactId>
-    <packaging>pom</packaging>
+    <artifactId>shardingsphere-infra-binder-oracle</artifactId>
     <name>${project.artifactId}</name>
     
-    <modules>
-        <module>core</module>
-    </modules>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-infra-binder-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
 </project>
diff --git 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/OracleProjectionIdentifierExtractor.java
 
b/infra/binder/dialect/oracle/src/main/java/org/apache/shardingsphere/infra/binder/oracle/OracleProjectionIdentifierExtractor.java
similarity index 95%
rename from 
infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/OracleProjectionIdentifierExtractor.java
rename to 
infra/binder/dialect/oracle/src/main/java/org/apache/shardingsphere/infra/binder/oracle/OracleProjectionIdentifierExtractor.java
index c519cc0da2a..46f33ac3a74 100644
--- 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/OracleProjectionIdentifierExtractor.java
+++ 
b/infra/binder/dialect/oracle/src/main/java/org/apache/shardingsphere/infra/binder/oracle/OracleProjectionIdentifierExtractor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect;
+package org.apache.shardingsphere.infra.binder.oracle;
 
 import 
org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.ExpressionSegment;
diff --git 
a/infra/binder/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
 
b/infra/binder/dialect/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
similarity index 60%
copy from 
infra/binder/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
copy to 
infra/binder/dialect/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
index d80e1633187..fd2e5688f5b 100644
--- 
a/infra/binder/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
+++ 
b/infra/binder/dialect/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
@@ -15,7 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.MySQLProjectionIdentifierExtractor
-org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.PostgreSQLProjectionIdentifierExtractor
-org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.OpenGaussProjectionIdentifierExtractor
-org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.OracleProjectionIdentifierExtractor
+org.apache.shardingsphere.infra.binder.oracle.OracleProjectionIdentifierExtractor
diff --git 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/OracleProjectionIdentifierExtractorTest.java
 
b/infra/binder/dialect/oracle/src/test/java/org/apache/shardingsphere/infra/binder/oracle/OracleProjectionIdentifierExtractorTest.java
similarity index 96%
rename from 
infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/OracleProjectionIdentifierExtractorTest.java
rename to 
infra/binder/dialect/oracle/src/test/java/org/apache/shardingsphere/infra/binder/oracle/OracleProjectionIdentifierExtractorTest.java
index 17ed34e40e0..926d7b886c1 100644
--- 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/OracleProjectionIdentifierExtractorTest.java
+++ 
b/infra/binder/dialect/oracle/src/test/java/org/apache/shardingsphere/infra/binder/oracle/OracleProjectionIdentifierExtractorTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect;
+package org.apache.shardingsphere.infra.binder.oracle;
 
 import 
org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.enums.QuoteCharacter;
diff --git a/infra/binder/pom.xml b/infra/binder/dialect/pom.xml
similarity index 83%
copy from infra/binder/pom.xml
copy to infra/binder/dialect/pom.xml
index 3a6c065e250..7b6086b9a5e 100644
--- a/infra/binder/pom.xml
+++ b/infra/binder/dialect/pom.xml
@@ -20,14 +20,17 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.shardingsphere</groupId>
-        <artifactId>shardingsphere-infra</artifactId>
+        <artifactId>shardingsphere-infra-binder</artifactId>
         <version>5.5.3-SNAPSHOT</version>
     </parent>
-    <artifactId>shardingsphere-infra-binder</artifactId>
+    <artifactId>shardingsphere-infra-binder-dialect</artifactId>
     <packaging>pom</packaging>
     <name>${project.artifactId}</name>
     
     <modules>
-        <module>core</module>
+        <module>postgresql</module>
+        <module>mysql</module>
+        <module>oracle</module>
+        <module>opengauss</module>
     </modules>
 </project>
diff --git a/infra/binder/pom.xml b/infra/binder/dialect/postgresql/pom.xml
similarity index 76%
copy from infra/binder/pom.xml
copy to infra/binder/dialect/postgresql/pom.xml
index 3a6c065e250..ac613ff76d8 100644
--- a/infra/binder/pom.xml
+++ b/infra/binder/dialect/postgresql/pom.xml
@@ -20,14 +20,17 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.shardingsphere</groupId>
-        <artifactId>shardingsphere-infra</artifactId>
+        <artifactId>shardingsphere-infra-binder-dialect</artifactId>
         <version>5.5.3-SNAPSHOT</version>
     </parent>
-    <artifactId>shardingsphere-infra-binder</artifactId>
-    <packaging>pom</packaging>
+    <artifactId>shardingsphere-infra-binder-postgresql</artifactId>
     <name>${project.artifactId}</name>
     
-    <modules>
-        <module>core</module>
-    </modules>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-infra-binder-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
 </project>
diff --git 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/PostgreSQLProjectionIdentifierExtractor.java
 
b/infra/binder/dialect/postgresql/src/main/java/org/apache/shardingsphere/infra/binder/postgresql/PostgreSQLProjectionIdentifierExtractor.java
similarity index 96%
rename from 
infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/PostgreSQLProjectionIdentifierExtractor.java
rename to 
infra/binder/dialect/postgresql/src/main/java/org/apache/shardingsphere/infra/binder/postgresql/PostgreSQLProjectionIdentifierExtractor.java
index fa641d5cc74..66a1d840cf8 100644
--- 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/PostgreSQLProjectionIdentifierExtractor.java
+++ 
b/infra/binder/dialect/postgresql/src/main/java/org/apache/shardingsphere/infra/binder/postgresql/PostgreSQLProjectionIdentifierExtractor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect;
+package org.apache.shardingsphere.infra.binder.postgresql;
 
 import 
org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.ExpressionSegment;
diff --git 
a/infra/binder/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
 
b/infra/binder/dialect/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
similarity index 60%
rename from 
infra/binder/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
rename to 
infra/binder/dialect/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
index d80e1633187..945247c1593 100644
--- 
a/infra/binder/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
+++ 
b/infra/binder/dialect/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor
@@ -15,7 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.MySQLProjectionIdentifierExtractor
-org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.PostgreSQLProjectionIdentifierExtractor
-org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.OpenGaussProjectionIdentifierExtractor
-org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.OracleProjectionIdentifierExtractor
+org.apache.shardingsphere.infra.binder.postgresql.PostgreSQLProjectionIdentifierExtractor
diff --git 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/PostgreSQLProjectionIdentifierExtractorTest.java
 
b/infra/binder/dialect/postgresql/src/test/java/org/apache/shardingsphere/infra/binder/postgresql/PostgreSQLProjectionIdentifierExtractorTest.java
similarity index 96%
rename from 
infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/PostgreSQLProjectionIdentifierExtractorTest.java
rename to 
infra/binder/dialect/postgresql/src/test/java/org/apache/shardingsphere/infra/binder/postgresql/PostgreSQLProjectionIdentifierExtractorTest.java
index 1bdfcd2b863..b43a216a355 100644
--- 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/extractor/dialect/PostgreSQLProjectionIdentifierExtractorTest.java
+++ 
b/infra/binder/dialect/postgresql/src/test/java/org/apache/shardingsphere/infra/binder/postgresql/PostgreSQLProjectionIdentifierExtractorTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect;
+package org.apache.shardingsphere.infra.binder.postgresql;
 
 import 
org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.DialectProjectionIdentifierExtractor;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.enums.QuoteCharacter;
diff --git a/infra/binder/pom.xml b/infra/binder/pom.xml
index 3a6c065e250..1b724c65fd2 100644
--- a/infra/binder/pom.xml
+++ b/infra/binder/pom.xml
@@ -29,5 +29,6 @@
     
     <modules>
         <module>core</module>
+        <module>dialect</module>
     </modules>
 </project>
diff --git 
a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json
 
b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json
index 15810edce7e..0b3874188e2 100644
--- 
a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json
+++ 
b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json
@@ -1403,19 +1403,19 @@
 },
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.ProjectionIdentifierExtractEngine"},
-  
"name":"org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.MySQLProjectionIdentifierExtractor"
+  
"name":"org.apache.shardingsphere.infra.binder.mysql.MySQLProjectionIdentifierExtractor"
 },
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.ProjectionIdentifierExtractEngine"},
-  
"name":"org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.OpenGaussProjectionIdentifierExtractor"
+  
"name":"org.apache.shardingsphere.infra.binder.opengauss.OpenGaussProjectionIdentifierExtractor"
 },
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.ProjectionIdentifierExtractEngine"},
-  
"name":"org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.OracleProjectionIdentifierExtractor"
+  
"name":"org.apache.shardingsphere.infra.binder.oracle.OracleProjectionIdentifierExtractor"
 },
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.ProjectionIdentifierExtractEngine"},
-  
"name":"org.apache.shardingsphere.infra.binder.context.segment.select.projection.extractor.dialect.PostgreSQLProjectionIdentifierExtractor"
+  
"name":"org.apache.shardingsphere.infra.binder.postgresql.PostgreSQLProjectionIdentifierExtractor"
 },
 {
   
"condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry"},
diff --git a/proxy/bootstrap/pom.xml b/proxy/bootstrap/pom.xml
index 7be75482659..1a4369a83b7 100644
--- a/proxy/bootstrap/pom.xml
+++ b/proxy/bootstrap/pom.xml
@@ -113,6 +113,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    
<artifactId>shardingsphere-infra-binder-postgresql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-postgresql-protocol</artifactId>
@@ -138,6 +144,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-mysql</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-mysql-protocol</artifactId>
@@ -163,6 +175,13 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    <artifactId>shardingsphere-infra-binder-oracle</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
+                
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     
<artifactId>shardingsphere-parser-sql-sqlserver</artifactId>
@@ -176,6 +195,12 @@
                     <version>${project.version}</version>
                     <scope>runtime</scope>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.shardingsphere</groupId>
+                    
<artifactId>shardingsphere-infra-binder-opengauss</artifactId>
+                    <version>${project.version}</version>
+                    <scope>runtime</scope>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.shardingsphere</groupId>
                     <artifactId>shardingsphere-opengauss-protocol</artifactId>
diff --git a/test/e2e/fixture/pom.xml b/test/e2e/fixture/pom.xml
index 2b72a5b4b15..d2cf1f1d9f1 100644
--- a/test/e2e/fixture/pom.xml
+++ b/test/e2e/fixture/pom.xml
@@ -54,6 +54,12 @@
             <version>${project.version}</version>
             <scope>runtime</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-infra-binder-postgresql</artifactId>
+            <version>${project.version}</version>
+            <scope>runtime</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
             <artifactId>shardingsphere-postgresql-protocol</artifactId>
@@ -79,6 +85,12 @@
             <version>${project.version}</version>
             <scope>runtime</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-infra-binder-mysql</artifactId>
+            <version>${project.version}</version>
+            <scope>runtime</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
             <artifactId>shardingsphere-mysql-protocol</artifactId>
@@ -104,6 +116,12 @@
             <version>${project.version}</version>
             <scope>runtime</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-infra-binder-opengauss</artifactId>
+            <version>${project.version}</version>
+            <scope>runtime</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
             <artifactId>shardingsphere-opengauss-protocol</artifactId>
@@ -129,6 +147,13 @@
             <version>${project.version}</version>
             <scope>runtime</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-infra-binder-oracle</artifactId>
+            <version>${project.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
             <artifactId>shardingsphere-parser-sql-sqlserver</artifactId>
diff --git a/test/native/pom.xml b/test/native/pom.xml
index 0fd05d80c09..a9fd7e0a3f8 100644
--- a/test/native/pom.xml
+++ b/test/native/pom.xml
@@ -46,6 +46,12 @@
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-infra-binder-postgresql</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
             <artifactId>shardingsphere-postgresql-protocol</artifactId>
@@ -65,6 +71,12 @@
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-infra-binder-mysql</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
             <artifactId>shardingsphere-mysql-protocol</artifactId>
@@ -80,32 +92,45 @@
         
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-parser-sql-opengauss</artifactId>
+            <artifactId>shardingsphere-parser-sql-oracle</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-opengauss-protocol</artifactId>
+            <artifactId>shardingsphere-infra-binder-oracle</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
+        
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-proxy-frontend-opengauss</artifactId>
+            <artifactId>shardingsphere-parser-sql-sqlserver</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
         
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-parser-sql-oracle</artifactId>
+            <artifactId>shardingsphere-parser-sql-opengauss</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-parser-sql-sqlserver</artifactId>
+            <artifactId>shardingsphere-infra-binder-opengauss</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-opengauss-protocol</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-proxy-frontend-opengauss</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>

Reply via email to