Copilot commented on code in PR #37486:
URL: https://github.com/apache/shardingsphere/pull/37486#discussion_r2643920367


##########
proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/refresh/RefreshTableMetaDataExecutorTest.java:
##########
@@ -0,0 +1,173 @@
+/*
+ * 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.proxy.backend.handler.distsql.ral.updatable.refresh;
+
+import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
+import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
+import 
org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import 
org.apache.shardingsphere.distsql.handler.engine.update.DistSQLUpdateExecutor;
+import 
org.apache.shardingsphere.distsql.statement.type.ral.updatable.RefreshTableMetaDataStatement;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.SchemaNotFoundException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.TableNotFoundException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.EmptyStorageUnitException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.MissingRequiredStorageUnitsException;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.junit.jupiter.api.Test;
+import org.mockito.MockedStatic;
+
+import java.util.Collections;
+import java.util.Optional;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+class RefreshTableMetaDataExecutorTest {
+    
+    private final DatabaseType databaseType = mock(DatabaseType.class);
+    
+    private final RefreshTableMetaDataExecutor executor = 
(RefreshTableMetaDataExecutor) 
TypedSPILoader.getService(DistSQLUpdateExecutor.class, 
RefreshTableMetaDataStatement.class);
+    
+    @Test
+    void assertExecuteUpdateWithReloadTableWithStorageUnit() {
+        ShardingSphereDatabase database = mockDatabase(true);
+        ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+        when(schema.containsTable("t_order")).thenReturn(true);
+        when(database.getSchema("logic_schema")).thenReturn(schema);
+        ContextManager contextManager = mock(ContextManager.class);
+        executor.setDatabase(database);
+        executor.executeUpdate(new RefreshTableMetaDataStatement("t_order", 
"ds_0", "logic_schema"), contextManager);
+        verify(contextManager).reloadTable(database, "logic_schema", "ds_0", 
"t_order");
+    }
+    
+    @Test
+    void assertExecuteUpdateWithReloadSchemaWithStorageUnit() {

Review Comment:
   The test method name "assertExecuteUpdateWithReloadSchemaWithStorageUnit" 
doesn't follow the clearer naming pattern. Consider renaming to 
"assertReloadSchemaWhenStorageUnitSpecified" to be more concise and consistent 
with test naming best practices.
   ```suggestion
       void assertReloadSchemaWhenStorageUnitSpecified() {
   ```



##########
proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/refresh/RefreshTableMetaDataExecutorTest.java:
##########
@@ -0,0 +1,173 @@
+/*
+ * 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.proxy.backend.handler.distsql.ral.updatable.refresh;
+
+import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
+import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
+import 
org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import 
org.apache.shardingsphere.distsql.handler.engine.update.DistSQLUpdateExecutor;
+import 
org.apache.shardingsphere.distsql.statement.type.ral.updatable.RefreshTableMetaDataStatement;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.SchemaNotFoundException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.TableNotFoundException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.EmptyStorageUnitException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.MissingRequiredStorageUnitsException;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.junit.jupiter.api.Test;
+import org.mockito.MockedStatic;
+
+import java.util.Collections;
+import java.util.Optional;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+class RefreshTableMetaDataExecutorTest {
+    
+    private final DatabaseType databaseType = mock(DatabaseType.class);
+    
+    private final RefreshTableMetaDataExecutor executor = 
(RefreshTableMetaDataExecutor) 
TypedSPILoader.getService(DistSQLUpdateExecutor.class, 
RefreshTableMetaDataStatement.class);
+    
+    @Test
+    void assertExecuteUpdateWithReloadTableWithStorageUnit() {
+        ShardingSphereDatabase database = mockDatabase(true);
+        ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+        when(schema.containsTable("t_order")).thenReturn(true);
+        when(database.getSchema("logic_schema")).thenReturn(schema);
+        ContextManager contextManager = mock(ContextManager.class);
+        executor.setDatabase(database);
+        executor.executeUpdate(new RefreshTableMetaDataStatement("t_order", 
"ds_0", "logic_schema"), contextManager);
+        verify(contextManager).reloadTable(database, "logic_schema", "ds_0", 
"t_order");
+    }
+    
+    @Test
+    void assertExecuteUpdateWithReloadSchemaWithStorageUnit() {
+        RefreshTableMetaDataStatement sqlStatement = new 
RefreshTableMetaDataStatement(null, "ds_0", "logic_schema");
+        ShardingSphereDatabase database = mockDatabase(true);
+        ContextManager contextManager = mock(ContextManager.class);
+        executor.setDatabase(database);
+        executor.executeUpdate(sqlStatement, contextManager);
+        verify(contextManager).reloadSchema(database, "logic_schema", "ds_0");
+    }
+    
+    @Test
+    void assertExecuteUpdateWithReloadTableWithoutStorageUnit() {
+        RefreshTableMetaDataStatement sqlStatement = new 
RefreshTableMetaDataStatement("t_order", null, null);
+        ShardingSphereDatabase database = mockDatabase(true);
+        when(database.getProtocolType()).thenReturn(databaseType);
+        DialectDatabaseMetaData dialectDatabaseMetaData = 
mockDialectDatabaseMetaData();
+        ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+        when(schema.containsTable("t_order")).thenReturn(true);
+        when(database.getSchema("public")).thenReturn(schema);
+        ContextManager contextManager = mock(ContextManager.class);
+        executor.setDatabase(database);
+        try (MockedStatic<DatabaseTypedSPILoader> mockedStatic = 
mockStatic(DatabaseTypedSPILoader.class)) {
+            mockedStatic.when(() -> 
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, 
databaseType)).thenReturn(dialectDatabaseMetaData);
+            executor.executeUpdate(sqlStatement, contextManager);
+        }
+        verify(contextManager).reloadTable(database, "public", "t_order");
+    }
+    
+    @Test
+    void assertExecuteUpdateWithReloadDatabase() {
+        RefreshTableMetaDataStatement sqlStatement = new 
RefreshTableMetaDataStatement(null, null, null);
+        ShardingSphereDatabase database = mockDatabase(true);
+        when(database.getProtocolType()).thenReturn(databaseType);
+        DialectDatabaseMetaData dialectDatabaseMetaData = 
mockDialectDatabaseMetaData();
+        ContextManager contextManager = mock(ContextManager.class);
+        executor.setDatabase(database);
+        try (MockedStatic<DatabaseTypedSPILoader> mockedStatic = 
mockStatic(DatabaseTypedSPILoader.class)) {
+            mockedStatic.when(() -> 
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, 
databaseType)).thenReturn(dialectDatabaseMetaData);
+            executor.executeUpdate(sqlStatement, contextManager);
+        }
+        verify(contextManager).reloadDatabase(database);
+    }
+    
+    @Test
+    void assertExecuteUpdateWithEmptyStorageUnits() {
+        RefreshTableMetaDataStatement sqlStatement = new 
RefreshTableMetaDataStatement(null, null, null);
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
+        when(database.getName()).thenReturn("logic_db");
+        when(database.getProtocolType()).thenReturn(databaseType);
+        ResourceMetaData resourceMetaData = mock(ResourceMetaData.class);
+        when(database.getResourceMetaData()).thenReturn(resourceMetaData);
+        DialectDatabaseMetaData dialectDatabaseMetaData = 
mockDialectDatabaseMetaData();
+        executor.setDatabase(database);
+        try (MockedStatic<DatabaseTypedSPILoader> mockedStatic = 
mockStatic(DatabaseTypedSPILoader.class)) {
+            mockedStatic.when(() -> 
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, 
databaseType)).thenReturn(dialectDatabaseMetaData);
+            assertThrows(EmptyStorageUnitException.class, () -> 
executor.executeUpdate(sqlStatement, mock(ContextManager.class)));
+        }
+    }
+    
+    @Test
+    void assertExecuteUpdateWithMissingStorageUnit() {

Review Comment:
   The test method name "assertExecuteUpdateWithMissingStorageUnit" doesn't 
follow the clearer naming pattern. Consider renaming to 
"assertThrowExceptionWhenStorageUnitMissing" to match the pattern used in other 
exception-testing methods like "assertThrowWhenSchemaMissing" and 
"assertThrowWhenTableMissing".
   ```suggestion
       void assertThrowExceptionWhenStorageUnitMissing() {
   ```



##########
proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/refresh/RefreshTableMetaDataExecutorTest.java:
##########
@@ -0,0 +1,173 @@
+/*
+ * 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.proxy.backend.handler.distsql.ral.updatable.refresh;
+
+import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
+import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
+import 
org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import 
org.apache.shardingsphere.distsql.handler.engine.update.DistSQLUpdateExecutor;
+import 
org.apache.shardingsphere.distsql.statement.type.ral.updatable.RefreshTableMetaDataStatement;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.SchemaNotFoundException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.TableNotFoundException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.EmptyStorageUnitException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.MissingRequiredStorageUnitsException;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.junit.jupiter.api.Test;
+import org.mockito.MockedStatic;
+
+import java.util.Collections;
+import java.util.Optional;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+class RefreshTableMetaDataExecutorTest {
+    
+    private final DatabaseType databaseType = mock(DatabaseType.class);
+    
+    private final RefreshTableMetaDataExecutor executor = 
(RefreshTableMetaDataExecutor) 
TypedSPILoader.getService(DistSQLUpdateExecutor.class, 
RefreshTableMetaDataStatement.class);
+    
+    @Test
+    void assertExecuteUpdateWithReloadTableWithStorageUnit() {
+        ShardingSphereDatabase database = mockDatabase(true);
+        ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+        when(schema.containsTable("t_order")).thenReturn(true);
+        when(database.getSchema("logic_schema")).thenReturn(schema);
+        ContextManager contextManager = mock(ContextManager.class);
+        executor.setDatabase(database);
+        executor.executeUpdate(new RefreshTableMetaDataStatement("t_order", 
"ds_0", "logic_schema"), contextManager);
+        verify(contextManager).reloadTable(database, "logic_schema", "ds_0", 
"t_order");
+    }
+    
+    @Test
+    void assertExecuteUpdateWithReloadSchemaWithStorageUnit() {
+        RefreshTableMetaDataStatement sqlStatement = new 
RefreshTableMetaDataStatement(null, "ds_0", "logic_schema");
+        ShardingSphereDatabase database = mockDatabase(true);
+        ContextManager contextManager = mock(ContextManager.class);
+        executor.setDatabase(database);
+        executor.executeUpdate(sqlStatement, contextManager);
+        verify(contextManager).reloadSchema(database, "logic_schema", "ds_0");
+    }
+    
+    @Test
+    void assertExecuteUpdateWithReloadTableWithoutStorageUnit() {

Review Comment:
   The test method name "assertExecuteUpdateWithReloadTableWithoutStorageUnit" 
doesn't follow the clearer naming pattern. Consider renaming to 
"assertReloadTableWhenStorageUnitNotSpecified" or 
"assertReloadTableWithDefaultSchema" to be more concise and consistent.
   ```suggestion
       void assertReloadTableWhenStorageUnitNotSpecified() {
   ```



##########
proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/refresh/RefreshTableMetaDataExecutorTest.java:
##########
@@ -0,0 +1,173 @@
+/*
+ * 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.proxy.backend.handler.distsql.ral.updatable.refresh;
+
+import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
+import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
+import 
org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import 
org.apache.shardingsphere.distsql.handler.engine.update.DistSQLUpdateExecutor;
+import 
org.apache.shardingsphere.distsql.statement.type.ral.updatable.RefreshTableMetaDataStatement;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.SchemaNotFoundException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.TableNotFoundException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.EmptyStorageUnitException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.MissingRequiredStorageUnitsException;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.junit.jupiter.api.Test;
+import org.mockito.MockedStatic;
+
+import java.util.Collections;
+import java.util.Optional;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+class RefreshTableMetaDataExecutorTest {
+    
+    private final DatabaseType databaseType = mock(DatabaseType.class);
+    
+    private final RefreshTableMetaDataExecutor executor = 
(RefreshTableMetaDataExecutor) 
TypedSPILoader.getService(DistSQLUpdateExecutor.class, 
RefreshTableMetaDataStatement.class);
+    
+    @Test
+    void assertExecuteUpdateWithReloadTableWithStorageUnit() {

Review Comment:
   The test method name uses 
"assertExecuteUpdateWithReloadTableWithStorageUnit" which is inconsistent with 
the pattern used in other test methods. Consider using a more descriptive name 
that clearly indicates what scenario is being tested, such as 
"assertReloadTableWhenStorageUnitSpecified" to match the naming pattern used in 
similar test methods like "assertReloadTableWhenStorageUnitMissing".
   ```suggestion
       void assertReloadTableWhenStorageUnitSpecified() {
   ```



##########
proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/refresh/RefreshTableMetaDataExecutorTest.java:
##########
@@ -0,0 +1,173 @@
+/*
+ * 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.proxy.backend.handler.distsql.ral.updatable.refresh;
+
+import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
+import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
+import 
org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import 
org.apache.shardingsphere.distsql.handler.engine.update.DistSQLUpdateExecutor;
+import 
org.apache.shardingsphere.distsql.statement.type.ral.updatable.RefreshTableMetaDataStatement;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.SchemaNotFoundException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.TableNotFoundException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.EmptyStorageUnitException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.MissingRequiredStorageUnitsException;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.junit.jupiter.api.Test;
+import org.mockito.MockedStatic;
+
+import java.util.Collections;
+import java.util.Optional;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+class RefreshTableMetaDataExecutorTest {
+    
+    private final DatabaseType databaseType = mock(DatabaseType.class);
+    
+    private final RefreshTableMetaDataExecutor executor = 
(RefreshTableMetaDataExecutor) 
TypedSPILoader.getService(DistSQLUpdateExecutor.class, 
RefreshTableMetaDataStatement.class);
+    
+    @Test
+    void assertExecuteUpdateWithReloadTableWithStorageUnit() {
+        ShardingSphereDatabase database = mockDatabase(true);
+        ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+        when(schema.containsTable("t_order")).thenReturn(true);
+        when(database.getSchema("logic_schema")).thenReturn(schema);
+        ContextManager contextManager = mock(ContextManager.class);
+        executor.setDatabase(database);
+        executor.executeUpdate(new RefreshTableMetaDataStatement("t_order", 
"ds_0", "logic_schema"), contextManager);
+        verify(contextManager).reloadTable(database, "logic_schema", "ds_0", 
"t_order");
+    }
+    
+    @Test
+    void assertExecuteUpdateWithReloadSchemaWithStorageUnit() {
+        RefreshTableMetaDataStatement sqlStatement = new 
RefreshTableMetaDataStatement(null, "ds_0", "logic_schema");
+        ShardingSphereDatabase database = mockDatabase(true);
+        ContextManager contextManager = mock(ContextManager.class);
+        executor.setDatabase(database);
+        executor.executeUpdate(sqlStatement, contextManager);
+        verify(contextManager).reloadSchema(database, "logic_schema", "ds_0");
+    }
+    
+    @Test
+    void assertExecuteUpdateWithReloadTableWithoutStorageUnit() {
+        RefreshTableMetaDataStatement sqlStatement = new 
RefreshTableMetaDataStatement("t_order", null, null);
+        ShardingSphereDatabase database = mockDatabase(true);
+        when(database.getProtocolType()).thenReturn(databaseType);
+        DialectDatabaseMetaData dialectDatabaseMetaData = 
mockDialectDatabaseMetaData();
+        ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+        when(schema.containsTable("t_order")).thenReturn(true);
+        when(database.getSchema("public")).thenReturn(schema);
+        ContextManager contextManager = mock(ContextManager.class);
+        executor.setDatabase(database);
+        try (MockedStatic<DatabaseTypedSPILoader> mockedStatic = 
mockStatic(DatabaseTypedSPILoader.class)) {
+            mockedStatic.when(() -> 
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, 
databaseType)).thenReturn(dialectDatabaseMetaData);
+            executor.executeUpdate(sqlStatement, contextManager);
+        }
+        verify(contextManager).reloadTable(database, "public", "t_order");
+    }
+    
+    @Test
+    void assertExecuteUpdateWithReloadDatabase() {
+        RefreshTableMetaDataStatement sqlStatement = new 
RefreshTableMetaDataStatement(null, null, null);
+        ShardingSphereDatabase database = mockDatabase(true);
+        when(database.getProtocolType()).thenReturn(databaseType);
+        DialectDatabaseMetaData dialectDatabaseMetaData = 
mockDialectDatabaseMetaData();
+        ContextManager contextManager = mock(ContextManager.class);
+        executor.setDatabase(database);
+        try (MockedStatic<DatabaseTypedSPILoader> mockedStatic = 
mockStatic(DatabaseTypedSPILoader.class)) {
+            mockedStatic.when(() -> 
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, 
databaseType)).thenReturn(dialectDatabaseMetaData);
+            executor.executeUpdate(sqlStatement, contextManager);
+        }
+        verify(contextManager).reloadDatabase(database);
+    }
+    
+    @Test
+    void assertExecuteUpdateWithEmptyStorageUnits() {

Review Comment:
   The test method name "assertExecuteUpdateWithEmptyStorageUnits" doesn't 
follow the clearer naming pattern. Consider renaming to 
"assertThrowExceptionWhenStorageUnitsEmpty" to be more consistent with other 
exception-testing methods in the same file.
   ```suggestion
       void assertThrowExceptionWhenStorageUnitsEmpty() {
   ```



##########
proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/refresh/RefreshTableMetaDataExecutorTest.java:
##########
@@ -0,0 +1,173 @@
+/*
+ * 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.proxy.backend.handler.distsql.ral.updatable.refresh;
+
+import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
+import 
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
+import 
org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import 
org.apache.shardingsphere.distsql.handler.engine.update.DistSQLUpdateExecutor;
+import 
org.apache.shardingsphere.distsql.statement.type.ral.updatable.RefreshTableMetaDataStatement;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.SchemaNotFoundException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.TableNotFoundException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.EmptyStorageUnitException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.MissingRequiredStorageUnitsException;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.junit.jupiter.api.Test;
+import org.mockito.MockedStatic;
+
+import java.util.Collections;
+import java.util.Optional;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+class RefreshTableMetaDataExecutorTest {
+    
+    private final DatabaseType databaseType = mock(DatabaseType.class);
+    
+    private final RefreshTableMetaDataExecutor executor = 
(RefreshTableMetaDataExecutor) 
TypedSPILoader.getService(DistSQLUpdateExecutor.class, 
RefreshTableMetaDataStatement.class);
+    
+    @Test
+    void assertExecuteUpdateWithReloadTableWithStorageUnit() {
+        ShardingSphereDatabase database = mockDatabase(true);
+        ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+        when(schema.containsTable("t_order")).thenReturn(true);
+        when(database.getSchema("logic_schema")).thenReturn(schema);
+        ContextManager contextManager = mock(ContextManager.class);
+        executor.setDatabase(database);
+        executor.executeUpdate(new RefreshTableMetaDataStatement("t_order", 
"ds_0", "logic_schema"), contextManager);
+        verify(contextManager).reloadTable(database, "logic_schema", "ds_0", 
"t_order");
+    }
+    
+    @Test
+    void assertExecuteUpdateWithReloadSchemaWithStorageUnit() {
+        RefreshTableMetaDataStatement sqlStatement = new 
RefreshTableMetaDataStatement(null, "ds_0", "logic_schema");
+        ShardingSphereDatabase database = mockDatabase(true);
+        ContextManager contextManager = mock(ContextManager.class);
+        executor.setDatabase(database);
+        executor.executeUpdate(sqlStatement, contextManager);
+        verify(contextManager).reloadSchema(database, "logic_schema", "ds_0");
+    }
+    
+    @Test
+    void assertExecuteUpdateWithReloadTableWithoutStorageUnit() {
+        RefreshTableMetaDataStatement sqlStatement = new 
RefreshTableMetaDataStatement("t_order", null, null);
+        ShardingSphereDatabase database = mockDatabase(true);
+        when(database.getProtocolType()).thenReturn(databaseType);
+        DialectDatabaseMetaData dialectDatabaseMetaData = 
mockDialectDatabaseMetaData();
+        ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+        when(schema.containsTable("t_order")).thenReturn(true);
+        when(database.getSchema("public")).thenReturn(schema);
+        ContextManager contextManager = mock(ContextManager.class);
+        executor.setDatabase(database);
+        try (MockedStatic<DatabaseTypedSPILoader> mockedStatic = 
mockStatic(DatabaseTypedSPILoader.class)) {
+            mockedStatic.when(() -> 
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, 
databaseType)).thenReturn(dialectDatabaseMetaData);
+            executor.executeUpdate(sqlStatement, contextManager);
+        }
+        verify(contextManager).reloadTable(database, "public", "t_order");
+    }
+    
+    @Test
+    void assertExecuteUpdateWithReloadDatabase() {

Review Comment:
   The test method name "assertExecuteUpdateWithReloadDatabase" doesn't follow 
the clearer naming pattern. Consider renaming to 
"assertReloadDatabaseWhenNoSpecificTargetProvided" or 
"assertReloadEntireDatabase" to be more descriptive and consistent.
   ```suggestion
       void 
assertExecuteUpdateWithReloadEntireDatabaseWhenNoSpecificTargetProvided() {
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to