(ctx context.Context, session *Session)
| 509 | } |
| 510 | |
| 511 | func (s *ShowTablesStatement) Execute(ctx context.Context, session *Session) (*Result, error) { |
| 512 | if session.InReadWriteTransaction() { |
| 513 | // INFORMATION_SCHEMA can not be used in read-write transaction. |
| 514 | // https://cloud.google.com/spanner/docs/information-schema |
| 515 | return nil, errors.New(`"SHOW TABLES" can not be used in a read-write transaction`) |
| 516 | } |
| 517 | |
| 518 | alias := fmt.Sprintf("Tables_in_%s", session.databaseId) |
| 519 | stmt := spanner.NewStatement(fmt.Sprintf("SELECT t.TABLE_NAME AS `%s` FROM INFORMATION_SCHEMA.TABLES AS t WHERE t.TABLE_CATALOG = '' and t.TABLE_SCHEMA = @schema", alias)) |
| 520 | stmt.Params["schema"] = s.Schema |
| 521 | |
| 522 | iter, _ := session.RunQuery(ctx, stmt) |
| 523 | defer iter.Stop() |
| 524 | |
| 525 | rows, columnNames, err := parseQueryResult(iter) |
| 526 | if err != nil { |
| 527 | return nil, err |
| 528 | } |
| 529 | |
| 530 | return &Result{ |
| 531 | ColumnNames: columnNames, |
| 532 | Rows: rows, |
| 533 | AffectedRows: len(rows), |
| 534 | }, nil |
| 535 | } |
| 536 | |
| 537 | type ExplainStatement struct { |
| 538 | Explain string |
nothing calls this directly
no test coverage detected