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

menghaoran 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 8ebdd20af78 Refactor ShardingSphereIdentifier (#37774)
8ebdd20af78 is described below

commit 8ebdd20af78df750539d6a33350d2956b0a5951b
Author: Haoran Meng <[email protected]>
AuthorDate: Mon Jan 19 21:13:47 2026 +0800

    Refactor ShardingSphereIdentifier (#37774)
---
 .../identifier/ShardingSphereIdentifier.java       |   8 +-
 .../identifier/ShardingSphereIdentifierTest.java   | 207 +++++++++------------
 2 files changed, 90 insertions(+), 125 deletions(-)

diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/identifier/ShardingSphereIdentifier.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/identifier/ShardingSphereIdentifier.java
index ccd638b6c9d..bc2cc6a94d8 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/identifier/ShardingSphereIdentifier.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/identifier/ShardingSphereIdentifier.java
@@ -22,6 +22,8 @@ import lombok.Getter;
 import 
org.apache.shardingsphere.database.connector.core.metadata.database.enums.QuoteCharacter;
 import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
 import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.IdentifierPatternType;
+import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import 
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
 
 /**
@@ -42,14 +44,16 @@ public final class ShardingSphereIdentifier {
         caseSensitive = false;
     }
     
-    public ShardingSphereIdentifier(final String value, final 
DialectDatabaseMetaData dialectDatabaseMetaData) {
+    public ShardingSphereIdentifier(final String value, final DatabaseType 
databaseType) {
         this.value = new CaseInsensitiveString(value);
+        DialectDatabaseMetaData dialectDatabaseMetaData = new 
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
         standardizeValue = standardizeValue(value, dialectDatabaseMetaData, 
false);
         caseSensitive = dialectDatabaseMetaData.isCaseSensitive();
     }
     
-    public ShardingSphereIdentifier(final IdentifierValue identifierValue, 
final DialectDatabaseMetaData dialectDatabaseMetaData) {
+    public ShardingSphereIdentifier(final IdentifierValue identifierValue, 
final DatabaseType databaseType) {
         value = new CaseInsensitiveString(identifierValue.getValue());
+        DialectDatabaseMetaData dialectDatabaseMetaData = new 
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
         standardizeValue = standardizeValue(identifierValue.getValue(), 
dialectDatabaseMetaData, QuoteCharacter.NONE != 
identifierValue.getQuoteCharacter());
         caseSensitive = dialectDatabaseMetaData.isCaseSensitive();
     }
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/identifier/ShardingSphereIdentifierTest.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/identifier/ShardingSphereIdentifierTest.java
index 1c1492f3c6a..5cd6ab4459f 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/identifier/ShardingSphereIdentifierTest.java
+++ 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/identifier/ShardingSphereIdentifierTest.java
@@ -17,9 +17,8 @@
 
 package org.apache.shardingsphere.infra.metadata.identifier;
 
-import 
org.apache.shardingsphere.database.connector.core.metadata.database.enums.QuoteCharacter;
-import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
-import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.IdentifierPatternType;
+import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
 import org.junit.jupiter.api.Test;
 
@@ -30,8 +29,6 @@ import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.not;
 import static org.hamcrest.CoreMatchers.nullValue;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 class ShardingSphereIdentifierTest {
     
@@ -42,20 +39,20 @@ class ShardingSphereIdentifierTest {
     }
     
     @Test
-    void assertConstructorWithValueAndMetaData() {
-        DialectDatabaseMetaData mockMetaData = mockPostgreSQLMetaData();
-        assertThat(new ShardingSphereIdentifier("foo", 
mockMetaData).getValue(), is("foo"));
-        assertThat(new ShardingSphereIdentifier("foo", 
mockMetaData).getStandardizeValue(), is("foo"));
-        assertThat(new ShardingSphereIdentifier("FOO", 
mockMetaData).getStandardizeValue(), is("foo"));
+    void assertConstructorWithValueAndDatabaseType() {
+        DatabaseType postgresql = getDatabaseType("PostgreSQL");
+        assertThat(new ShardingSphereIdentifier("foo", postgresql).getValue(), 
is("foo"));
+        assertThat(new ShardingSphereIdentifier("foo", 
postgresql).getStandardizeValue(), is("foo"));
+        assertThat(new ShardingSphereIdentifier("FOO", 
postgresql).getStandardizeValue(), is("foo"));
     }
     
     @Test
-    void assertConstructorWithIdentifierValue() {
-        DialectDatabaseMetaData mockMetaData = mockPostgreSQLMetaData();
-        assertThat(new ShardingSphereIdentifier(new IdentifierValue("foo"), 
mockMetaData).getValue(), is("foo"));
-        assertThat(new ShardingSphereIdentifier(new IdentifierValue("FOO"), 
mockMetaData).getStandardizeValue(), is("foo"));
-        assertThat(new ShardingSphereIdentifier(new IdentifierValue("foo", 
QuoteCharacter.QUOTE), mockMetaData).getStandardizeValue(), is("foo"));
-        assertThat(new ShardingSphereIdentifier(new IdentifierValue("FOO", 
QuoteCharacter.QUOTE), mockMetaData).getStandardizeValue(), is("FOO"));
+    void assertConstructorWithIdentifierValueAndDatabaseType() {
+        DatabaseType postgresql = getDatabaseType("PostgreSQL");
+        assertThat(new ShardingSphereIdentifier(new IdentifierValue("foo"), 
postgresql).getValue(), is("foo"));
+        assertThat(new ShardingSphereIdentifier(new IdentifierValue("FOO"), 
postgresql).getStandardizeValue(), is("foo"));
+        assertThat(new ShardingSphereIdentifier(new 
IdentifierValue("\"foo\""), postgresql).getStandardizeValue(), is("foo"));
+        assertThat(new ShardingSphereIdentifier(new 
IdentifierValue("\"FOO\""), postgresql).getStandardizeValue(), is("FOO"));
     }
     
     @Test
@@ -71,58 +68,58 @@ class ShardingSphereIdentifierTest {
     }
     
     @Test
-    void assertEqualsWithNoDialectMetadata() {
+    void assertEqualsWithNoDatabaseType() {
         assertThat(new ShardingSphereIdentifier("foo"), is(new 
ShardingSphereIdentifier("foo")));
         assertThat(new ShardingSphereIdentifier("foo"), is(new 
ShardingSphereIdentifier("FOO")));
     }
     
     @Test
-    void assertHashCodeWithNoDialectMetadata() {
+    void assertHashCodeWithNoDatabaseType() {
         assertThat(new ShardingSphereIdentifier("foo").hashCode(), is(new 
ShardingSphereIdentifier("foo").hashCode()));
         assertThat(new ShardingSphereIdentifier("foo").hashCode(), is(new 
ShardingSphereIdentifier("FOO").hashCode()));
     }
     
     @Test
     void assertToString() {
-        DialectDatabaseMetaData mockMetaData = mockPostgreSQLMetaData();
-        assertThat(new ShardingSphereIdentifier("foo", 
mockMetaData).toString(), is("foo"));
-        assertThat(new ShardingSphereIdentifier("FOO", 
mockMetaData).toString(), is("FOO"));
-        assertThat(new ShardingSphereIdentifier(new IdentifierValue("foo"), 
mockMetaData).toString(), is("foo"));
+        DatabaseType postgresql = getDatabaseType("PostgreSQL");
+        assertThat(new ShardingSphereIdentifier("foo", postgresql).toString(), 
is("foo"));
+        assertThat(new ShardingSphereIdentifier("FOO", postgresql).toString(), 
is("FOO"));
+        assertThat(new ShardingSphereIdentifier(new IdentifierValue("foo"), 
postgresql).toString(), is("foo"));
     }
     
     @Test
-    void assertPostgreSQLLowerCaseUnquoted() {
-        DialectDatabaseMetaData postgres = mockPostgreSQLMetaData();
+    void assertPostgresSQLLowerCaseUnquoted() {
+        DatabaseType postgresql = getDatabaseType("PostgreSQL");
         Map<ShardingSphereIdentifier, String> map = new HashMap<>();
-        map.put(new ShardingSphereIdentifier("mytable", postgres), "value1");
-        assertThat(map.get(new ShardingSphereIdentifier("MYTABLE", postgres)), 
is("value1"));
-        assertThat(map.get(new ShardingSphereIdentifier("mytable", postgres)), 
is("value1"));
+        map.put(new ShardingSphereIdentifier("mytable", postgresql), "value1");
+        assertThat(map.get(new ShardingSphereIdentifier("MYTABLE", 
postgresql)), is("value1"));
+        assertThat(map.get(new ShardingSphereIdentifier("mytable", 
postgresql)), is("value1"));
     }
     
     @Test
-    void assertPostgreSQLQuotedCaseSensitive() {
-        DialectDatabaseMetaData postgres = mockPostgreSQLMetaData();
+    void assertPostgresSQLQuotedCaseSensitive() {
+        DatabaseType postgresql = getDatabaseType("PostgreSQL");
         Map<ShardingSphereIdentifier, String> map = new HashMap<>();
-        map.put(new ShardingSphereIdentifier(new IdentifierValue("MyTable", 
QuoteCharacter.QUOTE), postgres), "value1");
-        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("MyTable", QuoteCharacter.QUOTE), postgres)), is("value1"));
-        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("MyTable", QuoteCharacter.NONE), postgres)), is(nullValue()));
-        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("mytable", QuoteCharacter.NONE), postgres)), is(nullValue()));
+        map.put(new ShardingSphereIdentifier(new 
IdentifierValue("\"MyTable\""), postgresql), "value1");
+        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("\"MyTable\""), postgresql)), is("value1"));
+        assertThat(map.get(new ShardingSphereIdentifier("MyTable", 
postgresql)), is(nullValue()));
+        assertThat(map.get(new ShardingSphereIdentifier("mytable", 
postgresql)), is(nullValue()));
     }
     
     @Test
-    void assertPostgreSQLStandardizeValue() {
-        DialectDatabaseMetaData postgres = mockPostgreSQLMetaData();
-        ShardingSphereIdentifier unquoted = new 
ShardingSphereIdentifier("MyTable", postgres);
+    void assertPostgresSQLStandardizeValue() {
+        DatabaseType postgresql = getDatabaseType("PostgreSQL");
+        ShardingSphereIdentifier unquoted = new 
ShardingSphereIdentifier("MyTable", postgresql);
         assertThat(unquoted.getValue(), is("MyTable"));
         assertThat(unquoted.getStandardizeValue(), is("mytable"));
-        ShardingSphereIdentifier quoted = new ShardingSphereIdentifier(new 
IdentifierValue("MyTable", QuoteCharacter.QUOTE), postgres);
+        ShardingSphereIdentifier quoted = new ShardingSphereIdentifier(new 
IdentifierValue("\"MyTable\""), postgresql);
         assertThat(quoted.getValue(), is("MyTable"));
         assertThat(quoted.getStandardizeValue(), is("MyTable"));
     }
     
     @Test
     void assertOracleUpperCaseUnquoted() {
-        DialectDatabaseMetaData oracle = mockOracleMetaData();
+        DatabaseType oracle = getDatabaseType("Oracle");
         Map<ShardingSphereIdentifier, String> map = new HashMap<>();
         map.put(new ShardingSphereIdentifier("MYTABLE", oracle), "value1");
         assertThat(map.get(new ShardingSphereIdentifier("mytable", oracle)), 
is("value1"));
@@ -130,103 +127,103 @@ class ShardingSphereIdentifierTest {
     }
     
     @Test
-    void assertOracleQuotedCaseSensitive() {
-        DialectDatabaseMetaData oracle = mockOracleMetaData();
+    void assertOracleQuotedCaseInsensitive() {
+        DatabaseType oracle = getDatabaseType("Oracle");
         Map<ShardingSphereIdentifier, String> map = new HashMap<>();
-        map.put(new ShardingSphereIdentifier(new IdentifierValue("MYTABLE", 
QuoteCharacter.QUOTE), oracle), "value1");
-        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("MYTABLE", QuoteCharacter.QUOTE), oracle)), is("value1"));
-        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("mytable", QuoteCharacter.QUOTE), oracle)), is(nullValue()));
-        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("mytable", QuoteCharacter.NONE), oracle)), is("value1"));
+        map.put(new ShardingSphereIdentifier(new 
IdentifierValue("\"MYTABLE\""), oracle), "value1");
+        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("\"MYTABLE\""), oracle)), is("value1"));
+        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("\"mytable\""), oracle)), is("value1"));
+        assertThat(map.get(new ShardingSphereIdentifier("mytable", oracle)), 
is("value1"));
     }
     
     @Test
     void assertOracleStandardizeValue() {
-        DialectDatabaseMetaData oracle = mockOracleMetaData();
+        DatabaseType oracle = getDatabaseType("Oracle");
         ShardingSphereIdentifier unquoted = new 
ShardingSphereIdentifier("mytable", oracle);
         assertThat(unquoted.getValue(), is("mytable"));
-        assertThat(unquoted.getStandardizeValue(), is("MYTABLE"));
-        ShardingSphereIdentifier quoted = new ShardingSphereIdentifier(new 
IdentifierValue("mytable", QuoteCharacter.QUOTE), oracle);
+        assertThat(unquoted.getStandardizeValue(), is("mytable"));
+        ShardingSphereIdentifier quoted = new ShardingSphereIdentifier(new 
IdentifierValue("\"mytable\""), oracle);
         assertThat(quoted.getValue(), is("mytable"));
         assertThat(quoted.getStandardizeValue(), is("mytable"));
     }
     
     @Test
     void assertClickHouseKeepOriginUnquoted() {
-        DialectDatabaseMetaData clickhouse = mockClickHouseMetaData();
+        DatabaseType clickhouse = getDatabaseType("ClickHouse");
         Map<ShardingSphereIdentifier, String> map = new HashMap<>();
         map.put(new ShardingSphereIdentifier("MyTable", clickhouse), "value1");
         assertThat(map.get(new ShardingSphereIdentifier("MyTable", 
clickhouse)), is("value1"));
-        assertThat(map.get(new ShardingSphereIdentifier("mytable", 
clickhouse)), is(nullValue()));
+        assertThat(map.get(new ShardingSphereIdentifier("mytable", 
clickhouse)), is("value1"));
     }
     
     @Test
     void assertClickHouseQuotedCaseSensitive() {
-        DialectDatabaseMetaData clickhouse = mockClickHouseMetaData();
+        DatabaseType clickhouse = getDatabaseType("ClickHouse");
         Map<ShardingSphereIdentifier, String> map = new HashMap<>();
-        map.put(new ShardingSphereIdentifier(new IdentifierValue("MyTable", 
QuoteCharacter.QUOTE), clickhouse), "value1");
-        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("MyTable", QuoteCharacter.QUOTE), clickhouse)), is("value1"));
-        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("mytable", QuoteCharacter.QUOTE), clickhouse)), 
is(nullValue()));
+        map.put(new ShardingSphereIdentifier(new 
IdentifierValue("\"MyTable\""), clickhouse), "value1");
+        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("\"MyTable\""), clickhouse)), is("value1"));
+        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("\"mytable\""), clickhouse)), is("value1"));
     }
     
     @Test
     void assertClickHouseStandardizeValue() {
-        DialectDatabaseMetaData clickhouse = mockClickHouseMetaData();
+        DatabaseType clickhouse = getDatabaseType("ClickHouse");
         ShardingSphereIdentifier unquoted = new 
ShardingSphereIdentifier("MyTable", clickhouse);
         assertThat(unquoted.getValue(), is("MyTable"));
         assertThat(unquoted.getStandardizeValue(), is("MyTable"));
-        ShardingSphereIdentifier quoted = new ShardingSphereIdentifier(new 
IdentifierValue("MyTable", QuoteCharacter.QUOTE), clickhouse);
+        ShardingSphereIdentifier quoted = new ShardingSphereIdentifier(new 
IdentifierValue("\"MyTable\""), clickhouse);
         assertThat(quoted.getValue(), is("MyTable"));
         assertThat(quoted.getStandardizeValue(), is("MyTable"));
     }
     
     @Test
     void assertHashCodeWithCaseSensitive() {
-        DialectDatabaseMetaData postgres = mockPostgreSQLMetaData();
-        ShardingSphereIdentifier quoted1 = new ShardingSphereIdentifier(new 
IdentifierValue("MyTable", QuoteCharacter.QUOTE), postgres);
-        ShardingSphereIdentifier quoted2 = new ShardingSphereIdentifier(new 
IdentifierValue("MyTable", QuoteCharacter.QUOTE), postgres);
-        ShardingSphereIdentifier quoted3 = new ShardingSphereIdentifier(new 
IdentifierValue("mytable", QuoteCharacter.QUOTE), postgres);
+        DatabaseType postgresql = getDatabaseType("PostgreSQL");
+        ShardingSphereIdentifier quoted1 = new ShardingSphereIdentifier(new 
IdentifierValue("\"MyTable\""), postgresql);
+        ShardingSphereIdentifier quoted2 = new ShardingSphereIdentifier(new 
IdentifierValue("\"MyTable\""), postgresql);
+        ShardingSphereIdentifier quoted3 = new ShardingSphereIdentifier(new 
IdentifierValue("\"mytable\""), postgresql);
         assertThat(quoted1.hashCode(), is(quoted2.hashCode()));
         assertThat(quoted1.hashCode(), not(quoted3.hashCode()));
     }
     
     @Test
     void assertNullValue() {
-        DialectDatabaseMetaData postgres = mockPostgreSQLMetaData();
+        DatabaseType postgresql = getDatabaseType("PostgreSQL");
         ShardingSphereIdentifier nullIdentifier = new 
ShardingSphereIdentifier((String) null);
         assertThat(nullIdentifier.getValue(), is(nullValue()));
         assertThat(nullIdentifier.getStandardizeValue(), is(nullValue()));
-        ShardingSphereIdentifier nullIdentifierWithMetaData = new 
ShardingSphereIdentifier(new IdentifierValue((String) null), postgres);
-        assertThat(nullIdentifierWithMetaData.getValue(), is(nullValue()));
-        assertThat(nullIdentifierWithMetaData.getStandardizeValue(), 
is(nullValue()));
+        ShardingSphereIdentifier nullIdentifierWithDatabaseType = new 
ShardingSphereIdentifier(new IdentifierValue((String) null), postgresql);
+        assertThat(nullIdentifierWithDatabaseType.getValue(), is(nullValue()));
+        assertThat(nullIdentifierWithDatabaseType.getStandardizeValue(), 
is(nullValue()));
     }
     
     @Test
     void assertEqualsWithNullValues() {
-        DialectDatabaseMetaData postgres = mockPostgreSQLMetaData();
+        DatabaseType postgresql = getDatabaseType("PostgreSQL");
         ShardingSphereIdentifier null1 = new ShardingSphereIdentifier((String) 
null);
         ShardingSphereIdentifier null2 = new ShardingSphereIdentifier((String) 
null);
         assertThat(null1, is(null2));
         assertThat(null1.hashCode(), is(null2.hashCode()));
-        ShardingSphereIdentifier null3 = new ShardingSphereIdentifier(new 
IdentifierValue((String) null), postgres);
-        ShardingSphereIdentifier null4 = new ShardingSphereIdentifier(new 
IdentifierValue((String) null), postgres);
+        ShardingSphereIdentifier null3 = new ShardingSphereIdentifier(new 
IdentifierValue((String) null), postgresql);
+        ShardingSphereIdentifier null4 = new ShardingSphereIdentifier(new 
IdentifierValue((String) null), postgresql);
         assertThat(null3, is(null4));
         assertThat(null3.hashCode(), is(null4.hashCode()));
     }
     
     @Test
     void assertNotEqualsWithOneNullValue() {
-        DialectDatabaseMetaData postgres = mockPostgreSQLMetaData();
+        DatabaseType postgresql = getDatabaseType("PostgreSQL");
         ShardingSphereIdentifier nullIdentifier = new 
ShardingSphereIdentifier((String) null);
         ShardingSphereIdentifier nonNullIdentifier = new 
ShardingSphereIdentifier("foo");
         assertThat(nullIdentifier, not(nonNullIdentifier));
-        ShardingSphereIdentifier nullIdentifierWithMeta = new 
ShardingSphereIdentifier(new IdentifierValue((String) null), postgres);
-        ShardingSphereIdentifier nonNullIdentifierWithMeta = new 
ShardingSphereIdentifier("foo", postgres);
-        assertThat(nullIdentifierWithMeta, not(nonNullIdentifierWithMeta));
+        ShardingSphereIdentifier nullIdentifierWithDatabaseType = new 
ShardingSphereIdentifier(new IdentifierValue((String) null), postgresql);
+        ShardingSphereIdentifier nonNullIdentifierWithDatabaseType = new 
ShardingSphereIdentifier("foo", postgresql);
+        assertThat(nullIdentifierWithDatabaseType, 
not(nonNullIdentifierWithDatabaseType));
     }
     
     @Test
     void assertMySQLKeepOriginUnquoted() {
-        DialectDatabaseMetaData mysql = mockMySQLMetaData();
+        DatabaseType mysql = getDatabaseType("MySQL");
         Map<ShardingSphereIdentifier, String> map = new HashMap<>();
         map.put(new ShardingSphereIdentifier("MyTable", mysql), "value1");
         assertThat(map.get(new ShardingSphereIdentifier("MyTable", mysql)), 
is("value1"));
@@ -235,27 +232,27 @@ class ShardingSphereIdentifierTest {
     
     @Test
     void assertMySQLQuotedCaseSensitive() {
-        DialectDatabaseMetaData mysql = mockMySQLMetaData();
+        DatabaseType mysql = getDatabaseType("MySQL");
         Map<ShardingSphereIdentifier, String> map = new HashMap<>();
-        map.put(new ShardingSphereIdentifier(new IdentifierValue("MyTable", 
QuoteCharacter.BACK_QUOTE), mysql), "value1");
-        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("MyTable", QuoteCharacter.BACK_QUOTE), mysql)), is("value1"));
-        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("mytable", QuoteCharacter.BACK_QUOTE), mysql)), is("value1"));
+        map.put(new ShardingSphereIdentifier(new IdentifierValue("`MyTable`"), 
mysql), "value1");
+        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("`MyTable`"), mysql)), is("value1"));
+        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("`mytable`"), mysql)), is("value1"));
     }
     
     @Test
     void assertMySQLStandardizeValue() {
-        DialectDatabaseMetaData mysql = mockMySQLMetaData();
+        DatabaseType mysql = getDatabaseType("MySQL");
         ShardingSphereIdentifier unquoted = new 
ShardingSphereIdentifier("MyTable", mysql);
         assertThat(unquoted.getValue(), is("MyTable"));
         assertThat(unquoted.getStandardizeValue(), is("MyTable"));
-        ShardingSphereIdentifier quoted = new ShardingSphereIdentifier(new 
IdentifierValue("MyTable", QuoteCharacter.BACK_QUOTE), mysql);
+        ShardingSphereIdentifier quoted = new ShardingSphereIdentifier(new 
IdentifierValue("`MyTable`"), mysql);
         assertThat(quoted.getValue(), is("MyTable"));
         assertThat(quoted.getStandardizeValue(), is("MyTable"));
     }
     
     @Test
     void assertOpenGaussLowerCaseUnquoted() {
-        DialectDatabaseMetaData opengauss = mockOpenGaussMetaData();
+        DatabaseType opengauss = getDatabaseType("openGauss");
         Map<ShardingSphereIdentifier, String> map = new HashMap<>();
         map.put(new ShardingSphereIdentifier("mytable", opengauss), "value1");
         assertThat(map.get(new ShardingSphereIdentifier("MYTABLE", 
opengauss)), is("value1"));
@@ -264,62 +261,26 @@ class ShardingSphereIdentifierTest {
     
     @Test
     void assertOpenGaussQuotedCaseSensitive() {
-        DialectDatabaseMetaData opengauss = mockOpenGaussMetaData();
+        DatabaseType opengauss = getDatabaseType("openGauss");
         Map<ShardingSphereIdentifier, String> map = new HashMap<>();
-        map.put(new ShardingSphereIdentifier(new IdentifierValue("MyTable", 
QuoteCharacter.QUOTE), opengauss), "value1");
-        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("MyTable", QuoteCharacter.QUOTE), opengauss)), is("value1"));
-        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("MyTable", QuoteCharacter.NONE), opengauss)), is(nullValue()));
-        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("mytable", QuoteCharacter.NONE), opengauss)), is(nullValue()));
+        map.put(new ShardingSphereIdentifier(new 
IdentifierValue("\"MyTable\""), opengauss), "value1");
+        assertThat(map.get(new ShardingSphereIdentifier(new 
IdentifierValue("\"MyTable\""), opengauss)), is("value1"));
+        assertThat(map.get(new ShardingSphereIdentifier("MyTable", 
opengauss)), is(nullValue()));
+        assertThat(map.get(new ShardingSphereIdentifier("mytable", 
opengauss)), is(nullValue()));
     }
     
     @Test
     void assertOpenGaussStandardizeValue() {
-        DialectDatabaseMetaData opengauss = mockOpenGaussMetaData();
+        DatabaseType opengauss = getDatabaseType("openGauss");
         ShardingSphereIdentifier unquoted = new 
ShardingSphereIdentifier("MyTable", opengauss);
         assertThat(unquoted.getValue(), is("MyTable"));
         assertThat(unquoted.getStandardizeValue(), is("mytable"));
-        ShardingSphereIdentifier quoted = new ShardingSphereIdentifier(new 
IdentifierValue("MyTable", QuoteCharacter.QUOTE), opengauss);
+        ShardingSphereIdentifier quoted = new ShardingSphereIdentifier(new 
IdentifierValue("\"MyTable\""), opengauss);
         assertThat(quoted.getValue(), is("MyTable"));
         assertThat(quoted.getStandardizeValue(), is("MyTable"));
     }
     
-    private DialectDatabaseMetaData mockPostgreSQLMetaData() {
-        DialectDatabaseMetaData result = mock(DialectDatabaseMetaData.class);
-        when(result.getQuoteCharacter()).thenReturn(QuoteCharacter.QUOTE);
-        
when(result.getIdentifierPatternType()).thenReturn(IdentifierPatternType.LOWER_CASE);
-        when(result.isCaseSensitive()).thenReturn(true);
-        return result;
-    }
-    
-    private DialectDatabaseMetaData mockOracleMetaData() {
-        DialectDatabaseMetaData result = mock(DialectDatabaseMetaData.class);
-        when(result.getQuoteCharacter()).thenReturn(QuoteCharacter.QUOTE);
-        
when(result.getIdentifierPatternType()).thenReturn(IdentifierPatternType.UPPER_CASE);
-        when(result.isCaseSensitive()).thenReturn(true);
-        return result;
-    }
-    
-    private DialectDatabaseMetaData mockClickHouseMetaData() {
-        DialectDatabaseMetaData result = mock(DialectDatabaseMetaData.class);
-        when(result.getQuoteCharacter()).thenReturn(QuoteCharacter.QUOTE);
-        
when(result.getIdentifierPatternType()).thenReturn(IdentifierPatternType.KEEP_ORIGIN);
-        when(result.isCaseSensitive()).thenReturn(true);
-        return result;
-    }
-    
-    private DialectDatabaseMetaData mockMySQLMetaData() {
-        DialectDatabaseMetaData result = mock(DialectDatabaseMetaData.class);
-        when(result.getQuoteCharacter()).thenReturn(QuoteCharacter.BACK_QUOTE);
-        
when(result.getIdentifierPatternType()).thenReturn(IdentifierPatternType.KEEP_ORIGIN);
-        when(result.isCaseSensitive()).thenReturn(false);
-        return result;
-    }
-    
-    private DialectDatabaseMetaData mockOpenGaussMetaData() {
-        DialectDatabaseMetaData result = mock(DialectDatabaseMetaData.class);
-        when(result.getQuoteCharacter()).thenReturn(QuoteCharacter.QUOTE);
-        
when(result.getIdentifierPatternType()).thenReturn(IdentifierPatternType.LOWER_CASE);
-        when(result.isCaseSensitive()).thenReturn(true);
-        return result;
+    private DatabaseType getDatabaseType(final String databaseTypeName) {
+        return TypedSPILoader.getService(DatabaseType.class, databaseTypeName);
     }
 }

Reply via email to