terraform/vendor/github.com/ziutek/mymysql/native/command.go

150 lines
3.6 KiB
Go

package native
import (
"log"
)
//import "log"
// _COM_QUIT, _COM_STATISTICS, _COM_PROCESS_INFO, _COM_DEBUG, _COM_PING:
func (my *Conn) sendCmd(cmd byte) {
my.seq = 0
pw := my.newPktWriter(1)
pw.writeByte(cmd)
if my.Debug {
log.Printf("[%2d <-] Command packet: Cmd=0x%x", my.seq-1, cmd)
}
}
// _COM_QUERY, _COM_INIT_DB, _COM_CREATE_DB, _COM_DROP_DB, _COM_STMT_PREPARE:
func (my *Conn) sendCmdStr(cmd byte, s string) {
my.seq = 0
pw := my.newPktWriter(1 + len(s))
pw.writeByte(cmd)
pw.write([]byte(s))
if my.Debug {
log.Printf("[%2d <-] Command packet: Cmd=0x%x %s", my.seq-1, cmd, s)
}
}
// _COM_PROCESS_KILL, _COM_STMT_CLOSE, _COM_STMT_RESET:
func (my *Conn) sendCmdU32(cmd byte, u uint32) {
my.seq = 0
pw := my.newPktWriter(1 + 4)
pw.writeByte(cmd)
pw.writeU32(u)
if my.Debug {
log.Printf("[%2d <-] Command packet: Cmd=0x%x %d", my.seq-1, cmd, u)
}
}
func (my *Conn) sendLongData(stmtid uint32, pnum uint16, data []byte) {
my.seq = 0
pw := my.newPktWriter(1 + 4 + 2 + len(data))
pw.writeByte(_COM_STMT_SEND_LONG_DATA)
pw.writeU32(stmtid) // Statement ID
pw.writeU16(pnum) // Parameter number
pw.write(data) // payload
if my.Debug {
log.Printf("[%2d <-] SendLongData packet: pnum=%d", my.seq-1, pnum)
}
}
/*func (my *Conn) sendCmd(cmd byte, argv ...interface{}) {
// Reset sequence number
my.seq = 0
// Write command
switch cmd {
case _COM_QUERY, _COM_INIT_DB, _COM_CREATE_DB, _COM_DROP_DB,
_COM_STMT_PREPARE:
pw := my.newPktWriter(1 + lenBS(argv[0]))
writeByte(pw, cmd)
writeBS(pw, argv[0])
case _COM_STMT_SEND_LONG_DATA:
pw := my.newPktWriter(1 + 4 + 2 + lenBS(argv[2]))
writeByte(pw, cmd)
writeU32(pw, argv[0].(uint32)) // Statement ID
writeU16(pw, argv[1].(uint16)) // Parameter number
writeBS(pw, argv[2]) // payload
case _COM_QUIT, _COM_STATISTICS, _COM_PROCESS_INFO, _COM_DEBUG, _COM_PING:
pw := my.newPktWriter(1)
writeByte(pw, cmd)
case _COM_FIELD_LIST:
pay_len := 1 + lenBS(argv[0]) + 1
if len(argv) > 1 {
pay_len += lenBS(argv[1])
}
pw := my.newPktWriter(pay_len)
writeByte(pw, cmd)
writeNT(pw, argv[0])
if len(argv) > 1 {
writeBS(pw, argv[1])
}
case _COM_TABLE_DUMP:
pw := my.newPktWriter(1 + lenLC(argv[0]) + lenLC(argv[1]))
writeByte(pw, cmd)
writeLC(pw, argv[0])
writeLC(pw, argv[1])
case _COM_REFRESH, _COM_SHUTDOWN:
pw := my.newPktWriter(1 + 1)
writeByte(pw, cmd)
writeByte(pw, argv[0].(byte))
case _COM_STMT_FETCH:
pw := my.newPktWriter(1 + 4 + 4)
writeByte(pw, cmd)
writeU32(pw, argv[0].(uint32))
writeU32(pw, argv[1].(uint32))
case _COM_PROCESS_KILL, _COM_STMT_CLOSE, _COM_STMT_RESET:
pw := my.newPktWriter(1 + 4)
writeByte(pw, cmd)
writeU32(pw, argv[0].(uint32))
case _COM_SET_OPTION:
pw := my.newPktWriter(1 + 2)
writeByte(pw, cmd)
writeU16(pw, argv[0].(uint16))
case _COM_CHANGE_USER:
pw := my.newPktWriter(
1 + lenBS(argv[0]) + 1 + lenLC(argv[1]) + lenBS(argv[2]) + 1,
)
writeByte(pw, cmd)
writeNT(pw, argv[0]) // User name
writeLC(pw, argv[1]) // Scrambled password
writeNT(pw, argv[2]) // Database name
//writeU16(pw, argv[3]) // Character set number (since 5.1.23?)
case _COM_BINLOG_DUMP:
pay_len := 1 + 4 + 2 + 4
if len(argv) > 3 {
pay_len += lenBS(argv[3])
}
pw := my.newPktWriter(pay_len)
writeByte(pw, cmd)
writeU32(pw, argv[0].(uint32)) // Start position
writeU16(pw, argv[1].(uint16)) // Flags
writeU32(pw, argv[2].(uint32)) // Slave server id
if len(argv) > 3 {
writeBS(pw, argv[3])
}
// TODO: case COM_REGISTER_SLAVE:
default:
panic("Unknown code for MySQL command")
}
if my.Debug {
log.Printf("[%2d <-] Command packet: Cmd=0x%x", my.seq-1, cmd)
}
}*/