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