MCPcopy Create free account
hub / github.com/bytebase/bytebase / getDatashareTableColumns

Method getDatashareTableColumns

backend/plugin/db/redshift/sync.go:454–503  ·  view source on GitHub ↗

getDatashareTableColumns gets the columns of tables in datashare database.

(txn *sql.Tx)

Source from the content-addressed store, hash-verified

452
453// getDatashareTableColumns gets the columns of tables in datashare database.
454func (d *Driver) getDatashareTableColumns(txn *sql.Tx) (map[db.TableKey][]*storepb.ColumnMetadata, error) {
455 columnsMap := make(map[db.TableKey][]*storepb.ColumnMetadata)
456
457 query := `
458 SELECT
459 schema_name,
460 table_name,
461 column_name,
462 data_type,
463 ordinal_position,
464 column_default,
465 is_nullable,
466 character_maximum_length
467 FROM SVV_ALL_COLUMNS
468 WHERE database_name = $1;`
469 rows, err := txn.Query(query, d.databaseName)
470 if err != nil {
471 return nil, err
472 }
473 defer rows.Close()
474 for rows.Next() {
475 column := &storepb.ColumnMetadata{}
476 var schemaName, tableName, nullable string
477 var defaultStr sql.NullString
478 var varcharMaxLength sql.NullInt32
479 if err := rows.Scan(&schemaName, &tableName, &column.Name, &column.Type, &column.Position, &defaultStr, &nullable, &varcharMaxLength); err != nil {
480 return nil, err
481 }
482 if defaultStr.Valid {
483 // Store in Default field (migration from DefaultExpression to Default)
484 column.Default = defaultStr.String
485 }
486 isNullBool, err := util.ConvertYesNo(nullable)
487 if err != nil {
488 return nil, err
489 }
490 column.Nullable = isNullBool
491 if column.Type == "character varying" && varcharMaxLength.Valid {
492 column.Type = fmt.Sprintf("varchar(%d)", varcharMaxLength.Int32)
493 }
494
495 key := db.TableKey{Schema: schemaName, Table: tableName}
496 columnsMap[key] = append(columnsMap[key], column)
497 }
498 if err := rows.Err(); err != nil {
499 return nil, err
500 }
501
502 return columnsMap, nil
503}
504
505// getViews gets all views of a database.
506func getViews(txn *sql.Tx, columnMap map[db.TableKey][]*storepb.ColumnMetadata) (map[string][]*storepb.ViewMetadata, error) {

Callers 1

getDatashareTablesMethod · 0.95

Implementers 15

MockDriverbackend/plugin/advisor/utils_for_tests
Driverbackend/plugin/db/bigquery/bigquery.go
Driverbackend/plugin/db/mongodb/mongodb.go
Driverbackend/plugin/db/trino/trino.go
Driverbackend/plugin/db/redshift/redshift.go
Driverbackend/plugin/db/oracle/oracle.go
Driverbackend/plugin/db/dynamodb/dynamodb.go
Driverbackend/plugin/db/cosmosdb/cosmosdb.go
Driverbackend/plugin/db/spanner/spanner.go
Driverbackend/plugin/db/mssql/mssql.go
Driverbackend/plugin/db/mysql/mysql.go
Driverbackend/plugin/db/pg/pg.go

Calls 5

ConvertYesNoFunction · 0.92
ScanMethod · 0.80
QueryMethod · 0.65
CloseMethod · 0.65
NextMethod · 0.45

Tested by

no test coverage detected