分布式数据库中间件–(3) Cobar对简单select命令的处理过程
时间:2022-03-10 17:37
}
这里真正的执行SQL语句,然后等待后端执行语句的返回数据,在成功获取后端Mysql返回的结果后,该函数返回的数据包是结果集数据包。
当客户端发起认证请求或命令请求后,服务器会返回相应的执行结果给客户端。客户端在收到响应报文后,需要首先检查第1个字节的值,来区分响应报文的类型。
响应报文类型 | 第1个字节取值范围 |
---|---|
OK 响应报文 | 0×00 |
Error 响应报文 | 0xFF |
Result Set 报文 | 0×01 – 0xFA |
Field 报文 | 0×01 – 0xFA |
Row Data 报文 | 0×01 – 0xFA |
EOF 报文 | 0xFE |
注:响应报文的第1个字节在不同类型中含义不同,比如在OK报文中,该字节并没有实际意义,值恒为0×00;而在Result Set报文中,该字节又是长度编码的二进制数据结构(Length Coded Binary)中的第1字节。
Result Set 消息分为五部分,结构如下:
结构 | 说明 |
---|---|
[Result Set Header] | 列数量 |
[Field] | 列信息(多个) |
[EOF] | 列结束 |
[Row Data] | 行数据(多个) |
[EOF] | 数据结束 |
函数执行完成后,返回的结果都放入LinkedList中,当读取结果完成后放入多节点执行器的缓冲区。如果buffer满了,就通过前端连接写出给客户端。
分布式数据库中间件–(3) Cobar对简单select命令的处理过程,布布扣,bubuko.com