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" />