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

chengzhang 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 aecd2e9512e Revise all local index for sharding table and add object 
uniqueness level spi to control index token generator (#31176)
aecd2e9512e is described below

commit aecd2e9512e1deac32d55e3c2f2e38f5b79a417b
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Fri May 10 08:57:33 2024 +0800

    Revise all local index for sharding table and add object uniqueness level 
spi to control index token generator (#31176)
    
    * Revise all local index for sharding table and add object uniqueness level 
spi to control index token generator
    
    * fix unit test
    
    * fix unit test and e2e test
---
 .../reviser/index/ShardingIndexReviser.java        |  8 +---
 .../token/generator/impl/IndexTokenGenerator.java  | 10 ++++-
 .../token/generator/IndexTokenGeneratorTest.java   |  1 +
 .../DialectObjectUniquenessLevelProvider.java      | 43 ++++++++++++++++++++++
 .../object/MySQLObjectUniquenessLevelProvider.java | 25 ++++++-------
 ...ase.object.DialectObjectUniquenessLevelProvider | 18 +++++++++
 .../MySQLObjectUniquenessLevelProviderTest.java    | 30 ++++++---------
 .../OpenGaussObjectUniquenessLevelProvider.java    | 25 ++++++-------
 ...ase.object.DialectObjectUniquenessLevelProvider | 18 +++++++++
 ...OpenGaussObjectUniquenessLevelProviderTest.java | 30 ++++++---------
 .../OracleObjectUniquenessLevelProvider.java       | 25 ++++++-------
 ...ase.object.DialectObjectUniquenessLevelProvider | 18 +++++++++
 .../OracleObjectUniquenessLevelProviderTest.java   | 30 ++++++---------
 .../PostgreSQLObjectUniquenessLevelProvider.java   | 25 ++++++-------
 ...ase.object.DialectObjectUniquenessLevelProvider | 18 +++++++++
 ...ostgreSQLObjectUniquenessLevelProviderTest.java | 30 ++++++---------
 .../SQLServerObjectUniquenessLevelProvider.java    | 25 ++++++-------
 ...ase.object.DialectObjectUniquenessLevelProvider | 18 +++++++++
 ...SQLServerObjectUniquenessLevelProviderTest.java | 30 ++++++---------
 .../reviser/SingleMetaDataReviseEntry.java         |  6 ---
 .../metadata/SingleMetaDataReviseEngineTest.java   |  2 +-
 .../reviser/SingleMetaDataReviseEntryTest.java     | 11 ------
 .../src/main/antlr4/imports/mysql/BaseRule.g4      |  1 -
 .../db/data/actual/init-sql/h2/01-actual-init.sql  |  2 +-
 .../data/actual/init-sql/mysql/01-actual-init.sql  | 20 +++++-----
 .../data/expected/init-sql/h2/01-expected-init.sql |  2 +-
 .../expected/init-sql/mysql/01-expected-init.sql   |  2 +-
 .../init-sql/sqlserver/01-expected-init.sql        |  2 +-
 .../tbl/data/actual/init-sql/h2/01-actual-init.sql | 20 +++++-----
 .../data/actual/init-sql/mysql/01-actual-init.sql  | 20 +++++-----
 .../data/expected/init-sql/h2/01-expected-init.sql |  2 +-
 .../expected/init-sql/mysql/01-expected-init.sql   |  2 +-
 .../resources/scenario/sharding/case/ddl/index.xml | 38 +++++++++++--------
 33 files changed, 319 insertions(+), 238 deletions(-)

diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/index/ShardingIndexReviser.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/index/ShardingIndexReviser.java
index 09202d5c85e..c8b5e2d8ee4 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/index/ShardingIndexReviser.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/index/ShardingIndexReviser.java
@@ -20,6 +20,7 @@ package 
org.apache.shardingsphere.sharding.metadata.reviser.index;
 import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.index.IndexReviser;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDataUtils;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
 import org.apache.shardingsphere.sharding.rule.ShardingTable;
 
@@ -38,14 +39,9 @@ public final class ShardingIndexReviser implements 
IndexReviser<ShardingRule> {
         if (shardingTable.getActualDataNodes().isEmpty()) {
             return Optional.empty();
         }
-        IndexMetaData result = new 
IndexMetaData(getLogicIndex(originalMetaData.getName(), 
shardingTable.getActualDataNodes().iterator().next().getTableName()));
+        IndexMetaData result = new 
IndexMetaData(IndexMetaDataUtils.getLogicIndexName(originalMetaData.getName(), 
shardingTable.getActualDataNodes().iterator().next().getTableName()));
         result.getColumns().addAll(originalMetaData.getColumns());
         result.setUnique(originalMetaData.isUnique());
         return Optional.of(result);
     }
-    
-    private String getLogicIndex(final String actualIndexName, final String 
actualTableName) {
-        String indexNameSuffix = "_" + actualTableName;
-        return actualIndexName.endsWith(indexNameSuffix) ? 
actualIndexName.replace(indexNameSuffix, "") : actualIndexName;
-    }
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/IndexTokenGenerator.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/IndexTokenGenerator.java
index 52f752eb5bf..88292076a34 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/IndexTokenGenerator.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/IndexTokenGenerator.java
@@ -20,11 +20,15 @@ package 
org.apache.shardingsphere.sharding.rewrite.token.generator.impl;
 import lombok.Setter;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.IndexAvailable;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider.UniquenessLevel;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.generator.CollectionSQLTokenGenerator;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.generator.aware.SchemaMetaDataAware;
 import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.SQLToken;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.sharding.rewrite.token.pojo.IndexToken;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
 import org.apache.shardingsphere.sharding.rule.aware.ShardingRuleAware;
@@ -48,7 +52,11 @@ public final class IndexTokenGenerator implements 
CollectionSQLTokenGenerator<SQ
     
     @Override
     public boolean isGenerateSQLToken(final SQLStatementContext 
sqlStatementContext) {
-        return sqlStatementContext instanceof IndexAvailable && 
!((IndexAvailable) sqlStatementContext).getIndexes().isEmpty();
+        return sqlStatementContext instanceof IndexAvailable && 
!((IndexAvailable) sqlStatementContext).getIndexes().isEmpty() && 
isSchemaUniquenessLevelIndex(sqlStatementContext.getDatabaseType());
+    }
+    
+    private boolean isSchemaUniquenessLevelIndex(final DatabaseType 
databaseType) {
+        return 
TypedSPILoader.findService(DialectObjectUniquenessLevelProvider.class, 
databaseType).map(optional -> UniquenessLevel.SCHEMA_LEVEL == 
optional.getIndexUniquenessLevel()).orElse(false);
     }
     
     @Override
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/IndexTokenGeneratorTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/IndexTokenGeneratorTest.java
index b2838690d0d..2ebfd5f62bb 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/IndexTokenGeneratorTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/IndexTokenGeneratorTest.java
@@ -55,6 +55,7 @@ class IndexTokenGeneratorTest {
         
when(alterIndexStatementContext.getIndexes()).thenReturn(indexSegments);
         assertFalse(generator.isGenerateSQLToken(alterIndexStatementContext));
         indexSegments.add(mock(IndexSegment.class));
+        
when(alterIndexStatementContext.getDatabaseType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
 "PostgreSQL"));
         assertTrue(generator.isGenerateSQLToken(alterIndexStatementContext));
     }
     
diff --git 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/object/DialectObjectUniquenessLevelProvider.java
 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/object/DialectObjectUniquenessLevelProvider.java
new file mode 100644
index 00000000000..f5c31927dc4
--- /dev/null
+++ 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/object/DialectObjectUniquenessLevelProvider.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.infra.database.core.metadata.database.object;
+
+import org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPI;
+import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
+
+/**
+ * Dialect object uniqueness level provider.
+ */
+@SingletonSPI
+public interface DialectObjectUniquenessLevelProvider extends DatabaseTypedSPI 
{
+    
+    /**
+     * Get index uniqueness level.
+     * 
+     * @return index uniqueness level
+     */
+    UniquenessLevel getIndexUniquenessLevel();
+    
+    /**
+     * Uniqueness level enum.
+     */
+    enum UniquenessLevel {
+        
+        SCHEMA_LEVEL, TABLE_LEVEL
+    }
+}
diff --git 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviser.java
 
b/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/metadata/database/object/MySQLObjectUniquenessLevelProvider.java
similarity index 50%
copy from 
kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviser.java
copy to 
infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/metadata/database/object/MySQLObjectUniquenessLevelProvider.java
index d7bce6da8d6..e83ea44b8e2 100644
--- 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviser.java
+++ 
b/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/metadata/database/object/MySQLObjectUniquenessLevelProvider.java
@@ -15,25 +15,22 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.single.metadata.reviser.index;
+package 
org.apache.shardingsphere.infra.database.mysql.metadata.database.object;
 
-import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMetaData;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.index.IndexReviser;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDataUtils;
-import org.apache.shardingsphere.single.rule.SingleRule;
-
-import java.util.Optional;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider;
 
 /**
- * Single index reviser.
+ * MySQL object uniqueness level provider.
  */
-public final class SingleIndexReviser implements IndexReviser<SingleRule> {
+public class MySQLObjectUniquenessLevelProvider implements 
DialectObjectUniquenessLevelProvider {
+    
+    @Override
+    public UniquenessLevel getIndexUniquenessLevel() {
+        return UniquenessLevel.TABLE_LEVEL;
+    }
     
     @Override
-    public Optional<IndexMetaData> revise(final String tableName, final 
IndexMetaData originalMetaData, final SingleRule singleRule) {
-        IndexMetaData result = new 
IndexMetaData(IndexMetaDataUtils.getLogicIndexName(originalMetaData.getName(), 
tableName));
-        result.getColumns().addAll(originalMetaData.getColumns());
-        result.setUnique(originalMetaData.isUnique());
-        return Optional.of(result);
+    public String getDatabaseType() {
+        return "MySQL";
     }
 }
diff --git 
a/infra/database/type/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider
 
b/infra/database/type/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider
new file mode 100644
index 00000000000..fa1d13587b2
--- /dev/null
+++ 
b/infra/database/type/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+org.apache.shardingsphere.infra.database.mysql.metadata.database.object.MySQLObjectUniquenessLevelProvider
diff --git 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviserTest.java
 
b/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/metadata/database/object/MySQLObjectUniquenessLevelProviderTest.java
similarity index 51%
copy from 
kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviserTest.java
copy to 
infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/metadata/database/object/MySQLObjectUniquenessLevelProviderTest.java
index e1881ea7d27..56fe3f20388 100644
--- 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviserTest.java
+++ 
b/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/metadata/database/object/MySQLObjectUniquenessLevelProviderTest.java
@@ -15,31 +15,25 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.single.metadata.reviser.index;
+package 
org.apache.shardingsphere.infra.database.mysql.metadata.database.object;
 
-import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMetaData;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider.UniquenessLevel;
+import 
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.junit.jupiter.api.Test;
 
-import java.util.Optional;
-
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
-class SingleIndexReviserTest {
+class MySQLObjectUniquenessLevelProviderTest {
+    
+    private final DialectObjectUniquenessLevelProvider uniquenessLevelProvider 
=
+            
DatabaseTypedSPILoader.getService(DialectObjectUniquenessLevelProvider.class, 
TypedSPILoader.getService(DatabaseType.class, "MySQL"));
     
     @Test
-    void assertReviserReturnsRevisedIndex() {
-        IndexMetaData originalMetaData = new 
IndexMetaData("test_idx_tableName");
-        originalMetaData.getColumns().add("column1");
-        originalMetaData.getColumns().add("column2");
-        originalMetaData.setUnique(true);
-        SingleIndexReviser reviser = new SingleIndexReviser();
-        Optional<IndexMetaData> optionalRevised = reviser.revise("tableName", 
originalMetaData, null);
-        assertTrue(optionalRevised.isPresent());
-        IndexMetaData actual = optionalRevised.get();
-        assertThat(originalMetaData.isUnique(), is(actual.isUnique()));
-        assertThat(originalMetaData.getColumns(), is(actual.getColumns()));
-        assertThat("test_idx", is(actual.getName()));
+    void assertGetIndexUniquenessLevel() {
+        assertThat(uniquenessLevelProvider.getIndexUniquenessLevel(), 
is(UniquenessLevel.TABLE_LEVEL));
     }
 }
diff --git 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviser.java
 
b/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/object/OpenGaussObjectUniquenessLevelProvider.java
similarity index 50%
copy from 
kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviser.java
copy to 
infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/object/OpenGaussObjectUniquenessLevelProvider.java
index d7bce6da8d6..cb65068686f 100644
--- 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviser.java
+++ 
b/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/object/OpenGaussObjectUniquenessLevelProvider.java
@@ -15,25 +15,22 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.single.metadata.reviser.index;
+package 
org.apache.shardingsphere.infra.database.opengauss.metadata.database.object;
 
-import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMetaData;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.index.IndexReviser;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDataUtils;
-import org.apache.shardingsphere.single.rule.SingleRule;
-
-import java.util.Optional;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider;
 
 /**
- * Single index reviser.
+ * OpenGauss object uniqueness level provider.
  */
-public final class SingleIndexReviser implements IndexReviser<SingleRule> {
+public class OpenGaussObjectUniquenessLevelProvider implements 
DialectObjectUniquenessLevelProvider {
+    
+    @Override
+    public UniquenessLevel getIndexUniquenessLevel() {
+        return UniquenessLevel.SCHEMA_LEVEL;
+    }
     
     @Override
-    public Optional<IndexMetaData> revise(final String tableName, final 
IndexMetaData originalMetaData, final SingleRule singleRule) {
-        IndexMetaData result = new 
IndexMetaData(IndexMetaDataUtils.getLogicIndexName(originalMetaData.getName(), 
tableName));
-        result.getColumns().addAll(originalMetaData.getColumns());
-        result.setUnique(originalMetaData.isUnique());
-        return Optional.of(result);
+    public String getDatabaseType() {
+        return "openGauss";
     }
 }
diff --git 
a/infra/database/type/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider
 
b/infra/database/type/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider
new file mode 100644
index 00000000000..3280bf5e302
--- /dev/null
+++ 
b/infra/database/type/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+org.apache.shardingsphere.infra.database.opengauss.metadata.database.object.OpenGaussObjectUniquenessLevelProvider
diff --git 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviserTest.java
 
b/infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/object/OpenGaussObjectUniquenessLevelProviderTest.java
similarity index 51%
copy from 
kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviserTest.java
copy to 
infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/object/OpenGaussObjectUniquenessLevelProviderTest.java
index e1881ea7d27..084e83eeb50 100644
--- 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviserTest.java
+++ 
b/infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/object/OpenGaussObjectUniquenessLevelProviderTest.java
@@ -15,31 +15,25 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.single.metadata.reviser.index;
+package 
org.apache.shardingsphere.infra.database.opengauss.metadata.database.object;
 
-import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMetaData;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider.UniquenessLevel;
+import 
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.junit.jupiter.api.Test;
 
-import java.util.Optional;
-
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
-class SingleIndexReviserTest {
+class OpenGaussObjectUniquenessLevelProviderTest {
+    
+    private final DialectObjectUniquenessLevelProvider uniquenessLevelProvider 
=
+            
DatabaseTypedSPILoader.getService(DialectObjectUniquenessLevelProvider.class, 
TypedSPILoader.getService(DatabaseType.class, "openGauss"));
     
     @Test
-    void assertReviserReturnsRevisedIndex() {
-        IndexMetaData originalMetaData = new 
IndexMetaData("test_idx_tableName");
-        originalMetaData.getColumns().add("column1");
-        originalMetaData.getColumns().add("column2");
-        originalMetaData.setUnique(true);
-        SingleIndexReviser reviser = new SingleIndexReviser();
-        Optional<IndexMetaData> optionalRevised = reviser.revise("tableName", 
originalMetaData, null);
-        assertTrue(optionalRevised.isPresent());
-        IndexMetaData actual = optionalRevised.get();
-        assertThat(originalMetaData.isUnique(), is(actual.isUnique()));
-        assertThat(originalMetaData.getColumns(), is(actual.getColumns()));
-        assertThat("test_idx", is(actual.getName()));
+    void assertGetIndexUniquenessLevel() {
+        assertThat(uniquenessLevelProvider.getIndexUniquenessLevel(), 
is(UniquenessLevel.SCHEMA_LEVEL));
     }
 }
diff --git 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviser.java
 
b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/object/OracleObjectUniquenessLevelProvider.java
similarity index 50%
copy from 
kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviser.java
copy to 
infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/object/OracleObjectUniquenessLevelProvider.java
index d7bce6da8d6..a95200361eb 100644
--- 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviser.java
+++ 
b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/object/OracleObjectUniquenessLevelProvider.java
@@ -15,25 +15,22 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.single.metadata.reviser.index;
+package 
org.apache.shardingsphere.infra.database.oracle.metadata.database.object;
 
-import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMetaData;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.index.IndexReviser;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDataUtils;
-import org.apache.shardingsphere.single.rule.SingleRule;
-
-import java.util.Optional;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider;
 
 /**
- * Single index reviser.
+ * Oracle object uniqueness level provider.
  */
-public final class SingleIndexReviser implements IndexReviser<SingleRule> {
+public class OracleObjectUniquenessLevelProvider implements 
DialectObjectUniquenessLevelProvider {
+    
+    @Override
+    public UniquenessLevel getIndexUniquenessLevel() {
+        return UniquenessLevel.SCHEMA_LEVEL;
+    }
     
     @Override
-    public Optional<IndexMetaData> revise(final String tableName, final 
IndexMetaData originalMetaData, final SingleRule singleRule) {
-        IndexMetaData result = new 
IndexMetaData(IndexMetaDataUtils.getLogicIndexName(originalMetaData.getName(), 
tableName));
-        result.getColumns().addAll(originalMetaData.getColumns());
-        result.setUnique(originalMetaData.isUnique());
-        return Optional.of(result);
+    public String getDatabaseType() {
+        return "Oracle";
     }
 }
diff --git 
a/infra/database/type/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider
 
b/infra/database/type/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider
new file mode 100644
index 00000000000..fa2003b0f9f
--- /dev/null
+++ 
b/infra/database/type/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+org.apache.shardingsphere.infra.database.oracle.metadata.database.object.OracleObjectUniquenessLevelProvider
diff --git 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviserTest.java
 
b/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/object/OracleObjectUniquenessLevelProviderTest.java
similarity index 51%
copy from 
kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviserTest.java
copy to 
infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/object/OracleObjectUniquenessLevelProviderTest.java
index e1881ea7d27..c123039bce3 100644
--- 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviserTest.java
+++ 
b/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/object/OracleObjectUniquenessLevelProviderTest.java
@@ -15,31 +15,25 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.single.metadata.reviser.index;
+package 
org.apache.shardingsphere.infra.database.oracle.metadata.database.object;
 
-import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMetaData;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider.UniquenessLevel;
+import 
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.junit.jupiter.api.Test;
 
-import java.util.Optional;
-
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
-class SingleIndexReviserTest {
+class OracleObjectUniquenessLevelProviderTest {
+    
+    private final DialectObjectUniquenessLevelProvider uniquenessLevelProvider 
=
+            
DatabaseTypedSPILoader.getService(DialectObjectUniquenessLevelProvider.class, 
TypedSPILoader.getService(DatabaseType.class, "Oracle"));
     
     @Test
-    void assertReviserReturnsRevisedIndex() {
-        IndexMetaData originalMetaData = new 
IndexMetaData("test_idx_tableName");
-        originalMetaData.getColumns().add("column1");
-        originalMetaData.getColumns().add("column2");
-        originalMetaData.setUnique(true);
-        SingleIndexReviser reviser = new SingleIndexReviser();
-        Optional<IndexMetaData> optionalRevised = reviser.revise("tableName", 
originalMetaData, null);
-        assertTrue(optionalRevised.isPresent());
-        IndexMetaData actual = optionalRevised.get();
-        assertThat(originalMetaData.isUnique(), is(actual.isUnique()));
-        assertThat(originalMetaData.getColumns(), is(actual.getColumns()));
-        assertThat("test_idx", is(actual.getName()));
+    void assertGetIndexUniquenessLevel() {
+        assertThat(uniquenessLevelProvider.getIndexUniquenessLevel(), 
is(UniquenessLevel.SCHEMA_LEVEL));
     }
 }
diff --git 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviser.java
 
b/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/object/PostgreSQLObjectUniquenessLevelProvider.java
similarity index 50%
copy from 
kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviser.java
copy to 
infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/object/PostgreSQLObjectUniquenessLevelProvider.java
index d7bce6da8d6..fd3fc587994 100644
--- 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviser.java
+++ 
b/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/object/PostgreSQLObjectUniquenessLevelProvider.java
@@ -15,25 +15,22 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.single.metadata.reviser.index;
+package 
org.apache.shardingsphere.infra.database.postgresql.metadata.database.object;
 
-import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMetaData;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.index.IndexReviser;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDataUtils;
-import org.apache.shardingsphere.single.rule.SingleRule;
-
-import java.util.Optional;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider;
 
 /**
- * Single index reviser.
+ * PostgreSQL object uniqueness level provider.
  */
-public final class SingleIndexReviser implements IndexReviser<SingleRule> {
+public class PostgreSQLObjectUniquenessLevelProvider implements 
DialectObjectUniquenessLevelProvider {
+    
+    @Override
+    public UniquenessLevel getIndexUniquenessLevel() {
+        return UniquenessLevel.SCHEMA_LEVEL;
+    }
     
     @Override
-    public Optional<IndexMetaData> revise(final String tableName, final 
IndexMetaData originalMetaData, final SingleRule singleRule) {
-        IndexMetaData result = new 
IndexMetaData(IndexMetaDataUtils.getLogicIndexName(originalMetaData.getName(), 
tableName));
-        result.getColumns().addAll(originalMetaData.getColumns());
-        result.setUnique(originalMetaData.isUnique());
-        return Optional.of(result);
+    public String getDatabaseType() {
+        return "PostgreSQL";
     }
 }
diff --git 
a/infra/database/type/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider
 
b/infra/database/type/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider
new file mode 100644
index 00000000000..041d5f195c6
--- /dev/null
+++ 
b/infra/database/type/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+org.apache.shardingsphere.infra.database.postgresql.metadata.database.object.PostgreSQLObjectUniquenessLevelProvider
diff --git 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviserTest.java
 
b/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/object/PostgreSQLObjectUniquenessLevelProviderTest.java
similarity index 51%
copy from 
kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviserTest.java
copy to 
infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/object/PostgreSQLObjectUniquenessLevelProviderTest.java
index e1881ea7d27..9fbdd5be9e6 100644
--- 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviserTest.java
+++ 
b/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/object/PostgreSQLObjectUniquenessLevelProviderTest.java
@@ -15,31 +15,25 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.single.metadata.reviser.index;
+package 
org.apache.shardingsphere.infra.database.postgresql.metadata.database.object;
 
-import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMetaData;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider.UniquenessLevel;
+import 
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.junit.jupiter.api.Test;
 
-import java.util.Optional;
-
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
-class SingleIndexReviserTest {
+class PostgreSQLObjectUniquenessLevelProviderTest {
+    
+    private final DialectObjectUniquenessLevelProvider uniquenessLevelProvider 
=
+            
DatabaseTypedSPILoader.getService(DialectObjectUniquenessLevelProvider.class, 
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"));
     
     @Test
-    void assertReviserReturnsRevisedIndex() {
-        IndexMetaData originalMetaData = new 
IndexMetaData("test_idx_tableName");
-        originalMetaData.getColumns().add("column1");
-        originalMetaData.getColumns().add("column2");
-        originalMetaData.setUnique(true);
-        SingleIndexReviser reviser = new SingleIndexReviser();
-        Optional<IndexMetaData> optionalRevised = reviser.revise("tableName", 
originalMetaData, null);
-        assertTrue(optionalRevised.isPresent());
-        IndexMetaData actual = optionalRevised.get();
-        assertThat(originalMetaData.isUnique(), is(actual.isUnique()));
-        assertThat(originalMetaData.getColumns(), is(actual.getColumns()));
-        assertThat("test_idx", is(actual.getName()));
+    void assertGetIndexUniquenessLevel() {
+        assertThat(uniquenessLevelProvider.getIndexUniquenessLevel(), 
is(UniquenessLevel.SCHEMA_LEVEL));
     }
 }
diff --git 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviser.java
 
b/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/database/object/SQLServerObjectUniquenessLevelProvider.java
similarity index 50%
rename from 
kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviser.java
rename to 
infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/database/object/SQLServerObjectUniquenessLevelProvider.java
index d7bce6da8d6..57a6983e10f 100644
--- 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviser.java
+++ 
b/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/database/object/SQLServerObjectUniquenessLevelProvider.java
@@ -15,25 +15,22 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.single.metadata.reviser.index;
+package 
org.apache.shardingsphere.infra.database.sqlserver.metadata.database.object;
 
-import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMetaData;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.index.IndexReviser;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDataUtils;
-import org.apache.shardingsphere.single.rule.SingleRule;
-
-import java.util.Optional;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider;
 
 /**
- * Single index reviser.
+ * SQLServer object uniqueness level provider.
  */
-public final class SingleIndexReviser implements IndexReviser<SingleRule> {
+public class SQLServerObjectUniquenessLevelProvider implements 
DialectObjectUniquenessLevelProvider {
+    
+    @Override
+    public UniquenessLevel getIndexUniquenessLevel() {
+        return UniquenessLevel.TABLE_LEVEL;
+    }
     
     @Override
-    public Optional<IndexMetaData> revise(final String tableName, final 
IndexMetaData originalMetaData, final SingleRule singleRule) {
-        IndexMetaData result = new 
IndexMetaData(IndexMetaDataUtils.getLogicIndexName(originalMetaData.getName(), 
tableName));
-        result.getColumns().addAll(originalMetaData.getColumns());
-        result.setUnique(originalMetaData.isUnique());
-        return Optional.of(result);
+    public String getDatabaseType() {
+        return "SQLServer";
     }
 }
diff --git 
a/infra/database/type/sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider
 
b/infra/database/type/sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider
new file mode 100644
index 00000000000..2dc61dccbae
--- /dev/null
+++ 
b/infra/database/type/sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+org.apache.shardingsphere.infra.database.sqlserver.metadata.database.object.SQLServerObjectUniquenessLevelProvider
diff --git 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviserTest.java
 
b/infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/database/object/SQLServerObjectUniquenessLevelProviderTest.java
similarity index 51%
rename from 
kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviserTest.java
rename to 
infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/database/object/SQLServerObjectUniquenessLevelProviderTest.java
index e1881ea7d27..4707c52d18a 100644
--- 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/index/SingleIndexReviserTest.java
+++ 
b/infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/database/object/SQLServerObjectUniquenessLevelProviderTest.java
@@ -15,31 +15,25 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.single.metadata.reviser.index;
+package 
org.apache.shardingsphere.infra.database.sqlserver.metadata.database.object;
 
-import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMetaData;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.object.DialectObjectUniquenessLevelProvider.UniquenessLevel;
+import 
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.junit.jupiter.api.Test;
 
-import java.util.Optional;
-
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
-class SingleIndexReviserTest {
+class SQLServerObjectUniquenessLevelProviderTest {
+    
+    private final DialectObjectUniquenessLevelProvider uniquenessLevelProvider 
=
+            
DatabaseTypedSPILoader.getService(DialectObjectUniquenessLevelProvider.class, 
TypedSPILoader.getService(DatabaseType.class, "SQLServer"));
     
     @Test
-    void assertReviserReturnsRevisedIndex() {
-        IndexMetaData originalMetaData = new 
IndexMetaData("test_idx_tableName");
-        originalMetaData.getColumns().add("column1");
-        originalMetaData.getColumns().add("column2");
-        originalMetaData.setUnique(true);
-        SingleIndexReviser reviser = new SingleIndexReviser();
-        Optional<IndexMetaData> optionalRevised = reviser.revise("tableName", 
originalMetaData, null);
-        assertTrue(optionalRevised.isPresent());
-        IndexMetaData actual = optionalRevised.get();
-        assertThat(originalMetaData.isUnique(), is(actual.isUnique()));
-        assertThat(originalMetaData.getColumns(), is(actual.getColumns()));
-        assertThat("test_idx", is(actual.getName()));
+    void assertGetIndexUniquenessLevel() {
+        assertThat(uniquenessLevelProvider.getIndexUniquenessLevel(), 
is(UniquenessLevel.TABLE_LEVEL));
     }
 }
diff --git 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleMetaDataReviseEntry.java
 
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleMetaDataReviseEntry.java
index a850d235c25..d6297738b87 100644
--- 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleMetaDataReviseEntry.java
+++ 
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleMetaDataReviseEntry.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.single.metadata.reviser;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.MetaDataReviseEntry;
 import org.apache.shardingsphere.single.constant.SingleOrder;
 import 
org.apache.shardingsphere.single.metadata.reviser.constraint.SingleConstraintReviser;
-import 
org.apache.shardingsphere.single.metadata.reviser.index.SingleIndexReviser;
 import org.apache.shardingsphere.single.rule.SingleRule;
 
 import java.util.Optional;
@@ -30,11 +29,6 @@ import java.util.Optional;
  */
 public final class SingleMetaDataReviseEntry implements 
MetaDataReviseEntry<SingleRule> {
     
-    @Override
-    public Optional<SingleIndexReviser> getIndexReviser(final SingleRule rule, 
final String tableName) {
-        return Optional.of(new SingleIndexReviser());
-    }
-    
     @Override
     public Optional<SingleConstraintReviser> getConstraintReviser(final 
SingleRule rule, final String tableName) {
         return Optional.of(new SingleConstraintReviser());
diff --git 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/SingleMetaDataReviseEngineTest.java
 
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/SingleMetaDataReviseEngineTest.java
index d17344db367..4c3ca24865b 100644
--- 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/SingleMetaDataReviseEngineTest.java
+++ 
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/SingleMetaDataReviseEngineTest.java
@@ -60,7 +60,7 @@ class SingleMetaDataReviseEngineTest {
         Collection<ColumnMetaData> columns = Arrays.asList(new 
ColumnMetaData("id", Types.INTEGER, true, false, false, true, false, true),
                 new ColumnMetaData("name", Types.VARCHAR, false, false, false, 
true, false, false),
                 new ColumnMetaData("doc", Types.LONGVARCHAR, false, false, 
false, true, false, false));
-        Collection<IndexMetaData> indexMetaDataList = Arrays.asList(new 
IndexMetaData("id_" + TABLE_NAME), new IndexMetaData("idx_name_" + TABLE_NAME));
+        Collection<IndexMetaData> indexMetaDataList = Arrays.asList(new 
IndexMetaData("id"), new IndexMetaData("idx_name"));
         return new TableMetaData(TABLE_NAME, columns, indexMetaDataList, 
Collections.emptyList());
     }
 }
diff --git 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/SingleMetaDataReviseEntryTest.java
 
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/SingleMetaDataReviseEntryTest.java
index a197a724546..eac5b798a6b 100644
--- 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/SingleMetaDataReviseEntryTest.java
+++ 
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/reviser/SingleMetaDataReviseEntryTest.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.single.metadata.reviser;
 
 import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
 import 
org.apache.shardingsphere.single.metadata.reviser.constraint.SingleConstraintReviser;
-import 
org.apache.shardingsphere.single.metadata.reviser.index.SingleIndexReviser;
 import org.apache.shardingsphere.single.rule.SingleRule;
 import org.junit.jupiter.api.Test;
 
@@ -35,16 +34,6 @@ class SingleMetaDataReviseEntryTest {
     
     private final SingleMetaDataReviseEntry reviseEntry = new 
SingleMetaDataReviseEntry();
     
-    @Test
-    void assertGetIndexReviser() {
-        SingleRuleConfiguration ruleConfig = new SingleRuleConfiguration();
-        SingleRule rule = new SingleRule(ruleConfig, "test_database", null, 
new HashMap<>(), Collections.emptyList());
-        String tableName = "test_table";
-        Optional<SingleIndexReviser> indexReviser = 
reviseEntry.getIndexReviser(rule, tableName);
-        assertTrue(indexReviser.isPresent());
-        assertThat(indexReviser.get().getClass(), 
is(SingleIndexReviser.class));
-    }
-    
     @Test
     void assertGetConstraintReviser() {
         SingleRuleConfiguration ruleConfig = new SingleRuleConfiguration();
diff --git a/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/BaseRule.g4 
b/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/BaseRule.g4
index c69ef011b97..b9599f46c3d 100644
--- a/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/BaseRule.g4
+++ b/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/BaseRule.g4
@@ -979,7 +979,6 @@ jsonTableColumn
     | NESTED PATH? path COLUMNS
     ;
 
-
 jsonFunctionName
     : JSON_ARRAY | JSON_ARRAY_APPEND |  JSON_ARRAY_INSERT |  JSON_CONTAINS
     | JSON_CONTAINS_PATH | JSON_DEPTH | JSON_EXTRACT | JSON_INSERT | JSON_KEYS 
| JSON_LENGTH | JSON_MERGE | JSON_MERGE_PATCH
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/db/data/actual/init-sql/h2/01-actual-init.sql
 
b/test/e2e/sql/src/test/resources/env/scenario/db/data/actual/init-sql/h2/01-actual-init.sql
index a8fdb8c5338..79c02ec21a9 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/db/data/actual/init-sql/h2/01-actual-init.sql
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/db/data/actual/init-sql/h2/01-actual-init.sql
@@ -25,4 +25,4 @@ CREATE TABLE t_order_item (item_id BIGINT PRIMARY KEY, 
order_id BIGINT NOT NULL,
 CREATE TABLE t_product_category (category_id INT PRIMARY KEY, category_name 
VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level TINYINT NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE t_country (country_id SMALLINT PRIMARY KEY, country_name 
VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT NULL);
 
-CREATE INDEX order_index_t_order ON t_order (order_id);
+CREATE INDEX order_index ON t_order (order_id);
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/db/data/actual/init-sql/mysql/01-actual-init.sql
 
b/test/e2e/sql/src/test/resources/env/scenario/db/data/actual/init-sql/mysql/01-actual-init.sql
index 4f204fd42a3..ae1f7965b83 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/db/data/actual/init-sql/mysql/01-actual-init.sql
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/db/data/actual/init-sql/mysql/01-actual-init.sql
@@ -46,7 +46,7 @@ CREATE TABLE db_0.t_user (user_id INT PRIMARY KEY, user_name 
VARCHAR(50) NOT NUL
 CREATE TABLE db_0.t_product (product_id INT PRIMARY KEY, product_name 
VARCHAR(50) NOT NULL, category_id INT NOT NULL, price DECIMAL NOT NULL, status 
VARCHAR(50) NOT NULL, creation_date DATE NOT NULL);
 CREATE TABLE db_0.t_product_category (category_id INT PRIMARY KEY, 
category_name VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level TINYINT NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE db_0.t_country (country_id SMALLINT PRIMARY KEY, country_name 
VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order ON db_0.t_order (order_id);
+CREATE INDEX order_index ON db_0.t_order (order_id);
 
 CREATE TABLE db_1.t_order (order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT, remark VARCHAR(50) NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_1.t_order_item (item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
@@ -54,52 +54,52 @@ CREATE TABLE db_1.t_merchant (merchant_id INT PRIMARY KEY, 
country_id SMALLINT N
 CREATE TABLE db_1.t_product_detail (detail_id INT PRIMARY KEY, product_id INT 
NOT NULL, description VARCHAR(50) NOT NULL, creation_date DATE NOT NULL);
 CREATE TABLE db_1.t_product_category (category_id INT PRIMARY KEY, 
category_name VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level TINYINT NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE db_1.t_country (country_id SMALLINT PRIMARY KEY, country_name 
VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order ON db_1.t_order (order_id);
+CREATE INDEX order_index ON db_1.t_order (order_id);
 
 CREATE TABLE db_2.t_order (order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT, remark VARCHAR(50) NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_2.t_order_item (item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_2.t_product_category (category_id INT PRIMARY KEY, 
category_name VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level TINYINT NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE db_2.t_country (country_id SMALLINT PRIMARY KEY, country_name 
VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order ON db_2.t_order (order_id);
+CREATE INDEX order_index ON db_2.t_order (order_id);
 
 CREATE TABLE db_3.t_order (order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT, remark VARCHAR(50) NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_3.t_order_item (item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_3.t_product_category (category_id INT PRIMARY KEY, 
category_name VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level TINYINT NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE db_3.t_country (country_id SMALLINT PRIMARY KEY, country_name 
VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order ON db_3.t_order (order_id);
+CREATE INDEX order_index ON db_3.t_order (order_id);
 
 CREATE TABLE db_4.t_order (order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT, remark VARCHAR(50) NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_4.t_order_item (item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_4.t_product_category (category_id INT PRIMARY KEY, 
category_name VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level TINYINT NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE db_4.t_country (country_id SMALLINT PRIMARY KEY, country_name 
VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order ON db_4.t_order (order_id);
+CREATE INDEX order_index ON db_4.t_order (order_id);
 
 CREATE TABLE db_5.t_order (order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT, remark VARCHAR(50) NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_5.t_order_item (item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_5.t_product_category (category_id INT PRIMARY KEY, 
category_name VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level TINYINT NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE db_5.t_country (country_id SMALLINT PRIMARY KEY, country_name 
VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order ON db_5.t_order (order_id);
+CREATE INDEX order_index ON db_5.t_order (order_id);
 
 CREATE TABLE db_6.t_order (order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT, remark VARCHAR(50) NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_6.t_order_item (item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_6.t_product_category (category_id INT PRIMARY KEY, 
category_name VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level TINYINT NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE db_6.t_country (country_id SMALLINT PRIMARY KEY, country_name 
VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order ON db_6.t_order (order_id);
+CREATE INDEX order_index ON db_6.t_order (order_id);
 
 CREATE TABLE db_7.t_order (order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT, remark VARCHAR(50) NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_7.t_order_item (item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_7.t_product_category (category_id INT PRIMARY KEY, 
category_name VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level TINYINT NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE db_7.t_country (country_id SMALLINT PRIMARY KEY, country_name 
VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order ON db_7.t_order (order_id);
+CREATE INDEX order_index ON db_7.t_order (order_id);
 
 CREATE TABLE db_8.t_order (order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT, remark VARCHAR(50) NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_8.t_order_item (item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_8.t_product_category (category_id INT PRIMARY KEY, 
category_name VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level TINYINT NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE db_8.t_country (country_id SMALLINT PRIMARY KEY, country_name 
VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order ON db_8.t_order (order_id);
+CREATE INDEX order_index ON db_8.t_order (order_id);
 
 CREATE TABLE db_9.t_order (order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT, remark VARCHAR(50) NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_9.t_order_item (item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE db_9.t_product_category (category_id INT PRIMARY KEY, 
category_name VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level TINYINT NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE db_9.t_country (country_id SMALLINT PRIMARY KEY, country_name 
VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order ON db_9.t_order (order_id);
+CREATE INDEX order_index ON db_9.t_order (order_id);
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/db/data/expected/init-sql/h2/01-expected-init.sql
 
b/test/e2e/sql/src/test/resources/env/scenario/db/data/expected/init-sql/h2/01-expected-init.sql
index b5d9380d446..98ff33c2e45 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/db/data/expected/init-sql/h2/01-expected-init.sql
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/db/data/expected/init-sql/h2/01-expected-init.sql
@@ -33,4 +33,4 @@ CREATE TABLE t_product_detail (detail_id INT PRIMARY KEY, 
product_id INT NOT NUL
 CREATE TABLE t_product_category (category_id INT PRIMARY KEY, category_name 
VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level TINYINT NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE t_country (country_id SMALLINT PRIMARY KEY, country_name 
VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT NULL);
 
-CREATE INDEX order_index_t_order ON t_order (order_id);
+CREATE INDEX order_index ON t_order (order_id);
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/db/data/expected/init-sql/mysql/01-expected-init.sql
 
b/test/e2e/sql/src/test/resources/env/scenario/db/data/expected/init-sql/mysql/01-expected-init.sql
index 1f910f32271..2ed8d54b4cb 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/db/data/expected/init-sql/mysql/01-expected-init.sql
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/db/data/expected/init-sql/mysql/01-expected-init.sql
@@ -30,4 +30,4 @@ CREATE TABLE expected_dataset.t_product_detail (detail_id INT 
PRIMARY KEY, produ
 CREATE TABLE expected_dataset.t_product_category (category_id INT PRIMARY KEY, 
category_name VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level TINYINT NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE expected_dataset.t_country (country_id SMALLINT PRIMARY KEY, 
country_name VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT 
NULL);
 
-CREATE INDEX order_index_t_order ON expected_dataset.t_order (order_id);
+CREATE INDEX order_index ON expected_dataset.t_order (order_id);
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/db/data/expected/init-sql/sqlserver/01-expected-init.sql
 
b/test/e2e/sql/src/test/resources/env/scenario/db/data/expected/init-sql/sqlserver/01-expected-init.sql
index 05e5390a48d..76b2b8b1f6b 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/db/data/expected/init-sql/sqlserver/01-expected-init.sql
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/db/data/expected/init-sql/sqlserver/01-expected-init.sql
@@ -27,4 +27,4 @@ CREATE TABLE expected_dataset.t_product_detail (detail_id INT 
PRIMARY KEY, produ
 CREATE TABLE expected_dataset.t_product_category (category_id INT PRIMARY KEY, 
category_name VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level TINYINT NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE expected_dataset.t_country (country_id SMALLINT PRIMARY KEY, 
country_name VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT 
NULL);
 
-CREATE INDEX order_index_t_order ON expected_dataset.t_order (order_id);
+CREATE INDEX order_index ON expected_dataset.t_order (order_id);
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/data/actual/init-sql/h2/01-actual-init.sql
 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/data/actual/init-sql/h2/01-actual-init.sql
index d6e0a5005b0..afefb856ec1 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/data/actual/init-sql/h2/01-actual-init.sql
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/data/actual/init-sql/h2/01-actual-init.sql
@@ -38,40 +38,40 @@ DROP TABLE IF EXISTS t_order_item_9;
 
 CREATE TABLE t_order_0(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE t_order_item_0(item_id BIGINT PRIMARY KEY, order_id BIGINT NOT 
NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_0 ON t_order_0 (order_id);
+CREATE INDEX order_index ON t_order_0 (order_id);
 
 CREATE TABLE t_order_1(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE t_order_item_1(item_id BIGINT PRIMARY KEY, order_id BIGINT NOT 
NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_1 ON t_order_1 (order_id);
+CREATE INDEX order_index ON t_order_1 (order_id);
 
 CREATE TABLE t_order_2(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE t_order_item_2(item_id BIGINT PRIMARY KEY, order_id BIGINT NOT 
NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_2 ON t_order_2 (order_id);
+CREATE INDEX order_index ON t_order_2 (order_id);
 
 CREATE TABLE t_order_3(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE t_order_item_3(item_id BIGINT PRIMARY KEY, order_id BIGINT NOT 
NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_3 ON t_order_3 (order_id);
+CREATE INDEX order_index ON t_order_3 (order_id);
 
 CREATE TABLE t_order_4(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE t_order_item_4(item_id BIGINT PRIMARY KEY, order_id BIGINT NOT 
NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_4 ON t_order_4 (order_id);
+CREATE INDEX order_index ON t_order_4 (order_id);
 
 CREATE TABLE t_order_5(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE t_order_item_5(item_id BIGINT PRIMARY KEY, order_id BIGINT NOT 
NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_5 ON t_order_5 (order_id);
+CREATE INDEX order_index ON t_order_5 (order_id);
 
 CREATE TABLE t_order_6(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE t_order_item_6(item_id BIGINT PRIMARY KEY, order_id BIGINT NOT 
NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_6 ON t_order_6 (order_id);
+CREATE INDEX order_index ON t_order_6 (order_id);
 
 CREATE TABLE t_order_7(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE t_order_item_7(item_id BIGINT PRIMARY KEY, order_id BIGINT NOT 
NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_7 ON t_order_7 (order_id);
+CREATE INDEX order_index ON t_order_7 (order_id);
 
 CREATE TABLE t_order_8(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE t_order_item_8(item_id BIGINT PRIMARY KEY, order_id BIGINT NOT 
NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_8 ON t_order_8 (order_id);
+CREATE INDEX order_index ON t_order_8 (order_id);
 
 CREATE TABLE t_order_9(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE t_order_item_9(item_id BIGINT PRIMARY KEY, order_id BIGINT NOT 
NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_9 ON t_order_9 (order_id);
+CREATE INDEX order_index ON t_order_9 (order_id);
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/data/actual/init-sql/mysql/01-actual-init.sql
 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/data/actual/init-sql/mysql/01-actual-init.sql
index c0d50be3903..a1c4cd63231 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/data/actual/init-sql/mysql/01-actual-init.sql
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/data/actual/init-sql/mysql/01-actual-init.sql
@@ -24,43 +24,43 @@ CREATE DATABASE tbl;
 
 CREATE TABLE tbl.t_order_0(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE tbl.t_order_item_0(item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_0 ON tbl.t_order_0 (order_id);
+CREATE INDEX order_index ON tbl.t_order_0 (order_id);
 
 CREATE TABLE tbl.t_order_1(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE tbl.t_order_item_1(item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_1 ON tbl.t_order_1 (order_id);
+CREATE INDEX order_index ON tbl.t_order_1 (order_id);
 
 CREATE TABLE tbl.t_order_2(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE tbl.t_order_item_2(item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_2 ON tbl.t_order_2 (order_id);
+CREATE INDEX order_index ON tbl.t_order_2 (order_id);
 
 CREATE TABLE tbl.t_order_3(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE tbl.t_order_item_3(item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_3 ON tbl.t_order_3 (order_id);
+CREATE INDEX order_index ON tbl.t_order_3 (order_id);
 
 CREATE TABLE tbl.t_order_4(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE tbl.t_order_item_4(item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_4 ON tbl.t_order_4 (order_id);
+CREATE INDEX order_index ON tbl.t_order_4 (order_id);
 
 CREATE TABLE tbl.t_order_5(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE tbl.t_order_item_5(item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_5 ON tbl.t_order_5 (order_id);
+CREATE INDEX order_index ON tbl.t_order_5 (order_id);
 
 CREATE TABLE tbl.t_order_6(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE tbl.t_order_item_6(item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_6 ON tbl.t_order_6 (order_id);
+CREATE INDEX order_index ON tbl.t_order_6 (order_id);
 
 CREATE TABLE tbl.t_order_7(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE tbl.t_order_item_7(item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_7 ON tbl.t_order_7 (order_id);
+CREATE INDEX order_index ON tbl.t_order_7 (order_id);
 
 CREATE TABLE tbl.t_order_8(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE tbl.t_order_item_8(item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_8 ON tbl.t_order_8 (order_id);
+CREATE INDEX order_index ON tbl.t_order_8 (order_id);
 
 CREATE TABLE tbl.t_order_9(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, 
status VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT 
NULL, creation_date DATE NOT NULL);
 CREATE TABLE tbl.t_order_item_9(item_id BIGINT PRIMARY KEY, order_id BIGINT 
NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
-CREATE INDEX order_index_t_order_9 ON tbl.t_order_9 (order_id);
+CREATE INDEX order_index ON tbl.t_order_9 (order_id);
 
 CREATE TABLE tbl.t_product_0 (product_id INT PRIMARY KEY, product_name 
VARCHAR(50) NOT NULL, category_id INT NOT NULL, price DECIMAL NOT NULL, status 
VARCHAR(50) NOT NULL, creation_date DATE NOT NULL);
 CREATE TABLE tbl.t_product_1 (product_id INT PRIMARY KEY, product_name 
VARCHAR(50) NOT NULL, category_id INT NOT NULL, price DECIMAL NOT NULL, status 
VARCHAR(50) NOT NULL, creation_date DATE NOT NULL);
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/data/expected/init-sql/h2/01-expected-init.sql
 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/data/expected/init-sql/h2/01-expected-init.sql
index 58772a06083..be2b5dda9ad 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/data/expected/init-sql/h2/01-expected-init.sql
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/data/expected/init-sql/h2/01-expected-init.sql
@@ -21,4 +21,4 @@ DROP TABLE IF EXISTS t_order_item;
 CREATE TABLE t_order(order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, status 
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL, 
creation_date DATE NOT NULL);
 CREATE TABLE t_order_item(item_id BIGINT PRIMARY KEY, order_id BIGINT NOT 
NULL, user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, 
creation_date DATE NOT NULL);
 
-CREATE INDEX order_index_t_order ON t_order (order_id);
+CREATE INDEX order_index ON t_order (order_id);
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/data/expected/init-sql/mysql/01-expected-init.sql
 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/data/expected/init-sql/mysql/01-expected-init.sql
index 574bf938361..804691e1f52 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/data/expected/init-sql/mysql/01-expected-init.sql
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/data/expected/init-sql/mysql/01-expected-init.sql
@@ -25,4 +25,4 @@ CREATE TABLE expected_dataset.t_order(order_id BIGINT PRIMARY 
KEY, user_id INT N
 CREATE TABLE expected_dataset.t_order_item(item_id BIGINT PRIMARY KEY, 
order_id BIGINT NOT NULL, user_id INT NOT NULL, product_id INT NOT NULL, 
quantity INT NOT NULL, creation_date DATE NOT NULL);
 CREATE TABLE expected_dataset.t_product (product_id INT PRIMARY KEY, 
product_name VARCHAR(50) NOT NULL, category_id INT NOT NULL, price DECIMAL NOT 
NULL, status VARCHAR(50) NOT NULL, creation_date DATE NOT NULL);
 
-CREATE INDEX order_index_t_order ON expected_dataset.t_order (order_id);
+CREATE INDEX order_index ON expected_dataset.t_order (order_id);
diff --git 
a/test/it/rewriter/src/test/resources/scenario/sharding/case/ddl/index.xml 
b/test/it/rewriter/src/test/resources/scenario/sharding/case/ddl/index.xml
index e2ac3063cc3..96a8fa414f8 100644
--- a/test/it/rewriter/src/test/resources/scenario/sharding/case/ddl/index.xml
+++ b/test/it/rewriter/src/test/resources/scenario/sharding/case/ddl/index.xml
@@ -17,7 +17,13 @@
   -->
 
 <rewrite-assertions yaml-rule="scenario/sharding/config/sharding-rule.yaml">
-    <rewrite-assertion id="create_index" db-types="MySQL,PostgreSQL,openGauss">
+    <rewrite-assertion id="create_index_for_table_uniqueness_level_db" 
db-types="MySQL">
+        <input sql="CREATE INDEX status_idx ON t_account (status)" />
+        <output sql="CREATE INDEX status_idx ON t_account_0 (status)" />
+        <output sql="CREATE INDEX status_idx ON t_account_1 (status)" />
+    </rewrite-assertion>
+    
+    <rewrite-assertion id="create_index_for_schema_uniqueness_level_db" 
db-types="PostgreSQL,openGauss">
         <input sql="CREATE INDEX status_idx ON t_account (status)" />
         <output sql="CREATE INDEX status_idx_t_account_0 ON t_account_0 
(status)" />
         <output sql="CREATE INDEX status_idx_t_account_1 ON t_account_1 
(status)" />
@@ -29,75 +35,75 @@
         <output sql="CREATE INDEX status_idx_t_account_1 ON public.t_account_1 
(status)" />
     </rewrite-assertion>
     
-    <rewrite-assertion 
id="create_index_without_index_name_with_single_column_for_postgresql" 
db-types="PostgreSQL,openGauss">
+    <rewrite-assertion id="create_index_without_index_name_with_single_column" 
db-types="PostgreSQL,openGauss">
         <input sql="CREATE INDEX ON t_account (status)" />
         <output sql="CREATE INDEX status_idx_t_account_0 ON t_account_0 
(status)" />
         <output sql="CREATE INDEX status_idx_t_account_1 ON t_account_1 
(status)" />
     </rewrite-assertion>
 
-    <rewrite-assertion 
id="create_index_without_index_name_with_single_column_with_schema_for_postgresql"
 db-types="PostgreSQL,openGauss">
+    <rewrite-assertion 
id="create_index_without_index_name_with_single_column_with_schema" 
db-types="PostgreSQL,openGauss">
         <input sql="CREATE INDEX ON public.t_account (status)" />
         <output sql="CREATE INDEX status_idx_t_account_0 ON public.t_account_0 
(status)" />
         <output sql="CREATE INDEX status_idx_t_account_1 ON public.t_account_1 
(status)" />
     </rewrite-assertion>
 
-    <rewrite-assertion 
id="create_index_without_index_name_with_multi_column_for_postgresql" 
db-types="PostgreSQL,openGauss">
+    <rewrite-assertion id="create_index_without_index_name_with_multi_column" 
db-types="PostgreSQL,openGauss">
         <input sql="CREATE INDEX ON t_account (status, account_id)" />
         <output sql="CREATE INDEX status_account_id_idx_t_account_0 ON 
t_account_0 (status, account_id)" />
         <output sql="CREATE INDEX status_account_id_idx_t_account_1 ON 
t_account_1 (status, account_id)" />
     </rewrite-assertion>
 
-    <rewrite-assertion 
id="create_index_without_index_name_with_multi_column_with_schema_for_postgresql"
 db-types="PostgreSQL,openGauss">
+    <rewrite-assertion 
id="create_index_without_index_name_with_multi_column_with_schema" 
db-types="PostgreSQL,openGauss">
         <input sql="CREATE INDEX ON public.t_account (status, account_id)" />
         <output sql="CREATE INDEX status_account_id_idx_t_account_0 ON 
public.t_account_0 (status, account_id)" />
         <output sql="CREATE INDEX status_account_id_idx_t_account_1 ON 
public.t_account_1 (status, account_id)" />
     </rewrite-assertion>
 
-    <rewrite-assertion id="alter_index_rename_for_postgresql" 
db-types="PostgreSQL,openGauss">
+    <rewrite-assertion id="alter_index_rename" db-types="PostgreSQL,openGauss">
         <input sql="ALTER INDEX status_idx_exist RENAME TO status_idx_new" />
         <output sql="ALTER INDEX status_idx_exist_t_account_0 RENAME TO 
status_idx_new_t_account_0" />
         <output sql="ALTER INDEX status_idx_exist_t_account_1 RENAME TO 
status_idx_new_t_account_1" />
     </rewrite-assertion>
 
-    <rewrite-assertion id="alter_index_rename_with_schema_for_postgresql" 
db-types="PostgreSQL,openGauss">
+    <rewrite-assertion id="alter_index_rename_with_schema" 
db-types="PostgreSQL,openGauss">
         <input sql="ALTER INDEX public.status_idx_exist RENAME TO 
status_idx_new" />
         <output sql="ALTER INDEX public.status_idx_exist_t_account_0 RENAME TO 
status_idx_new_t_account_0" />
         <output sql="ALTER INDEX public.status_idx_exist_t_account_1 RENAME TO 
status_idx_new_t_account_1" />
     </rewrite-assertion>
     
-    <rewrite-assertion id="drop_index_for_mysql" db-types="MySQL">
+    <rewrite-assertion id="drop_index_for_table_uniqueness_level_db" 
db-types="MySQL">
         <input sql="DROP INDEX status_idx_exist ON t_account" />
-        <output sql="DROP INDEX status_idx_exist_t_account_0 ON t_account_0" />
-        <output sql="DROP INDEX status_idx_exist_t_account_1 ON t_account_1" />
+        <output sql="DROP INDEX status_idx_exist ON t_account_0" />
+        <output sql="DROP INDEX status_idx_exist ON t_account_1" />
     </rewrite-assertion>
     
-    <rewrite-assertion id="drop_index_with_single_table_for_mysql" 
db-types="MySQL">
+    <rewrite-assertion 
id="drop_index_with_single_table_for_table_uniqueness_level_db" 
db-types="MySQL">
         <input sql="DROP INDEX single_id_idx ON t_single" />
         <output sql="DROP INDEX single_id_idx ON t_single" />
     </rewrite-assertion>
     
-    <rewrite-assertion id="drop_index_with_broadcast_table_for_mysql" 
db-types="MySQL">
+    <rewrite-assertion 
id="drop_index_with_broadcast_table_for_table_uniqueness_level_db" 
db-types="MySQL">
         <input sql="DROP INDEX broadcast_id_idx ON t_config" />
         <output sql="DROP INDEX broadcast_id_idx ON t_config" />
     </rewrite-assertion>
     
-    <rewrite-assertion id="drop_index_for_postgresql" 
db-types="PostgreSQL,openGauss">
+    <rewrite-assertion id="drop_index_for_schema_uniqueness_level_db" 
db-types="PostgreSQL,openGauss">
         <input sql="DROP INDEX status_idx_exist" />
         <output sql="DROP INDEX status_idx_exist_t_account_0" />
         <output sql="DROP INDEX status_idx_exist_t_account_1" />
     </rewrite-assertion>
     
-    <rewrite-assertion id="drop_index_with_single_table_for_postgresql" 
db-types="PostgreSQL,openGauss">
+    <rewrite-assertion 
id="drop_index_with_single_table_for_schema_uniqueness_level_db" 
db-types="PostgreSQL,openGauss">
         <input sql="DROP INDEX single_id_idx" />
         <output sql="DROP INDEX single_id_idx" />
     </rewrite-assertion>
     
-    <rewrite-assertion id="drop_index_with_broadcast_table_for_postgresql" 
db-types="PostgreSQL,openGauss">
+    <rewrite-assertion 
id="drop_index_with_broadcast_table_for_schema_uniqueness_level_db" 
db-types="PostgreSQL,openGauss">
         <input sql="DROP INDEX broadcast_id_idx" />
         <output sql="DROP INDEX broadcast_id_idx" />
     </rewrite-assertion>
 
-    <rewrite-assertion id="drop_index_with_schema_for_postgresql" 
db-types="PostgreSQL,openGauss">
+    <rewrite-assertion 
id="drop_index_with_schema_for_schema_uniqueness_level_db" 
db-types="PostgreSQL,openGauss">
         <input sql="DROP INDEX public.status_idx_exist" />
         <output sql="DROP INDEX public.status_idx_exist_t_account_0" />
         <output sql="DROP INDEX public.status_idx_exist_t_account_1" />

Reply via email to