(row *spanner.Row)
| 550 | } |
| 551 | |
| 552 | func readRow(row *spanner.Row) (*v1pb.QueryRow, error) { |
| 553 | result := &v1pb.QueryRow{} |
| 554 | for i := 0; i < row.Size(); i++ { |
| 555 | var col spanner.GenericColumnValue |
| 556 | if err := row.Column(i, &col); err != nil { |
| 557 | return nil, err |
| 558 | } |
| 559 | result.Values = append(result.Values, convertSpannerValue(col.Type, col.Value)) |
| 560 | } |
| 561 | |
| 562 | return result, nil |
| 563 | } |
| 564 | |
| 565 | // explainStatement returns the query plan for the given statement as JSON. |
| 566 | func (d *Driver) explainStatement(ctx context.Context, statement string) ([]*v1pb.QueryResult, error) { |
no test coverage detected