Commit 09159efb authored by terrymanu's avatar terrymanu
Browse files

create package for jdbc backend

parent a166863e
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@
 * </p>
 */

package io.shardingsphere.proxy.backend.common;
package io.shardingsphere.proxy.backend.common.jdbc;

import io.shardingsphere.core.constant.DatabaseType;
import io.shardingsphere.core.constant.SQLType;
@@ -30,6 +30,10 @@ import io.shardingsphere.core.routing.SQLExecutionUnit;
import io.shardingsphere.core.routing.SQLRouteResult;
import io.shardingsphere.core.routing.SQLUnit;
import io.shardingsphere.core.routing.router.masterslave.MasterSlaveRouter;
import io.shardingsphere.proxy.backend.common.BackendHandler;
import io.shardingsphere.proxy.backend.common.ProxyConnectionHolder;
import io.shardingsphere.proxy.backend.common.ProxyMode;
import io.shardingsphere.proxy.backend.common.ResultList;
import io.shardingsphere.proxy.backend.resource.BaseJDBCResource;
import io.shardingsphere.proxy.config.RuleRegistry;
import io.shardingsphere.proxy.metadata.ProxyShardingRefreshHandler;
@@ -62,13 +66,13 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;

/**
 * Abstract ExecuteBackendHandler for SQL or PrepareStatement.
 * Backend handler via JDBC to connect databases.
 *
 * @author zhaojun
 */
@Getter
@Slf4j
public abstract class ExecuteBackendHandler implements BackendHandler {
public abstract class JDBCBackendHandler implements BackendHandler {
    
