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

duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 5a84418ce84 Remove load db views and refactor create/alter view 
refresher (#21022)
5a84418ce84 is described below

commit 5a84418ce841fac0a2c5170abf2e5946e5aba335
Author: zhaojinchao <[email protected]>
AuthorDate: Sat Sep 17 09:00:58 2022 +0800

    Remove load db views and refactor create/alter view refresher (#21022)
---
 .../metadata/EncryptSchemaMetaDataDecorator.java   |  2 +-
 .../EncryptSchemaMetaDataDecoratorTest.java        |  2 +-
 .../metadata/ShardingSchemaMetaDataDecorator.java  |  2 +-
 .../ShardingSchemaMetaDataDecoratorTest.java       |  2 +-
 .../schema/builder/GenericSchemaBuilder.java       |  7 ++-----
 .../schema/loader/SchemaMetaDataLoaderEngine.java  |  7 ++-----
 .../loader/dialect/H2SchemaMetaDataLoader.java     |  3 +--
 .../loader/dialect/MySQLSchemaMetaDataLoader.java  | 23 +---------------------
 .../dialect/OpenGaussSchemaMetaDataLoader.java     | 22 +--------------------
 .../loader/dialect/OracleSchemaMetaDataLoader.java |  2 +-
 .../dialect/PostgreSQLSchemaMetaDataLoader.java    | 22 +--------------------
 .../dialect/SQLServerSchemaMetaDataLoader.java     | 22 +--------------------
 .../schema/loader/model/SchemaMetaData.java        |  2 --
 .../schema/builder/GenericSchemaBuilderTest.java   |  2 +-
 .../dialect/SQLServerSchemaMetaDataLoaderTest.java | 13 ------------
 .../type/AlterViewStatementSchemaRefresher.java    | 14 ++++++++++---
 .../type/CreateViewStatementSchemaRefresher.java   |  9 +++++----
 .../SingleTableSchemaMetaDataDecorator.java        |  2 +-
 .../SingleTableSchemaMetaDataDecoratorTest.java    |  2 +-
 .../SchemaMetaDataRegistrySubscriber.java          |  2 +-
 .../impl/MySQLDDLStatementSQLVisitor.java          |  2 ++
 .../impl/OpenGaussDDLStatementSQLVisitor.java      |  2 ++
 .../impl/PostgreSQLDDLStatementSQLVisitor.java     |  2 ++
 .../common/statement/ddl/AlterViewStatement.java   |  2 ++
 .../common/statement/ddl/CreateViewStatement.java  |  2 ++
 25 files changed, 44 insertions(+), 128 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataDecorator.java
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataDecorator.java
index 83f7d377e56..e3af525ebf1 100644
--- 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataDecorator.java
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataDecorator.java
@@ -46,7 +46,7 @@ public final class EncryptSchemaMetaDataDecorator implements 
RuleBasedSchemaMeta
             for (TableMetaData each : entry.getValue().getTables()) {
                 tables.add(decorate(each.getName(), each, rule));
             }
-            result.put(entry.getKey(), new SchemaMetaData(entry.getKey(), 
tables, entry.getValue().getViews()));
+            result.put(entry.getKey(), new SchemaMetaData(entry.getKey(), 
tables));
         }
         return result;
     }
diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataDecoratorTest.java
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataDecoratorTest.java
index 33796aebc26..f43fe1bce00 100644
--- 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataDecoratorTest.java
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataDecoratorTest.java
@@ -50,7 +50,7 @@ public final class EncryptSchemaMetaDataDecoratorTest {
         Collection<TableMetaData> tableMetaDataList = new LinkedList<>();
         tableMetaDataList.add(createTableMetaData());
         TableMetaData actual = 
loader.decorate(Collections.singletonMap("logic_db",
-                new SchemaMetaData("logic_db", tableMetaDataList, 
Collections.emptyList())), rule, 
mock(GenericSchemaBuilderMaterials.class)).get("logic_db").getTables().iterator().next();
+                new SchemaMetaData("logic_db", tableMetaDataList)), rule, 
mock(GenericSchemaBuilderMaterials.class)).get("logic_db").getTables().iterator().next();
         assertThat(actual.getColumns().size(), is(2));
         Iterator<ColumnMetaData> columnsIterator = 
actual.getColumns().iterator();
         assertThat(columnsIterator.next().getName(), is("id"));
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataDecorator.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataDecorator.java
index bbe9538d20a..cc2d1df9e0d 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataDecorator.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataDecorator.java
@@ -57,7 +57,7 @@ public final class ShardingSchemaMetaDataDecorator implements 
RuleBasedSchemaMet
                 }
                 tables.add(tableEntry.getValue().iterator().next());
             }
-            result.put(entry.getKey(), new SchemaMetaData(entry.getKey(), 
tables, entry.getValue().getViews()));
+            result.put(entry.getKey(), new SchemaMetaData(entry.getKey(), 
tables));
         }
         return result;
     }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataDecoratorTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataDecoratorTest.java
index 4b2c9e809e7..0a5a3d72f73 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataDecoratorTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataDecoratorTest.java
@@ -56,7 +56,7 @@ public final class ShardingSchemaMetaDataDecoratorTest {
         GenericSchemaBuilderMaterials materials = 
mock(GenericSchemaBuilderMaterials.class);
         when(materials.getProps()).thenReturn(new ConfigurationProperties(new 
Properties()));
         Map<String, SchemaMetaData> actual = 
builder.decorate(Collections.singletonMap("sharding_db",
-                new SchemaMetaData("sharding_db", tableMetaDataList, 
Collections.emptyList())), shardingRule, materials);
+                new SchemaMetaData("sharding_db", tableMetaDataList)), 
shardingRule, materials);
         Collection<ColumnMetaData> columns = 
