package io.mycat.backend.postgresql.packet;
import io.mycat.backend.postgresql.utils.PIOUtils;
import java.nio.ByteBuffer;
/**********
* 查询数据包
*
* @author Coollf
*/
// Query (F)
// Byte1('Q')
// 标识消息是一个简单查询。
//
// Int32
// 以字节记的消息内容的长度,包括长度自身。
//
// String
// 查询字串自身。
public class Query extends PostgreSQLPacket {
private String sql;
@Override
public int getLength() {
return 4 + (sql == null ? 0 : (sql.getBytes(UTF8).length)); // length + string
// length
}
@Override
public char getMarker() {
return PacketMarker.F_Query.getValue();
}
public Query(String sql) {
this.sql = sql.trim() + "\0";
}
public void write(ByteBuffer buffer) {
PIOUtils.SendChar(getMarker(), buffer);
PIOUtils.SendInteger4(getLength(), buffer);
PIOUtils.SendString(sql, buffer);
}
}