getDatabases gets all databases of an instance.
(ctx context.Context)
| 722 | |
| 723 | // getDatabases gets all databases of an instance. |
| 724 | func (d *Driver) getDatabases(ctx context.Context) ([]*storepb.DatabaseSchemaMetadata, error) { |
| 725 | consumerDatabases := make(map[string]bool) |
| 726 | dsRows, err := d.db.QueryContext(ctx, ` |
| 727 | SELECT consumer_database FROM SVV_DATASHARES WHERE share_type = 'INBOUND'; |
| 728 | `) |
| 729 | if err != nil { |
| 730 | return nil, err |
| 731 | } |
| 732 | defer dsRows.Close() |
| 733 | |
| 734 | for dsRows.Next() { |
| 735 | var v string |
| 736 | if err := dsRows.Scan(&v); err != nil { |
| 737 | return nil, err |
| 738 | } |
| 739 | consumerDatabases[v] = true |
| 740 | } |
| 741 | if err := dsRows.Err(); err != nil { |
| 742 | return nil, err |
| 743 | } |
| 744 | |
| 745 | var databases []*storepb.DatabaseSchemaMetadata |
| 746 | rows, err := d.db.QueryContext(ctx, ` |
| 747 | SELECT datname, |
| 748 | pg_encoding_to_char(encoding) |
| 749 | FROM pg_database; |
| 750 | `) |
| 751 | if err != nil { |
| 752 | return nil, err |
| 753 | } |
| 754 | defer rows.Close() |
| 755 | |
| 756 | for rows.Next() { |
| 757 | database := storepb.DatabaseSchemaMetadata{} |
| 758 | if err := rows.Scan(&database.Name, &database.CharacterSet); err != nil { |
| 759 | return nil, err |
| 760 | } |
| 761 | database.Datashare = consumerDatabases[database.Name] |
| 762 | databases = append(databases, &database) |
| 763 | } |
| 764 | if err := rows.Err(); err != nil { |
| 765 | return nil, err |
| 766 | } |
| 767 | return databases, nil |
| 768 | } |
no test coverage detected