actual.get("sharding_db").getTables().iterator().next().getColumns();
         Iterator<ColumnMetaData> iterator = columns.iterator();
         assertTrue(iterator.next().isGenerated());
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilder.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilder.java
index f677c8b140f..0acedb11a7c 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilder.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilder.java
@@ -99,10 +99,8 @@ public final class GenericSchemaBuilder {
         Map<String, SchemaMetaData> result = new LinkedHashMap<>();
         Collection<TableMetaData> tableMetaDataList = 
Optional.ofNullable(schemaMetaDataMap.get(
                 
DatabaseTypeEngine.getDefaultSchemaName(materials.getStorageType(), 
materials.getDefaultSchemaName()))).map(SchemaMetaData::getTables).orElseGet(Collections::emptyList);
-        Collection<ViewMetaData> viewMetaDataList = 
Optional.ofNullable(schemaMetaDataMap.get(
-                
DatabaseTypeEngine.getDefaultSchemaName(materials.getStorageType(), 
materials.getDefaultSchemaName()))).map(SchemaMetaData::getViews).orElseGet(Collections::emptyList);
         String frontendSchemaName = 
DatabaseTypeEngine.getDefaultSchemaName(materials.getProtocolType(), 
materials.getDefaultSchemaName());
-        result.put(frontendSchemaName, new SchemaMetaData(frontendSchemaName, 
tableMetaDataList, viewMetaDataList));
+        result.put(frontendSchemaName, new SchemaMetaData(frontendSchemaName, 
tableMetaDataList));
         return result;
     }
     
@@ -125,8 +123,7 @@ public final class GenericSchemaBuilder {
         Map<String, ShardingSphereSchema> result = new 
ConcurrentHashMap<>(schemaMetaDataMap.size(), 1);
         for (Entry<String, SchemaMetaData> entry : 
schemaMetaDataMap.entrySet()) {
             Map<String, ShardingSphereTable> tables = 
convertToTableMap(entry.getValue().getTables());
-            Map<String, ShardingSphereView> views = 
convertToViewMap(entry.getValue().getViews());
-            result.put(entry.getKey().toLowerCase(), new 
ShardingSphereSchema(tables, views));
+            result.put(entry.getKey().toLowerCase(), new 
ShardingSphereSchema(tables, new LinkedHashMap<>()));
         }
         return result;
     }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/SchemaMetaDataLoaderEngine.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/SchemaMetaDataLoaderEngine.java
index a87569281c5..5504e820088 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/SchemaMetaDataLoaderEngine.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/SchemaMetaDataLoaderEngine.java
@@ -23,7 +23,6 @@ import lombok.NoArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.common.TableMetaDataLoader;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.common.ViewMetaDataLoader;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.SchemaMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.TableMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ViewMetaData;
@@ -81,9 +80,8 @@ public final class SchemaMetaDataLoaderEngine {
             for (String tableName : each.getActualTableNames()) {
                 TableMetaDataLoader.load(each.getDataSource(), tableName, 
databaseType).ifPresent(tableMetaData::add);
             }
-            ViewMetaDataLoader.load(each.getDataSource(), 
databaseType).ifPresent(viewMetaData::add);
         }
-        return Collections.singletonMap(defaultSchemaName, new 
SchemaMetaData(defaultSchemaName, tableMetaData, viewMetaData));
+        return Collections.singletonMap(defaultSchemaName, new 
SchemaMetaData(defaultSchemaName, tableMetaData));
     }
     
     private static Map<String, SchemaMetaData> loadByDialect(final 
DialectSchemaMetaDataLoader loader, final 
Collection<SchemaMetaDataLoaderMaterials> materials) throws SQLException {
@@ -107,9 +105,8 @@ public final class SchemaMetaDataLoaderEngine {
     
     private static void mergeSchemaMetaDataMap(final Map<String, 
SchemaMetaData> schemaMetaDataMap, final Collection<SchemaMetaData> 
addedSchemaMetaDataList) {
         for (SchemaMetaData each : addedSchemaMetaDataList) {
-            SchemaMetaData schemaMetaData = 
schemaMetaDataMap.computeIfAbsent(each.getName(), key -> new 
SchemaMetaData(each.getName(), new LinkedList<>(), new LinkedList<>()));
+            SchemaMetaData schemaMetaData = 
schemaMetaDataMap.computeIfAbsent(each.getName(), key -> new 
SchemaMetaData(each.getName(), new LinkedList<>()));
             schemaMetaData.getTables().addAll(each.getTables());
-            schemaMetaData.getViews().addAll(each.getViews());
         }
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/H2SchemaMetaDataLoader.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/H2SchemaMetaDataLoader.java
index 2e67ab1fa34..6e8aec771aa 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/H2SchemaMetaDataLoader.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/H2SchemaMetaDataLoader.java
@@ -76,8 +76,7 @@ public final class H2SchemaMetaDataLoader implements 
DialectSchemaMetaDataLoader
                 tableMetaDataList.add(new TableMetaData(entry.getKey(), 
entry.getValue(), indexMetaDataList, Collections.emptyList()));
             }
         }
-        // TODO Load views from H2 database.
-        return Collections.singletonList(new SchemaMetaData(defaultSchemaName, 
tableMetaDataList, Collections.emptyList()));
+        return Collections.singletonList(new SchemaMetaData(defaultSchemaName, 
tableMetaDataList));
     }
     
     private Map<String, Collection<ColumnMetaData>> 
