代码拉取完成,页面将自动刷新
/*
* go-mysqlstack
* xelabs.org
*
* Copyright (c) XeLabs
* GPL License
*
*/
package proto
import (
"gitee.com/tym_hmm/mysql-mydumper/extend/mysql/sqldb"
"gitee.com/tym_hmm/mysql-mydumper/extend/mysql/sqlparser/depends/common"
)
const (
// OK_PACKET is the OK byte.
OK_PACKET byte = 0x00
)
// OK used for OK packet.
type OK struct {
Header byte // 0x00
AffectedRows uint64
LastInsertID uint64
StatusFlags uint16
Warnings uint16
}
// UnPackOK used to unpack the OK packet.
// https://dev.mysql.com/doc/internals/en/packet-OK_Packet.html
func UnPackOK(data []byte) (*OK, error) {
var err error
o := &OK{}
buf := common.ReadBuffer(data)
// header
if o.Header, err = buf.ReadU8(); err != nil {
return nil, sqldb.NewSQLErrorf(sqldb.ER_MALFORMED_PACKET, "invalid ok packet header: %v", data)
}
if o.Header != OK_PACKET {
return nil, sqldb.NewSQLErrorf(sqldb.ER_MALFORMED_PACKET, "invalid ok packet header: %v", o.Header)
}
// AffectedRows
if o.AffectedRows, err = buf.ReadLenEncode(); err != nil {
return nil, sqldb.NewSQLErrorf(sqldb.ER_MALFORMED_PACKET, "invalid ok packet affectedrows: %v", data)
}
// LastInsertID
if o.LastInsertID, err = buf.ReadLenEncode(); err != nil {
return nil, sqldb.NewSQLErrorf(sqldb.ER_MALFORMED_PACKET, "invalid ok packet lastinsertid: %v", data)
}
// Status
if o.StatusFlags, err = buf.ReadU16(); err != nil {
return nil, sqldb.NewSQLErrorf(sqldb.ER_MALFORMED_PACKET, "invalid ok packet statusflags: %v", data)
}
// Warnings
if o.Warnings, err = buf.ReadU16(); err != nil {
return nil, sqldb.NewSQLErrorf(sqldb.ER_MALFORMED_PACKET, "invalid ok packet warnings: %v", data)
}
return o, nil
}
// PackOK used to pack the OK packet.
func PackOK(o *OK) []byte {
buf := common.NewBuffer(64)
// OK
buf.WriteU8(OK_PACKET)
// affected rows
buf.WriteLenEncode(o.AffectedRows)
// last insert id
buf.WriteLenEncode(o.LastInsertID)
// status
buf.WriteU16(o.StatusFlags)
// warnings
buf.WriteU16(o.Warnings)
return buf.Datas()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。