You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/09/17 01:01:10 UTC
[shardingsphere] branch master updated: Remove load db views and refactor create/alter view refresher (#21022)
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 <zh...@apache.org>
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;
/**