loadColumnMetaDataMap(final Connection connection, final Collection<String> 
tables) throws SQLException {
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/MySQLSchemaMetaDataLoader.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/MySQLSchemaMetaDataLoader.java
index e487bf6061d..0a758c856b5 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/MySQLSchemaMetaDataLoader.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/MySQLSchemaMetaDataLoader.java
@@ -24,7 +24,6 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.Con
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.IndexMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.SchemaMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.TableMetaData;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ViewMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.spi.DataTypeLoaderFactory;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.spi.DialectSchemaMetaDataLoader;
 
@@ -54,8 +53,6 @@ public final class MySQLSchemaMetaDataLoader implements 
DialectSchemaMetaDataLoa
     
     private static final String TABLE_META_DATA_SQL = TABLE_META_DATA_NO_ORDER 
+ ORDER_BY_ORDINAL_POSITION;
     
-    private static final String VIEW_META_DATA_SQL = "SELECT TABLE_NAME, 
VIEW_DEFINITION FROM information_schema.VIEWS WHERE TABLE_SCHEMA = ?";
-    
     private static final String TABLE_META_DATA_SQL_IN_TABLES = 
TABLE_META_DATA_NO_ORDER + " AND TABLE_NAME IN (%s)" + 
ORDER_BY_ORDINAL_POSITION;
     
     private static final String INDEX_META_DATA_SQL = "SELECT TABLE_NAME, 
INDEX_NAME FROM information_schema.statistics WHERE TABLE_SCHEMA=? and 
TABLE_NAME IN (%s)";
@@ -74,25 +71,7 @@ public final class MySQLSchemaMetaDataLoader implements 
DialectSchemaMetaDataLoa
             Collection<ConstraintMetaData> constraintMetaDataList = 
constraintMetaDataMap.getOrDefault(entry.getKey(), Collections.emptyList());
             tableMetaDataList.add(new TableMetaData(entry.getKey(), 
entry.getValue(), indexMetaDataList, constraintMetaDataList));
         }
-        return Collections.singletonList(new SchemaMetaData(defaultSchemaName, 
tableMetaDataList, loadViewMetaData(dataSource, tables)));
-    }
-    
-    private Collection<ViewMetaData> loadViewMetaData(final DataSource 
dataSource, final Collection<String> tables) throws SQLException {
-        Collection<ViewMetaData> result = new LinkedList<>();
-        try (
-                Connection connection = dataSource.getConnection();
-                PreparedStatement preparedStatement = 
connection.prepareStatement(VIEW_META_DATA_SQL)) {
-            String databaseName = "".equals(connection.getCatalog()) ? 
GlobalDataSourceRegistry.getInstance().getCachedDatabaseTables().get(tables.iterator().next())
 : connection.getCatalog();
-            preparedStatement.setString(1, databaseName);
-            try (ResultSet resultSet = preparedStatement.executeQuery()) {
-                while (resultSet.next()) {
-                    String tableName = resultSet.getString("TABLE_NAME");
-                    String viewDefinition = 
resultSet.getString("VIEW_DEFINITION");
-                    result.add(new ViewMetaData(tableName, viewDefinition));
-                }
-            }
-        }
-        return result;
+        return Collections.singletonList(new SchemaMetaData(defaultSchemaName, 
tableMetaDataList));
     }
     
     private Map<String, Collection<ConstraintMetaData>> 
loadConstraintMetaDataMap(final DataSource dataSource, final Collection<String> 
tables) throws SQLException {
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/OpenGaussSchemaMetaDataLoader.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/OpenGaussSchemaMetaDataLoader.java
index 80814fff278..a507e8b704c 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/OpenGaussSchemaMetaDataLoader.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/OpenGaussSchemaMetaDataLoader.java
@@ -24,7 +24,6 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.Col
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.IndexMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.SchemaMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.TableMetaData;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ViewMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.spi.DataTypeLoaderFactory;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.spi.DialectSchemaMetaDataLoader;
 
@@ -52,8 +51,6 @@ public final class OpenGaussSchemaMetaDataLoader implements 
DialectSchemaMetaDat
     
     private static final String TABLE_META_DATA_SQL_WITHOUT_TABLES = 
BASIC_TABLE_META_DATA_SQL + " ORDER BY ordinal_position";
     
-    private static final String VIEW_META_DATA_SQL = "SELECT table_name, 
view_definition FROM information_schema.views WHERE table_schema = ?";
-    
     private static final String TABLE_META_DATA_SQL_WITH_TABLES = 
BASIC_TABLE_META_DATA_SQL + " AND table_name IN (%s) ORDER BY ordinal_position";
     
     private static final String PRIMARY_KEY_META_DATA_SQL = "SELECT 
tc.table_name, kc.column_name, kc.table_schema FROM 
information_schema.table_constraints tc"
@@ -71,7 +68,7 @@ public final class OpenGaussSchemaMetaDataLoader implements 
DialectSchemaMetaDat
         for (String each : schemaNames) {
             Multimap<String, IndexMetaData> tableIndexMetaDataMap = 
schemaIndexMetaDataMap.getOrDefault(each, LinkedHashMultimap.create());
             Multimap<String, ColumnMetaData> tableColumnMetaDataMap = 
schemaColumnMetaDataMap.getOrDefault(each, LinkedHashMultimap.create());
-            result.add(new SchemaMetaData(each, 
createTableMetaDataList(tableIndexMetaDataMap, tableColumnMetaDataMap), 
loadViewMetaData(dataSource, each)));
+            result.add(new SchemaMetaData(each, 
createTableMetaDataList(tableIndexMetaDataMap, tableColumnMetaDataMap)));
         }
         return result;
     }
