You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2026/03/26 08:53:47 UTC

(shardingsphere) branch master updated: Refactor index access with IdentifierValue (#38559)

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

duanzhengqiang 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 67d86a31524 Refactor index access with IdentifierValue (#38559)
67d86a31524 is described below

commit 67d86a31524d143697b1d7c3ef8999331decdb50
Author: ZhangCheng <ch...@apache.org>
AuthorDate: Thu Mar 26 16:53:40 2026 +0800

    Refactor index access with IdentifierValue (#38559)
    
    * Refactor index access with IdentifierValue
    
    * Refactor index access with IdentifierValue
---
 .../encrypt/merge/dal/EncryptDALResultDecorator.java |  5 ++---
 .../encrypt/merge/dql/EncryptMergedResult.java       |  4 ++--
 .../sql/util/ShardingSupportedCheckUtils.java        |  2 +-
 .../ddl/ShardingAlterIndexSupportedCheckerTest.java  | 20 ++++++++++++--------
 .../ddl/ShardingDropIndexSupportedCheckerTest.java   | 10 ++++++----
 .../ShardingTableBroadcastRouteEngineTest.java       | 10 +++++-----
 .../dml/from/type/SimpleTableSegmentBinder.java      |  8 ++++----
 .../database/schema/model/ShardingSphereTable.java   |  2 +-
 .../database/schema/util/IndexMetaDataUtils.java     |  5 +++--
 .../shardingsphere/single/rule/SingleRuleTest.java   |  9 +++++----
 10 files changed, 41 insertions(+), 34 deletions(-)

diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecorator.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecorator.java
index 5ee31d3cf27..05b256889a7 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecorator.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecorator.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.encrypt.merge.dal;
 
-import org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.ViewInResultSetSQLStatementAttribute;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.encrypt.merge.dal.show.EncryptShowColumnsMergedResult;
 import org.apache.shardingsphere.encrypt.merge.dal.show.EncryptShowCreateTableMergedResult;
@@ -33,7 +32,7 @@ import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table
 import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.ColumnInResultSetSQLStatementAttribute;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.TableInResultSetSQLStatementAttribute;
-import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
+import org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.ViewInResultSetSQLStatementAttribute;
 
 import java.util.Collection;
 import java.util.Optional;
@@ -55,7 +54,7 @@ public final class EncryptDALResultDecorator implements ResultDecorator {
             return mergedResult;
         }
         ShardingSphereDatabase shardingSphereDatabase = simpleTables.iterator().next().getTableName().getTableBoundInfo().map(TableSegmentBoundInfo::getOriginalDatabase)
-                .map(IdentifierValue::getValue).map(metaData::getDatabase).orElse(database);
+                .map(metaData::getDatabase).orElse(database);
         Optional<EncryptRule> encryptRule = shardingSphereDatabase.getRuleMetaData().findSingleRule(EncryptRule.class);
         if (!encryptRule.isPresent()) {
             return mergedResult;
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java
index 32d7960c34c..430d9959334 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java
@@ -58,8 +58,8 @@ public final class EncryptMergedResult extends DecoratorMergedResult {
         }
         String originalTableName = columnSegmentBoundInfo.get().getOriginalTable().getValue();
         String originalColumnName = columnSegmentBoundInfo.get().getOriginalColumn().getValue();
-        ShardingSphereDatabase database = metaData.containsDatabase(columnSegmentBoundInfo.get().getOriginalDatabase().getValue())
-                ? metaData.getDatabase(columnSegmentBoundInfo.get().getOriginalDatabase().getValue())
+        ShardingSphereDatabase database = metaData.containsDatabase(columnSegmentBoundInfo.get().getOriginalDatabase())
+                ? metaData.getDatabase(columnSegmentBoundInfo.get().getOriginalDatabase())
                 : this.database;
         Optional<EncryptRule> rule = database.getRuleMetaData().findSingleRule(EncryptRule.class);
         if (!rule.isPresent() || !rule.get().findEncryptTable(originalTableName).map(optional -> optional.isEncryptColumn(originalColumnName)).orElse(false)) {
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/checker/sql/util/ShardingSupportedCheckUtils.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/checker/sql/util/ShardingSupportedCheckUtils.java
index 9c5abb288c5..9df08a1572f 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/checker/sql/util/ShardingSupportedCheckUtils.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/checker/sql/util/ShardingSupportedCheckUtils.java
@@ -42,7 +42,7 @@ public final class ShardingSupportedCheckUtils {
      * @return whether schema contains index or not
      */
     public static boolean isSchemaContainsIndex(final ShardingSphereSchema schema, final IndexSegment index) {
-        return schema.getAllTables().stream().anyMatch(each -> each.containsIndex(index.getIndexName().getIdentifier().getValue()));
+        return schema.getAllTables().stream().anyMatch(each -> each.containsIndex(index.getIndexName().getIdentifier()));
     }
     
     /**
diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterIndexSupportedCheckerTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterIndexSupportedCheckerTest.java
index f3c1ce00153..b24784f5ff0 100644
--- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterIndexSupportedCheckerTest.java
+++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterIndexSupportedCheckerTest.java
@@ -58,11 +58,13 @@ class ShardingAlterIndexSupportedCheckerTest {
     void assertCheckWhenIndexExistRenameIndexNotExistForPostgreSQL() {
         ShardingSphereTable table = mock(ShardingSphereTable.class);
         ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+        IdentifierValue currentIndexName = new IdentifierValue("foo_tbl_idx");
+        IdentifierValue renamedIndexName = new IdentifierValue("foo_tbl_idx_new");
         when(schema.getAllTables()).thenReturn(Collections.singleton(table));
-        when(table.containsIndex("foo_tbl_idx")).thenReturn(true);
-        when(table.containsIndex("foo_tbl_idx_new")).thenReturn(false);
-        AlterIndexStatement sqlStatement = new AlterIndexStatement(databaseType, new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("foo_tbl_idx"))),
-                new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("foo_tbl_idx_new"))), null);
+        when(table.containsIndex(currentIndexName)).thenReturn(true);
+        when(table.containsIndex(renamedIndexName)).thenReturn(false);
+        AlterIndexStatement sqlStatement = new AlterIndexStatement(databaseType, new IndexSegment(0, 0, new IndexNameSegment(0, 0, currentIndexName)),
+                new IndexSegment(0, 0, new IndexNameSegment(0, 0, renamedIndexName)), null);
         assertDoesNotThrow(() -> new ShardingAlterIndexSupportedChecker().check(rule, database, schema, new CommonSQLStatementContext(sqlStatement)));
     }
     
@@ -79,11 +81,13 @@ class ShardingAlterIndexSupportedCheckerTest {
     void assertCheckAlterIndexWhenIndexExistRenameIndexExistForPostgreSQL() {
         ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
         ShardingSphereTable table = mock(ShardingSphereTable.class);
+        IdentifierValue currentIndexName = new IdentifierValue("foo_tbl_idx");
+        IdentifierValue renamedIndexName = new IdentifierValue("foo_tbl_idx_new");
         when(schema.getAllTables()).thenReturn(Collections.singleton(table));
-        when(table.containsIndex("foo_tbl_idx")).thenReturn(true);
-        when(table.containsIndex("foo_tbl_idx_new")).thenReturn(true);
-        AlterIndexStatement sqlStatement = new AlterIndexStatement(databaseType, new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("foo_tbl_idx"))),
-                new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("foo_tbl_idx_new"))), null);
+        when(table.containsIndex(currentIndexName)).thenReturn(true);
+        when(table.containsIndex(renamedIndexName)).thenReturn(true);
+        AlterIndexStatement sqlStatement = new AlterIndexStatement(databaseType, new IndexSegment(0, 0, new IndexNameSegment(0, 0, currentIndexName)),
+                new IndexSegment(0, 0, new IndexNameSegment(0, 0, renamedIndexName)), null);
         assertThrows(DuplicateIndexException.class, () -> new ShardingAlterIndexSupportedChecker().check(rule, database, schema, new CommonSQLStatementContext(sqlStatement)));
     }
 }
diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingDropIndexSupportedCheckerTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingDropIndexSupportedCheckerTest.java
index b45fad6c0a4..bf223dd1f93 100644
--- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingDropIndexSupportedCheckerTest.java
+++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingDropIndexSupportedCheckerTest.java
@@ -58,12 +58,14 @@ class ShardingDropIndexSupportedCheckerTest {
     void assertCheckWhenIndexExistForPostgreSQL() {
         ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
         ShardingSphereTable table = mock(ShardingSphereTable.class);
+        IdentifierValue firstIndexName = new IdentifierValue("t_order_index");
+        IdentifierValue secondIndexName = new IdentifierValue("t_order_index_new");
         when(schema.getAllTables()).thenReturn(Collections.singleton(table));
-        when(table.containsIndex("t_order_index")).thenReturn(true);
-        when(table.containsIndex("t_order_index_new")).thenReturn(true);
+        when(table.containsIndex(firstIndexName)).thenReturn(true);
+        when(table.containsIndex(secondIndexName)).thenReturn(true);
         DropIndexStatement sqlStatement = DropIndexStatement.builder().databaseType(databaseType)
-                .indexes(Arrays.asList(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))),
-                        new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new")))))
+                .indexes(Arrays.asList(new IndexSegment(0, 0, new IndexNameSegment(0, 0, firstIndexName)),
+                        new IndexSegment(0, 0, new IndexNameSegment(0, 0, secondIndexName))))
                 .build();
         assertDoesNotThrow(() -> new ShardingDropIndexSupportedChecker().check(rule, database, schema, new CommonSQLStatementContext(sqlStatement)));
     }
diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRouteEngineTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRouteEngineTest.java
index 99fd44e50d2..5c70500ac9d 100644
--- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRouteEngineTest.java
+++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRouteEngineTest.java
@@ -32,17 +32,18 @@ import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
+import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexNameSegment;
 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexSegment;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.index.DropIndexStatement;
+import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
 import org.apache.shardingsphere.test.infra.fixture.jdbc.MockedDataSource;
 import org.junit.jupiter.api.Test;
 
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
-import java.util.Optional;
 
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -80,15 +81,14 @@ class ShardingTableBroadcastRouteEngineTest {
     @Test
     void assertRouteForDropIndexStatement() {
         ShardingSphereTable table = mock(ShardingSphereTable.class);
+        IdentifierValue indexName = new IdentifierValue("t_order");
         when(table.getName()).thenReturn("t_order");
-        when(table.containsIndex("t_order")).thenReturn(true);
+        when(table.containsIndex(indexName)).thenReturn(true);
         ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
         when(schema.getName()).thenReturn("foo_db");
         when(schema.getAllTables()).thenReturn(Collections.singleton(table));
         when(schema.getTable(anyString()).containsIndex(anyString())).thenReturn(true);
-        IndexSegment segment = mock(IndexSegment.class, RETURNS_DEEP_STUBS);
-        when(segment.getIndexName().getIdentifier().getValue()).thenReturn("t_order");
-        when(segment.getOwner()).thenReturn(Optional.empty());
+        IndexSegment segment = new IndexSegment(0, 0, new IndexNameSegment(0, 0, indexName));
         DropIndexStatement sqlStatement = DropIndexStatement.builder().databaseType(databaseType).indexes(Collections.singleton(segment)).build();
         ShardingSphereDatabase database = new ShardingSphereDatabase("foo_db", databaseType, mock(ResourceMetaData.class), mock(RuleMetaData.class), Collections.singleton(schema));
         ShardingTableBroadcastRouteEngine shardingTableBroadcastRouteEngine = new ShardingTableBroadcastRouteEngine(database, sqlStatement, Collections.emptyList());
diff --git a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinder.java b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinder.java
index 5a68bed0e67..0255277d170 100644
--- a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinder.java
+++ b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinder.java
@@ -227,15 +227,15 @@ public final class SimpleTableSegmentBinder {
         }
         if (binderContext.getSqlStatement() instanceof CreateIndexStatement) {
             ShardingSpherePreconditions.checkState(schema.containsTable(tableName), () -> new TableNotFoundException(tableName.getValue()));
-            String indexName = ((CreateIndexStatement) binderContext.getSqlStatement()).getIndex().getIndexName().getIdentifier().getValue();
-            ShardingSpherePreconditions.checkState(!shardingSphereTable.containsIndex(indexName), () -> new DuplicateIndexException(indexName));
+            IdentifierValue indexName = ((CreateIndexStatement) binderContext.getSqlStatement()).getIndex().getIndexName().getIdentifier();
+            ShardingSpherePreconditions.checkState(!shardingSphereTable.containsIndex(indexName), () -> new DuplicateIndexException(indexName.getValue()));
             return;
         }
         if (binderContext.getSqlStatement() instanceof DropIndexStatement) {
             ShardingSpherePreconditions.checkState(schema.containsTable(tableName), () -> new TableNotFoundException(tableName.getValue()));
             ((DropIndexStatement) binderContext.getSqlStatement()).getIndexes().forEach(each -> {
-                String indexName = each.getIndexName().getIdentifier().getValue();
-                ShardingSpherePreconditions.checkState(shardingSphereTable.containsIndex(indexName), () -> new IndexNotFoundException(schemaName, indexName));
+                IdentifierValue indexName = each.getIndexName().getIdentifier();
+                ShardingSpherePreconditions.checkState(shardingSphereTable.containsIndex(indexName), () -> new IndexNotFoundException(schemaName, indexName.getValue()));
             });
         }
     }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereTable.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereTable.java
index f21a48d9553..fe9bbedb03e 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereTable.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereTable.java
@@ -264,7 +264,7 @@ public final class ShardingSphereTable {
      * @param indexName index name
      * @return contains index or not
      */
-    private boolean containsIndex(final IdentifierValue indexName) {
+    public boolean containsIndex(final IdentifierValue indexName) {
         return findIndex(indexName).isPresent();
     }
     
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtils.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtils.java
index 5da8ff0d154..ef9c401faf9 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtils.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtils.java
@@ -27,6 +27,7 @@ import org.apache.shardingsphere.infra.metadata.database.schema.QualifiedTable;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexSegment;
+import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
 
 import java.util.Collection;
 import java.util.LinkedList;
@@ -76,13 +77,13 @@ public final class IndexMetaDataUtils {
         String schemaName = new DatabaseTypeRegistry(protocolType).getDefaultSchemaName(database.getName());
         for (IndexSegment each : indexes) {
             String actualSchemaName = each.getOwner().map(optional -> optional.getIdentifier().getValue()).orElse(schemaName);
-            findLogicTableNameFromMetaData(database.getSchema(actualSchemaName), each.getIndexName().getIdentifier().getValue())
+            findLogicTableNameFromMetaData(database.getSchema(actualSchemaName), each.getIndexName().getIdentifier())
                     .ifPresent(optional -> result.add(new QualifiedTable(actualSchemaName, optional)));
         }
         return result;
     }
     
-    private static Optional<String> findLogicTableNameFromMetaData(final ShardingSphereSchema schema, final String logicIndexName) {
+    private static Optional<String> findLogicTableNameFromMetaData(final ShardingSphereSchema schema, final IdentifierValue logicIndexName) {
         return schema.getAllTables().stream().filter(table -> table.containsIndex(logicIndexName)).findFirst().map(ShardingSphereTable::getName);
     }
 }
diff --git a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/rule/SingleRuleTest.java b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/rule/SingleRuleTest.java
index ee404ee57a9..28e42e5caef 100644
--- a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/rule/SingleRuleTest.java
+++ b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/rule/SingleRuleTest.java
@@ -35,9 +35,11 @@ import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.single.config.SingleRuleConfiguration;
 import org.apache.shardingsphere.single.constant.SingleOrder;
 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexSegment;
+import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexNameSegment;
 import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.OwnerSegment;
 import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.IndexSQLStatementAttribute;
+import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
 import org.apache.shardingsphere.test.infra.fixture.jdbc.MockedDataSource;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -345,16 +347,15 @@ class SingleRuleTest {
     }
     
     private static IndexSQLStatementAttribute createIndexAttribute(final ShardingSphereDatabase database, final String schemaName) {
-        IndexSegment indexSegment = mock(IndexSegment.class, RETURNS_DEEP_STUBS);
-        when(indexSegment.getOwner()).thenReturn(Optional.empty());
-        when(indexSegment.getIndexName().getIdentifier().getValue()).thenReturn("idx_employee");
+        IdentifierValue identifierValue = new IdentifierValue("idx_employee");
+        IndexSegment indexSegment = new IndexSegment(1, 3, new IndexNameSegment(1, 3, identifierValue));
         IndexSQLStatementAttribute result = mock(IndexSQLStatementAttribute.class);
         when(result.getIndexes()).thenReturn(Collections.singleton(indexSegment));
         ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
         ShardingSphereTable table = mock(ShardingSphereTable.class);
         when(database.getSchema(schemaName)).thenReturn(schema);
         when(schema.getAllTables()).thenReturn(Collections.singleton(table));
-        when(table.containsIndex("idx_employee")).thenReturn(true);
+        when(table.containsIndex(identifierValue)).thenReturn(true);
         when(table.getName()).thenReturn("employee");
         return result;
     }