1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.db.protocol.mysql.packet.command.query.binary.prepare;
19
20 import lombok.Getter;
21 import org.apache.shardingsphere.db.protocol.mysql.packet.command.MySQLCommandPacket;
22 import org.apache.shardingsphere.db.protocol.mysql.packet.command.MySQLCommandPacketType;
23 import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
24 import org.apache.shardingsphere.db.protocol.packet.sql.SQLReceivedPacket;
25 import org.apache.shardingsphere.infra.hint.HintValueContext;
26 import org.apache.shardingsphere.infra.hint.SQLHintUtils;
27
28
29
30
31
32
33 public final class MySQLComStmtPreparePacket extends MySQLCommandPacket implements SQLReceivedPacket {
34
35 private final String sql;
36
37 @Getter
38 private final HintValueContext hintValueContext;
39
40 public MySQLComStmtPreparePacket(final MySQLPacketPayload payload) {
41 super(MySQLCommandPacketType.COM_STMT_PREPARE);
42 String originSQL = payload.readStringEOF();
43 hintValueContext = SQLHintUtils.extractHint(originSQL);
44 sql = SQLHintUtils.removeHint(originSQL);
45 }
46
47 @Override
48 public void doWrite(final MySQLPacketPayload payload) {
49 payload.writeStringEOF(sql);
50 }
51
52 @Override
53 public String getSQL() {
54 return sql;
55 }
56 }