@@ -86,23 +83,6 @@ public final class OpenGaussSchemaMetaDataLoader implements 
DialectSchemaMetaDat
         return result;
     }
     
-    private Collection<ViewMetaData> loadViewMetaData(final DataSource 
dataSource, final String schemaName) throws SQLException {
-        Collection<ViewMetaData> result = new LinkedList<>();
-        try (
-                Connection connection = dataSource.getConnection();
-                PreparedStatement preparedStatement = 
connection.prepareStatement(VIEW_META_DATA_SQL)) {
-            preparedStatement.setString(1, schemaName);
-            try (ResultSet resultSet = preparedStatement.executeQuery()) {
-                while (resultSet.next()) {
-                    String tableName = resultSet.getString("table_name");
-                    String viewDefinition = 
resultSet.getString("view_definition");
-                    result.add(new ViewMetaData(tableName, viewDefinition));
-                }
-            }
-        }
-        return result;
-    }
-    
     private Map<String, Multimap<String, ColumnMetaData>> 
loadColumnMetaDataMap(final DataSource dataSource, final Collection<String> 
tables,
                                                                                
 final Collection<String> schemaNames) throws SQLException {
         Map<String, Multimap<String, ColumnMetaData>> result = new 
LinkedHashMap<>();
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/OracleSchemaMetaDataLoader.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/OracleSchemaMetaDataLoader.java
index 05ae7fd8405..ba8f5028451 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/OracleSchemaMetaDataLoader.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/OracleSchemaMetaDataLoader.java
@@ -85,7 +85,7 @@ public final class OracleSchemaMetaDataLoader implements 
DialectSchemaMetaDataLo
             tableMetaDataList.add(new TableMetaData(entry.getKey(), 
entry.getValue(), indexMetaDataMap.getOrDefault(entry.getKey(), 
Collections.emptyList()), Collections.emptyList()));
         }
         // TODO Load views from Oracle database.
-        return Collections.singletonList(new SchemaMetaData(defaultSchemaName, 
tableMetaDataList, Collections.emptyList()));
+        return Collections.singletonList(new SchemaMetaData(defaultSchemaName, 
tableMetaDataList));
     }
     
     private Map<String, Collection<ColumnMetaData>> 
loadColumnMetaDataMap(final Connection connection, final Collection<String> 
tables) throws SQLException {
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/PostgreSQLSchemaMetaDataLoader.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/PostgreSQLSchemaMetaDataLoader.java
index 5d91dee4579..3f6031f8da4 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/PostgreSQLSchemaMetaDataLoader.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/PostgreSQLSchemaMetaDataLoader.java
@@ -37,7 +37,6 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.Con
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.IndexMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.SchemaMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.TableMetaData;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ViewMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.spi.DataTypeLoaderFactory;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.spi.DialectSchemaMetaDataLoader;
 
@@ -53,8 +52,6 @@ public final class PostgreSQLSchemaMetaDataLoader implements 
DialectSchemaMetaDa
     
     private static final String TABLE_META_DATA_SQL_WITH_TABLES = 
BASIC_TABLE_META_DATA_SQL + " AND table_name IN (%s) ORDER BY ordinal_position";
     
-    private static final String VIEW_META_DATA_SQL = "SELECT table_name, 
view_definition FROM information_schema.views WHERE table_schema = ?";
-    
     private static final String FOREIGN_KEY_META_DATA_SQL = "SELECT 
tc.table_schema,tc.table_name,tc.constraint_name,pgo.relname refer_table_name "
             + "FROM information_schema.table_constraints tc "
             + "JOIN pg_constraint pgc ON tc.constraint_name = pgc.conname AND 
contype='f' "
@@ -81,7 +78,7 @@ public final class PostgreSQLSchemaMetaDataLoader implements 
DialectSchemaMetaDa
             Multimap<String, IndexMetaData> tableIndexMetaDataMap = 
schemaIndexMetaDataMap.getOrDefault(each, LinkedHashMultimap.create());
             Multimap<String, ColumnMetaData> tableColumnMetaDataMap = 
schemaColumnMetaDataMap.getOrDefault(each, LinkedHashMultimap.create());
             Multimap<String, ConstraintMetaData> tableConstraintMetaDataMap = 
schemaConstraintMetaDataMap.getOrDefault(each, LinkedHashMultimap.create());
-            result.add(new SchemaMetaData(each, 
createTableMetaDataList(tableIndexMetaDataMap, tableColumnMetaDataMap, 
tableConstraintMetaDataMap), loadViewMetaData(dataSource, each)));
+            result.add(new SchemaMetaData(each, 
createTableMetaDataList(tableIndexMetaDataMap, tableColumnMetaDataMap, 
tableConstraintMetaDataMap)));
         }
         return result;
     }
@@ -99,23 +96,6 @@ public final class PostgreSQLSchemaMetaDataLoader implements 
DialectSchemaMetaDa
         return result;
     }
     
