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

Method SyncInstance

backend/plugin/db/mysql/sync.go:61–121  ·  view source on GitHub ↗

SyncInstance syncs the instance.

(ctx context.Context)

Source from the content-addressed store, hash-verified

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