(query string, args []driver.Value)
| 488 | } |
| 489 | |
| 490 | func (mc *mysqlConn) query(query string, args []driver.Value) (*textRows, error) { |
| 491 | handleOk := mc.clearResult() |
| 492 | |
| 493 | if mc.closed.Load() { |
| 494 | return nil, driver.ErrBadConn |
| 495 | } |
| 496 | if len(args) != 0 { |
| 497 | if !mc.cfg.InterpolateParams { |
| 498 | return nil, driver.ErrSkip |
| 499 | } |
| 500 | // try client-side prepare to reduce roundtrip |
| 501 | prepared, err := mc.interpolateParams(query, args) |
| 502 | if err != nil { |
| 503 | return nil, err |
| 504 | } |
| 505 | query = prepared |
| 506 | } |
| 507 | // Send command |
| 508 | err := mc.writeCommandPacketStr(comQuery, query) |
| 509 | if err != nil { |
| 510 | return nil, mc.markBadConn(err) |
| 511 | } |
| 512 | |
| 513 | // Read Result |
| 514 | var resLen int |
| 515 | resLen, _, err = handleOk.readResultSetHeaderPacket() |
| 516 | if err != nil { |
| 517 | return nil, err |
| 518 | } |
| 519 | |
| 520 | rows := new(textRows) |
| 521 | rows.mc = mc |
| 522 | |
| 523 | if resLen == 0 { |
| 524 | rows.rs.done = true |
| 525 | |
| 526 | switch err := rows.NextResultSet(); err { |
| 527 | case nil, io.EOF: |
| 528 | return rows, nil |
| 529 | default: |
| 530 | return nil, err |
| 531 | } |
| 532 | } |
| 533 | |
| 534 | // Columns |
| 535 | rows.rs.columns, err = mc.readColumns(resLen, nil) |
| 536 | return rows, err |
| 537 | } |
| 538 | |
| 539 | // Gets the value of the given MySQL System Variable |
| 540 | func (mc *mysqlConn) getSystemVar(name string) (string, error) { |
no test coverage detected