getDatashareTables gets all tables of a datashare database.
(txn *sql.Tx)
| 412 | |
| 413 | // getDatashareTables gets all tables of a datashare database. |
| 414 | func (d *Driver) getDatashareTables(txn *sql.Tx) (map[string][]*storepb.TableMetadata, error) { |
| 415 | columnMap, err := d.getDatashareTableColumns(txn) |
| 416 | if err != nil { |
| 417 | return nil, errors.Wrap(err, "failed to get table columns") |
| 418 | } |
| 419 | |
| 420 | tableMap := make(map[string][]*storepb.TableMetadata) |
| 421 | |
| 422 | // table_type |
| 423 | query := ` |
| 424 | SELECT |
| 425 | schema_name, |
| 426 | table_name |
| 427 | FROM SVV_ALL_TABLES |
| 428 | WHERE database_name = $1;` |
| 429 | rows, err := txn.Query(query, d.databaseName) |
| 430 | if err != nil { |
| 431 | return nil, err |
| 432 | } |
| 433 | defer rows.Close() |
| 434 | |
| 435 | for rows.Next() { |
| 436 | table := &storepb.TableMetadata{} |
| 437 | var schemaName string |
| 438 | if err := rows.Scan(&schemaName, &table.Name); err != nil { |
| 439 | return nil, err |
| 440 | } |
| 441 | key := db.TableKey{Schema: schemaName, Table: table.Name} |
| 442 | table.Columns = columnMap[key] |
| 443 | |
| 444 | tableMap[schemaName] = append(tableMap[schemaName], table) |
| 445 | } |
| 446 | if err := rows.Err(); err != nil { |
| 447 | return nil, err |
| 448 | } |
| 449 | |
| 450 | return tableMap, nil |
| 451 | } |
| 452 | |
| 453 | // getDatashareTableColumns gets the columns of tables in datashare database. |
| 454 | func (d *Driver) getDatashareTableColumns(txn *sql.Tx) (map[db.TableKey][]*storepb.ColumnMetadata, error) { |
no test coverage detected