func prepare(db *DB, cn *pool.Conn, q string) (*Stmt, error) { name := cn.NextId() writeParseDescribeSyncMsg(cn.Wr, name, q) if err := cn.Wr.Flush(); err != nil { db.freeConn(cn, err) return nil, err } columns, err := readParseDescribeSync(cn) if err != nil { db.freeConn(cn, err) return nil, err } stmt := &Stmt{ db: db, _cn: cn, name: name, columns: columns, } return stmt, nil }