提交 5a1c7f8d 编写于 作者: C cherrylzhao

for #1963 implement MySQLComStmtClosePacket.

上级 800993a0
ACCOUNT=1
ACTION=2
ADMIN=3
AFTER=4
ALGORITHM=5
ANALYZE=6
AUDIT_ADMIN=7
AUTO_INCREMENT=8
AUTOCOMMIT=9
AVG_ROW_LENGTH=10
BEGIN=11
BINLOG_ADMIN=12
BTREE=13
CASE=14
CHAIN=15
CHANGE=16
CHAR=17
CHARACTER=18
CHARSET=19
CHECKSUM=20
CIPHER=21
CLIENT=22
COALESCE=23
COLLATE=24
COLUMNS=25
COLUMN_FORMAT=26
COMMENT=27
COMPACT=28
COMPRESSED=29
COMPRESSION=30
CONNECTION=31
CONNECTION_ADMIN=32
CONSISTENT=33
CONVERT=34
COPY=35
CROSS=36
CURRENT_TIMESTAMP=37
DATA=38
DATABASES=39
DELAYED=40
DELAY_KEY_WRITE=41
DIRECTORY=42
DISCARD=43
DISK=44
DISTINCTROW=45
DOUBLE=46
DUPLICATE=47
DYNAMIC=48
ELSE=49
ENCRYPTION=50
ENCRYPTION_KEY_ADMIN=51
END=52
ENGINE=53
EVENT=54
EXCEPT=55
EXCHANGE=56
EXCLUSIVE=57
EXECUTE=58
EXPIRE=59
FILE=60
FIREWALL_ADMIN=61
FIREWALL_USER=62
FIRST=63
FIXED=64
FOLLOWING=65
FORCE=66
FULL=67
FULLTEXT=68
GLOBAL=69
GROUP_CONCAT=70
GROUP_REPLICATION_ADMIN=71
HASH=72
HIGH_PRIORITY=73
HISTORY=74
IDENTIFIED=75
IF=76
IGNORE=77
IMPORT_=78
INNER=79
INPLACE=80
INSERT=81
INSERT_METHOD=82
INTERVAL=83
INTO=84
ISSUER=85
JOIN=86
KEYS=87
KEY_BLOCK_SIZE=88
LAST=89
LEFT=90
LESS=91
LINEAR=92
LIST=93
LOCALTIME=94
LOCALTIMESTAMP=95
LOCK=96
LOW_PRIORITY=97
MATCH=98
MAXVALUE=99
MAX_CONNECTIONS_PER_HOUR=100
MAX_QUERIES_PER_HOUR=101
MAX_ROWS=102
MAX_UPDATES_PER_HOUR=103
MAX_USER_CONNECTIONS=104
MEMORY=105
MIN_ROWS=106
MODIFY=107
NATURAL=108
NEVER=109
NONE=110
NOW=111
OFFLINE=112
OLD=113
ONLINE=114
ONLY=115
OPTIMIZE=116
OPTIONAL=117
OUTER=118
OVER=119
PACK_KEYS=120
PARSER=121
PARTIAL=122
PARTITIONING=123
PARTITIONS=124
PERSIST=125
PERSIST_ONLY=126
PRECEDING=127
PRECISION=128
PROCEDURE=129
PROCESS=130
PROXY=131
QUICK=132
RANGE=133
REBUILD=134
RECURSIVE=135
REDUNDANT=136
RELEASE=137
RELOAD=138
REMOVE=139
RENAME=140
REORGANIZE=141
REPAIR=142
REPEATABLE=143
REPLACE=144
REPLICATION=145
REPLICATION_SLAVE_ADMIN=146
REQUIRE=147
RESTRICT=148
RETAIN=149
REUSE=150
RIGHT=151
ROLE_ADMIN=152
ROUTINE=153
ROW_FORMAT=154
SAVEPOINT=155
SELECT=156
SEPARATOR=157
SESSION=158
SET_USER_ID=159
SHARED=160
SHOW=161
SHUTDOWN=162
SIMPLE=163
SLAVE=164
SNAPSHOT=165
SPATIAL=166
SQLDML=167
SQLDQL=168
SQL_BIG_RESULT=169
SQL_BUFFER_RESULT=170
SQL_CACHE=171
SQL_CALC_FOUND_ROWS=172
SQL_NO_CACHE=173
SQL_SMALL_RESULT=174
SSL=175
STATS_AUTO_RECALC=176
STATS_PERSISTENT=177
STATS_SAMPLE_PAGES=178
STORAGE=179
STORED=180
STRAIGHT_JOIN=181
SUBJECT=182
SUBPARTITION=183
SUBPARTITIONS=184
SUPER=185
SYSTEM_VARIABLES_ADMIN=186
TABLES=187
TABLESPACE=188
TEMPORARY=189
THAN=190
THEN=191
TRIGGER=192
UNBOUNDED=193
UNCOMMITTED=194
UNLOCK=195
UNSIGNED=196
UPDATE=197
UPGRADE=198
USAGE=199
USE=200
USING=201
VALIDATION=202
VALUE=203
VALUES=204
VERSION_TOKEN_ADMIN=205
VIEW=206
VIRTUAL=207
WHEN=208
WINDOW=209
WITHOUT=210
WRITE=211
ZEROFILL=212
VISIBLE=213
INVISIBLE=214
INSTANT=215
ENFORCED=216
FOR_GENERATOR=217
'DO NOT MATCH ANY THING, JUST FOR GENERATOR'=217
......@@ -24,6 +24,7 @@ import org.apache.shardingsphere.shardingproxy.transport.mysql.packet.MySQLPacke
import org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.admin.MySQLOKCommandPacketExecutor;
import org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.admin.MySQLUnsupportedCommandPacketExecutor;
import org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.admin.initdb.MySQLComInitDbPacketExecutor;
import org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.query.binary.close.MySQLComStmtClosePacketExecutor;
import org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.query.binary.execute.MySQLQueryComStmtExecutePacketExecutor;
import org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.query.binary.prepare.MySQLComStmtPreparePacketExecutor;
import org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.query.text.fieldlist.MySQLComFieldListPacketExecutor;
......@@ -58,7 +59,7 @@ public final class MySQLCommandPacketExecutorFactory {
case COM_STMT_EXECUTE:
return new MySQLQueryComStmtExecutePacketExecutor();
case COM_STMT_CLOSE:
return new MySQLComFieldListPacketExecutor();
return new MySQLComStmtClosePacketExecutor();
case COM_PING:
return new MySQLOKCommandPacketExecutor();
default:
......
......@@ -29,6 +29,7 @@ import java.util.concurrent.atomic.AtomicInteger;
*
* @author zhangliang
* @author zhangyonglun
* @author zhaojun
*/
@NoArgsConstructor(access = AccessLevel.NONE)
public final class MySQLBinaryStatementRegistry {
......@@ -77,4 +78,17 @@ public final class MySQLBinaryStatementRegistry {
public MySQLBinaryStatement getBinaryStatement(final int statementId) {
return binaryStatements.get(statementId);
}
/**
* Remove expired cache statement.
*
* @param statementId statement ID
*/
public void remove(final int statementId) {
MySQLBinaryStatement binaryStatement = getBinaryStatement(statementId);
if (null != binaryStatement) {
statementIdAssigner.remove(binaryStatement.getSql());
binaryStatements.remove(statementId);
}
}
}
......@@ -19,6 +19,7 @@ package org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.q
import lombok.Getter;
import org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.MySQLCommandPacket;
import org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.query.binary.MySQLBinaryStatementRegistry;
import org.apache.shardingsphere.shardingproxy.transport.mysql.payload.MySQLPacketPayload;
/**
......@@ -39,6 +40,7 @@ public final class MySQLComStmtClosePacket implements MySQLCommandPacket {
@Override
public void write(final MySQLPacketPayload payload) {
MySQLBinaryStatementRegistry.getInstance().remove(statementId);
}
@Override
......
......@@ -22,6 +22,7 @@ import org.apache.shardingsphere.shardingproxy.transport.api.packet.CommandPacke
import org.apache.shardingsphere.shardingproxy.transport.common.packet.CommandPacketExecutor;
import org.apache.shardingsphere.shardingproxy.transport.mysql.packet.MySQLPacket;
import java.sql.SQLException;
import java.util.Collection;
import java.util.Collections;
......@@ -33,7 +34,8 @@ import java.util.Collections;
public final class MySQLComStmtClosePacketExecutor implements CommandPacketExecutor<MySQLPacket> {
@Override
public Collection<MySQLPacket> execute(final BackendConnection backendConnection, final CommandPacket commandPacket) {
public Collection<MySQLPacket> execute(final BackendConnection backendConnection, final CommandPacket commandPacket) throws SQLException {
commandPacket.execute();
return Collections.emptyList();
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册