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 1a1cb45a27d Refactor to reuse connection to loadIndexMetaData (#17289)
1a1cb45a27d is described below
commit 1a1cb45a27dd605c1fd68802f3a7a18c937bb53c
Author: cheese8 <[email protected]>
AuthorDate: Wed May 4 13:51:48 2022 +0800
Refactor to reuse connection to loadIndexMetaData (#17289)
* Reuse connection to loadIndexMetaData
* optimized to avoid NPE
---
.../metadata/schema/loader/dialect/OracleSchemaMetaDataLoader.java | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/loader/dialect/OracleSchemaMetaDataLoader.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/loader/dialect/OracleSchemaMetaDataLoader.java
index 13a81a7f49c..c053bab4e9a 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/loader/dialect/OracleSchemaMetaDataLoader.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/loader/dialect/OracleSchemaMetaDataLoader.java
@@ -74,14 +74,15 @@ public final class OracleSchemaMetaDataLoader implements
DialectSchemaMetaDataLo
@Override
public Collection<SchemaMetaData> load(final DataSource dataSource, final
Collection<String> tables, final String defaultSchemaName) throws SQLException {
Map<String, TableMetaData> tableMetaDataMap = new LinkedHashMap<>();
+ Map<String, Collection<IndexMetaData>> indexMetaDataMap = new
LinkedHashMap<>();
Map<String, Collection<ColumnMetaData>> columnMetaDataMap = new
HashMap<>(tables.size(), 1.0f);
List<List<String>> splitTables = Lists.partition(new
ArrayList(tables), BATCH_SIZE);
try (Connection connection = dataSource.getConnection()) {
for (List<String> each : splitTables) {
columnMetaDataMap.putAll(loadColumnMetaDataMap(connection,
each));
}
+ indexMetaDataMap.putAll(columnMetaDataMap.isEmpty() ?
Collections.emptyMap() : loadIndexMetaData(connection,
columnMetaDataMap.keySet()));
}
- Map<String, Collection<IndexMetaData>> indexMetaDataMap =
columnMetaDataMap.isEmpty() ? Collections.emptyMap() :
loadIndexMetaData(dataSource, columnMetaDataMap.keySet());
for (Entry<String, Collection<ColumnMetaData>> entry :
columnMetaDataMap.entrySet()) {
tableMetaDataMap.put(entry.getKey(), new
TableMetaData(entry.getKey(), entry.getValue(),
indexMetaDataMap.getOrDefault(entry.getKey(), Collections.emptyList()),
Collections.emptyList()));
}
@@ -153,9 +154,9 @@ public final class OracleSchemaMetaDataLoader implements
DialectSchemaMetaDataLo
return metaData.getDatabaseMajorVersion() >=
COLLATION_START_MAJOR_VERSION && metaData.getDatabaseMinorVersion() >=
IDENTITY_COLUMN_START_MINOR_VERSION;
}
- private Map<String, Collection<IndexMetaData>> loadIndexMetaData(final
DataSource dataSource, final Collection<String> tableNames) throws SQLException
{
+ private Map<String, Collection<IndexMetaData>> loadIndexMetaData(final
Connection connection, final Collection<String> tableNames) throws SQLException
{
Map<String, Collection<IndexMetaData>> result = new HashMap<>();
- try (Connection connection = dataSource.getConnection();
PreparedStatement preparedStatement =
connection.prepareStatement(getIndexMetaDataSQL(tableNames))) {
+ try (PreparedStatement preparedStatement =
connection.prepareStatement(getIndexMetaDataSQL(tableNames))) {
preparedStatement.setString(1, connection.getSchema());
try (ResultSet resultSet = preparedStatement.executeQuery()) {
while (resultSet.next()) {