-    private Collection<ViewMetaData> loadViewMetaData(final DataSource 
dataSource, final String schemaName) throws SQLException {
-        Collection<ViewMetaData> result = new LinkedList<>();
-        try (
-                Connection connection = dataSource.getConnection();
-                PreparedStatement preparedStatement = 
connection.prepareStatement(VIEW_META_DATA_SQL)) {
-            preparedStatement.setString(1, schemaName);
-            try (ResultSet resultSet = preparedStatement.executeQuery()) {
-                while (resultSet.next()) {
-                    String tableName = resultSet.getString("table_name");
-                    String viewDefinition = 
resultSet.getString("view_definition");
-                    result.add(new ViewMetaData(tableName, viewDefinition));
-                }
-            }
-        }
-        return result;
-    }
-    
     private Map<String, Multimap<String, ConstraintMetaData>> 
loadConstraintMetaDataMap(final DataSource dataSource,
                                                                                
         final Collection<String> schemaNames) throws SQLException {
         Map<String, Multimap<String, ConstraintMetaData>> result = new 
LinkedHashMap<>();
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/SQLServerSchemaMetaDataLoader.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/SQLServerSchemaMetaDataLoader.java
index faf8a5f47c8..aef44d66df4 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/SQLServerSchemaMetaDataLoader.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/SQLServerSchemaMetaDataLoader.java
@@ -22,7 +22,6 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.Col
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.IndexMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.SchemaMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.TableMetaData;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ViewMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.spi.DataTypeLoaderFactory;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.spi.DialectSchemaMetaDataLoader;
 
@@ -55,8 +54,6 @@ public final class SQLServerSchemaMetaDataLoader implements 
DialectSchemaMetaDat
     
     private static final String TABLE_META_DATA_SQL = 
TABLE_META_DATA_SQL_NO_ORDER + ORDER_BY_COLUMN_ID;
     
-    private static final String VIEW_META_DATA_SQL = "SELECT TABLE_NAME, 
VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_CATALOG = ?";
-    
     private static final String TABLE_META_DATA_SQL_IN_TABLES = 
TABLE_META_DATA_SQL_NO_ORDER + " WHERE obj.name IN (%s)" + ORDER_BY_COLUMN_ID;
     
     private static final String INDEX_META_DATA_SQL = "SELECT a.name AS 
INDEX_NAME, c.name AS TABLE_NAME FROM sys.indexes a"
@@ -75,24 +72,7 @@ public final class SQLServerSchemaMetaDataLoader implements 
DialectSchemaMetaDat
                 tableMetaDataList.add(new TableMetaData(entry.getKey(), 
entry.getValue(), indexMetaDataList, Collections.emptyList()));
             }
         }
-        return Collections.singletonList(new SchemaMetaData(defaultSchemaName, 
tableMetaDataList, loadViewMetaData(dataSource)));
-    }
-    
-    private Collection<ViewMetaData> loadViewMetaData(final DataSource 
dataSource) throws SQLException {
-        Collection<ViewMetaData> result = new LinkedList<>();
-        try (
-                Connection connection = dataSource.getConnection();
-                PreparedStatement preparedStatement = 
connection.prepareStatement(VIEW_META_DATA_SQL)) {
-            preparedStatement.setString(1, connection.getCatalog());
-            try (ResultSet resultSet = preparedStatement.executeQuery()) {
-                while (resultSet.next()) {
-                    String tableName = resultSet.getString("TABLE_NAME");
-                    String viewDefinition = 
resultSet.getString("VIEW_DEFINITION");
-                    result.add(new ViewMetaData(tableName, viewDefinition));
-                }
-            }
-        }
-        return result;
+        return Collections.singletonList(new SchemaMetaData(defaultSchemaName, 
tableMetaDataList));
     }
     
     private Map<String, Collection<ColumnMetaData>> 
