diff --git a/sharding-jdbc/src/test/java/io/shardingsphere/core/jdbc/adapter/PreparedStatementAdapterTest.java b/sharding-jdbc/src/test/java/io/shardingsphere/core/jdbc/adapter/PreparedStatementAdapterTest.java index eab5dfdd5ae0e..578d8c9837a79 100644 --- a/sharding-jdbc/src/test/java/io/shardingsphere/core/jdbc/adapter/PreparedStatementAdapterTest.java +++ b/sharding-jdbc/src/test/java/io/shardingsphere/core/jdbc/adapter/PreparedStatementAdapterTest.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.Reader; -import java.io.Serializable; import java.io.StringReader; import java.math.BigDecimal; import java.sql.Blob; @@ -325,9 +324,7 @@ private void assertParameter(final PreparedStatement actual, final int index, fi assertThat(((ShardingPreparedStatement) actual).getParameters().get(index - 1), is(parameter)); } - private static class SerializableStringReader extends StringReader implements Serializable { - - private static final long serialVersionUID = 5054305161835171548L; + private static class SerializableStringReader extends StringReader { SerializableStringReader() { super("value"); diff --git a/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/BinaryPreparedStatementUnit.java b/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/BinaryStatement.java similarity index 78% rename from sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/BinaryPreparedStatementUnit.java rename to sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/BinaryStatement.java index 6bc93f2a8e647..e1556b2ed274d 100644 --- a/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/BinaryPreparedStatementUnit.java +++ b/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/BinaryStatement.java @@ -17,7 +17,6 @@ package io.shardingsphere.proxy.transport.mysql.packet.command.query.binary; -import io.shardingsphere.proxy.transport.mysql.packet.command.query.binary.execute.PreparedStatementParameterHeader; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.Setter; @@ -25,18 +24,18 @@ import java.util.List; /** - * SQL element. + * Binary prepared statement. * * @author zhangyonglun */ @RequiredArgsConstructor @Getter @Setter -public final class BinaryPreparedStatementUnit { +public final class BinaryStatement { private final String sql; private final int parametersCount; - private List preparedStatementParameterHeaders; + private List parameterHeaders; } diff --git a/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/execute/PreparedStatementParameterHeader.java b/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/BinaryStatementParameterHeader.java similarity index 80% rename from sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/execute/PreparedStatementParameterHeader.java rename to sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/BinaryStatementParameterHeader.java index 1371ed53cbcbb..3eac9a84d5e47 100644 --- a/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/execute/PreparedStatementParameterHeader.java +++ b/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/BinaryStatementParameterHeader.java @@ -15,24 +15,20 @@ *

*/ -package io.shardingsphere.proxy.transport.mysql.packet.command.query.binary.execute; +package io.shardingsphere.proxy.transport.mysql.packet.command.query.binary; import io.shardingsphere.proxy.transport.mysql.constant.ColumnType; import lombok.AllArgsConstructor; import lombok.Getter; -import java.io.Serializable; - /** - * Prepared statement parameter header. + * Binary prepared statement parameter header. * * @author zhangyonglun */ @AllArgsConstructor @Getter -public class PreparedStatementParameterHeader implements Serializable { - - private static final long serialVersionUID = -672589695838350689L; +public final class BinaryStatementParameterHeader { private final ColumnType columnType; diff --git a/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/PreparedStatementRegistry.java b/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/BinaryStatementRegistry.java similarity index 59% rename from sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/PreparedStatementRegistry.java rename to sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/BinaryStatementRegistry.java index 9e2520cd79937..a2d75d139912c 100644 --- a/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/PreparedStatementRegistry.java +++ b/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/BinaryStatementRegistry.java @@ -25,19 +25,19 @@ import java.util.concurrent.atomic.AtomicInteger; /** - * Prepared statement registry. + * Binary prepared statement registry. * * @author zhangliang * @author zhangyonglun */ @NoArgsConstructor(access = AccessLevel.NONE) -public final class PreparedStatementRegistry { +public final class BinaryStatementRegistry { - private static final PreparedStatementRegistry INSTANCE = new PreparedStatementRegistry(); + private static final BinaryStatementRegistry INSTANCE = new BinaryStatementRegistry(); - private final ConcurrentMap sqlToStatementIdMap = new ConcurrentHashMap<>(65535, 1); + private final ConcurrentMap statementIdAssigner = new ConcurrentHashMap<>(65535, 1); - private final ConcurrentMap statementIdToBinaryPreparedStatementUnitMap = new ConcurrentHashMap<>(65535, 1); + private final ConcurrentMap binaryStatements = new ConcurrentHashMap<>(65535, 1); private final AtomicInteger sequence = new AtomicInteger(); @@ -46,7 +46,7 @@ public final class PreparedStatementRegistry { * * @return prepared statement registry instance */ - public static PreparedStatementRegistry getInstance() { + public static BinaryStatementRegistry getInstance() { return INSTANCE; } @@ -58,23 +58,23 @@ public static PreparedStatementRegistry getInstance() { * @return statement ID */ public int register(final String sql, final int parametersCount) { - Integer result = sqlToStatementIdMap.get(sql); + Integer result = statementIdAssigner.get(sql); if (null != result) { return result; } - int statementId = sequence.incrementAndGet(); - statementIdToBinaryPreparedStatementUnitMap.putIfAbsent(statementId, new BinaryPreparedStatementUnit(sql, parametersCount)); - sqlToStatementIdMap.putIfAbsent(sql, statementId); - return statementId; + result = sequence.incrementAndGet(); + statementIdAssigner.putIfAbsent(sql, result); + binaryStatements.putIfAbsent(result, new BinaryStatement(sql, parametersCount)); + return result; } /** - * Get binary prepared statement unit. + * Get binary prepared statement. * * @param statementId statement ID - * @return binary prepared statement unit + * @return binary prepared statement */ - public BinaryPreparedStatementUnit getBinaryPreparedStatementUnit(final int statementId) { - return statementIdToBinaryPreparedStatementUnitMap.get(statementId); + public BinaryStatement getBinaryStatement(final int statementId) { + return binaryStatements.get(statementId); } } diff --git a/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/execute/ComStmtExecutePacket.java b/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/execute/ComStmtExecutePacket.java index e842a9f8fdfa1..9efc2711e3a8f 100644 --- a/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/execute/ComStmtExecutePacket.java +++ b/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/execute/ComStmtExecutePacket.java @@ -30,8 +30,9 @@ import io.shardingsphere.proxy.transport.mysql.packet.MySQLPacketPayload; import io.shardingsphere.proxy.transport.mysql.packet.command.CommandResponsePackets; import io.shardingsphere.proxy.transport.mysql.packet.command.query.QueryCommandPacket; -import io.shardingsphere.proxy.transport.mysql.packet.command.query.binary.BinaryPreparedStatementUnit; -import io.shardingsphere.proxy.transport.mysql.packet.command.query.binary.PreparedStatementRegistry; +import io.shardingsphere.proxy.transport.mysql.packet.command.query.binary.BinaryStatement; +import io.shardingsphere.proxy.transport.mysql.packet.command.query.binary.BinaryStatementRegistry; +import io.shardingsphere.proxy.transport.mysql.packet.command.query.binary.BinaryStatementParameterHeader; import lombok.Getter; import lombok.extern.slf4j.Slf4j; @@ -73,17 +74,17 @@ public final class ComStmtExecutePacket implements QueryCommandPacket { private final List preparedStatementParameters = new ArrayList<>(32); - private final BinaryPreparedStatementUnit binaryPreparedStatementUnit; + private final BinaryStatement binaryStatement; private final JDBCBackendHandler jdbcBackendHandler; public ComStmtExecutePacket(final int sequenceId, final MySQLPacketPayload payload, final BackendConnection backendConnection) { this.sequenceId = sequenceId; statementId = payload.readInt4(); - binaryPreparedStatementUnit = PreparedStatementRegistry.getInstance().getBinaryPreparedStatementUnit(statementId); + binaryStatement = BinaryStatementRegistry.getInstance().getBinaryStatement(statementId); flags = payload.readInt1(); Preconditions.checkArgument(ITERATION_COUNT == payload.readInt4()); - int parametersCount = binaryPreparedStatementUnit.getParametersCount(); + int parametersCount = binaryStatement.getParametersCount(); if (parametersCount > 0) { nullBitmap = new NullBitmap(parametersCount, RESERVED_BIT_LENGTH); for (int i = 0; i < nullBitmap.getNullBitmap().length; i++) { @@ -95,7 +96,7 @@ public ComStmtExecutePacket(final int sequenceId, final MySQLPacketPayload paylo nullBitmap = null; newParametersBoundFlag = null; } - jdbcBackendHandler = new JDBCBackendHandler(binaryPreparedStatementUnit.getSql(), JDBCExecuteEngineFactory.createBinaryProtocolInstance(preparedStatementParameters, backendConnection)); + jdbcBackendHandler = new JDBCBackendHandler(binaryStatement.getSql(), JDBCExecuteEngineFactory.createBinaryProtocolInstance(preparedStatementParameters, backendConnection)); } private void setParameterList(final MySQLPacketPayload payload, final int numParameters, final NewParametersBoundFlag newParametersBoundFlag) { @@ -108,7 +109,7 @@ private void setParameterList(final MySQLPacketPayload payload, final int numPar } private void setParameterHeader(final MySQLPacketPayload payload, final int numParameters) { - List parameterHeaders = new ArrayList<>(32); + List parameterHeaders = new ArrayList<>(32); for (int i = 0; i < numParameters; i++) { if (nullBitmap.isParameterNull(i)) { preparedStatementParameters.add(new PreparedStatementParameter(NULL_PARAMETER_DEFAULT_COLUMN_TYPE, NULL_PARAMETER_DEFAULT_UNSIGNED_FLAG, null)); @@ -117,19 +118,19 @@ private void setParameterHeader(final MySQLPacketPayload payload, final int numP ColumnType columnType = ColumnType.valueOf(payload.readInt1()); int unsignedFlag = payload.readInt1(); preparedStatementParameters.add(new PreparedStatementParameter(columnType, unsignedFlag)); - parameterHeaders.add(new PreparedStatementParameterHeader(columnType, unsignedFlag)); + parameterHeaders.add(new BinaryStatementParameterHeader(columnType, unsignedFlag)); } - binaryPreparedStatementUnit.setPreparedStatementParameterHeaders(parameterHeaders); + binaryStatement.setParameterHeaders(parameterHeaders); } private void setParameterHeaderFromCache(final int numParameters) { - Iterator parameterHeaders = binaryPreparedStatementUnit.getPreparedStatementParameterHeaders().iterator(); + Iterator parameterHeaders = binaryStatement.getParameterHeaders().iterator(); for (int i = 0; i < numParameters; i++) { if (nullBitmap.isParameterNull(i)) { preparedStatementParameters.add(new PreparedStatementParameter(NULL_PARAMETER_DEFAULT_COLUMN_TYPE, NULL_PARAMETER_DEFAULT_UNSIGNED_FLAG, null)); continue; } - PreparedStatementParameterHeader preparedStatementParameterHeader = parameterHeaders.next(); + BinaryStatementParameterHeader preparedStatementParameterHeader = parameterHeaders.next(); preparedStatementParameters.add(new PreparedStatementParameter(preparedStatementParameterHeader.getColumnType(), preparedStatementParameterHeader.getUnsignedFlag())); } } diff --git a/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/execute/PreparedStatementParameter.java b/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/execute/PreparedStatementParameter.java index 284acaafa7200..2f862eb944e18 100644 --- a/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/execute/PreparedStatementParameter.java +++ b/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/execute/PreparedStatementParameter.java @@ -18,6 +18,7 @@ package io.shardingsphere.proxy.transport.mysql.packet.command.query.binary.execute; import io.shardingsphere.proxy.transport.mysql.constant.ColumnType; +import io.shardingsphere.proxy.transport.mysql.packet.command.query.binary.BinaryStatementParameterHeader; import lombok.Getter; import lombok.Setter; @@ -30,16 +31,16 @@ @Setter public final class PreparedStatementParameter { - private final PreparedStatementParameterHeader preparedStatementParameterHeader; + private final BinaryStatementParameterHeader preparedStatementParameterHeader; private Object value; public PreparedStatementParameter(final ColumnType columnType, final int unsignedFlag) { - preparedStatementParameterHeader = new PreparedStatementParameterHeader(columnType, unsignedFlag); + preparedStatementParameterHeader = new BinaryStatementParameterHeader(columnType, unsignedFlag); } public PreparedStatementParameter(final ColumnType columnType, final int unsignedFlag, final String value) { - preparedStatementParameterHeader = new PreparedStatementParameterHeader(columnType, unsignedFlag); + preparedStatementParameterHeader = new BinaryStatementParameterHeader(columnType, unsignedFlag); this.value = value; } diff --git a/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/prepare/ComStmtPreparePacket.java b/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/prepare/ComStmtPreparePacket.java index c2bd321e27576..c0039e14212e6 100644 --- a/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/prepare/ComStmtPreparePacket.java +++ b/sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/query/binary/prepare/ComStmtPreparePacket.java @@ -30,7 +30,7 @@ import io.shardingsphere.proxy.transport.mysql.packet.command.CommandPacket; import io.shardingsphere.proxy.transport.mysql.packet.command.CommandResponsePackets; import io.shardingsphere.proxy.transport.mysql.packet.command.query.ColumnDefinition41Packet; -import io.shardingsphere.proxy.transport.mysql.packet.command.query.binary.PreparedStatementRegistry; +import io.shardingsphere.proxy.transport.mysql.packet.command.query.binary.BinaryStatementRegistry; import io.shardingsphere.proxy.transport.mysql.packet.generic.EofPacket; import lombok.Getter; import lombok.extern.slf4j.Slf4j; @@ -47,7 +47,7 @@ public final class ComStmtPreparePacket implements CommandPacket { private static final RuleRegistry RULE_REGISTRY = RuleRegistry.getInstance(); - private static final PreparedStatementRegistry PREPARED_STATEMENT_REGISTRY = PreparedStatementRegistry.getInstance(); + private static final BinaryStatementRegistry PREPARED_STATEMENT_REGISTRY = BinaryStatementRegistry.getInstance(); @Getter private final int sequenceId;