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

Method SyncInstance

backend/plugin/db/tidb/sync.go:55–115  ·  view source on GitHub ↗

SyncInstance syncs the instance.

(ctx context.Context)

Source from the content-addressed store, hash-verified

53
54// SyncInstance syncs the instance.
55func (d *Driver) SyncInstance(ctx context.Context) (*db.InstanceMetadata, error) {
56 version, err := d.getVersion(ctx)
57 if err != nil {
58 return nil, err
59 }
60
61 var lowerCaseTableNames int32
62 lowerCaseTableNamesText, err := d.getServerVariable(ctx, "lower_case_table_names")
63 if err != nil {
64 slog.Debug("failed to get lower_case_table_names variable", log.BBError(err))
65 } else {
66 v, err := strconv.ParseInt(lowerCaseTableNamesText, 10, 32)
67 if err != nil {
68 slog.Debug("failed to parse lower_case_table_names variable", log.BBError(err))
69 } else {
70 lowerCaseTableNames = int32(v)
71 }
72 }
73
74 instanceRoles := d.getInstanceRoles(ctx)
75
76 // Query db info
77 where := fmt.Sprintf("LOWER(SCHEMA_NAME) NOT IN (%s)", systemDatabaseClause)
78 query := `
79 SELECT
80 SCHEMA_NAME,
81 DEFAULT_CHARACTER_SET_NAME,
82 DEFAULT_COLLATION_NAME
83 FROM information_schema.SCHEMATA
84 WHERE ` + where
85 rows, err := d.db.QueryContext(ctx, query)
86 if err != nil {
87 return nil, util.FormatErrorWithQuery(err, query)
88 }
89 defer rows.Close()
90
91 var databases []*storepb.DatabaseSchemaMetadata
92 for rows.Next() {
93 database := &storepb.DatabaseSchemaMetadata{}
94 if err := rows.Scan(
95 &database.Name,
96 &database.CharacterSet,
97 &database.Collation,
98 ); err != nil {
99 return nil, err
100 }
101 databases = append(databases, database)
102 }
103 if err := rows.Err(); err != nil {
104 return nil, err
105 }
106
107 return &db.InstanceMetadata{
108 Version: version,
109 Databases: databases,
110 Metadata: &storepb.Instance{
111 MysqlLowerCaseTableNames: lowerCaseTableNames,
112 Roles: instanceRoles,

Callers

nothing calls this directly

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 10

getVersionMethod · 0.95
getServerVariableMethod · 0.95
getInstanceRolesMethod · 0.95
BBErrorFunction · 0.92
FormatErrorWithQueryFunction · 0.92
DebugMethod · 0.80
QueryContextMethod · 0.80
ScanMethod · 0.80
CloseMethod · 0.65
NextMethod · 0.45

Tested by

no test coverage detected