未验证 提交 46177709 编写于 作者: L Liang Zhang 提交者: GitHub

Use ShardingSphereDatabaseMetaData to process DatabaseMetaData (#5362)

* for checkstyle

* for javadoc

* move getRuntimeContext to AbstractConnectionAdapter

* remove MasterSlaveDatabaseMetaData

* remove ShardingDatabaseMetaData

* rename MultipleDatabaseMetaData to ShardingSphereDatabaseMetaData
上级 99b11833
......@@ -27,7 +27,7 @@ import java.util.LinkedHashSet;
import java.util.Properties;
public final class StandardModuloAlgorithm implements StandardShardingAlgorithm<Integer> {
@Override
public String doSharding(final Collection<String> availableTargetNames, final PreciseShardingValue<Integer> shardingValue) {
for (String each : availableTargetNames) {
......
......@@ -23,6 +23,7 @@ import com.google.common.collect.Multimap;
import lombok.Getter;
import org.apache.shardingsphere.masterslave.route.engine.impl.MasterVisitedManager;
import org.apache.shardingsphere.shardingjdbc.jdbc.adapter.executor.ForceExecuteTemplate;
import org.apache.shardingsphere.shardingjdbc.jdbc.core.context.RuntimeContext;
import org.apache.shardingsphere.shardingjdbc.jdbc.unsupported.AbstractUnsupportedOperationConnection;
import org.apache.shardingsphere.transaction.core.TransactionTypeHolder;
import org.apache.shardingsphere.underlying.common.hook.RootInvokeHook;
......@@ -50,6 +51,12 @@ import java.util.Map.Entry;
*/
public abstract class AbstractConnectionAdapter extends AbstractUnsupportedOperationConnection implements JDBCExecutionConnection {
@Getter
private final Map<String, DataSource> dataSourceMap;
@Getter
private final RuntimeContext runtimeContext;
@Getter
private final Multimap<String, Connection> cachedConnections = LinkedHashMultimap.create();
......@@ -68,7 +75,9 @@ public abstract class AbstractConnectionAdapter extends AbstractUnsupportedOpera
private int transactionIsolation = TRANSACTION_READ_UNCOMMITTED;
protected AbstractConnectionAdapter() {
protected AbstractConnectionAdapter(final Map<String, DataSource> dataSourceMap, final RuntimeContext runtimeContext) {
this.dataSourceMap = dataSourceMap;
this.runtimeContext = runtimeContext;
rootInvokeHook.start();
}
......@@ -145,8 +154,6 @@ public abstract class AbstractConnectionAdapter extends AbstractUnsupportedOpera
protected abstract Connection createConnection(String dataSourceName, DataSource dataSource) throws SQLException;
protected abstract Map<String, DataSource> getDataSourceMap();
@SuppressWarnings("MagicConstant")
@Override
public final Statement createStorageResource(final Connection connection, final ConnectionMode connectionMode, final StatementOption option) throws SQLException {
......
......@@ -18,10 +18,9 @@
package org.apache.shardingsphere.shardingjdbc.jdbc.core.connection;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.shardingjdbc.jdbc.adapter.AbstractConnectionAdapter;
import org.apache.shardingsphere.shardingjdbc.jdbc.core.context.RuntimeContext;
import org.apache.shardingsphere.shardingjdbc.jdbc.core.datasource.metadata.MasterSlaveDatabaseMetaData;
import org.apache.shardingsphere.shardingjdbc.jdbc.core.datasource.metadata.ShardingSphereDatabaseMetaData;
import org.apache.shardingsphere.shardingjdbc.jdbc.core.statement.MasterSlavePreparedStatement;
import org.apache.shardingsphere.shardingjdbc.jdbc.core.statement.MasterSlaveStatement;
......@@ -36,13 +35,12 @@ import java.util.Map;
/**
* Connection that support master-slave.
*/
@RequiredArgsConstructor
@Getter
public final class MasterSlaveConnection extends AbstractConnectionAdapter {
private final Map<String, DataSource> dataSourceMap;
private final RuntimeContext runtimeContext;
public MasterSlaveConnection(final Map<String, DataSource> dataSourceMap, final RuntimeContext runtimeContext) {
super(dataSourceMap, runtimeContext);
}
@Override
protected Connection createConnection(final String dataSourceName, final DataSource dataSource) throws SQLException {
......@@ -51,7 +49,7 @@ public final class MasterSlaveConnection extends AbstractConnectionAdapter {
@Override
public DatabaseMetaData getMetaData() {
return new MasterSlaveDatabaseMetaData(this);
return new ShardingSphereDatabaseMetaData(this);
}
@Override
......
......@@ -20,7 +20,7 @@ package org.apache.shardingsphere.shardingjdbc.jdbc.core.connection;
import lombok.Getter;
import org.apache.shardingsphere.shardingjdbc.jdbc.adapter.AbstractConnectionAdapter;
import org.apache.shardingsphere.shardingjdbc.jdbc.core.context.RuntimeContext;
import org.apache.shardingsphere.shardingjdbc.jdbc.core.datasource.metadata.ShardingDatabaseMetaData;
import org.apache.shardingsphere.shardingjdbc.jdbc.core.datasource.metadata.ShardingSphereDatabaseMetaData;
import org.apache.shardingsphere.shardingjdbc.jdbc.core.statement.ShardingPreparedStatement;
import org.apache.shardingsphere.shardingjdbc.jdbc.core.statement.ShardingStatement;
import org.apache.shardingsphere.transaction.core.TransactionType;
......@@ -40,17 +40,12 @@ import java.util.Map;
@Getter
public final class ShardingConnection extends AbstractConnectionAdapter {
private final Map<String, DataSource> dataSourceMap;
private final RuntimeContext runtimeContext;
private final TransactionType transactionType;
private final ShardingTransactionManager shardingTransactionManager;
public ShardingConnection(final Map<String, DataSource> dataSourceMap, final RuntimeContext runtimeContext, final TransactionType transactionType) {
this.dataSourceMap = dataSourceMap;
this.runtimeContext = runtimeContext;
super(dataSourceMap, runtimeContext);
this.transactionType = transactionType;
shardingTransactionManager = runtimeContext.getShardingTransactionManagerEngine().getTransactionManager(transactionType);
}
......@@ -75,7 +70,7 @@ public final class ShardingConnection extends AbstractConnectionAdapter {
@Override
public DatabaseMetaData getMetaData() {
return new ShardingDatabaseMetaData(this);
return new ShardingSphereDatabaseMetaData(this);
}
@Override
......
......@@ -666,6 +666,7 @@ public abstract class AdaptedDatabaseMetaData extends WrapperAdapter implements
return cachedDatabaseMetaData.getResultSetHoldability();
}
@SuppressWarnings("MagicConstant")
@Override
public final int getSQLStateType() {
return cachedDatabaseMetaData.getSqlStateType();
......
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.shardingsphere.shardingjdbc.jdbc.core.datasource.metadata;
import org.apache.shardingsphere.shardingjdbc.jdbc.core.connection.MasterSlaveConnection;
import org.apache.shardingsphere.shardingjdbc.jdbc.core.resultset.DatabaseMetaDataResultSet;
import org.apache.shardingsphere.underlying.common.rule.BaseRule;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
/**
* Master slave database meta data.
*/
public final class MasterSlaveDatabaseMetaData extends MultipleDatabaseMetaData<MasterSlaveConnection> {
private final Collection<BaseRule> rules;
public MasterSlaveDatabaseMetaData(final MasterSlaveConnection connection) {
super(connection, connection.getDataSourceMap().keySet(), connection.getRuntimeContext().getCachedDatabaseMetaData(), connection.getRuntimeContext().getMetaData());
rules = connection.getRuntimeContext().getRules();
}
@Override
protected String getActualTableNamePattern(final String tableNamePattern) {
return tableNamePattern;
}
@Override
protected String getActualTable(final String table) {
return table;
}
@Override
protected ResultSet createDatabaseMetaDataResultSet(final ResultSet resultSet) throws SQLException {
return new DatabaseMetaDataResultSet(resultSet, rules);
}
}
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.shardingsphere.shardingjdbc.jdbc.core.datasource.metadata;
import org.apache.shardingsphere.shardingjdbc.jdbc.core.connection.ShardingConnection;
import org.apache.shardingsphere.shardingjdbc.jdbc.core.resultset.DatabaseMetaDataResultSet;
import org.apache.shardingsphere.underlying.common.rule.BaseRule;
import org.apache.shardingsphere.underlying.common.rule.TablesAggregationRule;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import java.util.Optional;
/**
* Sharding database meta data.
*/
public final class ShardingDatabaseMetaData extends MultipleDatabaseMetaData<ShardingConnection> {
private final Collection<BaseRule> rules;
public ShardingDatabaseMetaData(final ShardingConnection connection) {
super(connection, connection.getDataSourceMap().keySet(), connection.getRuntimeContext().getCachedDatabaseMetaData(), connection.getRuntimeContext().getMetaData());
rules = connection.getRuntimeContext().getRules();
}
@Override
public String getActualTableNamePattern(final String tableNamePattern) {
if (null == tableNamePattern) {
return null;
}
Optional<TablesAggregationRule> tablesAggregationRule = findTablesAggregationRule();
if (tablesAggregationRule.isPresent()) {
return tablesAggregationRule.get().findFirstActualTable(tableNamePattern).isPresent() ? "%" + tableNamePattern + "%" : tableNamePattern;
}
return tableNamePattern;
}
@Override
public String getActualTable(final String table) {
if (null == table) {
return null;
}
Optional<TablesAggregationRule> tablesAggregationRule = findTablesAggregationRule();
return tablesAggregationRule.isPresent() ? tablesAggregationRule.get().findFirstActualTable(table).orElse(table) : table;
}
private Optional<TablesAggregationRule> findTablesAggregationRule() {
return rules.stream().filter(each -> each instanceof TablesAggregationRule).findFirst().map(rule -> (TablesAggregationRule) rule);
}
@Override
protected ResultSet createDatabaseMetaDataResultSet(final ResultSet resultSet) throws SQLException {
return new DatabaseMetaDataResultSet(resultSet, rules);
}
}
......@@ -19,8 +19,11 @@ package org.apache.shardingsphere.shardingjdbc.jdbc.core.datasource.metadata;
import lombok.Getter;
import org.apache.shardingsphere.shardingjdbc.jdbc.adapter.AbstractConnectionAdapter;
import org.apache.shardingsphere.shardingjdbc.jdbc.core.resultset.DatabaseMetaDataResultSet;
import org.apache.shardingsphere.underlying.common.database.DefaultSchema;
import org.apache.shardingsphere.underlying.common.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.underlying.common.rule.BaseRule;
import org.apache.shardingsphere.underlying.common.rule.TablesAggregationRule;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
......@@ -32,12 +35,14 @@ import java.util.Optional;
import java.util.Random;
/**
* Multiple database meta data.
* ShardingSphere database meta data.
*/
@Getter
public abstract class MultipleDatabaseMetaData<C extends AbstractConnectionAdapter> extends AdaptedDatabaseMetaData {
public final class ShardingSphereDatabaseMetaData extends AdaptedDatabaseMetaData {
private final C connection;
private final AbstractConnectionAdapter connection;
private final Collection<BaseRule> rules;
private final Collection<String> datasourceNames;
......@@ -47,159 +52,180 @@ public abstract class MultipleDatabaseMetaData<C extends AbstractConnectionAdapt
private DatabaseMetaData currentDatabaseMetaData;
public MultipleDatabaseMetaData(final C connection, final Collection<String> datasourceNames,
final CachedDatabaseMetaData cachedDatabaseMetaData, final ShardingSphereMetaData shardingSphereMetaData) {
super(cachedDatabaseMetaData);
public ShardingSphereDatabaseMetaData(final AbstractConnectionAdapter connection) {
super(connection.getRuntimeContext().getCachedDatabaseMetaData());
this.connection = connection;
this.datasourceNames = datasourceNames;
this.shardingSphereMetaData = shardingSphereMetaData;
rules = connection.getRuntimeContext().getRules();
datasourceNames = connection.getDataSourceMap().keySet();
shardingSphereMetaData = connection.getRuntimeContext().getMetaData();
}
@Override
public final Connection getConnection() throws SQLException {
public Connection getConnection() throws SQLException {
return connection.getConnection(getDataSourceName());
}
@Override
public final ResultSet getSuperTypes(final String catalog, final String schemaPattern, final String typeNamePattern) throws SQLException {
public ResultSet getSuperTypes(final String catalog, final String schemaPattern, final String typeNamePattern) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getSuperTypes(getActualCatalog(catalog), getActualSchema(schemaPattern), typeNamePattern));
}
@Override
public final ResultSet getSuperTables(final String catalog, final String schemaPattern, final String tableNamePattern) throws SQLException {
public ResultSet getSuperTables(final String catalog, final String schemaPattern, final String tableNamePattern) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getSuperTables(getActualCatalog(catalog), getActualSchema(schemaPattern), getActualTableNamePattern(tableNamePattern)));
}
@Override
public final ResultSet getAttributes(final String catalog, final String schemaPattern, final String typeNamePattern, final String attributeNamePattern) throws SQLException {
public ResultSet getAttributes(final String catalog, final String schemaPattern, final String typeNamePattern, final String attributeNamePattern) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getAttributes(getActualCatalog(catalog), getActualSchema(schemaPattern), typeNamePattern, attributeNamePattern));
}
@Override
public final ResultSet getProcedures(final String catalog, final String schemaPattern, final String procedureNamePattern) throws SQLException {
public ResultSet getProcedures(final String catalog, final String schemaPattern, final String procedureNamePattern) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getProcedures(getActualCatalog(catalog), getActualSchema(schemaPattern), procedureNamePattern));
}
@Override
public final ResultSet getProcedureColumns(final String catalog, final String schemaPattern, final String procedureNamePattern, final String columnNamePattern) throws SQLException {
public ResultSet getProcedureColumns(final String catalog, final String schemaPattern, final String procedureNamePattern, final String columnNamePattern) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getProcedureColumns(getActualCatalog(catalog), getActualSchema(schemaPattern), procedureNamePattern, columnNamePattern));
}
@Override
public final ResultSet getTables(final String catalog, final String schemaPattern, final String tableNamePattern, final String[] types) throws SQLException {
public ResultSet getTables(final String catalog, final String schemaPattern, final String tableNamePattern, final String[] types) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getTables(getActualCatalog(catalog), getActualSchema(schemaPattern), getActualTableNamePattern(tableNamePattern), types));
}
@Override
public final ResultSet getSchemas() throws SQLException {
public ResultSet getSchemas() throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getSchemas());
}
@Override
public final ResultSet getSchemas(final String catalog, final String schemaPattern) throws SQLException {
public ResultSet getSchemas(final String catalog, final String schemaPattern) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getSchemas(getActualCatalog(catalog), getActualSchema(schemaPattern)));
}
@Override
public final ResultSet getCatalogs() throws SQLException {
public ResultSet getCatalogs() throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getCatalogs());
}
@Override
public final ResultSet getTableTypes() throws SQLException {
public ResultSet getTableTypes() throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getTableTypes());
}
@Override
public final ResultSet getColumns(final String catalog, final String schemaPattern, final String tableNamePattern, final String columnNamePattern) throws SQLException {
public ResultSet getColumns(final String catalog, final String schemaPattern, final String tableNamePattern, final String columnNamePattern) throws SQLException {
return createDatabaseMetaDataResultSet(
getDatabaseMetaData().getColumns(getActualCatalog(catalog), getActualSchema(schemaPattern), getActualTableNamePattern(tableNamePattern), columnNamePattern));
}
@Override
public final ResultSet getColumnPrivileges(final String catalog, final String schema, final String table, final String columnNamePattern) throws SQLException {
public ResultSet getColumnPrivileges(final String catalog, final String schema, final String table, final String columnNamePattern) throws SQLException {
return createDatabaseMetaDataResultSet(
getDatabaseMetaData().getColumnPrivileges(getActualCatalog(catalog), getActualSchema(schema), getActualTable(table), columnNamePattern));
}
@Override
public final ResultSet getTablePrivileges(final String catalog, final String schemaPattern, final String tableNamePattern) throws SQLException {
public ResultSet getTablePrivileges(final String catalog, final String schemaPattern, final String tableNamePattern) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getTablePrivileges(getActualCatalog(catalog), getActualSchema(schemaPattern), getActualTableNamePattern(tableNamePattern)));
}
@Override
public final ResultSet getBestRowIdentifier(final String catalog, final String schema, final String table, final int scope, final boolean nullable) throws SQLException {
public ResultSet getBestRowIdentifier(final String catalog, final String schema, final String table, final int scope, final boolean nullable) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getBestRowIdentifier(getActualCatalog(catalog), getActualSchema(schema), getActualTable(table), scope, nullable));
}
@Override
public final ResultSet getVersionColumns(final String catalog, final String schema, final String table) throws SQLException {
public ResultSet getVersionColumns(final String catalog, final String schema, final String table) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getVersionColumns(getActualCatalog(catalog), getActualSchema(schema), getActualTable(table)));
}
@Override
public final ResultSet getPrimaryKeys(final String catalog, final String schema, final String table) throws SQLException {
public ResultSet getPrimaryKeys(final String catalog, final String schema, final String table) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getPrimaryKeys(getActualCatalog(catalog), getActualSchema(schema), getActualTable(table)));
}
@Override
public final ResultSet getImportedKeys(final String catalog, final String schema, final String table) throws SQLException {
public ResultSet getImportedKeys(final String catalog, final String schema, final String table) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getImportedKeys(getActualCatalog(catalog), getActualSchema(schema), getActualTable(table)));
}
@Override
public final ResultSet getExportedKeys(final String catalog, final String schema, final String table) throws SQLException {
public ResultSet getExportedKeys(final String catalog, final String schema, final String table) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getExportedKeys(getActualCatalog(catalog), getActualSchema(schema), getActualTable(table)));
}
@Override
public final ResultSet getCrossReference(final String parentCatalog,
public ResultSet getCrossReference(final String parentCatalog,
final String parentSchema, final String parentTable, final String foreignCatalog, final String foreignSchema, final String foreignTable) throws SQLException {
return createDatabaseMetaDataResultSet(
getDatabaseMetaData().getCrossReference(getActualCatalog(parentCatalog), getActualSchema(parentSchema), parentTable, foreignCatalog, foreignSchema, foreignTable));
}
@Override
public final ResultSet getTypeInfo() throws SQLException {
public ResultSet getTypeInfo() throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getTypeInfo());
}
@Override
public final ResultSet getIndexInfo(final String catalog, final String schema, final String table, final boolean unique, final boolean approximate) throws SQLException {
public ResultSet getIndexInfo(final String catalog, final String schema, final String table, final boolean unique, final boolean approximate) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getIndexInfo(getActualCatalog(catalog), getActualSchema(schema), getActualTable(table), unique, approximate));
}
@Override
public final ResultSet getUDTs(final String catalog, final String schemaPattern, final String typeNamePattern, final int[] types) throws SQLException {
public ResultSet getUDTs(final String catalog, final String schemaPattern, final String typeNamePattern, final int[] types) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getUDTs(getActualCatalog(catalog), getActualSchema(schemaPattern), typeNamePattern, types));
}
@Override
public final ResultSet getClientInfoProperties() throws SQLException {
public ResultSet getClientInfoProperties() throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getClientInfoProperties());
}
@Override
public final ResultSet getFunctions(final String catalog, final String schemaPattern, final String functionNamePattern) throws SQLException {
public ResultSet getFunctions(final String catalog, final String schemaPattern, final String functionNamePattern) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getFunctions(getActualCatalog(catalog), getActualSchema(schemaPattern), functionNamePattern));
}
@Override
public final ResultSet getFunctionColumns(final String catalog, final String schemaPattern, final String functionNamePattern, final String columnNamePattern) throws SQLException {
public ResultSet getFunctionColumns(final String catalog, final String schemaPattern, final String functionNamePattern, final String columnNamePattern) throws SQLException {
return createDatabaseMetaDataResultSet(getDatabaseMetaData().getFunctionColumns(getActualCatalog(catalog), getActualSchema(schemaPattern), functionNamePattern, columnNamePattern));
}
@Override
public final ResultSet getPseudoColumns(final String catalog, final String schemaPattern, final String tableNamePattern, final String columnNamePattern) throws SQLException {
public ResultSet getPseudoColumns(final String catalog, final String schemaPattern, final String tableNamePattern, final String columnNamePattern) throws SQLException {
return createDatabaseMetaDataResultSet(
getDatabaseMetaData().getPseudoColumns(getActualCatalog(catalog), getActualSchema(schemaPattern), getActualTableNamePattern(tableNamePattern), columnNamePattern));
}
protected abstract String getActualTableNamePattern(String tableNamePattern);
private String getActualTableNamePattern(final String tableNamePattern) {
if (null == tableNamePattern) {
return null;
}
Optional<TablesAggregationRule> tablesAggregationRule = findTablesAggregationRule();
if (tablesAggregationRule.isPresent()) {
return tablesAggregationRule.get().findFirstActualTable(tableNamePattern).isPresent() ? "%" + tableNamePattern + "%" : tableNamePattern;
}
return tableNamePattern;
}
private String getActualTable(final String table) {
if (null == table) {
return null;
}
Optional<TablesAggregationRule> tablesAggregationRule = findTablesAggregationRule();
return tablesAggregationRule.isPresent() ? tablesAggregationRule.get().findFirstActualTable(table).orElse(table) : table;
}
protected abstract String getActualTable(String table);
private Optional<TablesAggregationRule> findTablesAggregationRule() {
return rules.stream().filter(each -> each instanceof TablesAggregationRule).findFirst().map(rule -> (TablesAggregationRule) rule);
}
protected abstract ResultSet createDatabaseMetaDataResultSet(ResultSet resultSet) throws SQLException;
private ResultSet createDatabaseMetaDataResultSet(final ResultSet resultSet) throws SQLException {
return new DatabaseMetaDataResultSet(resultSet, rules);
}
private String getActualCatalog(final String catalog) {
return null != catalog && catalog.contains(DefaultSchema.LOGIC_NAME) ? shardingSphereMetaData.getDataSources().getDataSourceMetaData(getDataSourceName()).getCatalog() : catalog;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册