Skip to content

Commit

Permalink
Merge pull request #38 from sharding-sphere/dev
Browse files Browse the repository at this point in the history
update from origin
  • Loading branch information
beckhampu authored Oct 10, 2018
2 parents d86a31d + 9a986c8 commit cc1e2ad
Show file tree
Hide file tree
Showing 52 changed files with 456 additions and 328 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ public ShardingConditions optimize() {
}
String expression;
Number currentGeneratedKey = generatedKeys.next();
if (0 == parameters.size()) {
if (parameters.isEmpty()) {
if (DefaultKeyword.VALUES.equals(insertValue.getType())) {
expression = insertValue.getExpression().substring(0, insertValue.getExpression().lastIndexOf(")")) + ", " + currentGeneratedKey.toString() + ")";
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,6 @@ private void setSQLType(final SQLType sqlType) {
field.set(actual, sqlType);
}


private void setExecuteGroups(final List<PreparedStatement> preparedStatements) {
Collection<ShardingExecuteGroup<StatementExecuteUnit>> executeGroups = new LinkedList<>();
List<StatementExecuteUnit> preparedStatementExecuteUnits = new LinkedList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public void assertNoStatement() throws SQLException {
}

@Test
public void assertExecuteQueryForSinglePreparedStatementSuccess() throws SQLException{
public void assertExecuteQueryForSinglePreparedStatementSuccess() throws SQLException {
PreparedStatement preparedStatement = getPreparedStatement();
ResultSet resultSet = mock(ResultSet.class);
when(resultSet.getInt(1)).thenReturn(1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@
import io.shardingsphere.core.yaml.other.YamlServerConfiguration;
import io.shardingsphere.opentracing.ShardingTracer;
import io.shardingsphere.orchestration.internal.OrchestrationFacade;
import io.shardingsphere.shardingproxy.config.ProxyContext;
import io.shardingsphere.shardingproxy.config.yaml.ProxyConfiguration;
import io.shardingsphere.shardingproxy.config.yaml.ProxyYamlConfigurationLoader;
import io.shardingsphere.shardingproxy.config.ShardingConfiguration;
import io.shardingsphere.shardingproxy.config.ShardingConfigurationLoader;
import io.shardingsphere.shardingproxy.config.yaml.ProxyYamlRuleConfiguration;
import io.shardingsphere.shardingproxy.config.yaml.ProxyYamlServerConfiguration;
import io.shardingsphere.shardingproxy.frontend.ShardingProxy;
import io.shardingsphere.shardingproxy.listener.ProxyListenerRegister;
import io.shardingsphere.shardingproxy.runtime.GlobalRegistry;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;

Expand Down Expand Up @@ -57,13 +57,13 @@ public final class Bootstrap {
* @throws IOException IO exception
*/
public static void main(final String[] args) throws InterruptedException, IOException {
ProxyConfiguration proxyConfig = new ProxyYamlConfigurationLoader().load();
ShardingConfiguration shardingConfig = new ShardingConfigurationLoader().load();
int port = getPort(args);
new ProxyListenerRegister().register();
if (null == proxyConfig.getServerConfiguration().getOrchestration()) {
startWithoutRegistryCenter(proxyConfig.getServerConfiguration(), proxyConfig.getRuleConfigurationMap(), port);
if (null == shardingConfig.getServerConfiguration().getOrchestration()) {
startWithoutRegistryCenter(shardingConfig.getServerConfiguration(), shardingConfig.getRuleConfigurationMap(), port);
} else {
startWithRegistryCenter(proxyConfig.getServerConfiguration(), proxyConfig.getRuleConfigurationMap(), port);
startWithRegistryCenter(shardingConfig.getServerConfiguration(), shardingConfig.getRuleConfigurationMap(), port);
}
}

Expand All @@ -80,7 +80,7 @@ private static int getPort(final String[] args) {

private static void startWithoutRegistryCenter(
final ProxyYamlServerConfiguration serverConfig, final Map<String, ProxyYamlRuleConfiguration> ruleConfigs, final int port) throws InterruptedException {
ProxyContext.getInstance().init(getYamlServerConfiguration(serverConfig), getSchemaDataSourceMap(ruleConfigs), getRuleConfiguration(ruleConfigs));
GlobalRegistry.getInstance().init(getYamlServerConfiguration(serverConfig), getSchemaDataSourceMap(ruleConfigs), getRuleConfiguration(ruleConfigs));
initOpenTracing();
new ShardingProxy().start(port);
}
Expand All @@ -91,15 +91,15 @@ private static void startWithRegistryCenter(
if (!ruleConfigs.isEmpty()) {
orchestrationFacade.init(getYamlServerConfiguration(serverConfig), getSchemaDataSourceMap(ruleConfigs), getRuleConfiguration(ruleConfigs));
}
ProxyContext.getInstance().init(orchestrationFacade.getConfigService().loadYamlServerConfiguration(),
GlobalRegistry.getInstance().init(orchestrationFacade.getConfigService().loadYamlServerConfiguration(),
orchestrationFacade.getConfigService().loadProxyDataSources(), orchestrationFacade.getConfigService().loadProxyConfiguration());
initOpenTracing();
new ShardingProxy().start(port);
}
}

private static void initOpenTracing() {
if (ProxyContext.getInstance().isOpenTracingEnable()) {
if (GlobalRegistry.getInstance().isOpenTracingEnable()) {
ShardingTracer.init();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
package io.shardingsphere.shardingproxy.backend;

import io.shardingsphere.core.executor.ShardingExecuteEngine;
import io.shardingsphere.shardingproxy.config.ProxyContext;
import io.shardingsphere.shardingproxy.runtime.GlobalRegistry;
import lombok.Getter;

/**
Expand All @@ -31,7 +31,7 @@ public final class BackendExecutorContext {
private static final BackendExecutorContext INSTANCE = new BackendExecutorContext();

@Getter
private final ShardingExecuteEngine executeEngine = new ShardingExecuteEngine(ProxyContext.getInstance().getExecutorSize());
private final ShardingExecuteEngine executeEngine = new ShardingExecuteEngine(GlobalRegistry.getInstance().getExecutorSize());

/**
* Get backend executor context instance.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@
import io.shardingsphere.shardingproxy.backend.jdbc.wrapper.PreparedStatementExecutorWrapper;
import io.shardingsphere.shardingproxy.backend.jdbc.wrapper.StatementExecutorWrapper;
import io.shardingsphere.shardingproxy.backend.netty.NettyBackendHandler;
import io.shardingsphere.shardingproxy.config.ProxyContext;
import io.shardingsphere.shardingproxy.config.RuleRegistry;
import io.shardingsphere.shardingproxy.frontend.common.FrontendHandler;
import io.shardingsphere.shardingproxy.runtime.GlobalRegistry;
import io.shardingsphere.shardingproxy.runtime.ShardingSchema;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;

Expand All @@ -56,7 +56,7 @@
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class BackendHandlerFactory {

private static final ProxyContext PROXY_CONTEXT = ProxyContext.getInstance();
private static final GlobalRegistry GLOBAL_REGISTRY = GlobalRegistry.getInstance();

/**
* Create new instance of text protocol backend handler.
Expand All @@ -71,11 +71,11 @@ public final class BackendHandlerFactory {
*/
public static BackendHandler newTextProtocolInstance(
final int connectionId, final int sequenceId, final String sql, final BackendConnection backendConnection, final DatabaseType databaseType, final String schema) {
RuleRegistry ruleRegistry = PROXY_CONTEXT.getRuleRegistry(schema);
backendConnection.setRuleRegistry(ruleRegistry);
return PROXY_CONTEXT.isUseNIO()
? new NettyBackendHandler(ruleRegistry, connectionId, sequenceId, sql, databaseType)
: new JDBCBackendHandler(ruleRegistry, sql, new JDBCExecuteEngine(backendConnection, new StatementExecutorWrapper(ruleRegistry)));
ShardingSchema shardingSchema = GLOBAL_REGISTRY.getShardingSchema(schema);
backendConnection.setShardingSchema(shardingSchema);
return GLOBAL_REGISTRY.isUseNIO()
? new NettyBackendHandler(shardingSchema, connectionId, sequenceId, sql, databaseType)
: new JDBCBackendHandler(shardingSchema, sql, new JDBCExecuteEngine(backendConnection, new StatementExecutorWrapper(shardingSchema)));
}

/**
Expand All @@ -92,10 +92,10 @@ public static BackendHandler newTextProtocolInstance(
*/
public static BackendHandler newBinaryProtocolInstance(final int connectionId, final int sequenceId, final String sql, final List<Object> parameters,
final BackendConnection backendConnection, final DatabaseType databaseType, final String schema) {
RuleRegistry ruleRegistry = PROXY_CONTEXT.getRuleRegistry(schema);
backendConnection.setRuleRegistry(ruleRegistry);
return PROXY_CONTEXT.isUseNIO() ? new NettyBackendHandler(ruleRegistry, connectionId, sequenceId, sql, databaseType)
: new JDBCBackendHandler(ruleRegistry, sql, new JDBCExecuteEngine(backendConnection, new PreparedStatementExecutorWrapper(ruleRegistry, parameters)));
ShardingSchema shardingSchema = GLOBAL_REGISTRY.getShardingSchema(schema);
backendConnection.setShardingSchema(shardingSchema);
return GLOBAL_REGISTRY.isUseNIO() ? new NettyBackendHandler(shardingSchema, connectionId, sequenceId, sql, databaseType)
: new JDBCBackendHandler(shardingSchema, sql, new JDBCExecuteEngine(backendConnection, new PreparedStatementExecutorWrapper(shardingSchema, parameters)));
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

import io.shardingsphere.core.constant.DatabaseType;
import io.shardingsphere.shardingproxy.backend.jdbc.connection.BackendConnection;
import io.shardingsphere.shardingproxy.config.ProxyContext;
import io.shardingsphere.shardingproxy.runtime.GlobalRegistry;
import io.shardingsphere.shardingproxy.transport.common.packet.DatabasePacket;
import io.shardingsphere.shardingproxy.transport.mysql.packet.command.CommandResponsePackets;
import io.shardingsphere.shardingproxy.transport.mysql.packet.generic.ErrPacket;
Expand Down Expand Up @@ -50,7 +50,7 @@ public final class SchemaBroadcastBackendHandler implements BackendHandler {
@Override
public CommandResponsePackets execute() {
List<DatabasePacket> packets = new LinkedList<>();
for (String schema : ProxyContext.getInstance().getSchemaNames()) {
for (String schema : GlobalRegistry.getInstance().getSchemaNames()) {
try (BackendConnection backendConnection = new BackendConnection()) {
BackendHandler backendHandler = BackendHandlerFactory.newTextProtocolInstance(connectionId, sequenceId, sql, backendConnection, databaseType, schema);
CommandResponsePackets commandResponsePackets = backendHandler.execute();
Expand All @@ -63,12 +63,12 @@ public CommandResponsePackets execute() {
}

@Override
public boolean next() throws SQLException {
public boolean next() {
return false;
}

@Override
public ResultPacket getResultValue() throws SQLException {
public ResultPacket getResultValue() {
return null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
import io.shardingsphere.core.parsing.parser.dialect.mysql.statement.ShowDatabasesStatement;
import io.shardingsphere.core.parsing.parser.dialect.mysql.statement.UseStatement;
import io.shardingsphere.core.parsing.parser.sql.SQLStatement;
import io.shardingsphere.shardingproxy.config.ProxyContext;
import io.shardingsphere.shardingproxy.frontend.common.FrontendHandler;
import io.shardingsphere.shardingproxy.runtime.GlobalRegistry;
import io.shardingsphere.shardingproxy.transport.mysql.constant.ColumnType;
import io.shardingsphere.shardingproxy.transport.mysql.constant.ServerErrorCode;
import io.shardingsphere.shardingproxy.transport.mysql.packet.command.CommandResponsePackets;
Expand All @@ -49,7 +49,7 @@
@RequiredArgsConstructor
public final class SchemaIgnoreBackendHandler implements BackendHandler {

private static final ProxyContext PROXY_CONTEXT = ProxyContext.getInstance();
private static final GlobalRegistry GLOBAL_REGISTRY = GlobalRegistry.getInstance();

private final SQLStatement sqlStatement;

Expand Down Expand Up @@ -91,15 +91,15 @@ public ResultPacket getResultValue() throws SQLException {

private CommandResponsePackets handleUseStatement(final UseStatement useStatement, final FrontendHandler frontendHandler) {
String schema = useStatement.getSchema();
if (!PROXY_CONTEXT.schemaExists(schema)) {
if (!GLOBAL_REGISTRY.schemaExists(schema)) {
return new CommandResponsePackets(new ErrPacket(1, ServerErrorCode.ER_BAD_DB_ERROR, schema));
}
frontendHandler.setCurrentSchema(schema);
return new CommandResponsePackets(new OKPacket(1));
}

private CommandResponsePackets handleShowDatabasesStatement() {
mergedResult = new ShowDatabasesMergedResult(PROXY_CONTEXT.getSchemaNames());
mergedResult = new ShowDatabasesMergedResult(GLOBAL_REGISTRY.getSchemaNames());
int sequenceId = 0;
FieldCountPacket fieldCountPacket = new FieldCountPacket(++sequenceId, 1);
Collection<ColumnDefinition41Packet> columnDefinition41Packets = new ArrayList<>(1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

import io.shardingsphere.core.constant.DatabaseType;
import io.shardingsphere.shardingproxy.backend.jdbc.connection.BackendConnection;
import io.shardingsphere.shardingproxy.config.ProxyContext;
import io.shardingsphere.shardingproxy.runtime.GlobalRegistry;
import io.shardingsphere.shardingproxy.transport.mysql.packet.command.CommandResponsePackets;

import java.sql.SQLException;
Expand All @@ -34,7 +34,7 @@ public final class SchemaUnicastBackendHandler implements BackendHandler {
private final BackendHandler backendHandler;

public SchemaUnicastBackendHandler(final int connectionId, final int sequenceId, final String sql, final BackendConnection backendConnection, final DatabaseType databaseType) {
String schema = ProxyContext.getInstance().getSchemaNames().iterator().next();
String schema = GlobalRegistry.getInstance().getSchemaNames().iterator().next();
backendHandler = BackendHandlerFactory.newTextProtocolInstance(connectionId, sequenceId, sql, backendConnection, databaseType, schema);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@
import io.shardingsphere.shardingproxy.backend.jdbc.execute.response.ExecuteQueryResponse;
import io.shardingsphere.shardingproxy.backend.jdbc.execute.response.ExecuteResponse;
import io.shardingsphere.shardingproxy.backend.jdbc.execute.response.ExecuteUpdateResponse;
import io.shardingsphere.shardingproxy.config.ProxyContext;
import io.shardingsphere.shardingproxy.config.ProxyTableMetaDataConnectionManager;
import io.shardingsphere.shardingproxy.config.RuleRegistry;
import io.shardingsphere.shardingproxy.runtime.GlobalRegistry;
import io.shardingsphere.shardingproxy.runtime.ShardingSchema;
import io.shardingsphere.shardingproxy.runtime.metadata.ProxyTableMetaDataConnectionManager;
import io.shardingsphere.shardingproxy.transport.mysql.constant.ServerErrorCode;
import io.shardingsphere.shardingproxy.transport.mysql.packet.command.CommandResponsePackets;
import io.shardingsphere.shardingproxy.transport.mysql.packet.command.query.ColumnDefinition41Packet;
Expand All @@ -63,9 +63,9 @@
@RequiredArgsConstructor
public final class JDBCBackendHandler extends AbstractBackendHandler {

private static final ProxyContext PROXY_CONTEXT = ProxyContext.getInstance();
private static final GlobalRegistry GLOBAL_REGISTRY = GlobalRegistry.getInstance();

private final RuleRegistry ruleRegistry;
private final ShardingSchema shardingSchema;

private final String sql;

Expand All @@ -79,7 +79,7 @@ public final class JDBCBackendHandler extends AbstractBackendHandler {

@Override
protected CommandResponsePackets execute0() throws SQLException {
return ruleRegistry == null
return shardingSchema == null
? new CommandResponsePackets(new ErrPacket(1, ServerErrorCode.ER_NO_DB_ERROR))
: execute(executeEngine.getJdbcExecutorWrapper().route(sql, DatabaseType.MySQL));
}
Expand All @@ -94,18 +94,18 @@ private CommandResponsePackets execute(final SQLRouteResult routeResult) throws
ServerErrorCode.ER_ERROR_ON_MODIFYING_GTID_EXECUTED_TABLE, sqlStatement.getTables().isSingleTable() ? sqlStatement.getTables().getSingleTableName() : "unknown_table"));
}
executeResponse = executeEngine.execute(routeResult);
if (!ruleRegistry.isMasterSlaveOnly() && SQLType.DDL == sqlStatement.getType() && !sqlStatement.getTables().isEmpty()) {
if (!shardingSchema.isMasterSlaveOnly() && SQLType.DDL == sqlStatement.getType() && !sqlStatement.getTables().isEmpty()) {
String logicTableName = sqlStatement.getTables().getSingleTableName();
// TODO refresh table meta data by SQL parse result
TableMetaDataLoader tableMetaDataLoader = new TableMetaDataLoader(ruleRegistry.getMetaData().getDataSource(), BackendExecutorContext.getInstance().getExecuteEngine(),
new ProxyTableMetaDataConnectionManager(ruleRegistry.getBackendDataSource()), PROXY_CONTEXT.getMaxConnectionsSizePerQuery());
ruleRegistry.getMetaData().getTable().put(logicTableName, tableMetaDataLoader.load(logicTableName, ruleRegistry.getShardingRule()));
TableMetaDataLoader tableMetaDataLoader = new TableMetaDataLoader(shardingSchema.getMetaData().getDataSource(), BackendExecutorContext.getInstance().getExecuteEngine(),
new ProxyTableMetaDataConnectionManager(shardingSchema.getBackendDataSource()), GLOBAL_REGISTRY.getMaxConnectionsSizePerQuery());
shardingSchema.getMetaData().getTable().put(logicTableName, tableMetaDataLoader.load(logicTableName, shardingSchema.getShardingRule()));
}
return merge(sqlStatement);
}

private boolean isUnsupportedXA(final SQLType sqlType) throws SQLException {
return TransactionType.XA == ProxyContext.getInstance().getTransactionType() && SQLType.DDL == sqlType
return TransactionType.XA == GlobalRegistry.getInstance().getTransactionType() && SQLType.DDL == sqlType
&& Status.STATUS_NO_TRANSACTION != ShardingTransactionManagerRegistry.getInstance().getShardingTransactionManager(TransactionType.XA).getStatus();
}

Expand All @@ -114,9 +114,9 @@ private CommandResponsePackets merge(final SQLStatement sqlStatement) throws SQL
return ((ExecuteUpdateResponse) executeResponse).merge();
}
mergedResult = MergeEngineFactory.newInstance(
ruleRegistry.getShardingRule(), ((ExecuteQueryResponse) executeResponse).getQueryResults(), sqlStatement, ruleRegistry.getMetaData().getTable()).merge();
shardingSchema.getShardingRule(), ((ExecuteQueryResponse) executeResponse).getQueryResults(), sqlStatement, shardingSchema.getMetaData().getTable()).merge();
if (mergedResult instanceof ShowTablesMergedResult) {
((ShowTablesMergedResult) mergedResult).resetColumnLabel(ruleRegistry.getSchemaName());
((ShowTablesMergedResult) mergedResult).resetColumnLabel(shardingSchema.getName());
setResponseColumnLabelForShowTablesMergedResult(((ExecuteQueryResponse) executeResponse).getQueryResponsePackets());
}
QueryResponsePackets result = getQueryResponsePacketsWithoutDerivedColumns(((ExecuteQueryResponse) executeResponse).getQueryResponsePackets());
Expand All @@ -139,7 +139,7 @@ private QueryResponsePackets getQueryResponsePacketsWithoutDerivedColumns(final

private void setResponseColumnLabelForShowTablesMergedResult(final QueryResponsePackets queryResponsePackets) {
for (ColumnDefinition41Packet each : queryResponsePackets.getColumnDefinition41Packets()) {
each.setName("Tables_in_" + ruleRegistry.getSchemaName());
each.setName("Tables_in_" + shardingSchema.getName());
}
}

Expand Down
Loading

0 comments on commit cc1e2ad

Please sign in to comment.