123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package xugu
- import (
- "fmt"
- )
- const RETURN_PREPARE_SELECT = 19665
- func xuguPrepare(pConn *xuguConn, cmd_sql string, prepareName string) error {
- fmt.Println("\n ---xuguPrepare")
- sqlRet := fmt.Sprintf("PREPARE %s AS %s", prepareName, cmd_sql)
- //上锁
- //lockConnect(pConn)
- //pConn.mu.Lock()
- sockSendPutStatement(pConn, []byte(sqlRet), nil, 0)
- XGC_Execute(pConn)
- //接收服务器消息返回
- // pConn.conn.Read(pConn.readBuff.buf)
- // _, err := parseMsg(&pConn.readBuff, pConn)
- _, err := xuguSockRecvMsg(pConn)
- if err != nil {
- fmt.Println("xuguPrepare parseMsg(&pConn.readBuff, pConn)")
- return err
- }
- fmt.Println("Message from server:", pConn.readBuff.buf[pConn.readBuff.idx:])
- fmt.Println("Message from server:", string(pConn.readBuff.buf[pConn.readBuff.idx:]))
- fmt.Println("\n ---xuguPrepare end")
- return nil
- }
- // func xgCmdPrepare(pConn *xuguConn, cmd_sql string, prepareName *string) (int, error) {
- // fmt.Println("\n>>>>>xgCmdPrepare")
- // sqlRet := fmt.Sprintf("PREPARE %s AS %s", *prepareName, cmd_sql)
- // //上锁
- // //lockConnect(pConn)
- // pConn.mu.Lock()
- // SockSendCommand0(pConn, sqlRet)
- // var ch byte
- // var ret int
- // for {
- // recvRet, err := rhRecvChar(pConn, &ch)
- // if err != nil {
- // return 0, err
- // }
- // if !recvRet {
- // pConn.mu.Unlock()
- // return -4, errors.New("XG_NET_ERROR")
- // }
- // //A: SelectResult A在协议里为select返回
- // if ch == 'A' {
- // // pres := Result{}
- // // pres.Type = HT_RS
- // // ret, err = recvFiledsInfo(pConn, &pres)
- // // if err != nil {
- // // return ret, err
- // // }
- // // pConn.presPrepareCata = &pres
- // ret = RETURN_PREPARE_SELECT
- // continue
- // } else if ch == '$' {
- // var params XGCSParam
- // params.Type = HT_PARAMS
- // params.ImpExpType = 2
- // recvParamsInfo2(pConn, ¶ms)
- // pConn.params = ¶ms
- // continue
- // } else if ch == 'K' {
- // pConn.havePrepare = 1
- // } else {
- // var errStr []byte
- // ret, err = rhRecvStr(pConn, &errStr)
- // if ret < 0 || err != nil {
- // pConn.mu.Unlock()
- // return ret, err
- // }
- // pConn.errStr = errStr
- // ret = XG_ERROR
- // rhRecvChar(pConn, &ch)
- // if ch != 'K' {
- // pConn.bkChar = ch
- // continue
- // }
- // }
- // break
- // }
- // pConn.mu.Unlock()
- // return ret, nil
- // }
- // func xgCmdUnprepare(pConn *xuguConn, prepareName string) int {
- // fmt.Println("\n>>>>>xgCmdUnprepare")
- // var ch byte
- // var err error
- // ret := XG_OK
|