MCPcopy Create free account
hub / github.com/IceFireDB/IceFireDB / Prepare

Method Prepare

IceFireDB-SQLProxy/pkg/mysql/client/stmt.go:174–224  ·  view source on GitHub ↗
(query string)

Source from the content-addressed store, hash-verified

172}
173
174func (c *Conn) Prepare(query string) (*Stmt, error) {
175 if err := c.writeCommandStr(COM_STMT_PREPARE, query); err != nil {
176 return nil, errors.Trace(err)
177 }
178
179 data, err := c.ReadPacket()
180 if err != nil {
181 return nil, errors.Trace(err)
182 }
183
184 if data[0] == ERR_HEADER {
185 return nil, c.handleErrorPacket(data)
186 } else if data[0] != OK_HEADER {
187 return nil, ErrMalformPacket
188 }
189
190 s := new(Stmt)
191 s.conn = c
192
193 pos := 1
194
195 // for statement id
196 s.id = binary.LittleEndian.Uint32(data[pos:])
197 pos += 4
198
199 // number columns
200 s.columns = int(binary.LittleEndian.Uint16(data[pos:]))
201 pos += 2
202
203 // number params
204 s.params = int(binary.LittleEndian.Uint16(data[pos:]))
205 pos += 2
206
207 // warnings
208 s.warnings = int(binary.LittleEndian.Uint16(data[pos:]))
209 pos += 2
210
211 if s.params > 0 {
212 if err := s.conn.readUntilEOF(); err != nil {
213 return nil, errors.Trace(err)
214 }
215 }
216
217 if s.columns > 0 {
218 if err := s.conn.readUntilEOF(); err != nil {
219 return nil, errors.Trace(err)
220 }
221 }
222
223 return s, nil
224}

Callers 2

ExecuteMethod · 0.95
HandleStmtPrepareMethod · 0.45

Calls 4

writeCommandStrMethod · 0.95
ReadPacketMethod · 0.95
handleErrorPacketMethod · 0.95
readUntilEOFMethod · 0.45

Tested by

no test coverage detected