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.text.query;
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 MySQLComQueryPacket extends MySQLCommandPacket implements SQLReceivedPacket {
34
35 private final String sql;
36
37 @Getter
38 private final HintValueContext hintValueContext;
39
40 public MySQLComQueryPacket(final String sql) {
41 super(MySQLCommandPacketType.COM_QUERY);
42 hintValueContext = SQLHintUtils.extractHint(sql);
43 this.sql = SQLHintUtils.removeHint(sql);
44 }
45
46 public MySQLComQueryPacket(final MySQLPacketPayload payload) {
47 super(MySQLCommandPacketType.COM_QUERY);
48 String originSQL = payload.readStringEOF();
49 hintValueContext = SQLHintUtils.extractHint(originSQL);
50 sql = SQLHintUtils.removeHint(originSQL);
51 }
52
53 @Override
54 public void doWrite(final MySQLPacketPayload payload) {
55 payload.writeStringEOF(sql);
56 }
57
58 @Override
59 public String getSQL() {
60 return sql;
61 }
62 }