    private final String sql;
    
@@ -92,7 +96,7 @@ public abstract class ExecuteBackendHandler implements BackendHandler {
    
    private final List<ResultList> resultLists = new CopyOnWriteArrayList<>();
    
    public ExecuteBackendHandler(final String sql, final DatabaseType databaseType, final boolean showSQL) {
    public JDBCBackendHandler(final String sql, final DatabaseType databaseType, final boolean showSQL) {
        this.sql = sql;
        isMerged = false;
        hasMoreResultValueFlag = true;
+4 −6
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@
 * </p>
 */

package io.shardingsphere.proxy.backend.common;
package io.shardingsphere.proxy.backend.common.jdbc;

import io.shardingsphere.core.parsing.parser.sql.SQLStatement;
import io.shardingsphere.core.routing.router.masterslave.MasterVisitedManager;
@@ -42,18 +42,16 @@ import java.util.List;
import java.util.concurrent.Callable;

/**
 * Execute worker.
 * 
 * <p>Include SQL and PreparedStatement implement.</p>
 * Execute worker via JDBC to connect databases.
 * 
 * @author zhaojun
 */
@AllArgsConstructor
@Getter
@Slf4j
public abstract class ExecuteWorker implements Callable<CommandResponsePackets> {
public abstract class JDBCExecuteWorker implements Callable<CommandResponsePackets> {
    
    private final ExecuteBackendHandler executeBackendHandler;
    private final JDBCBackendHandler executeBackendHandler;
    
    private final SQLStatement sqlStatement;
    
+8 −6
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@
 * </p>
 */

package io.shardingsphere.proxy.backend.common;
package io.shardingsphere.proxy.backend.common.jdbc.statement;

import io.shardingsphere.core.constant.DatabaseType;
import io.shardingsphere.core.merger.QueryResult;
@@ -23,6 +23,8 @@ import io.shardingsphere.core.parsing.parser.sql.SQLStatement;
import io.shardingsphere.core.parsing.parser.sql.dml.insert.InsertStatement;
import io.shardingsphere.core.routing.PreparedStatementRoutingEngine;
import io.shardingsphere.core.routing.SQLRouteResult;
import io.shardingsphere.proxy.backend.common.ProxyMode;
import io.shardingsphere.proxy.backend.common.jdbc.JDBCBackendHandler;
import io.shardingsphere.proxy.backend.mysql.MySQLPacketStatementExecuteQueryResult;
import io.shardingsphere.proxy.backend.resource.ProxyJDBCResourceFactory;
import io.shardingsphere.proxy.backend.resource.ProxyPrepareJDBCResource;
@@ -46,19 +48,19 @@ import java.util.concurrent.Callable;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * Statement execute backend handler.
 * Statement protocol backend handler via JDBC to connect databases.
 *
 * @author zhangyonglun
 * @author zhaojun
 */
public final class StatementExecuteBackendHandler extends ExecuteBackendHandler implements BackendHandler {
public final class JDBCStatementBackendHandler extends JDBCBackendHandler {
    
    private final List<PreparedStatementParameter> preparedStatementParameters;
    
    @Getter
    private final List<ColumnType> columnTypes;
    
    public StatementExecuteBackendHandler(final List<PreparedStatementParameter> preparedStatementParameters, final int statementId,
    public JDBCStatementBackendHandler(final List<PreparedStatementParameter> preparedStatementParameters, final int statementId,
                                       final DatabaseType databaseType, final boolean showSQL) {
        super(PreparedStatementRegistry.getInstance().getSQL(statementId), databaseType, showSQL);
        super.setJdbcResource(ProxyJDBCResourceFactory.newPrepareResource());
@@ -84,7 +86,7 @@ public final class StatementExecuteBackendHandler extends ExecuteBackendHandler
    
    @Override
    protected Callable<CommandResponsePackets> newSubmitTask(final Statement statement, final SQLStatement sqlStatement, final String unitSql) {
        return new StatementExecuteWorker(this, sqlStatement, (PreparedStatement) statement);
        return new JDBCStatementExecuteWorker(this, sqlStatement, (PreparedStatement) statement);
    }
    
    @Override
+6 −4
Original line number Diff line number Diff line
@@ -15,10 +15,12 @@
 * </p>
 */

package io.shardingsphere.proxy.backend.common;
package io.shardingsphere.proxy.backend.common.jdbc.statement;

import io.shardingsphere.core.parsing.parser.sql.SQLStatement;
import io.shardingsphere.core.parsing.parser.sql.dml.insert.InsertStatement;
import io.shardingsphere.proxy.backend.common.jdbc.JDBCExecuteWorker;
import io.shardingsphere.proxy.backend.common.ResultList;
import io.shardingsphere.proxy.transport.mysql.constant.ColumnType;
import io.shardingsphere.proxy.transport.mysql.packet.command.CommandResponsePackets;
import io.shardingsphere.proxy.transport.mysql.packet.generic.OKPacket;
@@ -34,13 +36,13 @@ import java.util.concurrent.Callable;
 * @author zhangyonglun
 * @author zhaojun
 */
public final class StatementExecuteWorker extends ExecuteWorker implements Callable<CommandResponsePackets> {
public final class JDBCStatementExecuteWorker extends JDBCExecuteWorker implements Callable<CommandResponsePackets> {
    
    private static final Integer FETCH_ONE_ROW_A_TIME = Integer.MIN_VALUE;
    
    private final PreparedStatement preparedStatement;
    
    public StatementExecuteWorker(final StatementExecuteBackendHandler statementExecuteBackendHandler, final SQLStatement sqlStatement, final PreparedStatement preparedStatement) {
    public JDBCStatementExecuteWorker(final JDBCStatementBackendHandler statementExecuteBackendHandler, final SQLStatement sqlStatement, final PreparedStatement preparedStatement) {
        super(statementExecuteBackendHandler, sqlStatement);
        this.preparedStatement = preparedStatement;
    }
@@ -69,7 +71,7 @@ public final class StatementExecuteWorker extends ExecuteWorker implements Calla
    
    @Override
    protected void setColumnType(final ColumnType columnType) {
        ((StatementExecuteBackendHandler) getExecuteBackendHandler()).getColumnTypes().add(columnType);
        ((JDBCStatementBackendHandler) getExecuteBackendHandler()).getColumnTypes().add(columnType);
    }
    
    @Override
+8 −6
Original line number Diff line number Diff line
@@ -15,13 +15,15 @@
 * </p>
 */

package io.shardingsphere.proxy.backend.common;
package io.shardingsphere.proxy.backend.common.jdbc.text;

import io.shardingsphere.core.constant.DatabaseType;
import io.shardingsphere.core.merger.QueryResult;
import io.shardingsphere.core.parsing.parser.sql.SQLStatement;
import io.shardingsphere.core.routing.SQLRouteResult;
import io.shardingsphere.core.routing.StatementRoutingEngine;
import io.shardingsphere.proxy.backend.common.ProxyMode;
import io.shardingsphere.proxy.backend.common.jdbc.JDBCBackendHandler;
import io.shardingsphere.proxy.backend.mysql.MySQLPacketQueryResult;
import io.shardingsphere.proxy.backend.resource.ProxyJDBCResource;
import io.shardingsphere.proxy.backend.resource.ProxyJDBCResourceFactory;
@@ -38,17 +40,17 @@ import java.util.List;
import java.util.concurrent.Callable;

/**
 * SQL execute backend handler.
 * Text protocol backend handler via JDBC to connect databases.
 *
 * @author zhangliang
 * @author panjuan
 * @author zhaojun
 */
public final class SQLExecuteBackendHandler extends ExecuteBackendHandler implements BackendHandler {
public final class JDBCTextBackendHandler extends JDBCBackendHandler {
    
    public SQLExecuteBackendHandler(final String sql, final DatabaseType databaseType, final boolean showSQL) {
    public JDBCTextBackendHandler(final String sql, final DatabaseType databaseType, final boolean showSQL) {
        super(sql, databaseType, showSQL);
        super.setJdbcResource(ProxyJDBCResourceFactory.newResource());
        setJdbcResource(ProxyJDBCResourceFactory.newResource());
    }
    
    @Override
@@ -71,7 +73,7 @@ public final class SQLExecuteBackendHandler extends ExecuteBackendHandler implem
    
    @Override
    protected Callable<CommandResponsePackets> newSubmitTask(final Statement statement, final SQLStatement sqlStatement, final String unitSql) {
        return new SQLExecuteWorker(this, sqlStatement, statement, unitSql);
        return new JDBCTextExecuteWorker(this, sqlStatement, statement, unitSql);
    }
    
    @Override
Loading