// Writes BIND, EXECUTE and SYNC messages. func writeBindExecuteMsg(buf *pool.Buffer, name string, params ...interface{}) error { const paramLenWidth = 4 buf.StartMessage(bindMsg) buf.WriteString("") buf.WriteString(name) buf.WriteInt16(0) buf.WriteInt16(int16(len(params))) for _, param := range params { buf.StartParam() bytes := types.Append(buf.Bytes, param, false) if bytes != nil { buf.Bytes = bytes buf.FinishParam() } else { buf.FinishNullParam() } } buf.WriteInt16(0) buf.FinishMessage() buf.StartMessage(executeMsg) buf.WriteString("") buf.WriteInt32(0) buf.FinishMessage() buf.StartMessage(syncMsg) buf.FinishMessage() return nil }
func writeQueryMsg(buf *pool.Buffer, query interface{}, params ...interface{}) error { buf.StartMessage(queryMsg) bytes, err := orm.AppendQuery(buf.Bytes, query, params...) if err != nil { buf.Reset() return err } buf.Bytes = bytes buf.WriteByte(0x0) buf.FinishMessage() return nil }