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;
/**