loadColumnMetaDataMap(final DataSource dataSource, final Collection<String> 
tables) throws SQLException {
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/model/SchemaMetaData.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/model/SchemaMetaData.java
index c9324e3398b..31ca36020a3 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/model/SchemaMetaData.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/model/SchemaMetaData.java
@@ -36,6 +36,4 @@ public final class SchemaMetaData {
     private final String name;
     
     private final Collection<TableMetaData> tables;
-    
-    private final Collection<ViewMetaData> views;
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilderTest.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilderTest.java
index 188d556d285..c8e7748e041 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilderTest.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilderTest.java
@@ -94,7 +94,7 @@ public final class GenericSchemaBuilderTest {
         if (!tableNames.isEmpty() && 
(tableNames.contains("data_node_routed_table1") || 
tableNames.contains("data_node_routed_table2"))) {
             Collection<TableMetaData> tableMetaDataList = tableNames.stream()
                     .map(each -> new TableMetaData(each, 
Collections.emptyList(), Collections.emptyList(), 
Collections.emptyList())).collect(Collectors.toList());
-            return Collections.singletonMap(materials.getDefaultSchemaName(), 
new SchemaMetaData(materials.getDefaultSchemaName(), tableMetaDataList, 
Collections.emptyList()));
+            return Collections.singletonMap(materials.getDefaultSchemaName(), 
new SchemaMetaData(materials.getDefaultSchemaName(), tableMetaDataList));
         }
         return Collections.emptyMap();
     }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/SQLServerSchemaMetaDataLoaderTest.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/SQLServerSchemaMetaDataLoaderTest.java
index 2959a21a2d9..740adc8de55 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/SQLServerSchemaMetaDataLoaderTest.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/dialect/SQLServerSchemaMetaDataLoaderTest.java
@@ -22,7 +22,6 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.Col
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.IndexMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.SchemaMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.TableMetaData;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ViewMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.spi.DialectSchemaMetaDataLoader;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.loader.spi.DialectSchemaMetaDataLoaderFactory;
 import org.junit.Test;
@@ -145,18 +144,6 @@ public final class SQLServerSchemaMetaDataLoaderTest {
         assertThat(columnsIterator.next(), is(new ColumnMetaData("name", 12, 
false, false, false, true)));
     }
     
-    @Test
-    public void assertLoadViewMetaData() throws SQLException {
-        DataSource dataSource = mockDataSource();
-        ResultSet resultSet = mockViewMetaDataResultSet();
-        when(dataSource.getConnection().prepareStatement(LOAD_VIEW_META_DATA)
-                .executeQuery()).thenReturn(resultSet);
-        Collection<SchemaMetaData> actual = 
getDialectTableMetaDataLoader().load(dataSource, 
Collections.singletonList("tbl"), "sharding_db");
-        ViewMetaData actualViewMetaData = 
actual.iterator().next().getViews().iterator().next();
-        assertThat(actualViewMetaData.getName(), is("v_order"));
-        assertThat(actualViewMetaData.getViewDefinition(), is("create view 
v_order as select * from t_order;"));
-    }
-    
     private DataSource mockDataSource() throws SQLException {
         DataSource result = mock(DataSource.class, RETURNS_DEEP_STUBS);
         ResultSet typeInfoResultSet = mockTypeInfoResultSet();
diff --git 
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterViewStatementSchemaRefresher.java
 
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterViewStatementSchemaRefresher.java
index dbc64e8fcdc..fc0e3f1ebb9 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterViewStatementSchemaRefresher.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterViewStatementSchemaRefresher.java
@@ -24,6 +24,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericS
 import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilderMaterials;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereTable;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereView;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.event.MetaDataRefreshedEvent;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.event.SchemaAlteredEvent;
 import 
org.apache.shardingsphere.infra.rule.identifier.type.DataNodeContainedRule;
@@ -47,28 +48,34 @@ public final class AlterViewStatementSchemaRefresher 
implements MetaDataRefreshe
     public Optional<MetaDataRefreshedEvent> refresh(final 
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
                                                     final String schemaName, 
final AlterViewStatement sqlStatement, final ConfigurationProperties props) 
throws SQLException {
         String viewName = 
sqlStatement.getView().getTableName().getIdentifier().getValue();
+        String viewDefinition = 
sqlStatement.getViewSQL().substring(sqlStatement.getViewSQL().substring(0, 
sqlStatement.getViewSQL().indexOf(" as ")).length() + 4).trim();
         SchemaAlteredEvent event = new SchemaAlteredEvent(database.getName(), 
schemaName);
         Optional<SimpleTableSegment> renameView = 
AlterViewStatementHandler.getRenameView(sqlStatement);
         if (renameView.isPresent()) {
             String renameViewName = 
renameView.get().getTableName().getIdentifier().getValue();
-            putTableMetaData(database, logicDataSourceNames, schemaName, 
renameViewName, props);
+            String originalView = 
database.getSchema(schemaName).getView(viewName).getViewDefinition();
+            putTableMetaData(database, logicDataSourceNames, schemaName, 
renameViewName, originalView, props);
             removeTableMetaData(database, schemaName, viewName);
             
event.getAlteredTables().add(database.getSchema(schemaName).getTable(renameViewName));
+            
event.getAlteredViews().add(database.getSchema(schemaName).getView(renameViewName));
             event.getDroppedTables().add(viewName);
+            event.getDroppedViews().add(viewName);
         } else {
-            putTableMetaData(database, logicDataSourceNames, schemaName, 
viewName, props);
+            putTableMetaData(database, logicDataSourceNames, schemaName, 
viewName, viewDefinition, props);
             
event.getAlteredTables().add(database.getSchema(schemaName).getTable(viewName));
+            
event.getAlteredViews().add(database.getSchema(schemaName).getView(viewName));
         }
         return Optional.of(event);
     }
     
     private void removeTableMetaData(final ShardingSphereDatabase database, 
final String schemaName, final String viewName) {
         database.getSchema(schemaName).removeTable(viewName);
+        database.getSchema(schemaName).removeView(viewName);
         
database.getRuleMetaData().findRules(MutableDataNodeRule.class).forEach(each -> 
each.remove(schemaName, viewName));
     }
     
     private void putTableMetaData(final ShardingSphereDatabase database, final 
Collection<String> logicDataSourceNames,
-                                  final String schemaName, final String 
viewName, final ConfigurationProperties props) throws SQLException {
+                                  final String schemaName, final String 
viewName, final String viewDefinition, final ConfigurationProperties props) 
throws SQLException {
         if (!containsInImmutableDataNodeContainedRule(viewName, database)) {
             
database.getRuleMetaData().findRules(MutableDataNodeRule.class).forEach(each -> 
each.put(logicDataSourceNames.iterator().next(), schemaName, viewName));
         }
@@ -77,6 +84,7 @@ public final class AlterViewStatementSchemaRefresher 
implements MetaDataRefreshe
         Map<String, ShardingSphereSchema> schemaMap = 
GenericSchemaBuilder.build(Collections.singletonList(viewName), materials);
         Optional<ShardingSphereTable> actualViewMetaData = 
Optional.ofNullable(schemaMap.get(schemaName)).map(optional -> 
optional.getTable(viewName));
         actualViewMetaData.ifPresent(optional -> 
database.getSchema(schemaName).putTable(viewName, optional));
+        database.getSchema(schemaName).putView(viewName, new 
ShardingSphereView(viewName, viewDefinition));
     }
     
     private boolean containsInImmutableDataNodeContainedRule(final String 
viewName, final ShardingSphereDatabase database) {
diff --git 
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/CreateViewStatementSchemaRefresher.java
 
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/CreateViewStatementSchemaRefresher.java
index 8360071ef11..18aed121d12 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/CreateViewStatementSchemaRefresher.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/CreateViewStatementSchemaRefresher.java
@@ -46,6 +46,7 @@ public final class CreateViewStatementSchemaRefresher 
implements MetaDataRefresh
     public Optional<MetaDataRefreshedEvent> refresh(final 
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
                                                     final String schemaName, 
final CreateViewStatement sqlStatement, final ConfigurationProperties props) 
throws SQLException {
         String viewName = 
sqlStatement.getView().getTableName().getIdentifier().getValue();
+        String viewDefinition = 
sqlStatement.getViewSQL().substring(sqlStatement.getViewSQL().substring(0, 
sqlStatement.getViewSQL().indexOf(" as ")).length() + 4).trim();
         if (!containsInImmutableDataNodeContainedRule(viewName, database)) {
             
database.getRuleMetaData().findRules(MutableDataNodeRule.class).forEach(each -> 
each.put(logicDataSourceNames.iterator().next(), schemaName, viewName));
         }
@@ -53,13 +54,13 @@ public final class CreateViewStatementSchemaRefresher 
implements MetaDataRefresh
                 database.getResource().getDatabaseType(), 
database.getResource().getDataSources(), database.getRuleMetaData().getRules(), 
props, schemaName);
         Map<String, ShardingSphereSchema> schemaMap = 
GenericSchemaBuilder.build(Collections.singletonList(viewName), materials);
         Optional<ShardingSphereTable> actualTableMetaData = 
Optional.ofNullable(schemaMap.get(schemaName)).map(optional -> 
optional.getTable(viewName));
-        Optional<ShardingSphereView> actualViewMetaData = 
Optional.ofNullable(schemaMap.get(schemaName)).map(optional -> 
optional.getView(viewName));
-        if (actualTableMetaData.isPresent() && actualViewMetaData.isPresent()) 
{
+        if (actualTableMetaData.isPresent()) {
+            ShardingSphereView view = new ShardingSphereView(viewName, 
viewDefinition);
             database.getSchema(schemaName).putTable(viewName, 
actualTableMetaData.get());
-            database.getSchema(schemaName).putView(viewName, 
actualViewMetaData.get());
+            database.getSchema(schemaName).putView(viewName, view);
             SchemaAlteredEvent event = new 
SchemaAlteredEvent(database.getName(), schemaName);
             event.getAlteredTables().add(actualTableMetaData.get());
-            event.getAlteredViews().add(actualViewMetaData.get());
+            event.getAlteredViews().add(view);
             return Optional.of(event);
         }
         return Optional.empty();
diff --git 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/metadata/SingleTableSchemaMetaDataDecorator.java
 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/metadata/SingleTableSchemaMetaDataDecorator.java
index d33cf68a1fd..a5a150885ec 100644
--- 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/metadata/SingleTableSchemaMetaDataDecorator.java
+++ 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/metadata/SingleTableSchemaMetaDataDecorator.java
@@ -47,7 +47,7 @@ public final class SingleTableSchemaMetaDataDecorator 
implements RuleBasedSchema
             for (TableMetaData each : entry.getValue().getTables()) {
                 tables.add(decorate(each.getName(), each));
             }
-            result.put(entry.getKey(), new SchemaMetaData(entry.getKey(), 
tables, entry.getValue().getViews()));
+            result.put(entry.getKey(), new SchemaMetaData(entry.getKey(), 
tables));
         }
         return result;
     }
diff --git 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/metadata/SingleTableSchemaMetaDataDecoratorTest.java
 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/metadata/SingleTableSchemaMetaDataDecoratorTest.java
index b321ed35f11..3d80be727fe 100644
--- 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/metadata/SingleTableSchemaMetaDataDecoratorTest.java
+++ 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/metadata/SingleTableSchemaMetaDataDecoratorTest.java
@@ -66,6 +66,6 @@ public final class SingleTableSchemaMetaDataDecoratorTest {
         Collection<IndexMetaData> indexMetaDataList = Arrays.asList(new 
IndexMetaData("id_" + TABLE_NAME), new IndexMetaData("idx_name_" + TABLE_NAME));
         Collection<TableMetaData> tableMetaDataList = new LinkedList<>();
         tableMetaDataList.add(new TableMetaData(TABLE_NAME, columns, 
indexMetaDataList, Collections.emptyList()));
-        return Collections.singletonMap("sharding_db", new 
SchemaMetaData("sharding_db", tableMetaDataList, Collections.emptyList()));
+        return Collections.singletonMap("sharding_db", new 
SchemaMetaData("sharding_db", tableMetaDataList));
     }
 }
diff --git 
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/subscriber/SchemaMetaDataRegistrySubscriber.java
 
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/subscriber/SchemaMetaDataRegistrySu
 [...]
index 1cdaff8b41e..0538d000fe8 100644
--- 
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/subscriber/SchemaMetaDataRegistrySubscriber.java
+++ 
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/subscriber/SchemaMetaDataRegistrySubscriber.java
@@ -56,7 +56,7 @@ public final class SchemaMetaDataRegistrySubscriber {
         String databaseName = event.getDatabaseName();
         String schemaName = event.getSchemaName();
         Map<String, ShardingSphereTable> tables = 
event.getAlteredTables().stream().collect(Collectors.toMap(ShardingSphereTable::getName,
 table -> table));
-        Map<String, ShardingSphereView> views = 
event.getAlteredViews().stream().collect(Collectors.toMap(ShardingSphereView::getName,
 table -> table));
+        Map<String, ShardingSphereView> views = 
event.getAlteredViews().stream().collect(Collectors.toMap(ShardingSphereView::getName,
 view -> view));
         persistService.persist(databaseName, schemaName, new 
ShardingSphereSchema(tables, views));
         event.getDroppedTables().forEach(each -> 
persistService.getTableMetaDataPersistService().delete(databaseName, 
schemaName, each));
         event.getDroppedViews().forEach(each -> 
persistService.getViewMetaDataPersistService().delete(databaseName, schemaName, 
each));
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java
index 8e00e8b8877..c92c65c22d3 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java
@@ -190,6 +190,7 @@ public final class MySQLDDLStatementSQLVisitor extends 
MySQLStatementSQLVisitor
     public ASTNode visitCreateView(final CreateViewContext ctx) {
         MySQLCreateViewStatement result = new MySQLCreateViewStatement();
         result.setView((SimpleTableSegment) visit(ctx.viewName()));
+        result.setViewSQL(getOriginalText(ctx));
         result.setSelect((MySQLSelectStatement) visit(ctx.select()));
         return result;
     }
@@ -198,6 +199,7 @@ public final class MySQLDDLStatementSQLVisitor extends 
MySQLStatementSQLVisitor
     public ASTNode visitAlterView(final AlterViewContext ctx) {
         MySQLAlterViewStatement result = new MySQLAlterViewStatement();
         result.setView((SimpleTableSegment) visit(ctx.viewName()));
+        result.setViewSQL(getOriginalText(ctx));
         result.setSelect((MySQLSelectStatement) visit(ctx.select()));
         return result;
     }
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDDLStatementSQLVisitor.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDDLStatementSQLVisitor.java
index 00e7fa04a97..6ea4fe773d8 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDDLStatementSQLVisitor.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDDLStatementSQLVisitor.java
@@ -624,6 +624,7 @@ public final class OpenGaussDDLStatementSQLVisitor extends 
OpenGaussStatementSQL
     public ASTNode visitCreateView(final CreateViewContext ctx) {
         OpenGaussCreateViewStatement result = new 
OpenGaussCreateViewStatement();
         result.setView((SimpleTableSegment) visit(ctx.qualifiedName()));
+        result.setViewSQL(getOriginalText(ctx));
         result.setSelect((SelectStatement) visit(ctx.select()));
         return result;
     }
@@ -631,6 +632,7 @@ public final class OpenGaussDDLStatementSQLVisitor extends 
OpenGaussStatementSQL
     @Override
     public ASTNode visitAlterView(final AlterViewContext ctx) {
         OpenGaussAlterViewStatement result = new OpenGaussAlterViewStatement();
+        result.setViewSQL(getOriginalText(ctx));
         result.setView((SimpleTableSegment) visit(ctx.qualifiedName()));
         if (ctx.alterViewClauses() instanceof AlterRenameViewContext) {
             NameContext nameContext = ((AlterRenameViewContext) 
ctx.alterViewClauses()).name();
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDDLStatementSQLVisitor.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDDLStatementSQLVisitor.java
index dfb27bca0e8..ecde555531d 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDDLStatementSQLVisitor.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDDLStatementSQLVisitor.java
@@ -774,6 +774,7 @@ public final class PostgreSQLDDLStatementSQLVisitor extends 
PostgreSQLStatementS
     public ASTNode visitCreateView(final CreateViewContext ctx) {
         PostgreSQLCreateViewStatement result = new 
PostgreSQLCreateViewStatement();
         result.setView((SimpleTableSegment) visit(ctx.qualifiedName()));
+        result.setViewSQL(getOriginalText(ctx));
         result.setSelect((SelectStatement) visit(ctx.select()));
         return result;
     }
@@ -782,6 +783,7 @@ public final class PostgreSQLDDLStatementSQLVisitor extends 
PostgreSQLStatementS
     public ASTNode visitAlterView(final AlterViewContext ctx) {
         PostgreSQLAlterViewStatement result = new 
PostgreSQLAlterViewStatement();
         result.setView((SimpleTableSegment) visit(ctx.qualifiedName()));
+        result.setViewSQL(getOriginalText(ctx));
         if (ctx.alterViewClauses() instanceof AlterRenameViewContext) {
             NameContext nameContext = ((AlterRenameViewContext) 
ctx.alterViewClauses()).name();
             result.setRenameView(new SimpleTableSegment(new 
TableNameSegment(nameContext.getStart().getStartIndex(),
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterViewStatement.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterViewStatement.java
index b8cf744077e..4d33c2373af 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterViewStatement.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterViewStatement.java
@@ -32,4 +32,6 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStat
 public abstract class AlterViewStatement extends AbstractSQLStatement 
implements DDLStatement {
     
     private SimpleTableSegment view;
+    
+    private String viewSQL;
 }
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/CreateViewStatement.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/CreateViewStatement.java
index a62bd8fe315..9996a62e5dc 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/CreateViewStatement.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/CreateViewStatement.java
@@ -36,6 +36,8 @@ public abstract class CreateViewStatement extends 
AbstractSQLStatement implement
     
     private SimpleTableSegment view;
     
+    private String viewSQL;
+    
     private SelectStatement select;
     
     /**

Reply via email to