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

terrymanu 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 cf0af758685 Refine IndexReviser index name recovery contract (#38887)
cf0af758685 is described below

commit cf0af7586852de48cc4534b6b142dea3623678a2
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Jun 23 00:55:42 2026 +0800

    Refine IndexReviser index name recovery contract (#38887)
    
    * Update AGENTS.md
    
    * Refactor IndexReviser
    
    * Refactor IndexReviser
---
 .../metadata/reviser/index/EncryptIndexReviser.java   |  2 +-
 .../reviser/index/EncryptIndexReviserTest.java        |  4 ++--
 .../metadata/reviser/index/ShardingIndexReviser.java  | 18 +++++-------------
 .../reviser/index/ShardingIndexReviserTest.java       |  4 ++--
 .../schema/builder/GenericSchemaBuilderMaterial.java  | 13 ++-----------
 .../database/schema/reviser/index/IndexReviser.java   | 19 +++----------------
 .../schema/SchemaMetaDataReviseEngineTest.java        |  2 +-
 .../metadata/factory/MetaDataContextsFactoryTest.java |  6 +++---
 .../CreateTablePushDownMetaDataRefresherTest.java     | 16 ++++------------
 .../StandaloneMetaDataManagerPersistService.java      |  4 ++--
 10 files changed, 25 insertions(+), 63 deletions(-)

diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/reviser/index/EncryptIndexReviser.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/reviser/index/EncryptIndexReviser.java
index 5e042121f7e..d628f35e02c 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/reviser/index/EncryptIndexReviser.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/reviser/index/EncryptIndexReviser.java
@@ -38,7 +38,7 @@ public final class EncryptIndexReviser implements 
IndexReviser<EncryptRule> {
     
     @Override
     public Optional<IndexMetaData> revise(final String tableName, final 
IndexMetaData originalMetaData, final Collection<TableMetaData> 
originalTableMetaDataList,
-                                          final EncryptRule rule) {
+                                          final Collection<TableMetaData> 
indexNameRecoveryCandidateTableMetaDataList, final EncryptRule rule) {
         if (originalMetaData.getColumns().isEmpty()) {
             return Optional.empty();
         }
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/metadata/reviser/index/EncryptIndexReviserTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/metadata/reviser/index/EncryptIndexReviserTest.java
index 8101a8edfbd..4da039d16d1 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/metadata/reviser/index/EncryptIndexReviserTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/metadata/reviser/index/EncryptIndexReviserTest.java
@@ -39,13 +39,13 @@ class EncryptIndexReviserTest {
     @Test
     void assertReviseWithEmptyColumn() {
         assertFalse(new EncryptIndexReviser(mock(EncryptTable.class))
-                .revise("foo_tbl", new IndexMetaData("foo_idx"), 
Collections.emptyList(), mock(EncryptRule.class)).isPresent());
+                .revise("foo_tbl", new IndexMetaData("foo_idx"), 
Collections.emptyList(), Collections.emptyList(), 
mock(EncryptRule.class)).isPresent());
     }
     
     @Test
     void assertReviseWithColumns() {
         Optional<IndexMetaData> actual = new 
EncryptIndexReviser(mockEncryptTable())
-                .revise("foo_tbl", new IndexMetaData("foo_idx", 
Arrays.asList("cipher_col", "assisted_col", "other_col")), 
Collections.emptyList(), mock(EncryptRule.class));
+                .revise("foo_tbl", new IndexMetaData("foo_idx", 
Arrays.asList("cipher_col", "assisted_col", "other_col")), 
Collections.emptyList(), Collections.emptyList(), mock(EncryptRule.class));
         assertTrue(actual.isPresent());
         assertThat(actual.get().getName(), is("foo_idx"));
         assertThat(actual.get().getColumns(), is(new 
LinkedHashSet<>(Arrays.asList("col_1", "col_2", "other_col"))));
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 fad32a7b728..e946cc37552 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
@@ -42,20 +42,12 @@ public final class ShardingIndexReviser implements 
IndexReviser<ShardingRule> {
     
     @Override
     public Optional<IndexMetaData> revise(final String tableName, final 
IndexMetaData originalMetaData, final Collection<TableMetaData> 
originalTableMetaDataList,
-                                          final ShardingRule rule) {
-        return revise(tableName, originalMetaData, originalTableMetaDataList, 
Collections.emptyList(), rule);
-    }
-    
-    @Override
-    public Optional<IndexMetaData> revise(final String tableName, final 
IndexMetaData originalMetaData, final Collection<TableMetaData> 
originalTableMetaDataList,
-                                          final Collection<TableMetaData> 
schemaMetaDataRevisionCandidateTableMetaDataList, final ShardingRule rule) {
+                                          final Collection<TableMetaData> 
indexNameRecoveryCandidateTableMetaDataList, final ShardingRule rule) {
         if (shardingTable.getActualDataNodes().isEmpty()) {
             return Optional.empty();
         }
-        String actualTableName = tableName;
-        String logicIndexName = IndexMetaDataUtils.findGeneratedLogicIndexName(
-                originalMetaData.getName(), actualTableName,
-                findCandidateLogicIndexNames(originalMetaData, 
originalTableMetaDataList, 
schemaMetaDataRevisionCandidateTableMetaDataList)).orElse(originalMetaData.getName());
+        String logicIndexName = 
IndexMetaDataUtils.findGeneratedLogicIndexName(originalMetaData.getName(), 
tableName,
+                findCandidateLogicIndexNames(originalMetaData, 
originalTableMetaDataList, 
indexNameRecoveryCandidateTableMetaDataList)).orElse(originalMetaData.getName());
         IndexMetaData result = new IndexMetaData(
                 logicIndexName, originalMetaData.getColumns());
         result.setUnique(originalMetaData.isUnique());
@@ -63,7 +55,7 @@ public final class ShardingIndexReviser implements 
IndexReviser<ShardingRule> {
     }
     
     private Collection<String> findCandidateLogicIndexNames(final 
IndexMetaData originalMetaData, final Collection<TableMetaData> 
originalTableMetaDataList,
-                                                            final 
Collection<TableMetaData> schemaMetaDataRevisionCandidateTableMetaDataList) {
+                                                            final 
Collection<TableMetaData> indexNameRecoveryCandidateTableMetaDataList) {
         Collection<String> result = new LinkedHashSet<>();
         result.add(getGeneratedAnonymousIndexName(originalMetaData));
         for (TableMetaData eachTable : originalTableMetaDataList) {
@@ -71,7 +63,7 @@ public final class ShardingIndexReviser implements 
IndexReviser<ShardingRule> {
                 result.addAll(findCandidateLogicIndexNames(eachTable));
             }
         }
-        for (TableMetaData each : 
schemaMetaDataRevisionCandidateTableMetaDataList) {
+        for (TableMetaData each : indexNameRecoveryCandidateTableMetaDataList) 
{
             if (isLogicTable(each.getName())) {
                 
result.addAll(findCandidateLogicIndexNamesFromRevisionCandidate(each));
             }
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/reviser/index/ShardingIndexReviserTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/reviser/index/ShardingIndexReviserTest.java
index de6d13666e0..c4855749aae 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/reviser/index/ShardingIndexReviserTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/reviser/index/ShardingIndexReviserTest.java
@@ -46,7 +46,7 @@ class ShardingIndexReviserTest {
     
     @Test
     void assertReviseWithEmptyActualDataNode() {
-        assertThat(new 
ShardingIndexReviser(mock(ShardingTable.class)).revise("foo_tbl", new 
IndexMetaData("foo_idx"), Collections.emptyList(), mock(ShardingRule.class)),
+        assertThat(new 
ShardingIndexReviser(mock(ShardingTable.class)).revise("foo_tbl", new 
IndexMetaData("foo_idx"), Collections.emptyList(), Collections.emptyList(), 
mock(ShardingRule.class)),
                 is(Optional.empty()));
     }
     
@@ -148,7 +148,7 @@ class ShardingIndexReviserTest {
     
     private Optional<IndexMetaData> revise(final String tableName, final 
IndexMetaData originalMetaData, final TableMetaData... 
originalTableMetaDataList) {
         return new ShardingIndexReviser(mockShardingTable()).revise(tableName, 
originalMetaData,
-                0 == originalTableMetaDataList.length ? 
Collections.singleton(tableMetaData(tableName, originalMetaData)) : 
Arrays.asList(originalTableMetaDataList),
+                0 == originalTableMetaDataList.length ? 
Collections.singleton(tableMetaData(tableName, originalMetaData)) : 
Arrays.asList(originalTableMetaDataList), Collections.emptyList(),
                 mock(ShardingRule.class));
     }
     
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilderMaterial.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilderMaterial.java
index 19deec6a6fd..b9ee6ca48ad 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilderMaterial.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilderMaterial.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.infra.metadata.database.schema.builder;
 
 import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
@@ -31,6 +32,7 @@ import java.util.Map;
 /**
  * ShardingSphere schema builder material.
  */
+@RequiredArgsConstructor
 @Getter
 public final class GenericSchemaBuilderMaterial {
     
@@ -50,15 +52,4 @@ public final class GenericSchemaBuilderMaterial {
                                         final String defaultSchemaName, final 
DatabaseIdentifierContext identifierContext) {
         this(storageUnits, rules, props, defaultSchemaName, identifierContext, 
Collections.emptyList());
     }
-    
-    public GenericSchemaBuilderMaterial(final Map<String, StorageUnit> 
storageUnits, final Collection<ShardingSphereRule> rules, final 
ConfigurationProperties props,
-                                        final String defaultSchemaName, final 
DatabaseIdentifierContext identifierContext,
-                                        final Collection<ShardingSphereSchema> 
schemaMetaDataRevisionCandidateSchemas) {
-        this.storageUnits = storageUnits;
-        this.rules = rules;
-        this.props = props;
-        this.defaultSchemaName = defaultSchemaName;
-        this.identifierContext = identifierContext;
-        this.schemaMetaDataRevisionCandidateSchemas = 
schemaMetaDataRevisionCandidateSchemas;
-    }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/index/IndexReviser.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/index/IndexReviser.java
index 035a63aa4f5..2a2ff1d0b0d 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/index/IndexReviser.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/index/IndexReviser.java
@@ -37,23 +37,10 @@ public interface IndexReviser<T extends ShardingSphereRule> 
{
      * @param tableName table name
      * @param originalMetaData original index meta data
      * @param originalTableMetaDataList original table meta data list
-     * @param schemaMetaDataRevisionCandidateTableMetaDataList schema meta 
data revision candidate table meta data list
+     * @param indexNameRecoveryCandidateTableMetaDataList index name recovery 
candidate table meta data list
      * @param rule rule
      * @return revised index meta data
      */
-    default Optional<IndexMetaData> revise(final String tableName, final 
IndexMetaData originalMetaData, final Collection<TableMetaData> 
originalTableMetaDataList,
-                                           final Collection<TableMetaData> 
schemaMetaDataRevisionCandidateTableMetaDataList, final T rule) {
-        return revise(tableName, originalMetaData, originalTableMetaDataList, 
rule);
-    }
-    
-    /**
-     * Revise index meta data.
-     *
-     * @param tableName table name
-     * @param originalMetaData original index meta data
-     * @param originalTableMetaDataList original table meta data list
-     * @param rule rule
-     * @return revised index meta data
-     */
-    Optional<IndexMetaData> revise(String tableName, IndexMetaData 
originalMetaData, Collection<TableMetaData> originalTableMetaDataList, T rule);
+    Optional<IndexMetaData> revise(String tableName, IndexMetaData 
originalMetaData,
+                                   Collection<TableMetaData> 
originalTableMetaDataList, Collection<TableMetaData> 
indexNameRecoveryCandidateTableMetaDataList, T rule);
 }
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/schema/SchemaMetaDataReviseEngineTest.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/schema/SchemaMetaDataReviseEngineTest.java
index b6f23a3b4ba..ec6c637aa8c 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/schema/SchemaMetaDataReviseEngineTest.java
+++ 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/schema/SchemaMetaDataReviseEngineTest.java
@@ -90,7 +90,7 @@ class SchemaMetaDataReviseEngineTest {
         }
     }
     
-    @SuppressWarnings({"unchecked", "rawtypes"})
+    @SuppressWarnings("unchecked")
     @Test
     void 
assertRevisePassesSameSchemaRevisionCandidateTableMetaDataToIndexReviser() {
         TableMetaData actualTableMetaData = new TableMetaData("actual_tbl", 
Collections.emptyList(),
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/factory/MetaDataContextsFactoryTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/factory/MetaDataContextsFactoryTest.java
index d53d9f49e5e..34ebc381f6a 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/factory/MetaDataContextsFactoryTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/factory/MetaDataContextsFactoryTest.java
@@ -151,7 +151,7 @@ class MetaDataContextsFactoryTest {
     }
     
     @Test
-    void assertCreateBySwitchResourceFiltersStaleResources() throws 
SQLException {
+    void assertCreateBySwitchResourceFiltersStaleResources() {
         StorageNode staleNode = new StorageNode("stale_ds");
         StorageNode activeNode = new StorageNode("active_ds");
         Map<StorageNode, DataSource> currentStorageNodes = new 
LinkedHashMap<>(2, 1F);
@@ -180,7 +180,7 @@ class MetaDataContextsFactoryTest {
     }
     
     @Test
-    void assertCreateBySwitchResourceKeepsExistingNodesWhenNoNewDataSources() 
throws SQLException {
+    void assertCreateBySwitchResourceKeepsExistingNodesWhenNoNewDataSources() {
         ResourceMetaData resourceMetaData = 
createResourceMetaDataWithSingleUnit();
         ShardingSphereDatabase database =
                 new ShardingSphereDatabase("foo_db", databaseType, 
resourceMetaData, new RuleMetaData(Collections.emptyList()), 
Collections.emptyList(), new ConfigurationProperties(new Properties()));
@@ -195,7 +195,7 @@ class MetaDataContextsFactoryTest {
     }
     
     @Test
-    void assertCreateByAlterRuleKeepsPersistedSchemasWhenEnabled() throws 
SQLException {
+    void assertCreateByAlterRuleKeepsPersistedSchemasWhenEnabled() {
         ShardingSphereDatabase database = new ShardingSphereDatabase(
                 "foo_db", databaseType, 
createResourceMetaDataWithSingleUnit(), new 
RuleMetaData(Collections.emptyList()), Collections.emptyList(), new 
ConfigurationProperties(new Properties()));
         ShardingSphereMetaData metaData = new ShardingSphereMetaData(
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/table/CreateTablePushDownMetaDataRefresherTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/table/CreateTablePushDownMetaDataRefresherTest.java
index 19588f005ad..87d53ece219 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/table/CreateTablePushDownMetaDataRefresherTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/table/CreateTablePushDownMetaDataRefresherTest.java
@@ -57,7 +57,6 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Optional;
@@ -97,7 +96,7 @@ class CreateTablePushDownMetaDataRefresherTest {
         assertThat(persistService.getCreatedTable().getName(), is("Foo_Tbl"));
     }
     
-    @SuppressWarnings({"unchecked", "rawtypes"})
+    @SuppressWarnings("rawtypes")
     @Test
     void 
assertRefreshCreatedShardingTableRestoresTruncatedNamedIndexFromCreateTableStatementCandidate()
 throws SQLException {
         String logicTableName = "tbl";
@@ -297,16 +296,9 @@ class CreateTablePushDownMetaDataRefresherTest {
         
         @Override
         public Optional<IndexMetaData> revise(final String tableName, final 
IndexMetaData originalMetaData, final Collection<TableMetaData> 
originalTableMetaDataList,
-                                              final CreateTableCandidateRule 
rule) {
-            return revise(tableName, originalMetaData, 
originalTableMetaDataList, Collections.emptyList(), rule);
-        }
-        
-        @Override
-        public Optional<IndexMetaData> revise(final String tableName, final 
IndexMetaData originalMetaData, final Collection<TableMetaData> 
originalTableMetaDataList,
-                                              final Collection<TableMetaData> 
schemaMetaDataRevisionCandidateTableMetaDataList, final 
CreateTableCandidateRule rule) {
-            Collection<String> candidateIndexNames = 
schemaMetaDataRevisionCandidateTableMetaDataList.stream()
-                    .filter(each -> 
rule.logicTableName.equalsIgnoreCase(each.getName())).flatMap(each -> 
each.getIndexes().stream()).map(IndexMetaData::getName)
-                    .collect(Collectors.toCollection(LinkedHashSet::new));
+                                              final Collection<TableMetaData> 
indexNameRecoveryCandidateTableMetaDataList, final CreateTableCandidateRule 
rule) {
+            Collection<String> candidateIndexNames = 
indexNameRecoveryCandidateTableMetaDataList.stream()
+                    .filter(each -> 
rule.logicTableName.equalsIgnoreCase(each.getName())).flatMap(each -> 
each.getIndexes().stream()).map(IndexMetaData::getName).collect(Collectors.toSet());
             IndexMetaData result = new 
IndexMetaData(IndexMetaDataUtils.findGeneratedLogicIndexName(
                     originalMetaData.getName(), tableName, 
candidateIndexNames).orElse(originalMetaData.getName()), 
originalMetaData.getColumns());
             result.setUnique(originalMetaData.isUnique());
diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java
index f8ba591c4da..428cccb0462 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java
@@ -337,8 +337,8 @@ public final class StandaloneMetaDataManagerPersistService 
implements MetaDataMa
                 metaDataContexts.getMetaData().getProps(), new 
DatabaseTypeRegistry(database.getProtocolType()).getDefaultSchemaName(databaseName),
 database.getIdentifierContext(),
                 database.getAllSchemas());
         Collection<ShardingSphereSchema> schemas = new 
LinkedList<>(GenericSchemaBuilder.build(database.getProtocolType(), 
material).values());
-        return new ShardingSphereDatabase(database.getName(), 
database.getProtocolType(), database.getResourceMetaData(), 
database.getRuleMetaData(), schemas,
-                metaDataContexts.getMetaData().getProps());
+        return new ShardingSphereDatabase(database.getName(),
+                database.getProtocolType(), database.getResourceMetaData(), 
database.getRuleMetaData(), schemas, metaDataContexts.getMetaData().getProps());
     }
     
     private MetaDataContexts createMetaDataContextsWithRebuiltDatabase(final 
String databaseName, final MetaDataContexts metaDataContexts) {

Reply via email to