Execute processes `DESCRIBE` statement for queries and DMLs.
(ctx context.Context, session *Session)
| 573 | |
| 574 | // Execute processes `DESCRIBE` statement for queries and DMLs. |
| 575 | func (s *DescribeStatement) Execute(ctx context.Context, session *Session) (*Result, error) { |
| 576 | _, timestamp, metadata, err := runAnalyzeQuery(ctx, session, spanner.NewStatement(s.Statement), s.IsDML) |
| 577 | if err != nil { |
| 578 | return nil, err |
| 579 | } |
| 580 | |
| 581 | var rows []Row |
| 582 | for _, field := range metadata.GetRowType().GetFields() { |
| 583 | rows = append(rows, Row{Columns: []string{field.GetName(), formatTypeVerbose(field.GetType())}}) |
| 584 | } |
| 585 | |
| 586 | result := &Result{ |
| 587 | AffectedRows: len(rows), |
| 588 | ColumnNames: describeColumnNames, |
| 589 | Timestamp: timestamp, |
| 590 | Rows: rows, |
| 591 | } |
| 592 | |
| 593 | return result, nil |
| 594 | } |
| 595 | |
| 596 | func runAnalyzeQuery(ctx context.Context, session *Session, stmt spanner.Statement, isDML bool) (queryPlan *pb.QueryPlan, commitTimestamp time.Time, metadata *pb.ResultSetMetadata, err error) { |
| 597 | if !isDML { |
nothing calls this directly
no test coverage detected