You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2026/07/30 15:39:27 UTC

(shardingsphere) branch master updated: Move sequence metadata ownership back to MCP (#39282)

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 a372d850eff Move sequence metadata ownership back to MCP (#39282)
a372d850eff is described below

commit a372d850effe9ab2adf3829535c6a22f29e5bb9e
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Thu Jul 30 23:39:20 2026 +0800

    Move sequence metadata ownership back to MCP (#39282)
    
    * Move sequence metadata ownership back to MCP
    
    - restore shared metadata and connector contracts to their pre-sequence state
    - keep sequence discovery and request-scoped caching within MCP
    - preserve MCP resource, search, and completion behavior
    
    * Move sequence metadata ownership back to MCP
    
    - restore shared metadata and connector contracts to their pre-sequence state
    - keep sequence discovery and request-scoped caching within MCP
    - preserve MCP resource, search, and completion behavior
---
 .../data/loader/type/SequenceMetaDataLoader.java   |  85 ----------------
 .../database/metadata/DialectDatabaseMetaData.java |  10 --
 .../core/metadata/identifier/IdentifierScope.java  |   2 -
 .../loader/type/SequenceMetaDataLoaderTest.java    | 106 --------------------
 .../database/FirebirdDatabaseMetaData.java         |   7 --
 .../database/FirebirdDatabaseMetaDataTest.java     |   7 --
 .../metadata/database/MariaDBDatabaseMetaData.java |   6 --
 .../database/MariaDBDatabaseMetaDataTest.java      |   7 --
 .../database/OpenGaussDatabaseMetaData.java        |   6 --
 .../database/OpenGaussDatabaseMetaDataTest.java    |   7 --
 .../metadata/database/OracleDatabaseMetaData.java  |   6 --
 .../database/OracleDatabaseMetaDataTest.java       |   7 --
 .../database/PostgreSQLDatabaseMetaData.java       |   7 --
 .../database/PostgreSQLDatabaseMetaDataTest.java   |   7 --
 .../database/SQLServerDatabaseMetaData.java        |   7 --
 .../database/SQLServerDatabaseMetaDataTest.java    |   7 --
 .../schema/model/ShardingSphereSchema.java         | 109 +--------------------
 .../schema/model/ShardingSphereSchemaTest.java     |  56 -----------
 .../DatabaseIdentifierContextFactoryTest.java      |   1 -
 .../handler/MetadataCompletionHandler.java         |   4 +-
 .../metadata/MetadataResourcePayloadMapper.java    |  24 +++--
 .../handler/metadata/MetadataSearchCollector.java  |   6 +-
 .../handler/MetadataCompletionHandlerTest.java     |   4 +-
 .../mcp/core/resource/ResourceTestDataFactory.java |   9 +-
 .../MetadataResourcePayloadMapperTest.java         |  27 ++++-
 .../database/capability/MCPDatabaseCapability.java |   8 +-
 .../capability/MCPDatabaseCapabilityOption.java    |  11 +++
 .../database/capability/MCPDatabaseDialect.java    |  10 +-
 .../FirebirdMCPDatabaseCapabilityOption.java       |   7 ++
 .../MariaDBMCPDatabaseCapabilityOption.java        |   7 ++
 .../OpenGaussMCPDatabaseCapabilityOption.java      |   7 ++
 .../dialect/OracleMCPDatabaseCapabilityOption.java |   7 ++
 .../PostgreSQLMCPDatabaseCapabilityOption.java     |   7 ++
 .../SQLServerMCPDatabaseCapabilityOption.java      |   8 ++
 .../context/RequestScopedMetadataContext.java      |  29 ++++--
 .../metadata/jdbc/MCPJdbcMetadataLoader.java       |  66 ++++++++-----
 .../metadata/model/MCPMetadataSnapshot.java        |  27 ++++-
 .../metadata/model/MCPSequenceMetadata.java        |  14 +--
 .../metadata/query/MetadataQueryService.java       |  16 +--
 .../database/spi/MCPMetadataQueryFacade.java       |   6 +-
 .../service/RuntimeDatabaseValidationService.java  |   2 +-
 .../MCPDatabaseCapabilityProviderTest.java         |  15 +--
 .../capability/MCPDatabaseDialectTest.java         |  18 ++--
 .../context/RequestScopedMetadataContextTest.java  |  22 +++++
 .../jdbc/AbstractMCPJdbcMetadataLoaderTest.java    |  38 ++++---
 .../jdbc/MCPJdbcMetadataLoaderSequenceTest.java    |  24 +++--
 .../metadata/jdbc/MCPJdbcMetadataLoaderTest.java   |   2 +-
 .../metadata/model/MCPMetadataSnapshotTest.java    |  44 +++++++++
 .../metadata/query/MetadataQueryServiceTest.java   |  34 +++----
 .../RuntimeDatabaseValidationServiceTest.java      |   5 +-
 50 files changed, 366 insertions(+), 592 deletions(-)

diff --git a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/type/SequenceMetaDataLoader.java b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/type/SequenceMetaDataLoader.java
deleted file mode 100644
index 076de8c4066..00000000000
--- a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/type/SequenceMetaDataLoader.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * 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.database.connector.core.metadata.data.loader.type;
-
-import com.google.common.base.Strings;
-import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
-import org.apache.shardingsphere.database.connector.core.metadata.database.system.SystemDatabase;
-import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
-import org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.Map;
-import java.util.Optional;
-
-/**
- * Sequence meta data loader.
- */
-@RequiredArgsConstructor
-public final class SequenceMetaDataLoader {
-    
-    private static final String SEQUENCE_SCHEMA = "SEQUENCE_SCHEMA";
-    
-    private static final String SEQUENCE_NAME = "SEQUENCE_NAME";
-    
-    private final DatabaseType databaseType;
-    
-    /**
-     * Load sequence names by schema.
-     *
-     * @param connection connection
-     * @return loaded sequence names by schema
-     * @throws SQLException SQL exception
-     */
-    public Map<String, Collection<String>> load(final Connection connection) throws SQLException {
-        Optional<DialectSequenceOption> option = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().getSequenceOption();
-        return option.isPresent() ? loadSequences(connection, option.get().getSequenceMetadataQuerySQL()) : Collections.emptyMap();
-    }
-    
-    private Map<String, Collection<String>> loadSequences(final Connection connection, final String sequenceMetadataQuery) throws SQLException {
-        Map<String, Collection<String>> result = new LinkedHashMap<>(16, 1F);
-        Collection<String> systemSchemas = new SystemDatabase(databaseType).getSystemSchemas();
-        try (
-                Statement statement = connection.createStatement();
-                ResultSet sequences = statement.executeQuery(sequenceMetadataQuery)) {
-            while (sequences.next()) {
-                addSequence(result, sequences, systemSchemas);
-            }
-        }
-        return result;
-    }
-    
-    private void addSequence(final Map<String, Collection<String>> sequences, final ResultSet resultSet, final Collection<String> systemSchemas) throws SQLException {
-        String sequenceName = resultSet.getString(SEQUENCE_NAME);
-        if (Strings.isNullOrEmpty(sequenceName)) {
-            return;
-        }
-        String schemaName = resultSet.getString(SEQUENCE_SCHEMA);
-        if (Strings.isNullOrEmpty(schemaName) || systemSchemas.stream().noneMatch(schemaName::equalsIgnoreCase)) {
-            sequences.computeIfAbsent(schemaName, unused -> new LinkedHashSet<>()).add(sequenceName);
-        }
-    }
-}
diff --git a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/database/metadata/DialectDatabaseMetaData.java b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/database/metadata/DialectDatabaseMetaData.java
index c9c170da25b..c2b7786ddaa 100644
--- a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/database/metadata/DialectDatabaseMetaData.java
+++ b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/database/metadata/DialectDatabaseMetaData.java
@@ -34,7 +34,6 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.metad
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DefaultSchemaOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaSemantics;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sql.DefaultSQLOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sql.DialectSQLOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sqlbatch.DialectSQLBatchOption;
@@ -166,15 +165,6 @@ public interface DialectDatabaseMetaData extends DatabaseTypedSPI {
         return Optional.empty();
     }
     
-    /**
-     * Get sequence option.
-     *
-     * @return sequence option
-     */
-    default Optional<DialectSequenceOption> getSequenceOption() {
-        return Optional.empty();
-    }
-    
     /**
      * Get alter table option.
      *
diff --git a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/identifier/IdentifierScope.java b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/identifier/IdentifierScope.java
index ed8063782fa..61ebfae59b9 100644
--- a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/identifier/IdentifierScope.java
+++ b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/identifier/IdentifierScope.java
@@ -36,7 +36,5 @@ public enum IdentifierScope {
     
     INDEX,
     
-    SEQUENCE,
-    
     CONSTRAINT
 }
diff --git a/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/type/SequenceMetaDataLoaderTest.java b/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/type/SequenceMetaDataLoaderTest.java
deleted file mode 100644
index 8d0e30ba0f4..00000000000
--- a/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/type/SequenceMetaDataLoaderTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * 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.database.connector.core.metadata.data.loader.type;
-
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
-import org.apache.shardingsphere.database.connector.core.metadata.database.system.DialectSystemDatabase;
-import org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
-import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
-import org.junit.jupiter.api.Test;
-import org.mockito.MockedStatic;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockStatic;
-import static org.mockito.Mockito.verifyNoInteractions;
-import static org.mockito.Mockito.when;
-
-class SequenceMetaDataLoaderTest {
-    
-    private final DatabaseType databaseType = mock(DatabaseType.class);
-    
-    @Test
-    void assertLoadWithoutSequenceOption() throws SQLException {
-        DialectDatabaseMetaData dialectDatabaseMetaData = mock(DialectDatabaseMetaData.class);
-        when(dialectDatabaseMetaData.getSequenceOption()).thenReturn(Optional.empty());
-        Connection connection = mock(Connection.class);
-        try (MockedStatic<DatabaseTypedSPILoader> databaseTypedSPILoader = mockStatic(DatabaseTypedSPILoader.class)) {
-            databaseTypedSPILoader.when(() -> DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType)).thenReturn(dialectDatabaseMetaData);
-            assertThat(new SequenceMetaDataLoader(databaseType).load(connection), is(Collections.emptyMap()));
-        }
-        verifyNoInteractions(connection);
-    }
-    
-    @Test
-    void assertLoad() throws SQLException {
-        DialectDatabaseMetaData dialectDatabaseMetaData = mock(DialectDatabaseMetaData.class);
-        when(dialectDatabaseMetaData.getSequenceOption()).thenReturn(Optional.of(new DialectSequenceOption("SELECT SEQUENCES")));
-        DialectSystemDatabase dialectSystemDatabase = mock(DialectSystemDatabase.class);
-        when(dialectSystemDatabase.getSystemSchemas()).thenReturn(Collections.singleton("pg_catalog"));
-        Connection connection = mock(Connection.class);
-        Statement statement = mock(Statement.class);
-        ResultSet resultSet = mockResultSet(Arrays.asList(
-                createRow("public", "order_seq"),
-                createRow("PG_CATALOG", "system_seq"),
-                createRow("public", ""),
-                createRow("", "global_seq")));
-        when(connection.createStatement()).thenReturn(statement);
-        when(statement.executeQuery("SELECT SEQUENCES")).thenReturn(resultSet);
-        try (MockedStatic<DatabaseTypedSPILoader> databaseTypedSPILoader = mockStatic(DatabaseTypedSPILoader.class)) {
-            databaseTypedSPILoader.when(() -> DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType)).thenReturn(dialectDatabaseMetaData);
-            databaseTypedSPILoader.when(() -> DatabaseTypedSPILoader.findService(DialectSystemDatabase.class, databaseType)).thenReturn(Optional.of(dialectSystemDatabase));
-            Map<String, Collection<String>> actual = new SequenceMetaDataLoader(databaseType).load(connection);
-            Map<String, Collection<String>> expected = new LinkedHashMap<>(2, 1F);
-            expected.put("public", new LinkedHashSet<>(Collections.singleton("order_seq")));
-            expected.put("", new LinkedHashSet<>(Collections.singleton("global_seq")));
-            assertThat(actual, is(expected));
-        }
-    }
-    
-    private Map<String, String> createRow(final String sequenceSchema, final String sequenceName) {
-        Map<String, String> result = new LinkedHashMap<>(2, 1F);
-        result.put("SEQUENCE_SCHEMA", sequenceSchema);
-        result.put("SEQUENCE_NAME", sequenceName);
-        return result;
-    }
-    
-    private ResultSet mockResultSet(final List<Map<String, String>> rows) throws SQLException {
-        ResultSet result = mock(ResultSet.class);
-        AtomicInteger rowIndex = new AtomicInteger(-1);
-        when(result.next()).thenAnswer(invocation -> rowIndex.incrementAndGet() < rows.size());
-        when(result.getString("SEQUENCE_SCHEMA")).thenAnswer(invocation -> rows.get(rowIndex.get()).get("SEQUENCE_SCHEMA"));
-        when(result.getString("SEQUENCE_NAME")).thenAnswer(invocation -> rows.get(rowIndex.get()).get("SEQUENCE_NAME"));
-        return result;
-    }
-}
diff --git a/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/metadata/database/FirebirdDatabaseMetaData.java b/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/metadata/database/FirebirdDatabaseMetaData.java
index f206a5fc963..099d05672b0 100644
--- a/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/metadata/database/FirebirdDatabaseMetaData.java
+++ b/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/metadata/database/FirebirdDatabaseMetaData.java
@@ -23,7 +23,6 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.metad
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.IdentifierPatternType;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.function.DialectFunctionOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DDLCommitPolicy;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DialectTransactionOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.version.DialectProtocolVersionOption;
@@ -31,7 +30,6 @@ import org.apache.shardingsphere.database.connector.firebird.metadata.database.o
 import org.apache.shardingsphere.database.connector.firebird.metadata.database.option.FirebirdSchemaOption;
 
 import java.util.Collections;
-import java.util.Optional;
 
 /**
  * Database metadata of Firebird.
@@ -74,11 +72,6 @@ public final class FirebirdDatabaseMetaData implements DialectDatabaseMetaData {
         return new FirebirdFunctionOption();
     }
     
-    @Override
-    public Optional<DialectSequenceOption> getSequenceOption() {
-        return Optional.of(new DialectSequenceOption("SELECT '' AS SEQUENCE_SCHEMA, TRIM(RDB$GENERATOR_NAME) AS SEQUENCE_NAME FROM RDB$GENERATORS WHERE COALESCE(RDB$SYSTEM_FLAG, 0) = 0"));
-    }
-    
     @Override
     public String getDatabaseType() {
         return "Firebird";
diff --git a/database/connector/dialect/firebird/src/test/java/org/apache/shardingsphere/database/connector/firebird/metadata/database/FirebirdDatabaseMetaDataTest.java b/database/connector/dialect/firebird/src/test/java/org/apache/shardingsphere/database/connector/firebird/metadata/database/FirebirdDatabaseMetaDataTest.java
index e0a7040ea4b..2d646837aed 100644
--- a/database/connector/dialect/firebird/src/test/java/org/apache/shardingsphere/database/connector/firebird/metadata/database/FirebirdDatabaseMetaDataTest.java
+++ b/database/connector/dialect/firebird/src/test/java/org/apache/shardingsphere/database/connector/firebird/metadata/database/FirebirdDatabaseMetaDataTest.java
@@ -23,7 +23,6 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.metad
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.IdentifierPatternType;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaSemantics;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DDLCommitPolicy;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DialectTransactionOption;
 import org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
@@ -82,12 +81,6 @@ class FirebirdDatabaseMetaDataTest {
         assertTrue(actual.getXaDriverClassNames().contains("org.firebirdsql.ds.FBXADataSource"));
     }
     
-    @Test
-    void assertGetSequenceOption() {
-        assertThat(dialectDatabaseMetaData.getSequenceOption().map(DialectSequenceOption::getSequenceMetadataQuerySQL).orElse(""),
-                is("SELECT '' AS SEQUENCE_SCHEMA, TRIM(RDB$GENERATOR_NAME) AS SEQUENCE_NAME FROM RDB$GENERATORS WHERE COALESCE(RDB$SYSTEM_FLAG, 0) = 0"));
-    }
-    
     @Test
     void assertGetProtocolVersionOption() {
         assertThat(dialectDatabaseMetaData.getProtocolVersionOption().getDefaultVersion(), is("18"));
diff --git a/database/connector/dialect/mariadb/src/main/java/org/apache/shardingsphere/database/connector/mariadb/metadata/database/MariaDBDatabaseMetaData.java b/database/connector/dialect/mariadb/src/main/java/org/apache/shardingsphere/database/connector/mariadb/metadata/database/MariaDBDatabaseMetaData.java
index 163e384bdc1..94b66b761f2 100644
--- a/database/connector/dialect/mariadb/src/main/java/org/apache/shardingsphere/database/connector/mariadb/metadata/database/MariaDBDatabaseMetaData.java
+++ b/database/connector/dialect/mariadb/src/main/java/org/apache/shardingsphere/database/connector/mariadb/metadata/database/MariaDBDatabaseMetaData.java
@@ -27,7 +27,6 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.metad
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.join.DialectJoinOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.keygen.DialectGeneratedKeyOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DDLCommitPolicy;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DialectTransactionOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.version.DialectProtocolVersionOption;
@@ -94,11 +93,6 @@ public final class MariaDBDatabaseMetaData implements DialectDatabaseMetaData {
         return delegate.getGeneratedKeyOption();
     }
     
-    @Override
-    public Optional<DialectSequenceOption> getSequenceOption() {
-        return Optional.of(new DialectSequenceOption("SELECT TABLE_SCHEMA AS SEQUENCE_SCHEMA, TABLE_NAME AS SEQUENCE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'SEQUENCE'"));
-    }
-    
     @Override
     public DialectProtocolVersionOption getProtocolVersionOption() {
         return delegate.getProtocolVersionOption();
diff --git a/database/connector/dialect/mariadb/src/test/java/org/apache/shardingsphere/database/connector/mariadb/metadata/database/MariaDBDatabaseMetaDataTest.java b/database/connector/dialect/mariadb/src/test/java/org/apache/shardingsphere/database/connector/mariadb/metadata/database/MariaDBDatabaseMetaDataTest.java
index ba50da38565..53cfabc2226 100644
--- a/database/connector/dialect/mariadb/src/test/java/org/apache/shardingsphere/database/connector/mariadb/metadata/database/MariaDBDatabaseMetaDataTest.java
+++ b/database/connector/dialect/mariadb/src/test/java/org/apache/shardingsphere/database/connector/mariadb/metadata/database/MariaDBDatabaseMetaDataTest.java
@@ -26,7 +26,6 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.metad
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.keygen.DialectGeneratedKeyOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaSemantics;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DDLCommitPolicy;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DialectTransactionOption;
 import org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
@@ -115,12 +114,6 @@ class MariaDBDatabaseMetaDataTest {
         assertThat(actual.map(DialectGeneratedKeyOption::getColumnName).orElse(""), is("GENERATED_KEY"));
     }
     
-    @Test
-    void assertGetSequenceOption() {
-        assertThat(metaData.getSequenceOption().map(DialectSequenceOption::getSequenceMetadataQuerySQL).orElse(""),
-                is("SELECT TABLE_SCHEMA AS SEQUENCE_SCHEMA, TABLE_NAME AS SEQUENCE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'SEQUENCE'"));
-    }
-    
     @Test
     void assertGetProtocolVersionOption() {
         assertThat(metaData.getProtocolVersionOption().getDefaultVersion(), is("5.7.22"));
diff --git a/database/connector/dialect/opengauss/src/main/java/org/apache/shardingsphere/database/connector/opengauss/metadata/database/OpenGaussDatabaseMetaData.java b/database/connector/dialect/opengauss/src/main/java/org/apache/shardingsphere/database/connector/opengauss/metadata/database/OpenGaussDatabaseMetaData.java
index 87c18171c1f..948a55d99fa 100644
--- a/database/connector/dialect/opengauss/src/main/java/org/apache/shardingsphere/database/connector/opengauss/metadata/database/OpenGaussDatabaseMetaData.java
+++ b/database/connector/dialect/opengauss/src/main/java/org/apache/shardingsphere/database/connector/opengauss/metadata/database/OpenGaussDatabaseMetaData.java
@@ -25,7 +25,6 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.metad
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.function.DialectFunctionOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.index.DialectIndexOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sql.DialectSQLOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.table.DialectDriverQuerySystemCatalogOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DDLCommitPolicy;
@@ -87,11 +86,6 @@ public final class OpenGaussDatabaseMetaData implements DialectDatabaseMetaData
         return new PostgreSQLFunctionOption();
     }
     
-    @Override
-    public Optional<DialectSequenceOption> getSequenceOption() {
-        return Optional.of(new DialectSequenceOption("SELECT sequence_schema AS SEQUENCE_SCHEMA, sequence_name AS SEQUENCE_NAME FROM information_schema.sequences"));
-    }
-    
     @Override
     public DialectTransactionOption getTransactionOption() {
         return new DialectTransactionOption(true, DDLCommitPolicy.NO_ADDITIONAL_COMMIT, false, true, false, true, true,
diff --git a/database/connector/dialect/opengauss/src/test/java/org/apache/shardingsphere/database/connector/opengauss/metadata/database/OpenGaussDatabaseMetaDataTest.java b/database/connector/dialect/opengauss/src/test/java/org/apache/shardingsphere/database/connector/opengauss/metadata/database/OpenGaussDatabaseMetaDataTest.java
index 96ffefb3f1a..623bbf7c1fe 100644
--- a/database/connector/dialect/opengauss/src/test/java/org/apache/shardingsphere/database/connector/opengauss/metadata/database/OpenGaussDatabaseMetaDataTest.java
+++ b/database/connector/dialect/opengauss/src/test/java/org/apache/shardingsphere/database/connector/opengauss/metadata/database/OpenGaussDatabaseMetaDataTest.java
@@ -24,7 +24,6 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.metad
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.index.DialectIndexOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaSemantics;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.table.DialectDriverQuerySystemCatalogOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DDLCommitPolicy;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DialectTransactionOption;
@@ -101,12 +100,6 @@ class OpenGaussDatabaseMetaDataTest {
         assertThat(actual.getIndexNameMaxLength(), is(63));
     }
     
-    @Test
-    void assertGetSequenceOption() {
-        assertThat(dialectDatabaseMetaData.getSequenceOption().map(DialectSequenceOption::getSequenceMetadataQuerySQL).orElse(""),
-                is("SELECT sequence_schema AS SEQUENCE_SCHEMA, sequence_name AS SEQUENCE_NAME FROM information_schema.sequences"));
-    }
-    
     @Test
     void assertGetTransactionOption() {
         DialectTransactionOption actual = dialectDatabaseMetaData.getTransactionOption();
diff --git a/database/connector/dialect/oracle/src/main/java/org/apache/shardingsphere/database/connector/oracle/metadata/database/OracleDatabaseMetaData.java b/database/connector/dialect/oracle/src/main/java/org/apache/shardingsphere/database/connector/oracle/metadata/database/OracleDatabaseMetaData.java
index 40a63bd913d..166b77bff1a 100644
--- a/database/connector/dialect/oracle/src/main/java/org/apache/shardingsphere/database/connector/oracle/metadata/database/OracleDatabaseMetaData.java
+++ b/database/connector/dialect/oracle/src/main/java/org/apache/shardingsphere/database/connector/oracle/metadata/database/OracleDatabaseMetaData.java
@@ -29,7 +29,6 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.metad
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.index.DialectIndexOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.pagination.DialectPaginationOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DDLCommitPolicy;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DialectTransactionOption;
 import org.apache.shardingsphere.database.connector.oracle.metadata.database.option.OracleDataTypeOption;
@@ -102,11 +101,6 @@ public final class OracleDatabaseMetaData implements DialectDatabaseMetaData {
         return new OracleFunctionOption();
     }
     
-    @Override
-    public Optional<DialectSequenceOption> getSequenceOption() {
-        return Optional.of(new DialectSequenceOption("SELECT USER AS SEQUENCE_SCHEMA, sequence_name AS SEQUENCE_NAME FROM USER_SEQUENCES"));
-    }
-    
     @Override
     public String getDatabaseType() {
         return "Oracle";
diff --git a/database/connector/dialect/oracle/src/test/java/org/apache/shardingsphere/database/connector/oracle/metadata/database/OracleDatabaseMetaDataTest.java b/database/connector/dialect/oracle/src/test/java/org/apache/shardingsphere/database/connector/oracle/metadata/database/OracleDatabaseMetaDataTest.java
index 4965013baa0..1d9e99c21cd 100644
--- a/database/connector/dialect/oracle/src/test/java/org/apache/shardingsphere/database/connector/oracle/metadata/database/OracleDatabaseMetaDataTest.java
+++ b/database/connector/dialect/oracle/src/test/java/org/apache/shardingsphere/database/connector/oracle/metadata/database/OracleDatabaseMetaDataTest.java
@@ -26,7 +26,6 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.metad
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.pagination.DialectPaginationOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaSemantics;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DDLCommitPolicy;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DialectTransactionOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
@@ -85,12 +84,6 @@ class OracleDatabaseMetaDataTest {
         assertThat(actual.getIndexNameMaxLength(), is(30));
     }
     
-    @Test
-    void assertGetSequenceOption() {
-        assertThat(dialectDatabaseMetaData.getSequenceOption().map(DialectSequenceOption::getSequenceMetadataQuerySQL).orElse(""),
-                is("SELECT USER AS SEQUENCE_SCHEMA, sequence_name AS SEQUENCE_NAME FROM USER_SEQUENCES"));
-    }
-    
     @Test
     void assertGetConnectionOption() {
         DialectConnectionOption actualConnectionOption = dialectDatabaseMetaData.getConnectionOption();
diff --git a/database/connector/dialect/postgresql/src/main/java/org/apache/shardingsphere/database/connector/postgresql/metadata/database/PostgreSQLDatabaseMetaData.java b/database/connector/dialect/postgresql/src/main/java/org/apache/shardingsphere/database/connector/postgresql/metadata/database/PostgreSQLDatabaseMetaData.java
index a68438ade4d..f103aa474e2 100644
--- a/database/connector/dialect/postgresql/src/main/java/org/apache/shardingsphere/database/connector/postgresql/metadata/database/PostgreSQLDatabaseMetaData.java
+++ b/database/connector/dialect/postgresql/src/main/java/org/apache/shardingsphere/database/connector/postgresql/metadata/database/PostgreSQLDatabaseMetaData.java
@@ -25,7 +25,6 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.metad
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.function.DialectFunctionOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.index.DialectIndexOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sql.DialectSQLOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DDLCommitPolicy;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DialectTransactionOption;
@@ -36,7 +35,6 @@ import org.apache.shardingsphere.database.connector.postgresql.metadata.database
 import org.apache.shardingsphere.database.connector.postgresql.metadata.database.option.PostgreSQLSchemaOption;
 
 import java.util.Collections;
-import java.util.Optional;
 
 /**
  * Database meta data of PostgreSQL.
@@ -80,11 +78,6 @@ public final class PostgreSQLDatabaseMetaData implements DialectDatabaseMetaData
         return new PostgreSQLFunctionOption();
     }
     
-    @Override
-    public Optional<DialectSequenceOption> getSequenceOption() {
-        return Optional.of(new DialectSequenceOption("SELECT sequence_schema AS SEQUENCE_SCHEMA, sequence_name AS SEQUENCE_NAME FROM information_schema.sequences"));
-    }
-    
     @Override
     public DialectTransactionOption getTransactionOption() {
         return new DialectTransactionOption(false, DDLCommitPolicy.NO_ADDITIONAL_COMMIT, false, true, false, true, true,
diff --git a/database/connector/dialect/postgresql/src/test/java/org/apache/shardingsphere/database/connector/postgresql/metadata/database/PostgreSQLDatabaseMetaDataTest.java b/database/connector/dialect/postgresql/src/test/java/org/apache/shardingsphere/database/connector/postgresql/metadata/database/PostgreSQLDatabaseMetaDataTest.java
index 95b7f3a459f..305ca5c6a5a 100644
--- a/database/connector/dialect/postgresql/src/test/java/org/apache/shardingsphere/database/connector/postgresql/metadata/database/PostgreSQLDatabaseMetaDataTest.java
+++ b/database/connector/dialect/postgresql/src/test/java/org/apache/shardingsphere/database/connector/postgresql/metadata/database/PostgreSQLDatabaseMetaDataTest.java
@@ -23,7 +23,6 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.metad
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.IdentifierPatternType;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.index.DialectIndexOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaSemantics;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DDLCommitPolicy;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DialectTransactionOption;
 import org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
@@ -86,12 +85,6 @@ class PostgreSQLDatabaseMetaDataTest {
         assertThat(actual.getIndexNameMaxLength(), is(63));
     }
     
-    @Test
-    void assertGetSequenceOption() {
-        assertThat(dialectDatabaseMetaData.getSequenceOption().map(DialectSequenceOption::getSequenceMetadataQuerySQL).orElse(""),
-                is("SELECT sequence_schema AS SEQUENCE_SCHEMA, sequence_name AS SEQUENCE_NAME FROM information_schema.sequences"));
-    }
-    
     @Test
     void assertGetTransactionOption() {
         DialectTransactionOption actual = dialectDatabaseMetaData.getTransactionOption();
diff --git a/database/connector/dialect/sqlserver/src/main/java/org/apache/shardingsphere/database/connector/sql92/sqlserver/metadata/database/SQLServerDatabaseMetaData.java b/database/connector/dialect/sqlserver/src/main/java/org/apache/shardingsphere/database/connector/sql92/sqlserver/metadata/database/SQLServerDatabaseMetaData.java
index bb749ebdcd0..4ec5f9d6087 100644
--- a/database/connector/dialect/sqlserver/src/main/java/org/apache/shardingsphere/database/connector/sql92/sqlserver/metadata/database/SQLServerDatabaseMetaData.java
+++ b/database/connector/dialect/sqlserver/src/main/java/org/apache/shardingsphere/database/connector/sql92/sqlserver/metadata/database/SQLServerDatabaseMetaData.java
@@ -28,7 +28,6 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.metad
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DefaultSchemaOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaSemantics;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DDLCommitPolicy;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DialectTransactionOption;
 import org.apache.shardingsphere.database.connector.sql92.sqlserver.metadata.database.option.SQLServerFunctionOption;
@@ -77,12 +76,6 @@ public final class SQLServerDatabaseMetaData implements DialectDatabaseMetaData
         return new SQLServerFunctionOption();
     }
     
-    @Override
-    public Optional<DialectSequenceOption> getSequenceOption() {
-        return Optional.of(new DialectSequenceOption(
-                "SELECT schemas.name AS SEQUENCE_SCHEMA, seq.name AS SEQUENCE_NAME FROM sys.sequences seq INNER JOIN sys.schemas schemas ON seq.schema_id = schemas.schema_id"));
-    }
-    
     @Override
     public Optional<DialectAlterTableOption> getAlterTableOption() {
         return Optional.of(new DialectAlterTableOption(false, false, false, new DialectAddColumnOption("")));
diff --git a/database/connector/dialect/sqlserver/src/test/java/org/apache/shardingsphere/database/connector/sql92/sqlserver/metadata/database/SQLServerDatabaseMetaDataTest.java b/database/connector/dialect/sqlserver/src/test/java/org/apache/shardingsphere/database/connector/sql92/sqlserver/metadata/database/SQLServerDatabaseMetaDataTest.java
index 9494a7bdb88..9d630791733 100644
--- a/database/connector/dialect/sqlserver/src/test/java/org/apache/shardingsphere/database/connector/sql92/sqlserver/metadata/database/SQLServerDatabaseMetaDataTest.java
+++ b/database/connector/dialect/sqlserver/src/test/java/org/apache/shardingsphere/database/connector/sql92/sqlserver/metadata/database/SQLServerDatabaseMetaDataTest.java
@@ -25,7 +25,6 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.metad
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.pagination.DialectPaginationOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaSemantics;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DDLCommitPolicy;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.transaction.DialectTransactionOption;
 import org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
@@ -86,12 +85,6 @@ class SQLServerDatabaseMetaDataTest {
         assertTrue(actual.getXaDriverClassNames().contains("com.microsoft.sqlserver.jdbc.SQLServerXADataSource"));
     }
     
-    @Test
-    void assertGetSequenceOption() {
-        assertThat(dialectDatabaseMetaData.getSequenceOption().map(DialectSequenceOption::getSequenceMetadataQuerySQL).orElse(""),
-                is("SELECT schemas.name AS SEQUENCE_SCHEMA, seq.name AS SEQUENCE_NAME FROM sys.sequences seq INNER JOIN sys.schemas schemas ON seq.schema_id = schemas.schema_id"));
-    }
-    
     @Test
     void assertGetPaginationOption() {
         DialectPaginationOption actual = dialectDatabaseMetaData.getPaginationOption();
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchema.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchema.java
index 734f2de7e9a..d104a004516 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchema.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchema.java
@@ -54,8 +54,6 @@ public final class ShardingSphereSchema {
     
     private IdentifierIndex<ShardingSphereView> viewIndex;
     
-    private IdentifierIndex<ShardingSphereSequence> sequenceIndex;
-    
     /**
      * Construct schema with the temporary default identifier context.
      *
@@ -71,10 +69,8 @@ public final class ShardingSphereSchema {
         tableIndex = new IdentifierIndex<>(identifierContext, IdentifierScope.TABLE);
         logicalTableIndex = null;
         viewIndex = new IdentifierIndex<>(identifierContext, IdentifierScope.VIEW);
-        sequenceIndex = new IdentifierIndex<>(identifierContext, IdentifierScope.SEQUENCE);
         tableIndex.rebuild(Collections.emptyMap());
         viewIndex.rebuild(Collections.emptyMap());
-        sequenceIndex.rebuild(Collections.emptyMap());
     }
     
     /**
@@ -88,29 +84,12 @@ public final class ShardingSphereSchema {
      * @param views views
      */
     public ShardingSphereSchema(final String name, final DatabaseType protocolType, final Collection<ShardingSphereTable> tables, final Collection<ShardingSphereView> views) {
-        this(name, protocolType, tables, views, Collections.emptyList());
-    }
-    
-    /**
-     * Construct schema with tables, views and sequences by using the temporary default identifier context.
-     *
-     * <p>TODO(haoran): Replace this fallback with explicit identifier context injection after all schema creation paths migrate.</p>
-     *
-     * @param name schema name
-     * @param protocolType protocol type
-     * @param tables tables
-     * @param views views
-     * @param sequences sequences
-     */
-    public ShardingSphereSchema(final String name, final DatabaseType protocolType, final Collection<ShardingSphereTable> tables,
-                                final Collection<ShardingSphereView> views, final Collection<ShardingSphereSequence> sequences) {
         this(name, protocolType);
         Map<String, ShardingSphereTable> tableMap = createTableMap(tables);
         Map<String, ShardingSphereView> viewMap = createViewMap(views);
         tableMap.values().forEach(this::refreshTableIdentifierContext);
         tableIndex.rebuild(tableMap);
         viewIndex.rebuild(viewMap);
-        sequenceIndex.rebuild(createSequenceMap(sequences));
     }
     
     /**
@@ -297,84 +276,6 @@ public final class ShardingSphereSchema {
         viewIndex.remove(view.getName());
     }
     
-    /**
-     * Get all sequences.
-     *
-     * @return all sequences
-     */
-    public Collection<ShardingSphereSequence> getAllSequences() {
-        return sequenceIndex.getAll();
-    }
-    
-    /**
-     * Judge whether contains sequence.
-     *
-     * @param sequenceName sequence name
-     * @return contains sequence or not
-     */
-    public boolean containsSequence(final String sequenceName) {
-        return containsSequence(new IdentifierValue(sequenceName, QuoteCharacter.NONE));
-    }
-    
-    /**
-     * Judge whether contains sequence.
-     *
-     * @param sequenceName sequence name
-     * @return contains sequence or not
-     */
-    private boolean containsSequence(final IdentifierValue sequenceName) {
-        return findSequence(sequenceName).isPresent();
-    }
-    
-    /**
-     * Get sequence.
-     *
-     * @param sequenceName sequence name
-     * @return sequence
-     */
-    public ShardingSphereSequence getSequence(final String sequenceName) {
-        return getSequence(new IdentifierValue(sequenceName, QuoteCharacter.NONE));
-    }
-    
-    /**
-     * Get sequence.
-     *
-     * @param sequenceName sequence name
-     * @return sequence
-     */
-    private ShardingSphereSequence getSequence(final IdentifierValue sequenceName) {
-        return findSequence(sequenceName).orElse(null);
-    }
-    
-    private Optional<ShardingSphereSequence> findSequence(final IdentifierValue sequenceName) {
-        return sequenceIndex.find(sequenceName);
-    }
-    
-    /**
-     * Add sequence.
-     *
-     * @param sequence sequence
-     */
-    public void putSequence(final ShardingSphereSequence sequence) {
-        sequenceIndex.put(sequence.getName(), sequence);
-    }
-    
-    /**
-     * Remove sequence.
-     *
-     * @param sequenceName sequence name
-     */
-    public void removeSequence(final String sequenceName) {
-        if (null != sequenceIndex.remove(sequenceName)) {
-            return;
-        }
-        ShardingSphereSequence sequence = getSequence(sequenceName);
-        if (null == sequence) {
-            return;
-        }
-        sequenceIndex.remove(sequence.getName());
-    }
-    
     /**
      * Refresh shared database identifier context.
      *
@@ -394,9 +295,6 @@ public final class ShardingSphereSchema {
         Collection<ShardingSphereView> views = new LinkedList<>(viewIndex.getAll());
         viewIndex = new IdentifierIndex<>(identifierContext, IdentifierScope.VIEW);
         viewIndex.rebuild(createViewMap(views));
-        Collection<ShardingSphereSequence> sequences = new LinkedList<>(sequenceIndex.getAll());
-        sequenceIndex = new IdentifierIndex<>(identifierContext, IdentifierScope.SEQUENCE);
-        sequenceIndex.rebuild(createSequenceMap(sequences));
     }
     
     /**
@@ -456,7 +354,7 @@ public final class ShardingSphereSchema {
      * @return empty schema or not
      */
     public boolean isEmpty() {
-        return tableIndex.isEmpty() && viewIndex.isEmpty() && sequenceIndex.isEmpty();
+        return tableIndex.isEmpty() && viewIndex.isEmpty();
     }
     
     private void refreshTableIdentifierContext(final ShardingSphereTable table) {
@@ -473,11 +371,6 @@ public final class ShardingSphereSchema {
                 () -> new LinkedHashMap<>(views.size(), 1F)));
     }
     
-    private Map<String, ShardingSphereSequence> createSequenceMap(final Collection<ShardingSphereSequence> sequences) {
-        return sequences.stream().collect(Collectors.toMap(ShardingSphereSequence::getName, each -> each, (oldValue, currentValue) -> currentValue,
-                () -> new LinkedHashMap<>(sequences.size(), 1F)));
-    }
-    
     private IdentifierIndex<ShardingSphereTable> createLogicalTableIndex(final DatabaseIdentifierContext context) {
         if (!context.isHeterogeneousTableLookupEnabled()) {
             return null;
diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchemaTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchemaTest.java
index bc6ccd2b1a8..db912016107 100644
--- a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchemaTest.java
+++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchemaTest.java
@@ -113,40 +113,6 @@ class ShardingSphereSchemaTest {
         assertFalse(schema.containsView("foo_view"));
     }
     
-    @Test
-    void assertGetAllSequences() {
-        ShardingSphereSequence sequence = new ShardingSphereSequence("foo_seq");
-        assertThat(new HashSet<>(new ShardingSphereSchema("foo_db", postgreSQLDatabaseType, Collections.emptyList(), Collections.emptyList(), Collections.singleton(sequence))
-                .getAllSequences()), is(Collections.singleton(sequence)));
-    }
-    
-    @Test
-    void assertContainsSequence() {
-        ShardingSphereSequence sequence = new ShardingSphereSequence("foo_seq");
-        assertTrue(new ShardingSphereSchema("foo_db", postgreSQLDatabaseType, Collections.emptyList(), Collections.emptyList(), Collections.singleton(sequence)).containsSequence("foo_seq"));
-    }
-    
-    @Test
-    void assertGetSequence() {
-        ShardingSphereSequence sequence = new ShardingSphereSequence("foo_seq");
-        assertThat(new ShardingSphereSchema("foo_db", postgreSQLDatabaseType, Collections.emptyList(), Collections.emptyList(), Collections.singleton(sequence)).getSequence("foo_seq"), is(sequence));
-    }
-    
-    @Test
-    void assertPutSequence() {
-        ShardingSphereSchema schema = new ShardingSphereSchema("foo_db", postgreSQLDatabaseType);
-        schema.putSequence(new ShardingSphereSequence("foo_seq"));
-        assertTrue(schema.containsSequence("foo_seq"));
-    }
-    
-    @Test
-    void assertRemoveSequence() {
-        ShardingSphereSchema schema = new ShardingSphereSchema("foo_db", postgreSQLDatabaseType, Collections.emptyList(), Collections.emptyList(),
-                Collections.singleton(new ShardingSphereSequence("foo_seq")));
-        schema.removeSequence("foo_seq");
-        assertFalse(schema.containsSequence("foo_seq"));
-    }
-    
     @Test
     void assertContainsIndex() {
         ShardingSphereTable table = new ShardingSphereTable(
@@ -213,12 +179,6 @@ class ShardingSphereSchemaTest {
         assertFalse(new ShardingSphereSchema("foo_db", postgreSQLDatabaseType, Collections.emptyList(), Collections.singleton(view)).isEmpty());
     }
     
-    @Test
-    void assertIsEmptyWithEmptySequence() {
-        ShardingSphereSequence sequence = new ShardingSphereSequence("foo_seq");
-        assertFalse(new ShardingSphereSchema("foo_db", postgreSQLDatabaseType, Collections.emptyList(), Collections.emptyList(), Collections.singleton(sequence)).isEmpty());
-    }
-    
     @Test
     void assertIsEmpty() {
         assertTrue(new ShardingSphereSchema("foo_db", postgreSQLDatabaseType).isEmpty());
@@ -272,22 +232,6 @@ class ShardingSphereSchemaTest {
         assertThat(schema.getView("FOO_VIEW"), is(view));
     }
     
-    @Test
-    void assertContainsUpperCaseSequence() {
-        ShardingSphereSequence sequence = new ShardingSphereSequence("foo_seq");
-        ShardingSphereSchema schema = new ShardingSphereSchema("foo_schema", postgreSQLDatabaseType, Collections.emptyList(), Collections.emptyList(), Collections.singleton(sequence));
-        schema.refreshIdentifierContext(new DatabaseIdentifierContext(IdentifierCasePolicyFactory.newLowerCasePolicySet()));
-        assertTrue(schema.containsSequence("FOO_SEQ"));
-    }
-    
-    @Test
-    void assertGetUpperCaseSequence() {
-        ShardingSphereSequence sequence = new ShardingSphereSequence("foo_seq");
-        ShardingSphereSchema schema = new ShardingSphereSchema("foo_schema", postgreSQLDatabaseType, Collections.emptyList(), Collections.emptyList(), Collections.singleton(sequence));
-        schema.refreshIdentifierContext(new DatabaseIdentifierContext(IdentifierCasePolicyFactory.newLowerCasePolicySet()));
-        assertThat(schema.getSequence("FOO_SEQ"), is(sequence));
-    }
-    
     @Test
     void assertAttachIdentifierContext() {
         ShardingSphereTable table = new ShardingSphereTable("Foo_Tbl", Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/identifier/DatabaseIdentifierContextFactoryTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/identifier/DatabaseIdentifierContextFactoryTest.java
index 5634bd0cb79..8d2bc7ba3b5 100644
--- a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/identifier/DatabaseIdentifierContextFactoryTest.java
+++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/identifier/DatabaseIdentifierContextFactoryTest.java
@@ -571,7 +571,6 @@ class DatabaseIdentifierContextFactoryTest {
                 Arguments.of("view", IdentifierScope.VIEW, LookupMode.EXACT, false),
                 Arguments.of("column", IdentifierScope.COLUMN, LookupMode.NORMALIZED, true),
                 Arguments.of("index", IdentifierScope.INDEX, LookupMode.NORMALIZED, true),
-                Arguments.of("sequence", IdentifierScope.SEQUENCE, LookupMode.EXACT, false),
                 Arguments.of("constraint", IdentifierScope.CONSTRAINT, LookupMode.NORMALIZED, true));
     }
     
diff --git a/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/completion/handler/MetadataCompletionHandler.java b/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/completion/handler/MetadataCompletionHandler.java
index 7cbb7cccd54..e25ecf1387b 100644
--- a/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/completion/handler/MetadataCompletionHandler.java
+++ b/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/completion/handler/MetadataCompletionHandler.java
@@ -21,7 +21,6 @@ import org.apache.shardingsphere.mcp.api.exception.MCPUnsupportedException;
 import org.apache.shardingsphere.mcp.core.metadata.GovernanceMetadataQueryService;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSequence;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.mcp.api.capability.completion.MCPCompletionCandidate;
 import org.apache.shardingsphere.mcp.api.capability.completion.MCPCompletionHandler;
@@ -30,6 +29,7 @@ import org.apache.shardingsphere.mcp.api.capability.completion.MCPCompletionRequ
 import org.apache.shardingsphere.mcp.support.MCPFeatureRequestContext;
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatabaseProfile;
 import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPColumnMetadata;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPSequenceMetadata;
 import org.apache.shardingsphere.mcp.support.database.spi.MCPFeatureQueryFacade;
 import org.apache.shardingsphere.mcp.support.resource.MCPUriPathSegmentUtils;
 
@@ -178,7 +178,7 @@ public final class MetadataCompletionHandler implements MCPCompletionHandler<MCP
             return List.of();
         }
         try {
-            return handlerContext.getMetadataQueryFacade().querySequences(database, schema).stream().map(ShardingSphereSequence::getName)
+            return handlerContext.getMetadataQueryFacade().querySequences(database, schema).stream().map(MCPSequenceMetadata::getSequence)
                     .map(each -> new MCPCompletionCandidate(each, "sequence", "metadata")).toList();
         } catch (final MCPUnsupportedException ignored) {
             return List.of();
diff --git a/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/resource/handler/metadata/MetadataResourcePayloadMapper.java b/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/resource/handler/metadata/MetadataResourcePayloadMapper.java
index a5b876cba28..0b80d52ab5e 100644
--- a/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/resource/handler/metadata/MetadataResourcePayloadMapper.java
+++ b/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/resource/handler/metadata/MetadataResourcePayloadMapper.java
@@ -21,11 +21,12 @@ import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.database.connector.core.metadata.database.enums.TableType;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSequence;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.mcp.api.capability.resource.MCPResourceURIVariables;
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatabaseProfile;
 import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPColumnMetadata;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPSequenceMetadata;
+import org.apache.shardingsphere.mcp.support.database.capability.SupportedMCPMetadataObjectType;
 import org.apache.shardingsphere.mcp.support.database.spi.MCPMetadataQueryFacade;
 import org.apache.shardingsphere.mcp.support.descriptor.ShardingSphereMCPResourceMetadata;
 
@@ -74,8 +75,8 @@ public final class MetadataResourcePayloadMapper {
         if (item instanceof ShardingSphereIndex) {
             return createIndexPayload((ShardingSphereIndex) item);
         }
-        if (item instanceof ShardingSphereSequence) {
-            return createSequencePayload((ShardingSphereSequence) item);
+        if (item instanceof MCPSequenceMetadata) {
+            return createSequencePayload((MCPSequenceMetadata) item);
         }
         return item;
     }
@@ -104,8 +105,9 @@ public final class MetadataResourcePayloadMapper {
                         .map(each -> createViewPayload(database, schema.getName(), each, false)).toList()
                 : List.of());
         result.put("sequences", detail
-                ? schema.getAllSequences().stream().sorted(Comparator.comparing(ShardingSphereSequence::getName)).map(each -> createSequencePayload(database, schema.getName(), each)).toList()
-                : List.of());
+                && metadataQueryFacade.isSupportedMetadataObjectType(database, SupportedMCPMetadataObjectType.SEQUENCE)
+                        ? metadataQueryFacade.querySequences(database, schema.getName()).stream().map(this::createSequencePayload).toList()
+                        : List.of());
         return result;
     }
     
@@ -169,15 +171,11 @@ public final class MetadataResourcePayloadMapper {
         return result;
     }
     
-    private Map<String, Object> createSequencePayload(final ShardingSphereSequence sequence) {
-        return createSequencePayload(getDatabase(), getSchema(), sequence);
-    }
-    
-    private Map<String, Object> createSequencePayload(final String database, final String schema, final ShardingSphereSequence sequence) {
+    private Map<String, Object> createSequencePayload(final MCPSequenceMetadata sequence) {
         Map<String, Object> result = new LinkedHashMap<>(3, 1F);
-        result.put("database", database);
-        result.put("schema", schema);
-        result.put("sequence", sequence.getName());
+        result.put("database", sequence.getDatabase());
+        result.put("schema", sequence.getSchema());
+        result.put("sequence", sequence.getSequence());
         return result;
     }
     
diff --git a/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/tool/handler/metadata/MetadataSearchCollector.java b/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/tool/handler/metadata/MetadataSearchCollector.java
index 6d0d3fba660..be60a4201c1 100644
--- a/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/tool/handler/metadata/MetadataSearchCollector.java
+++ b/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/tool/handler/metadata/MetadataSearchCollector.java
@@ -22,7 +22,6 @@ import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.database.connector.core.metadata.database.enums.TableType;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSequence;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.mcp.core.metadata.GovernanceMetadataQueryService;
 import org.apache.shardingsphere.mcp.core.tool.request.MetadataSearchRequest;
@@ -30,6 +29,7 @@ import org.apache.shardingsphere.mcp.core.tool.payload.MetadataSearchHit;
 import org.apache.shardingsphere.mcp.support.database.capability.SupportedMCPMetadataObjectType;
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatabaseProfile;
 import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPColumnMetadata;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPSequenceMetadata;
 import org.apache.shardingsphere.mcp.support.database.spi.MCPFeatureQueryFacade;
 import org.apache.shardingsphere.mcp.support.database.spi.MCPMetadataQueryFacade;
 
@@ -189,8 +189,8 @@ final class MetadataSearchCollector {
         return createSearchHit(database, schema.getName(), SupportedMCPMetadataObjectType.SCHEMA, "", "", schema.getName());
     }
     
-    private MetadataSearchHit createSearchHit(final String database, final String schema, final ShardingSphereSequence sequence) {
-        return createSearchHit(database, schema, SupportedMCPMetadataObjectType.SEQUENCE, "", "", sequence.getName());
+    private MetadataSearchHit createSearchHit(final String database, final String schema, final MCPSequenceMetadata sequence) {
+        return createSearchHit(database, schema, SupportedMCPMetadataObjectType.SEQUENCE, "", "", sequence.getSequence());
     }
     
     private MetadataSearchHit createSearchHit(final String database, final String schema, final SupportedMCPMetadataObjectType objectType,
diff --git a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/completion/handler/MetadataCompletionHandlerTest.java b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/completion/handler/MetadataCompletionHandlerTest.java
index 382999e1e4e..3a5b2cdd175 100644
--- a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/completion/handler/MetadataCompletionHandlerTest.java
+++ b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/completion/handler/MetadataCompletionHandlerTest.java
@@ -23,7 +23,6 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.enums
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSequence;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.mcp.api.capability.completion.MCPCompletionCandidate;
 import org.apache.shardingsphere.mcp.api.capability.completion.MCPCompletionHandlerResult;
@@ -33,6 +32,7 @@ import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatab
 import org.apache.shardingsphere.mcp.support.database.metadata.TransactionCapability;
 import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPColumnMetadata;
 import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPColumnMetadata.Nullability;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPSequenceMetadata;
 import org.apache.shardingsphere.mcp.support.database.spi.MCPFeatureCapabilityFacade;
 import org.apache.shardingsphere.mcp.support.database.spi.MCPFeatureQueryFacade;
 import org.apache.shardingsphere.mcp.support.database.spi.MCPMetadataQueryFacade;
@@ -182,7 +182,7 @@ class MetadataCompletionHandlerTest {
     @Test
     void assertCompleteSequence() {
         MCPMetadataQueryFacade metadataQueryFacade = mock(MCPMetadataQueryFacade.class);
-        when(metadataQueryFacade.querySequences("logic_db", "public")).thenReturn(List.of(new ShardingSphereSequence("order_seq")));
+        when(metadataQueryFacade.querySequences("logic_db", "public")).thenReturn(List.of(new MCPSequenceMetadata("logic_db", "public", "order_seq")));
         MCPCompletionHandlerResult actual = new MetadataCompletionHandler().complete(createHandlerContext(metadataQueryFacade),
                 createRequestContext("sequence", Map.of("database", "logic_db", "schema", "public")));
         assertCandidate(actual, "order_seq");
diff --git a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/ResourceTestDataFactory.java b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/ResourceTestDataFactory.java
index 0782f00b51c..c53a305358a 100644
--- a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/ResourceTestDataFactory.java
+++ b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/ResourceTestDataFactory.java
@@ -23,7 +23,6 @@ import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DefaultSchemaOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaSemantics;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.system.DialectSystemDatabase;
 import org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
@@ -35,6 +34,7 @@ import org.apache.shardingsphere.mcp.core.context.MCPFeatureRuntimeRequestContex
 import org.apache.shardingsphere.mcp.core.context.MCPRuntimeContext;
 import org.apache.shardingsphere.mcp.core.session.MCPSessionManager;
 import org.apache.shardingsphere.mcp.support.database.capability.MCPDatabaseCapabilityProvider;
+import org.apache.shardingsphere.mcp.support.database.capability.MCPDatabaseCapabilityOption;
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatabaseConfiguration;
 import org.mockito.MockedStatic;
 
@@ -230,10 +230,13 @@ public final class ResourceTestDataFactory {
         when(databaseTypeFromSPI.getTrunkDatabaseType()).thenReturn(Optional.empty());
         typedSPILoader.when(() -> TypedSPILoader.findService(DatabaseType.class, databaseType)).thenReturn(Optional.of(databaseTypeFromSPI));
         typedSPILoader.when(() -> TypedSPILoader.getService(DatabaseType.class, databaseType)).thenReturn(databaseTypeFromSPI);
+        MCPDatabaseCapabilityOption capabilityOption = mock(MCPDatabaseCapabilityOption.class);
+        when(capabilityOption.getType()).thenReturn(databaseType);
+        when(capabilityOption.getSequenceQuery()).thenReturn(
+                sequenceSupported ? Optional.of("SELECT SEQUENCE_SCHEMA, SEQUENCE_NAME FROM TEST_SEQUENCES") : Optional.empty());
+        typedSPILoader.when(() -> TypedSPILoader.findService(MCPDatabaseCapabilityOption.class, databaseType)).thenReturn(Optional.of(capabilityOption));
         DialectDatabaseMetaData dialectDatabaseMetaData = mock(DialectDatabaseMetaData.class);
         when(dialectDatabaseMetaData.getSchemaOption()).thenReturn(new DefaultSchemaOption(true, null, DialectSchemaSemantics.NATIVE_SCHEMA));
-        when(dialectDatabaseMetaData.getSequenceOption()).thenReturn(
-                sequenceSupported ? Optional.of(new DialectSequenceOption("SELECT SEQUENCE_SCHEMA, SEQUENCE_NAME FROM TEST_SEQUENCES")) : Optional.empty());
         databaseTypedSPILoader.when(() -> DatabaseTypedSPILoader.findService(DialectDatabaseMetaData.class, databaseTypeFromSPI)).thenReturn(Optional.of(dialectDatabaseMetaData));
         databaseTypedSPILoader.when(() -> DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseTypeFromSPI)).thenReturn(dialectDatabaseMetaData);
         databaseTypedSPILoader.when(() -> DatabaseTypedSPILoader.findService(DialectSystemDatabase.class, databaseTypeFromSPI)).thenReturn(Optional.empty());
diff --git a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/handler/metadata/MetadataResourcePayloadMapperTest.java b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/handler/metadata/MetadataResourcePayloadMapperTest.java
index e82f9671252..0a173c1f766 100644
--- a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/handler/metadata/MetadataResourcePayloadMapperTest.java
+++ b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/handler/metadata/MetadataResourcePayloadMapperTest.java
@@ -25,12 +25,13 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.enums
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSequence;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.mcp.api.capability.resource.MCPResourceURIVariables;
+import org.apache.shardingsphere.mcp.support.database.capability.SupportedMCPMetadataObjectType;
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatabaseProfile;
 import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPColumnMetadata;
 import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPColumnMetadata.Nullability;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPSequenceMetadata;
 import org.apache.shardingsphere.mcp.support.database.spi.MCPMetadataQueryFacade;
 import org.apache.shardingsphere.mcp.support.descriptor.ShardingSphereMCPResourceMetadata;
 import org.junit.jupiter.api.Test;
@@ -43,6 +44,8 @@ import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 class MetadataResourcePayloadMapperTest {
@@ -51,6 +54,8 @@ class MetadataResourcePayloadMapperTest {
     void assertMapDatabaseDetail() {
         MCPMetadataQueryFacade metadataQueryFacade = mock(MCPMetadataQueryFacade.class);
         when(metadataQueryFacade.querySchemas("logic_db")).thenReturn(List.of(createSchemaMetadata()));
+        when(metadataQueryFacade.isSupportedMetadataObjectType("logic_db", SupportedMCPMetadataObjectType.SEQUENCE)).thenReturn(true);
+        when(metadataQueryFacade.querySequences("logic_db", "public")).thenReturn(List.of(new MCPSequenceMetadata("logic_db", "public", "order_seq")));
         List<?> actual = new MetadataResourcePayloadMapper(metadataQueryFacade, new MCPResourceURIVariables(Map.of()), true)
                 .map(createMetadata("logical-database"), List.of(
                         new RuntimeDatabaseProfile("logic_db", "FixtureDB", "1.0", TransactionCapability.LOCAL_WITH_SAVEPOINT,
@@ -65,6 +70,24 @@ class MetadataResourcePayloadMapperTest {
         assertThat(getNames(actualSchema, "sequences", "sequence"), is(List.of("order_seq")));
     }
     
+    @Test
+    void assertMapSchemaDetailWithoutSequenceSupport() {
+        MCPResourceURIVariables uriVariables = new MCPResourceURIVariables(Map.of("database", "logic_db"));
+        MCPMetadataQueryFacade metadataQueryFacade = mock(MCPMetadataQueryFacade.class);
+        List<?> actual = new MetadataResourcePayloadMapper(metadataQueryFacade, uriVariables, true)
+                .map(createMetadata("schema"), List.of(createSchemaMetadata()));
+        assertThat(((Map<?, ?>) actual.getFirst()).get("sequences"), is(List.of()));
+        verify(metadataQueryFacade, never()).querySequences("logic_db", "public");
+    }
+    
+    @Test
+    void assertMapSequence() {
+        MCPSequenceMetadata sequence = new MCPSequenceMetadata("logic_db", "public", "order_seq");
+        List<?> actual = new MetadataResourcePayloadMapper(mock(MCPMetadataQueryFacade.class), new MCPResourceURIVariables(Map.of()), false)
+                .map(createMetadata("sequence"), List.of(sequence));
+        assertThat(actual, is(List.of(Map.of("database", "logic_db", "schema", "public", "sequence", "order_seq"))));
+    }
+    
     @Test
     void assertMapTableDetail() {
         MCPResourceURIVariables uriVariables = new MCPResourceURIVariables(Map.of("database", "logic_db", "schema", "public"));
@@ -111,7 +134,7 @@ class MetadataResourcePayloadMapperTest {
         return new ShardingSphereSchema("public", mock(DatabaseType.class), List.of(
                 createTable("orders", TableType.TABLE),
                 createTable("order_items", TableType.TABLE),
-                createTable("active_orders", TableType.VIEW)), List.of(), List.of(new ShardingSphereSequence("order_seq")));
+                createTable("active_orders", TableType.VIEW)), List.of());
     }
     
     private ShardingSphereTable createTable(final String name, final TableType tableType) {
diff --git a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseCapability.java b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseCapability.java
index 775aa498e42..b681f30d496 100644
--- a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseCapability.java
+++ b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseCapability.java
@@ -51,10 +51,10 @@ public final class MCPDatabaseCapability {
     MCPDatabaseCapability(final RuntimeDatabaseProfile databaseProfile, final MCPDatabaseCapabilityOption option) {
         databaseName = databaseProfile.getDatabase();
         databaseType = option.getType();
-        MCPDatabaseDialect databaseDialect = MCPDatabaseDialect.of(option.getType());
-        supportedMetadataObjectTypes = createSupportedMetadataObjectTypes(databaseDialect);
+        supportedMetadataObjectTypes = createSupportedMetadataObjectTypes(option);
         transactionCapability = databaseProfile.getTransactionCapability();
         supportedStatementClasses = createSupportedStatementClasses(transactionCapability, option.isExplainSupported());
+        MCPDatabaseDialect databaseDialect = MCPDatabaseDialect.of(option.getType());
         defaultSchemaSemantics = databaseDialect.getDefaultSchemaSemantics();
         schemaExecutionSemantics = createSchemaExecutionSemantics(defaultSchemaSemantics);
         identifierContext = databaseProfile.getIdentifierContext();
@@ -64,14 +64,14 @@ public final class MCPDatabaseCapability {
         return DialectSchemaSemantics.DATABASE_AS_SCHEMA == defaultSchemaSemantics ? SchemaExecutionSemantics.FIXED_TO_DATABASE : SchemaExecutionSemantics.BEST_EFFORT;
     }
     
-    private Set<SupportedMCPMetadataObjectType> createSupportedMetadataObjectTypes(final MCPDatabaseDialect databaseDialect) {
+    private Set<SupportedMCPMetadataObjectType> createSupportedMetadataObjectTypes(final MCPDatabaseCapabilityOption option) {
         Set<SupportedMCPMetadataObjectType> result = new LinkedHashSet<>(16, 1F);
         result.add(SupportedMCPMetadataObjectType.SCHEMA);
         result.add(SupportedMCPMetadataObjectType.TABLE);
         result.add(SupportedMCPMetadataObjectType.VIEW);
         result.add(SupportedMCPMetadataObjectType.COLUMN);
         result.add(SupportedMCPMetadataObjectType.INDEX);
-        if (databaseDialect.isSequenceSupported()) {
+        if (option.getSequenceQuery().isPresent()) {
             result.add(SupportedMCPMetadataObjectType.SEQUENCE);
         }
         return result;
diff --git a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseCapabilityOption.java b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseCapabilityOption.java
index a6788b9af1d..46ae3cce114 100644
--- a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseCapabilityOption.java
+++ b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseCapabilityOption.java
@@ -20,6 +20,8 @@ package org.apache.shardingsphere.mcp.support.database.capability;
 import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
 
+import java.util.Optional;
+
 /**
  * MCP database capability option.
  */
@@ -33,6 +35,15 @@ public interface MCPDatabaseCapabilityOption extends TypedSPI {
      */
     boolean isExplainSupported();
     
+    /**
+     * Get sequence metadata query.
+     *
+     * @return sequence metadata query
+     */
+    default Optional<String> getSequenceQuery() {
+        return Optional.empty();
+    }
+    
     @Override
     String getType();
 }
diff --git a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseDialect.java b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseDialect.java
index e9e924ae1b2..6cd8aa5a8ad 100644
--- a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseDialect.java
+++ b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseDialect.java
@@ -28,6 +28,7 @@ import org.apache.shardingsphere.infra.spi.exception.ServiceProviderNotFoundExce
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 
 import java.util.Collection;
+import java.util.Optional;
 
 /**
  * MCP database dialect capabilities.
@@ -39,6 +40,8 @@ public final class MCPDatabaseDialect {
     
     private final SystemDatabase systemDatabase;
     
+    private final Optional<MCPDatabaseCapabilityOption> capabilityOption;
+    
     /**
      * Create MCP database dialect capabilities.
      *
@@ -51,7 +54,8 @@ public final class MCPDatabaseDialect {
                 .orElseThrow(() -> new ServiceProviderNotFoundException(DatabaseType.class, actualDatabaseType));
         DialectDatabaseMetaData dialectDatabaseMetaData = DatabaseTypedSPILoader.findService(DialectDatabaseMetaData.class, databaseTypeFromSPI)
                 .orElseThrow(() -> new ServiceProviderNotFoundException(DialectDatabaseMetaData.class, actualDatabaseType));
-        return new MCPDatabaseDialect(dialectDatabaseMetaData, new SystemDatabase(databaseTypeFromSPI));
+        return new MCPDatabaseDialect(dialectDatabaseMetaData, new SystemDatabase(databaseTypeFromSPI),
+                TypedSPILoader.findService(MCPDatabaseCapabilityOption.class, actualDatabaseType));
     }
     
     /**
@@ -68,8 +72,8 @@ public final class MCPDatabaseDialect {
      *
      * @return sequence metadata query
      */
-    public boolean isSequenceSupported() {
-        return dialectDatabaseMetaData.getSequenceOption().isPresent();
+    public Optional<String> getSequenceQuery() {
+        return capabilityOption.flatMap(MCPDatabaseCapabilityOption::getSequenceQuery);
     }
     
     /**
diff --git a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/FirebirdMCPDatabaseCapabilityOption.java b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/FirebirdMCPDatabaseCapabilityOption.java
index d16030391ef..79ba19f34ee 100644
--- a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/FirebirdMCPDatabaseCapabilityOption.java
+++ b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/FirebirdMCPDatabaseCapabilityOption.java
@@ -19,6 +19,8 @@ package org.apache.shardingsphere.mcp.support.database.capability.dialect;
 
 import org.apache.shardingsphere.mcp.support.database.capability.MCPDatabaseCapabilityOption;
 
+import java.util.Optional;
+
 /**
  * MCP database capability option for Firebird.
  */
@@ -29,6 +31,11 @@ public final class FirebirdMCPDatabaseCapabilityOption implements MCPDatabaseCap
         return false;
     }
     
+    @Override
+    public Optional<String> getSequenceQuery() {
+        return Optional.of("SELECT '' AS SEQUENCE_SCHEMA, TRIM(RDB$GENERATOR_NAME) AS SEQUENCE_NAME FROM RDB$GENERATORS WHERE COALESCE(RDB$SYSTEM_FLAG, 0) = 0");
+    }
+    
     @Override
     public String getType() {
         return "Firebird";
diff --git a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/MariaDBMCPDatabaseCapabilityOption.java b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/MariaDBMCPDatabaseCapabilityOption.java
index 031bf25af48..2d34b6cfe86 100644
--- a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/MariaDBMCPDatabaseCapabilityOption.java
+++ b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/MariaDBMCPDatabaseCapabilityOption.java
@@ -19,6 +19,8 @@ package org.apache.shardingsphere.mcp.support.database.capability.dialect;
 
 import org.apache.shardingsphere.mcp.support.database.capability.MCPDatabaseCapabilityOption;
 
+import java.util.Optional;
+
 /**
  * MCP database capability option for MariaDB.
  */
@@ -29,6 +31,11 @@ public final class MariaDBMCPDatabaseCapabilityOption implements MCPDatabaseCapa
         return true;
     }
     
+    @Override
+    public Optional<String> getSequenceQuery() {
+        return Optional.of("SELECT TABLE_SCHEMA AS SEQUENCE_SCHEMA, TABLE_NAME AS SEQUENCE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'SEQUENCE'");
+    }
+    
     @Override
     public String getType() {
         return "MariaDB";
diff --git a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/OpenGaussMCPDatabaseCapabilityOption.java b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/OpenGaussMCPDatabaseCapabilityOption.java
index 9bd5bef07d8..e250c99a67b 100644
--- a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/OpenGaussMCPDatabaseCapabilityOption.java
+++ b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/OpenGaussMCPDatabaseCapabilityOption.java
@@ -19,6 +19,8 @@ package org.apache.shardingsphere.mcp.support.database.capability.dialect;
 
 import org.apache.shardingsphere.mcp.support.database.capability.MCPDatabaseCapabilityOption;
 
+import java.util.Optional;
+
 /**
  * MCP database capability option for openGauss.
  */
@@ -29,6 +31,11 @@ public final class OpenGaussMCPDatabaseCapabilityOption implements MCPDatabaseCa
         return true;
     }
     
+    @Override
+    public Optional<String> getSequenceQuery() {
+        return Optional.of("SELECT sequence_schema AS SEQUENCE_SCHEMA, sequence_name AS SEQUENCE_NAME FROM information_schema.sequences");
+    }
+    
     @Override
     public String getType() {
         return "openGauss";
diff --git a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/OracleMCPDatabaseCapabilityOption.java b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/OracleMCPDatabaseCapabilityOption.java
index 96affc869f6..04a8d1eebba 100644
--- a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/OracleMCPDatabaseCapabilityOption.java
+++ b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/OracleMCPDatabaseCapabilityOption.java
@@ -19,6 +19,8 @@ package org.apache.shardingsphere.mcp.support.database.capability.dialect;
 
 import org.apache.shardingsphere.mcp.support.database.capability.MCPDatabaseCapabilityOption;
 
+import java.util.Optional;
+
 /**
  * MCP database capability option for Oracle.
  */
@@ -29,6 +31,11 @@ public final class OracleMCPDatabaseCapabilityOption implements MCPDatabaseCapab
         return false;
     }
     
+    @Override
+    public Optional<String> getSequenceQuery() {
+        return Optional.of("SELECT USER AS SEQUENCE_SCHEMA, sequence_name AS SEQUENCE_NAME FROM USER_SEQUENCES");
+    }
+    
     @Override
     public String getType() {
         return "Oracle";
diff --git a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/PostgreSQLMCPDatabaseCapabilityOption.java b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/PostgreSQLMCPDatabaseCapabilityOption.java
index 41cee057bce..3bdd0f01d89 100644
--- a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/PostgreSQLMCPDatabaseCapabilityOption.java
+++ b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/PostgreSQLMCPDatabaseCapabilityOption.java
@@ -19,6 +19,8 @@ package org.apache.shardingsphere.mcp.support.database.capability.dialect;
 
 import org.apache.shardingsphere.mcp.support.database.capability.MCPDatabaseCapabilityOption;
 
+import java.util.Optional;
+
 /**
  * MCP database capability option for PostgreSQL.
  */
@@ -29,6 +31,11 @@ public final class PostgreSQLMCPDatabaseCapabilityOption implements MCPDatabaseC
         return true;
     }
     
+    @Override
+    public Optional<String> getSequenceQuery() {
+        return Optional.of("SELECT sequence_schema AS SEQUENCE_SCHEMA, sequence_name AS SEQUENCE_NAME FROM information_schema.sequences");
+    }
+    
     @Override
     public String getType() {
         return "PostgreSQL";
diff --git a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/SQLServerMCPDatabaseCapabilityOption.java b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/SQLServerMCPDatabaseCapabilityOption.java
index 18914674073..455d83f8905 100644
--- a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/SQLServerMCPDatabaseCapabilityOption.java
+++ b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/capability/dialect/SQLServerMCPDatabaseCapabilityOption.java
@@ -19,6 +19,8 @@ package org.apache.shardingsphere.mcp.support.database.capability.dialect;
 
 import org.apache.shardingsphere.mcp.support.database.capability.MCPDatabaseCapabilityOption;
 
+import java.util.Optional;
+
 /**
  * MCP database capability option for SQLServer.
  */
@@ -29,6 +31,12 @@ public final class SQLServerMCPDatabaseCapabilityOption implements MCPDatabaseCa
         return false;
     }
     
+    @Override
+    public Optional<String> getSequenceQuery() {
+        return Optional.of(
+                "SELECT schemas.name AS SEQUENCE_SCHEMA, seq.name AS SEQUENCE_NAME FROM sys.sequences seq INNER JOIN sys.schemas schemas ON seq.schema_id = schemas.schema_id");
+    }
+    
     @Override
     public String getType() {
         return "SQLServer";
diff --git a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/context/RequestScopedMetadataContext.java b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/context/RequestScopedMetadataContext.java
index 18e75d955ac..160059ba289 100644
--- a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/context/RequestScopedMetadataContext.java
+++ b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/context/RequestScopedMetadataContext.java
@@ -25,6 +25,8 @@ import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.MCPJdbcMetad
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatabaseConfiguration;
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatabaseProfile;
 import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPColumnMetadata;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPMetadataSnapshot;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPSequenceMetadata;
 
 import java.util.Collection;
 import java.util.LinkedHashMap;
@@ -44,7 +46,7 @@ public final class RequestScopedMetadataContext {
     
     private final MCPJdbcMetadataLoader metadataLoader = new MCPJdbcMetadataLoader();
     
-    private final Map<String, Collection<ShardingSphereSchema>> loadedSchemas = new LinkedHashMap<>(4, 1F);
+    private final Map<String, MCPMetadataSnapshot> loadedMetadata = new LinkedHashMap<>(4, 1F);
     
     private final Map<RelationKey, List<MCPColumnMetadata>> loadedColumns = new LinkedHashMap<>(16, 1F);
     
@@ -59,17 +61,32 @@ public final class RequestScopedMetadataContext {
      * @return schema metadata
      */
     public Optional<Collection<ShardingSphereSchema>> loadSchemas(final String databaseName) {
-        Collection<ShardingSphereSchema> loadedMetadata = loadedSchemas.get(databaseName);
-        if (null != loadedMetadata) {
-            return Optional.of(loadedMetadata);
+        return loadMetadata(databaseName).map(MCPMetadataSnapshot::getSchemas);
+    }
+    
+    /**
+     * Load sequence metadata lazily within the current request.
+     *
+     * @param databaseName database name
+     * @param schemaName schema name
+     * @return sequence metadata
+     */
+    public Optional<Collection<MCPSequenceMetadata>> loadSequences(final String databaseName, final String schemaName) {
+        return loadMetadata(databaseName).map(each -> each.getSequences(schemaName));
+    }
+    
+    private Optional<MCPMetadataSnapshot> loadMetadata(final String databaseName) {
+        MCPMetadataSnapshot loadedSnapshot = loadedMetadata.get(databaseName);
+        if (null != loadedSnapshot) {
+            return Optional.of(loadedSnapshot);
         }
         RuntimeDatabaseConfiguration runtimeDatabaseConfig = runtimeDatabases.get(databaseName);
         Optional<RuntimeDatabaseProfile> databaseProfile = databaseCapabilityProvider.findDatabaseProfile(databaseName);
         if (null == runtimeDatabaseConfig || databaseProfile.isEmpty()) {
             return Optional.empty();
         }
-        Collection<ShardingSphereSchema> result = metadataLoader.load(databaseName, runtimeDatabaseConfig, databaseProfile.get());
-        loadedSchemas.put(databaseName, result);
+        MCPMetadataSnapshot result = metadataLoader.load(databaseName, runtimeDatabaseConfig, databaseProfile.get());
+        loadedMetadata.put(databaseName, result);
         return Optional.of(result);
     }
     
diff --git a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcMetadataLoader.java b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcMetadataLoader.java
index f72edd424d4..11d224fc9a0 100644
--- a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcMetadataLoader.java
+++ b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcMetadataLoader.java
@@ -19,24 +19,25 @@ package org.apache.shardingsphere.mcp.support.database.metadata.jdbc;
 
 import lombok.AccessLevel;
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.database.connector.core.metadata.data.loader.type.SequenceMetaDataLoader;
 import org.apache.shardingsphere.database.connector.core.metadata.database.enums.TableType;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaSemantics;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSequence;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.mcp.support.database.capability.MCPDatabaseDialect;
 import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPColumnMetadata;
 import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPColumnMetadata.Nullability;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPMetadataSnapshot;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPSequenceMetadata;
 
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
+import java.sql.Statement;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
@@ -46,6 +47,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Objects;
+import java.util.Optional;
 
 /**
  * MCP JDBC metadata loader.
@@ -53,17 +55,17 @@ import java.util.Objects;
 public final class MCPJdbcMetadataLoader {
     
     /**
-     * Load schema metadata.
+     * Load database metadata.
      *
      * @param databaseName database name
      * @param runtimeDatabaseConfig runtime database configuration
      * @param databaseProfile runtime database profile
-     * @return schema metadata
+     * @return database metadata snapshot
      * @throws RuntimeDatabaseConnectionException when metadata loading fails
      */
-    public Collection<ShardingSphereSchema> load(final String databaseName, final RuntimeDatabaseConfiguration runtimeDatabaseConfig, final RuntimeDatabaseProfile databaseProfile) {
+    public MCPMetadataSnapshot load(final String databaseName, final RuntimeDatabaseConfiguration runtimeDatabaseConfig, final RuntimeDatabaseProfile databaseProfile) {
         try (Connection connection = runtimeDatabaseConfig.openConnection(databaseName)) {
-            return loadSchemas(databaseName, databaseProfile, connection, connection.getMetaData());
+            return loadMetadata(databaseName, databaseProfile, connection, connection.getMetaData());
         } catch (final SQLException ex) {
             throw RuntimeDatabaseConnectionException.connectionFailed(databaseName, databaseProfile.getDatabaseType(), ex);
         }
@@ -129,15 +131,15 @@ public final class MCPJdbcMetadataLoader {
         }
     }
     
-    private Collection<ShardingSphereSchema> loadSchemas(final String databaseName, final RuntimeDatabaseProfile databaseProfile,
-                                                         final Connection connection, final DatabaseMetaData databaseMetaData) throws SQLException {
+    private MCPMetadataSnapshot loadMetadata(final String databaseName, final RuntimeDatabaseProfile databaseProfile,
+                                             final Connection connection, final DatabaseMetaData databaseMetaData) throws SQLException {
         DatabaseType protocolType = TypedSPILoader.getService(DatabaseType.class, databaseProfile.getDatabaseType());
         MCPDatabaseDialect databaseDialect = MCPDatabaseDialect.of(databaseProfile.getDatabaseType());
         DialectSchemaSemantics defaultSchemaSemantics = databaseDialect.getDefaultSchemaSemantics();
-        DatabaseMetadataAccumulator accumulator = new DatabaseMetadataAccumulator(protocolType);
+        DatabaseMetadataAccumulator accumulator = new DatabaseMetadataAccumulator(databaseName, protocolType);
         loadTables(databaseName, defaultSchemaSemantics, databaseDialect, accumulator, databaseMetaData);
         loadViews(databaseName, defaultSchemaSemantics, databaseDialect, accumulator, databaseMetaData);
-        loadSequences(databaseName, defaultSchemaSemantics, protocolType, accumulator, connection);
+        loadSequences(databaseName, defaultSchemaSemantics, databaseDialect, accumulator, connection);
         return accumulator.build();
     }
     
@@ -177,12 +179,22 @@ public final class MCPJdbcMetadataLoader {
         }
     }
     
-    private void loadSequences(final String databaseName, final DialectSchemaSemantics defaultSchemaSemantics, final DatabaseType protocolType,
+    private void loadSequences(final String databaseName, final DialectSchemaSemantics defaultSchemaSemantics, final MCPDatabaseDialect databaseDialect,
                                final DatabaseMetadataAccumulator accumulator, final Connection connection) throws SQLException {
-        for (Entry<String, Collection<String>> entry : new SequenceMetaDataLoader(protocolType).load(connection).entrySet()) {
-            SchemaMetadataAccumulator schema = accumulator.getSchemaAccumulator(normalizeSchemaName(databaseName, defaultSchemaSemantics, entry.getKey()));
-            for (String each : entry.getValue()) {
-                schema.addSequence(each);
+        Optional<String> sequenceQuery = databaseDialect.getSequenceQuery();
+        if (sequenceQuery.isEmpty()) {
+            return;
+        }
+        try (Statement statement = connection.createStatement(); ResultSet sequences = statement.executeQuery(sequenceQuery.get())) {
+            while (sequences.next()) {
+                String schemaName = Objects.toString(sequences.getString("SEQUENCE_SCHEMA"), "").trim();
+                if (databaseDialect.isSystemSchema(schemaName)) {
+                    continue;
+                }
+                String sequenceName = Objects.toString(sequences.getString("SEQUENCE_NAME"), "");
+                if (!sequenceName.isEmpty()) {
+                    accumulator.getSchemaAccumulator(normalizeSchemaName(databaseName, defaultSchemaSemantics, schemaName)).addSequence(sequenceName);
+                }
             }
         }
     }
@@ -273,6 +285,8 @@ public final class MCPJdbcMetadataLoader {
     @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
     private static final class DatabaseMetadataAccumulator {
         
+        private final String database;
+        
         private final DatabaseType protocolType;
         
         private final Map<String, SchemaMetadataAccumulator> schemaAccumulators = new LinkedHashMap<>(16, 1F);
@@ -280,42 +294,46 @@ public final class MCPJdbcMetadataLoader {
         private SchemaMetadataAccumulator getSchemaAccumulator(final String schema) {
             SchemaMetadataAccumulator result = schemaAccumulators.get(schema);
             if (null == result) {
-                result = new SchemaMetadataAccumulator(schema, protocolType);
+                result = new SchemaMetadataAccumulator(database, schema, protocolType);
                 schemaAccumulators.put(schema, result);
             }
             return result;
         }
         
-        private Collection<ShardingSphereSchema> build() {
-            List<ShardingSphereSchema> result = new LinkedList<>();
+        private MCPMetadataSnapshot build() {
+            List<ShardingSphereSchema> schemas = new LinkedList<>();
+            Map<String, Collection<MCPSequenceMetadata>> sequences = new LinkedHashMap<>(schemaAccumulators.size(), 1F);
             for (SchemaMetadataAccumulator each : schemaAccumulators.values()) {
-                result.add(each.build());
+                schemas.add(each.buildSchema());
+                sequences.put(each.schema, new LinkedList<>(each.sequences.values()));
             }
-            return result;
+            return new MCPMetadataSnapshot(schemas, sequences);
         }
     }
     
     @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
     private static final class SchemaMetadataAccumulator {
         
+        private final String database;
+        
         private final String schema;
         
         private final DatabaseType protocolType;
         
         private final Map<String, ShardingSphereTable> relations = new LinkedHashMap<>(16, 1F);
         
-        private final Map<String, ShardingSphereSequence> sequences = new LinkedHashMap<>(16, 1F);
+        private final Map<String, MCPSequenceMetadata> sequences = new LinkedHashMap<>(16, 1F);
         
         private void addRelation(final String name, final TableType type) {
             relations.putIfAbsent(name, new ShardingSphereTable(name, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), type));
         }
         
         private void addSequence(final String sequence) {
-            sequences.putIfAbsent(sequence, new ShardingSphereSequence(sequence));
+            sequences.putIfAbsent(sequence, new MCPSequenceMetadata(database, schema, sequence));
         }
         
-        private ShardingSphereSchema build() {
-            return new ShardingSphereSchema(schema, protocolType, relations.values(), Collections.emptyList(), sequences.values());
+        private ShardingSphereSchema buildSchema() {
+            return new ShardingSphereSchema(schema, protocolType, relations.values(), Collections.emptyList());
         }
     }
     
diff --git a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/database/metadata/option/sequence/DialectSequenceOption.java b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/model/MCPMetadataSnapshot.java
similarity index 54%
rename from database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/database/metadata/option/sequence/DialectSequenceOption.java
rename to mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/model/MCPMetadataSnapshot.java
index 1ccfff4c46a..a73c4437593 100644
--- a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/database/metadata/option/sequence/DialectSequenceOption.java
+++ b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/model/MCPMetadataSnapshot.java
@@ -15,17 +15,34 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence;
+package org.apache.shardingsphere.mcp.support.database.metadata.model;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
 
 /**
- * Dialect sequence option.
+ * MCP metadata snapshot.
  */
 @RequiredArgsConstructor
-@Getter
-public final class DialectSequenceOption {
+public final class MCPMetadataSnapshot {
+    
+    @Getter
+    private final Collection<ShardingSphereSchema> schemas;
+    
+    private final Map<String, Collection<MCPSequenceMetadata>> sequences;
     
-    private final String sequenceMetadataQuerySQL;
+    /**
+     * Get sequence metadata in a schema.
+     *
+     * @param schemaName schema name
+     * @return sequence metadata
+     */
+    public Collection<MCPSequenceMetadata> getSequences(final String schemaName) {
+        return sequences.getOrDefault(schemaName, Collections.emptyList());
+    }
 }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSequence.java b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/model/MCPSequenceMetadata.java
similarity index 78%
rename from infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSequence.java
rename to mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/model/MCPSequenceMetadata.java
index df32955cf3b..6580c5f5337 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSequence.java
+++ b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/model/MCPSequenceMetadata.java
@@ -15,19 +15,21 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.metadata.database.schema.model;
+package org.apache.shardingsphere.mcp.support.database.metadata.model;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
-import lombok.ToString;
 
 /**
- * ShardingSphere sequence.
+ * MCP sequence metadata.
  */
 @RequiredArgsConstructor
 @Getter
-@ToString
-public final class ShardingSphereSequence {
+public final class MCPSequenceMetadata {
     
-    private final String name;
+    private final String database;
+    
+    private final String schema;
+    
+    private final String sequence;
 }
diff --git a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/query/MetadataQueryService.java b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/query/MetadataQueryService.java
index c600508444c..49e35391922 100644
--- a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/query/MetadataQueryService.java
+++ b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/metadata/query/MetadataQueryService.java
@@ -22,7 +22,6 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.enums
 import org.apache.shardingsphere.infra.exception.ShardingSpherePreconditions;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSequence;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.mcp.api.exception.MCPUnsupportedException;
 import org.apache.shardingsphere.mcp.support.database.capability.MCPDatabaseCapability;
@@ -31,6 +30,7 @@ import org.apache.shardingsphere.mcp.support.database.capability.SupportedMCPMet
 import org.apache.shardingsphere.mcp.support.database.metadata.context.RequestScopedMetadataContext;
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatabaseProfile;
 import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPColumnMetadata;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPSequenceMetadata;
 import org.apache.shardingsphere.mcp.support.database.spi.MCPMetadataQueryFacade;
 
 import java.util.Collection;
@@ -172,21 +172,21 @@ public final class MetadataQueryService implements MCPMetadataQueryFacade {
     }
     
     @Override
-    public List<ShardingSphereSequence> querySequences(final String databaseName, final String schemaName) {
+    public List<MCPSequenceMetadata> querySequences(final String databaseName, final String schemaName) {
         ShardingSpherePreconditions.checkState(isSupportedMetadataObjectType(databaseName, SupportedMCPMetadataObjectType.SEQUENCE),
                 () -> new MCPUnsupportedException("Sequence resources are not supported for the current database."));
-        return findSchema(databaseName, schemaName).map(optional -> sortSequences(optional.getAllSequences())).orElse(Collections.emptyList());
+        return metadataContext.loadSequences(databaseName, schemaName).map(this::sortSequences).orElse(Collections.emptyList());
     }
     
     @Override
-    public Optional<ShardingSphereSequence> querySequence(final String databaseName, final String schemaName, final String sequenceName) {
+    public Optional<MCPSequenceMetadata> querySequence(final String databaseName, final String schemaName, final String sequenceName) {
         ShardingSpherePreconditions.checkState(isSupportedMetadataObjectType(databaseName, SupportedMCPMetadataObjectType.SEQUENCE),
                 () -> new MCPUnsupportedException("Sequence resources are not supported for the current database."));
         return findSequence(querySequences(databaseName, schemaName), sequenceName);
     }
     
-    private List<ShardingSphereSequence> sortSequences(final Collection<ShardingSphereSequence> sequences) {
-        return sequences.stream().sorted(Comparator.comparing(ShardingSphereSequence::getName)).toList();
+    private List<MCPSequenceMetadata> sortSequences(final Collection<MCPSequenceMetadata> sequences) {
+        return sequences.stream().sorted(Comparator.comparing(MCPSequenceMetadata::getSequence)).toList();
     }
     
     private Optional<ShardingSphereSchema> findSchema(final String databaseName, final String schemaName) {
@@ -205,8 +205,8 @@ public final class MetadataQueryService implements MCPMetadataQueryFacade {
         return indexes.stream().filter(each -> indexName.equals(each.getName())).findFirst();
     }
     
-    private Optional<ShardingSphereSequence> findSequence(final Collection<ShardingSphereSequence> sequences, final String sequenceName) {
-        return sequences.stream().filter(each -> sequenceName.equals(each.getName())).findFirst();
+    private Optional<MCPSequenceMetadata> findSequence(final Collection<MCPSequenceMetadata> sequences, final String sequenceName) {
+        return sequences.stream().filter(each -> sequenceName.equals(each.getSequence())).findFirst();
     }
     
     @Override
diff --git a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/spi/MCPMetadataQueryFacade.java b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/spi/MCPMetadataQueryFacade.java
index 2df0f14ed3c..c294ffcefbf 100644
--- a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/spi/MCPMetadataQueryFacade.java
+++ b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/spi/MCPMetadataQueryFacade.java
@@ -19,11 +19,11 @@ package org.apache.shardingsphere.mcp.support.database.spi;
 
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSequence;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.mcp.support.database.capability.SupportedMCPMetadataObjectType;
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatabaseProfile;
 import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPColumnMetadata;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPSequenceMetadata;
 
 import java.util.List;
 import java.util.Optional;
@@ -182,7 +182,7 @@ public interface MCPMetadataQueryFacade {
      * @param schemaName schema name
      * @return sequence metadata list
      */
-    List<ShardingSphereSequence> querySequences(String databaseName, String schemaName);
+    List<MCPSequenceMetadata> querySequences(String databaseName, String schemaName);
     
     /**
      * Query one sequence in a schema.
@@ -192,7 +192,7 @@ public interface MCPMetadataQueryFacade {
      * @param sequenceName sequence name
      * @return sequence metadata
      */
-    Optional<ShardingSphereSequence> querySequence(String databaseName, String schemaName, String sequenceName);
+    Optional<MCPSequenceMetadata> querySequence(String databaseName, String schemaName, String sequenceName);
     
     /**
      * Check whether the database supports the specified metadata object type.
diff --git a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/tool/service/RuntimeDatabaseValidationService.java b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/tool/service/RuntimeDatabaseValidationService.java
index 3d431d61472..aa88f7e3701 100644
--- a/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/tool/service/RuntimeDatabaseValidationService.java
+++ b/mcp/support/src/main/java/org/apache/shardingsphere/mcp/support/database/tool/service/RuntimeDatabaseValidationService.java
@@ -85,7 +85,7 @@ public final class RuntimeDatabaseValidationService {
         }
         Collection<ShardingSphereSchema> schemas;
         try {
-            schemas = metadataLoader.load(database, runtimeDatabaseConfig.get(), databaseProfile);
+            schemas = metadataLoader.load(database, runtimeDatabaseConfig.get(), databaseProfile).getSchemas();
             checks.add(RuntimeDatabaseValidationCheckResult.passed("metadata_read", "Read metadata through the configured JDBC connection."));
         } catch (final RuntimeDatabaseConnectionException ex) {
             checks.add(RuntimeDatabaseValidationCheckResult.failed("metadata_read", ex.getCategory(), "Failed to read metadata through the configured JDBC connection."));
diff --git a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseCapabilityProviderTest.java b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseCapabilityProviderTest.java
index 2b94e8dff3e..040373aa69e 100644
--- a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseCapabilityProviderTest.java
+++ b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseCapabilityProviderTest.java
@@ -24,7 +24,6 @@ import org.apache.shardingsphere.mcp.support.database.metadata.TransactionCapabi
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DefaultSchemaOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaSemantics;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.identifier.IdentifierCasePolicyFactory;
 import org.apache.shardingsphere.database.connector.core.metadata.identifier.IdentifierCasePolicySet;
 import org.apache.shardingsphere.database.connector.core.metadata.identifier.IdentifierScope;
@@ -97,7 +96,7 @@ class MCPDatabaseCapabilityProviderTest {
     
     @Test
     void assertProvideWithoutCapabilityOption() {
-        MCPDatabaseCapabilityProvider provider = createCapabilityProvider("FixtureDB", new CapabilityFixture(false, false, false, DialectSchemaSemantics.NATIVE_SCHEMA));
+        MCPDatabaseCapabilityProvider provider = createCapabilityProvider("FixtureDB", new CapabilityFixture(false, false, DialectSchemaSemantics.NATIVE_SCHEMA));
         assertThat(provider.findDatabaseProfile("logic_db").orElseThrow().getDatabaseType(), is("FixtureDB"));
         assertFalse(provider.provide("logic_db").isPresent());
     }
@@ -109,7 +108,7 @@ class MCPDatabaseCapabilityProviderTest {
                 insensitivePolicySet.getPolicy(IdentifierScope.TABLE),
                 Map.of(IdentifierScope.TABLE, IdentifierCasePolicyFactory.newSensitivePolicySet().getPolicy(IdentifierScope.TABLE),
                         IdentifierScope.COLUMN, insensitivePolicySet.getPolicy(IdentifierScope.COLUMN)));
-        CapabilityFixture capabilityFixture = new CapabilityFixture(true, true, false, DialectSchemaSemantics.DATABASE_AS_SCHEMA);
+        CapabilityFixture capabilityFixture = new CapabilityFixture(true, true, DialectSchemaSemantics.DATABASE_AS_SCHEMA);
         MCPDatabaseCapabilityProvider provider = createCapabilityProvider(
                 Map.of("logic_db", createDatabaseProfile("logic_db", "MySQL", capabilityFixture, scopedPolicySet)), Map.of("MySQL", capabilityFixture));
         DatabaseIdentifierContext actual = provider.provide("logic_db").orElseThrow().getIdentifierContext();
@@ -122,7 +121,7 @@ class MCPDatabaseCapabilityProviderTest {
     void assertProvideWithCapabilityMatrix(final String name, final String databaseType, final boolean expectedTransactionControl,
                                            final boolean expectedSavepoint, final boolean expectedSequenceSupport,
                                            final SchemaExecutionSemantics expectedSchemaExecutionSemantics, final boolean expectedExplainSupport) {
-        CapabilityFixture capabilityFixture = new CapabilityFixture(expectedTransactionControl, expectedSavepoint, expectedSequenceSupport,
+        CapabilityFixture capabilityFixture = new CapabilityFixture(expectedTransactionControl, expectedSavepoint,
                 SchemaExecutionSemantics.FIXED_TO_DATABASE == expectedSchemaExecutionSemantics ? DialectSchemaSemantics.DATABASE_AS_SCHEMA : DialectSchemaSemantics.NATIVE_SCHEMA);
         Optional<MCPDatabaseCapability> actual = createCapabilityProvider(databaseType, capabilityFixture).provide("logic_db");
         assertTrue(actual.isPresent());
@@ -137,8 +136,8 @@ class MCPDatabaseCapabilityProviderTest {
     
     private MCPDatabaseCapabilityProvider createCapabilityProvider() {
         Map<String, CapabilityFixture> capabilityFixtures = Map.of(
-                "MySQL", new CapabilityFixture(true, true, false, DialectSchemaSemantics.DATABASE_AS_SCHEMA),
-                "Hive", new CapabilityFixture(false, false, false, DialectSchemaSemantics.DATABASE_AS_SCHEMA));
+                "MySQL", new CapabilityFixture(true, true, DialectSchemaSemantics.DATABASE_AS_SCHEMA),
+                "Hive", new CapabilityFixture(false, false, DialectSchemaSemantics.DATABASE_AS_SCHEMA));
         Map<String, RuntimeDatabaseProfile> databaseProfiles = new LinkedHashMap<>(2, 1F);
         databaseProfiles.put("logic_db", createDatabaseProfile("logic_db", "MySQL", capabilityFixtures.get("MySQL"), IdentifierCasePolicyFactory.newSensitivePolicySet()));
         databaseProfiles.put("warehouse", createDatabaseProfile("warehouse", "Hive", capabilityFixtures.get("Hive"), IdentifierCasePolicyFactory.newSensitivePolicySet()));
@@ -178,8 +177,6 @@ class MCPDatabaseCapabilityProviderTest {
         DialectDatabaseMetaData dialectDatabaseMetaData = mock(DialectDatabaseMetaData.class);
         when(dialectDatabaseMetaData.getSchemaOption()).thenReturn(
                 new DefaultSchemaOption(false, null, capabilityFixture.schemaSemantics));
-        when(dialectDatabaseMetaData.getSequenceOption()).thenReturn(
-                capabilityFixture.sequenceSupported ? Optional.of(new DialectSequenceOption("SELECT SEQUENCE_SCHEMA, SEQUENCE_NAME FROM TEST_SEQUENCES")) : Optional.empty());
         databaseTypedSPILoader.when(() -> DatabaseTypedSPILoader.findService(DialectDatabaseMetaData.class, databaseTypeFromSPI)).thenReturn(Optional.of(dialectDatabaseMetaData));
     }
     
@@ -212,8 +209,6 @@ class MCPDatabaseCapabilityProviderTest {
         
         private final boolean savepointSupported;
         
-        private final boolean sequenceSupported;
-        
         private final DialectSchemaSemantics schemaSemantics;
         
     }
diff --git a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseDialectTest.java b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseDialectTest.java
index 0ef35c57bff..4c2fd486a4a 100644
--- a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseDialectTest.java
+++ b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseDialectTest.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.mcp.support.database.capability;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DefaultSchemaOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaSemantics;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.system.DialectSystemDatabase;
 import org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
@@ -77,26 +76,27 @@ class MCPDatabaseDialectTest {
     }
     
     @Test
-    void assertIsSequenceSupported() {
+    void assertGetSequenceQuery() {
         try (
                 MockedStatic<TypedSPILoader> typedSPILoader = mockStatic(TypedSPILoader.class);
                 MockedStatic<DatabaseTypedSPILoader> databaseTypedSPILoader = mockStatic(DatabaseTypedSPILoader.class)) {
             DatabaseType databaseType = mockDatabaseType("Fixture", typedSPILoader);
-            DialectDatabaseMetaData dialectDatabaseMetaData = mockDialectDatabaseMetaData(databaseType, databaseTypedSPILoader);
-            when(dialectDatabaseMetaData.getSequenceOption()).thenReturn(Optional.of(new DialectSequenceOption("SELECT 1")));
-            assertTrue(MCPDatabaseDialect.of("Fixture").isSequenceSupported());
+            mockDialectDatabaseMetaData(databaseType, databaseTypedSPILoader);
+            MCPDatabaseCapabilityOption capabilityOption = mock(MCPDatabaseCapabilityOption.class);
+            when(capabilityOption.getSequenceQuery()).thenReturn(Optional.of("SELECT 1"));
+            typedSPILoader.when(() -> TypedSPILoader.findService(MCPDatabaseCapabilityOption.class, "Fixture")).thenReturn(Optional.of(capabilityOption));
+            assertThat(MCPDatabaseDialect.of("Fixture").getSequenceQuery(), is(Optional.of("SELECT 1")));
         }
     }
     
     @Test
-    void assertIsSequenceSupportedAbsent() {
+    void assertGetSequenceQueryAbsent() {
         try (
                 MockedStatic<TypedSPILoader> typedSPILoader = mockStatic(TypedSPILoader.class);
                 MockedStatic<DatabaseTypedSPILoader> databaseTypedSPILoader = mockStatic(DatabaseTypedSPILoader.class)) {
             DatabaseType databaseType = mockDatabaseType("Fixture", typedSPILoader);
-            DialectDatabaseMetaData dialectDatabaseMetaData = mockDialectDatabaseMetaData(databaseType, databaseTypedSPILoader);
-            when(dialectDatabaseMetaData.getSequenceOption()).thenReturn(Optional.empty());
-            assertFalse(MCPDatabaseDialect.of("Fixture").isSequenceSupported());
+            mockDialectDatabaseMetaData(databaseType, databaseTypedSPILoader);
+            assertThat(MCPDatabaseDialect.of("Fixture").getSequenceQuery(), is(Optional.empty()));
         }
     }
     
diff --git a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/context/RequestScopedMetadataContextTest.java b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/context/RequestScopedMetadataContextTest.java
index fcef3ab4a60..0a454d35f4f 100644
--- a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/context/RequestScopedMetadataContextTest.java
+++ b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/context/RequestScopedMetadataContextTest.java
@@ -18,12 +18,16 @@
 package org.apache.shardingsphere.mcp.support.database.metadata.context;
 
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
+import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import org.apache.shardingsphere.mcp.support.database.capability.MCPDatabaseCapabilityProvider;
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.MCPJdbcMetadataLoader;
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatabaseConfiguration;
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatabaseProfile;
 import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPColumnMetadata;
 import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPColumnMetadata.Nullability;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPMetadataSnapshot;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPSequenceMetadata;
 import org.junit.jupiter.api.Test;
 import org.mockito.MockedConstruction;
 
@@ -43,6 +47,24 @@ import static org.mockito.Mockito.when;
 
 class RequestScopedMetadataContextTest {
     
+    @Test
+    void assertLoadSchemasAndSequencesOncePerDatabase() {
+        RuntimeDatabaseConfiguration configuration = mock(RuntimeDatabaseConfiguration.class);
+        RuntimeDatabaseProfile profile = mock(RuntimeDatabaseProfile.class);
+        MCPDatabaseCapabilityProvider capabilityProvider = createCapabilityProvider(profile);
+        MCPMetadataSnapshot expected = new MCPMetadataSnapshot(
+                List.of(new ShardingSphereSchema("public", mock(DatabaseType.class))),
+                Map.of("public", List.of(new MCPSequenceMetadata("logic_db", "public", "order_seq"))));
+        try (
+                MockedConstruction<MCPJdbcMetadataLoader> mockedLoader = mockConstruction(MCPJdbcMetadataLoader.class,
+                        (mock, context) -> when(mock.load("logic_db", configuration, profile)).thenReturn(expected))) {
+            RequestScopedMetadataContext context = new RequestScopedMetadataContext(Map.of("logic_db", configuration), capabilityProvider);
+            assertThat(context.loadSchemas("logic_db").orElseThrow().stream().map(ShardingSphereSchema::getName).toList(), is(List.of("public")));
+            assertThat(context.loadSequences("logic_db", "public").orElseThrow().stream().map(MCPSequenceMetadata::getSequence).toList(), is(List.of("order_seq")));
+            verify(mockedLoader.constructed().getFirst()).load("logic_db", configuration, profile);
+        }
+    }
+    
     @Test
     void assertLoadColumnsOncePerRelation() {
         RuntimeDatabaseConfiguration configuration = mock(RuntimeDatabaseConfiguration.class);
diff --git a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/AbstractMCPJdbcMetadataLoaderTest.java b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/AbstractMCPJdbcMetadataLoaderTest.java
index 2436113987e..b9d48a6de0c 100644
--- a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/AbstractMCPJdbcMetadataLoaderTest.java
+++ b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/AbstractMCPJdbcMetadataLoaderTest.java
@@ -24,7 +24,6 @@ import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DefaultSchemaOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaSemantics;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.system.DialectSystemDatabase;
 import org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
 import org.apache.shardingsphere.database.connector.core.metadata.database.enums.TableType;
@@ -32,11 +31,13 @@ import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseTypeFactory;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSequence;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.mcp.support.database.capability.MCPDatabaseCapabilityOption;
 import org.apache.shardingsphere.mcp.support.database.capability.SupportedMCPMetadataObjectType;
 import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPColumnMetadata;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPMetadataSnapshot;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPSequenceMetadata;
 import org.apache.shardingsphere.mcp.support.fixture.SupportDatabaseTypeFactoryMocker;
 import org.junit.jupiter.params.provider.Arguments;
 import org.mockito.MockedStatic;
@@ -100,7 +101,7 @@ abstract class AbstractMCPJdbcMetadataLoaderTest {
             MCPJdbcMetadataLoader metadataLoader = new MCPJdbcMetadataLoader();
             Map<String, RuntimeDatabaseProfile> databaseProfiles = databaseProfileLoader.load(runtimeDatabases);
             mockDatabaseTypedSPI(databaseProfiles.values(), sequenceSupportedDatabaseTypes, systemSchemas, schemaSemantics, typedSPILoader, databaseTypedSPILoader);
-            Map<String, Collection<ShardingSphereSchema>> result = new LinkedHashMap<>(runtimeDatabases.size(), 1F);
+            Map<String, MCPMetadataSnapshot> result = new LinkedHashMap<>(runtimeDatabases.size(), 1F);
             for (Entry<String, RuntimeDatabaseConfiguration> entry : runtimeDatabases.entrySet()) {
                 result.put(entry.getKey(), metadataLoader.load(entry.getKey(), entry.getValue(), databaseProfiles.get(entry.getKey())));
             }
@@ -171,16 +172,18 @@ abstract class AbstractMCPJdbcMetadataLoaderTest {
         when(databaseTypeFromSPI.getTrunkDatabaseType()).thenReturn(Optional.empty());
         typedSPILoader.when(() -> TypedSPILoader.findService(DatabaseType.class, databaseType)).thenReturn(Optional.of(databaseTypeFromSPI));
         typedSPILoader.when(() -> TypedSPILoader.getService(DatabaseType.class, databaseType)).thenReturn(databaseTypeFromSPI);
-        mockDialectDatabaseMetaData(databaseTypeFromSPI, sequenceSupportedDatabaseTypes.contains(databaseType),
-                schemaSemantics.getOrDefault(databaseType, DialectSchemaSemantics.NATIVE_SCHEMA), databaseTypedSPILoader);
+        MCPDatabaseCapabilityOption capabilityOption = mock(MCPDatabaseCapabilityOption.class);
+        when(capabilityOption.getSequenceQuery()).thenReturn(
+                sequenceSupportedDatabaseTypes.contains(databaseType) ? Optional.of(SEQUENCE_METADATA_QUERY) : Optional.empty());
+        typedSPILoader.when(() -> TypedSPILoader.findService(MCPDatabaseCapabilityOption.class, databaseType)).thenReturn(Optional.of(capabilityOption));
+        mockDialectDatabaseMetaData(databaseTypeFromSPI, schemaSemantics.getOrDefault(databaseType, DialectSchemaSemantics.NATIVE_SCHEMA), databaseTypedSPILoader);
         mockDialectSystemDatabase(databaseTypeFromSPI, systemSchemas.getOrDefault(databaseType, List.of()), databaseTypedSPILoader);
     }
     
-    private void mockDialectDatabaseMetaData(final DatabaseType databaseType, final boolean sequenceSupported, final DialectSchemaSemantics schemaSemantics,
+    private void mockDialectDatabaseMetaData(final DatabaseType databaseType, final DialectSchemaSemantics schemaSemantics,
                                              final MockedStatic<DatabaseTypedSPILoader> databaseTypedSPILoader) {
         DialectDatabaseMetaData result = mock(DialectDatabaseMetaData.class);
         when(result.getSchemaOption()).thenReturn(new DefaultSchemaOption(false, null, schemaSemantics));
-        when(result.getSequenceOption()).thenReturn(sequenceSupported ? Optional.of(new DialectSequenceOption(SEQUENCE_METADATA_QUERY)) : Optional.empty());
         databaseTypedSPILoader.when(() -> DatabaseTypedSPILoader.findService(DialectDatabaseMetaData.class, databaseType)).thenReturn(Optional.of(result));
         databaseTypedSPILoader.when(() -> DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType)).thenReturn(result);
     }
@@ -415,7 +418,6 @@ abstract class AbstractMCPJdbcMetadataLoaderTest {
     private int countSchemaMetadata(final ShardingSphereSchema schemaMetadata, final SupportedMCPMetadataObjectType objectType, final String objectName) {
         int result = SupportedMCPMetadataObjectType.SCHEMA == objectType && objectName.equals(schemaMetadata.getName()) ? 1 : 0;
         result += countTableMetadata(schemaMetadata.getAllTables(), objectType, objectName);
-        result += countSequenceMetadata(schemaMetadata.getAllSequences(), objectType, objectName);
         return result;
     }
     
@@ -432,16 +434,24 @@ abstract class AbstractMCPJdbcMetadataLoaderTest {
         return result;
     }
     
-    private int countSequenceMetadata(final Collection<ShardingSphereSequence> sequences, final SupportedMCPMetadataObjectType objectType, final String objectName) {
+    private int countSequenceMetadata(final Collection<MCPSequenceMetadata> sequences, final SupportedMCPMetadataObjectType objectType, final String objectName) {
         int result = 0;
-        for (ShardingSphereSequence each : sequences) {
-            if (SupportedMCPMetadataObjectType.SEQUENCE == objectType && objectName.equals(each.getName())) {
+        for (MCPSequenceMetadata each : sequences) {
+            if (SupportedMCPMetadataObjectType.SEQUENCE == objectType && objectName.equals(each.getSequence())) {
                 result++;
             }
         }
         return result;
     }
     
+    protected boolean containsMetadata(final MCPMetadataSnapshot snapshot, final SupportedMCPMetadataObjectType objectType, final String objectName) {
+        int sequenceCount = 0;
+        for (ShardingSphereSchema each : snapshot.getSchemas()) {
+            sequenceCount += countSequenceMetadata(snapshot.getSequences(each.getName()), objectType, objectName);
+        }
+        return 0 < countMetadata(snapshot.getSchemas(), objectType, objectName) + sequenceCount;
+    }
+    
     protected boolean containsMetadata(final Collection<ShardingSphereSchema> schemas, final SupportedMCPMetadataObjectType objectType, final String objectName) {
         return 0 < countMetadata(schemas, objectType, objectName);
     }
@@ -450,9 +460,13 @@ abstract class AbstractMCPJdbcMetadataLoaderTest {
     @Getter(AccessLevel.PROTECTED)
     protected static final class LoadedMetadataCatalog {
         
-        private final Map<String, Collection<ShardingSphereSchema>> databaseMetadataMap;
+        private final Map<String, MCPMetadataSnapshot> databaseMetadataMap;
         
         protected Optional<Collection<ShardingSphereSchema>> findMetadata(final String databaseName) {
+            return Optional.ofNullable(databaseMetadataMap.get(databaseName)).map(MCPMetadataSnapshot::getSchemas);
+        }
+        
+        protected Optional<MCPMetadataSnapshot> findSnapshot(final String databaseName) {
             return Optional.ofNullable(databaseMetadataMap.get(databaseName));
         }
     }
diff --git a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcMetadataLoaderSequenceTest.java b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcMetadataLoaderSequenceTest.java
index 055790d92b1..d9c6b6b2ece 100644
--- a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcMetadataLoaderSequenceTest.java
+++ b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcMetadataLoaderSequenceTest.java
@@ -17,8 +17,9 @@
 
 package org.apache.shardingsphere.mcp.support.database.metadata.jdbc;
 
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.mcp.support.database.capability.SupportedMCPMetadataObjectType;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPMetadataSnapshot;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPSequenceMetadata;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
@@ -26,7 +27,6 @@ import org.junit.jupiter.params.provider.MethodSource;
 import java.sql.Connection;
 import java.sql.Driver;
 import java.sql.SQLException;
-import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
@@ -42,7 +42,7 @@ class MCPJdbcMetadataLoaderSequenceTest extends AbstractMCPJdbcMetadataLoaderTes
     @MethodSource("loadWithoutSequenceQueryArguments")
     void assertLoadWithoutSequenceQuery(final String name, final String databaseType) throws SQLException {
         RuntimeDatabaseConfiguration runtimeDatabaseConfiguration = createMockRuntimeDatabaseConfiguration(createConnectionWithoutSchema(databaseType));
-        Collection<ShardingSphereSchema> actual = load(Map.of("logic_db", runtimeDatabaseConfiguration)).findMetadata("logic_db").orElseThrow();
+        MCPMetadataSnapshot actual = load(Map.of("logic_db", runtimeDatabaseConfiguration)).findSnapshot("logic_db").orElseThrow();
         assertTrue(containsMetadata(actual, SupportedMCPMetadataObjectType.TABLE, "orders"));
         assertFalse(containsMetadata(actual, SupportedMCPMetadataObjectType.SEQUENCE, "order_seq"));
     }
@@ -52,8 +52,8 @@ class MCPJdbcMetadataLoaderSequenceTest extends AbstractMCPJdbcMetadataLoaderTes
         Connection connection = createConnectionWithMetadata("PostgreSQL", List.of(), List.of(), Map.of(), Map.of(),
                 List.of(Map.of("SEQUENCE_SCHEMA", "PG_CATALOG", "SEQUENCE_NAME", "order_seq")));
         RuntimeDatabaseConfiguration runtimeDatabaseConfiguration = createMockRuntimeDatabaseConfiguration(connection);
-        Collection<ShardingSphereSchema> actual = load(Map.of("logic_db", runtimeDatabaseConfiguration), List.of("PostgreSQL"),
-                Map.of("PostgreSQL", List.of("pg_catalog"))).findMetadata("logic_db").orElseThrow();
+        MCPMetadataSnapshot actual = load(Map.of("logic_db", runtimeDatabaseConfiguration), List.of("PostgreSQL"),
+                Map.of("PostgreSQL", List.of("pg_catalog"))).findSnapshot("logic_db").orElseThrow();
         assertFalse(containsMetadata(actual, SupportedMCPMetadataObjectType.SEQUENCE, "order_seq"));
     }
     
@@ -62,10 +62,20 @@ class MCPJdbcMetadataLoaderSequenceTest extends AbstractMCPJdbcMetadataLoaderTes
         Connection connection = createConnectionWithMetadata("PostgreSQL", List.of(), List.of(), Map.of(), Map.of(),
                 List.of(Map.of("SEQUENCE_SCHEMA", "public", "SEQUENCE_NAME", "")));
         RuntimeDatabaseConfiguration runtimeDatabaseConfiguration = createMockRuntimeDatabaseConfiguration(connection);
-        Collection<ShardingSphereSchema> actual = load(Map.of("logic_db", runtimeDatabaseConfiguration)).findMetadata("logic_db").orElseThrow();
+        MCPMetadataSnapshot actual = load(Map.of("logic_db", runtimeDatabaseConfiguration)).findSnapshot("logic_db").orElseThrow();
         assertFalse(containsMetadata(actual, SupportedMCPMetadataObjectType.SEQUENCE, ""));
     }
     
+    @Test
+    void assertLoadWithWhitespaceInSequenceName() throws SQLException {
+        Connection connection = createConnectionWithSequenceMetadata("PostgreSQL", "public", " order_seq ");
+        RuntimeDatabaseConfiguration runtimeDatabaseConfiguration = createMockRuntimeDatabaseConfiguration(connection);
+        MCPSequenceMetadata actual = load(Map.of("logic_db", runtimeDatabaseConfiguration)).findSnapshot("logic_db").orElseThrow()
+                .getSequences("public").iterator().next();
+        assertThat(actual.getSchema(), is("public"));
+        assertThat(actual.getSequence(), is(" order_seq "));
+    }
+    
     @Test
     void assertLoadWithFailedSequenceMetadataQuery() throws SQLException {
         Driver mockDriver = new MockDriver("jdbc:mock:failed-sequence-query", createConnectionWithFailedSequenceMetadataQuery());
@@ -85,7 +95,7 @@ class MCPJdbcMetadataLoaderSequenceTest extends AbstractMCPJdbcMetadataLoaderTes
         Driver mockDriver = new MockDriver(jdbcUrl, createConnectionWithSequenceMetadata(databaseType, sequenceSchema, sequenceName));
         try (MockDriverRegistration ignored = MockDriverRegistration.register(mockDriver)) {
             LoadedMetadataCatalog actual = load(Map.of("logic_db", new RuntimeDatabaseConfiguration(jdbcUrl, "", "", MockDriver.class.getName())), List.of(databaseType));
-            assertTrue(containsMetadata(actual.findMetadata("logic_db").orElseThrow(), SupportedMCPMetadataObjectType.SEQUENCE, sequenceName));
+            assertTrue(containsMetadata(actual.findSnapshot("logic_db").orElseThrow(), SupportedMCPMetadataObjectType.SEQUENCE, sequenceName));
         }
     }
 }
diff --git a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcMetadataLoaderTest.java b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcMetadataLoaderTest.java
index 05f1fd40a82..22d8340f30c 100644
--- a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcMetadataLoaderTest.java
+++ b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcMetadataLoaderTest.java
@@ -61,7 +61,7 @@ class MCPJdbcMetadataLoaderTest extends AbstractMCPJdbcMetadataLoaderTest {
     @MethodSource("loadTypedMetadataArguments")
     void assertLoadWithTypedMetadata(final String name, final SupportedMCPMetadataObjectType objectType, final String objectName) throws SQLException {
         LoadedMetadataCatalog actual = load(Map.of("logic_db", createMockRuntimeDatabaseConfiguration(createStandardPostgreSQLMetadataConnection())));
-        assertTrue(containsMetadata(actual.findMetadata("logic_db").orElseThrow(), objectType, objectName));
+        assertTrue(containsMetadata(actual.findSnapshot("logic_db").orElseThrow(), objectType, objectName));
     }
     
     @Test
diff --git a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/model/MCPMetadataSnapshotTest.java b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/model/MCPMetadataSnapshotTest.java
new file mode 100644
index 00000000000..f330e2c92a5
--- /dev/null
+++ b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/model/MCPMetadataSnapshotTest.java
@@ -0,0 +1,44 @@
+/*
+ * 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.mcp.support.database.metadata.model;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.empty;
+import static org.hamcrest.Matchers.is;
+
+class MCPMetadataSnapshotTest {
+    
+    @Test
+    void assertGetSequences() {
+        MCPSequenceMetadata expected = new MCPSequenceMetadata("logic_db", "public", "order_seq");
+        MCPMetadataSnapshot snapshot = new MCPMetadataSnapshot(Collections.emptyList(), Map.of("public", List.of(expected)));
+        assertThat(snapshot.getSequences("public"), is(List.of(expected)));
+    }
+    
+    @Test
+    void assertGetSequencesWithoutSchema() {
+        MCPMetadataSnapshot snapshot = new MCPMetadataSnapshot(Collections.emptyList(), Collections.emptyMap());
+        assertThat(snapshot.getSequences("public"), is(empty()));
+    }
+}
diff --git a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/query/MetadataQueryServiceTest.java b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/query/MetadataQueryServiceTest.java
index 438a4c8b71e..17681f5f2a7 100644
--- a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/query/MetadataQueryServiceTest.java
+++ b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/query/MetadataQueryServiceTest.java
@@ -21,23 +21,23 @@ import org.apache.shardingsphere.database.connector.core.metadata.database.enums
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DefaultSchemaOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.schema.DialectSchemaSemantics;
-import org.apache.shardingsphere.database.connector.core.metadata.database.metadata.option.sequence.DialectSequenceOption;
 import org.apache.shardingsphere.database.connector.core.metadata.database.system.DialectSystemDatabase;
 import org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseTypeFactory;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSequence;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.mcp.api.exception.MCPUnsupportedException;
 import org.apache.shardingsphere.mcp.support.database.capability.MCPDatabaseCapabilityProvider;
+import org.apache.shardingsphere.mcp.support.database.capability.MCPDatabaseCapabilityOption;
 import org.apache.shardingsphere.mcp.support.database.capability.SupportedMCPMetadataObjectType;
 import org.apache.shardingsphere.mcp.support.database.metadata.context.RequestScopedMetadataContext;
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatabaseConfiguration;
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatabaseProfile;
 import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPColumnMetadata;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPSequenceMetadata;
 import org.apache.shardingsphere.mcp.support.fixture.SupportDatabaseTypeFactoryMocker;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
@@ -65,30 +65,25 @@ import static org.mockito.Mockito.when;
 
 class MetadataQueryServiceTest {
     
-    private Map<String, RuntimeDatabaseConfiguration> runtimeDatabases;
-    
     private MockedStatic<DatabaseTypeFactory> databaseTypeFactory;
     
     private MockedStatic<TypedSPILoader> typedSPILoader;
     
     private MockedStatic<DatabaseTypedSPILoader> databaseTypedSPILoader;
     
-    private RequestScopedMetadataContext metadataContext;
-    
     private MetadataQueryService metadataQueryService;
     
     @BeforeEach
     void setUp() {
-        runtimeDatabases = DatabaseTestDataFactory.createRuntimeDatabases();
         databaseTypeFactory = SupportDatabaseTypeFactoryMocker.mockByConnectionMetadata();
         typedSPILoader = mockStatic(TypedSPILoader.class, CALLS_REAL_METHODS);
         databaseTypedSPILoader = mockStatic(DatabaseTypedSPILoader.class);
         mockDatabaseType("MySQL", false);
         mockDatabaseType("PostgreSQL", true);
         mockDatabaseType("Hive", false);
+        Map<String, RuntimeDatabaseConfiguration> runtimeDatabases = DatabaseTestDataFactory.createRuntimeDatabases();
         MCPDatabaseCapabilityProvider databaseCapabilityProvider = new MCPDatabaseCapabilityProvider(runtimeDatabases);
-        metadataContext = new RequestScopedMetadataContext(runtimeDatabases, databaseCapabilityProvider);
-        metadataQueryService = new MetadataQueryService(databaseCapabilityProvider, metadataContext);
+        metadataQueryService = new MetadataQueryService(databaseCapabilityProvider, new RequestScopedMetadataContext(runtimeDatabases, databaseCapabilityProvider));
     }
     
     @AfterEach
@@ -104,15 +99,18 @@ class MetadataQueryServiceTest {
         when(databaseTypeFromSPI.getTrunkDatabaseType()).thenReturn(Optional.empty());
         typedSPILoader.when(() -> TypedSPILoader.findService(DatabaseType.class, databaseType)).thenReturn(Optional.of(databaseTypeFromSPI));
         typedSPILoader.when(() -> TypedSPILoader.getService(DatabaseType.class, databaseType)).thenReturn(databaseTypeFromSPI);
-        mockDialectDatabaseMetaData(databaseTypeFromSPI, sequenceSupported);
+        MCPDatabaseCapabilityOption capabilityOption = mock(MCPDatabaseCapabilityOption.class);
+        when(capabilityOption.getType()).thenReturn(databaseType);
+        when(capabilityOption.getSequenceQuery()).thenReturn(
+                sequenceSupported ? Optional.of("SELECT SEQUENCE_SCHEMA, SEQUENCE_NAME FROM TEST_SEQUENCES") : Optional.empty());
+        typedSPILoader.when(() -> TypedSPILoader.findService(MCPDatabaseCapabilityOption.class, databaseType)).thenReturn(Optional.of(capabilityOption));
+        mockDialectDatabaseMetaData(databaseTypeFromSPI);
         databaseTypedSPILoader.when(() -> DatabaseTypedSPILoader.findService(DialectSystemDatabase.class, databaseTypeFromSPI)).thenReturn(Optional.empty());
     }
     
-    private void mockDialectDatabaseMetaData(final DatabaseType databaseType, final boolean sequenceSupported) {
+    private void mockDialectDatabaseMetaData(final DatabaseType databaseType) {
         DialectDatabaseMetaData result = mock(DialectDatabaseMetaData.class);
         when(result.getSchemaOption()).thenReturn(new DefaultSchemaOption(false, null, DialectSchemaSemantics.NATIVE_SCHEMA));
-        when(result.getSequenceOption()).thenReturn(
-                sequenceSupported ? Optional.of(new DialectSequenceOption("SELECT SEQUENCE_SCHEMA, SEQUENCE_NAME FROM TEST_SEQUENCES")) : Optional.empty());
         databaseTypedSPILoader.when(() -> DatabaseTypedSPILoader.findService(DialectDatabaseMetaData.class, databaseType)).thenReturn(Optional.of(result));
         databaseTypedSPILoader.when(() -> DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType)).thenReturn(result);
     }
@@ -321,9 +319,11 @@ class MetadataQueryServiceTest {
     
     @Test
     void assertQuerySequences() {
-        List<ShardingSphereSequence> actual = metadataQueryService.querySequences("runtime_db", "public");
+        List<MCPSequenceMetadata> actual = metadataQueryService.querySequences("runtime_db", "public");
         assertThat(actual.size(), is(1));
-        assertThat(actual.get(0).getName(), is("order_seq"));
+        assertThat(actual.get(0).getDatabase(), is("runtime_db"));
+        assertThat(actual.get(0).getSchema(), is("public"));
+        assertThat(actual.get(0).getSequence(), is("order_seq"));
     }
     
     @Test
@@ -334,9 +334,9 @@ class MetadataQueryServiceTest {
     
     @Test
     void assertQuerySequence() {
-        Optional<ShardingSphereSequence> actual = metadataQueryService.querySequence("runtime_db", "public", "order_seq");
+        Optional<MCPSequenceMetadata> actual = metadataQueryService.querySequence("runtime_db", "public", "order_seq");
         assertTrue(actual.isPresent());
-        assertThat(actual.get().getName(), is("order_seq"));
+        assertThat(actual.get().getSequence(), is("order_seq"));
     }
     
     @Test
diff --git a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/tool/service/RuntimeDatabaseValidationServiceTest.java b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/tool/service/RuntimeDatabaseValidationServiceTest.java
index 2ddcdc31d64..ffde13d2f6b 100644
--- a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/tool/service/RuntimeDatabaseValidationServiceTest.java
+++ b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/tool/service/RuntimeDatabaseValidationServiceTest.java
@@ -25,6 +25,7 @@ import org.apache.shardingsphere.database.connector.core.metadata.identifier.Ide
 import org.apache.shardingsphere.infra.metadata.identifier.DatabaseIdentifierContext;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import org.apache.shardingsphere.mcp.support.database.metadata.model.MCPMetadataSnapshot;
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.MCPJdbcDatabaseProfileLoader;
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.MCPJdbcMetadataLoader;
 import org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatabaseConfiguration;
@@ -253,8 +254,8 @@ class RuntimeDatabaseValidationServiceTest {
         return new RuntimeDatabaseConfiguration("jdbc:test:profile", "demo", "", "com.mysql.cj.jdbc.Driver");
     }
     
-    private static List<ShardingSphereSchema> createMetadata(final String schemaName) {
-        return List.of(new ShardingSphereSchema(schemaName, mock(DatabaseType.class)));
+    private static MCPMetadataSnapshot createMetadata(final String schemaName) {
+        return new MCPMetadataSnapshot(List.of(new ShardingSphereSchema(schemaName, mock(DatabaseType.class))), Map.of());
     }
     
     private static final class InvisibleDatabaseDriver implements Driver {