MCPcopy Index your code
hub / github.com/bytebase/bytebase / SyncInstance

Method SyncInstance

backend/plugin/db/oracle/sync.go:28–76  ·  view source on GitHub ↗

SyncInstance syncs the instance.

(ctx context.Context)

Source from the content-addressed store, hash-verified

26
27// SyncInstance syncs the instance.
28func (d *Driver) SyncInstance(ctx context.Context) (*db.InstanceMetadata, error) {
29 var fullVersion string
30 queryVersion := "SELECT BANNER FROM v$version WHERE banner LIKE 'Oracle%'"
31 if err := d.db.QueryRowContext(ctx, queryVersion).Scan(&fullVersion); err != nil {
32 return nil, util.FormatErrorWithQuery(err, queryVersion)
33 }
34 tokens := strings.Fields(fullVersion)
35 var version, canonicalVersion string
36 for _, token := range tokens {
37 if semVersionRegex.MatchString(token) {
38 version = token
39 continue
40 }
41 if canonicalVersionRegex.MatchString(token) {
42 canonicalVersion = token
43 continue
44 }
45 }
46 if canonicalVersion != "" {
47 version = fmt.Sprintf("%s (%s)", version, canonicalVersion)
48 }
49
50 txn, err := d.db.BeginTx(ctx, nil)
51 if err != nil {
52 return nil, err
53 }
54 defer txn.Rollback()
55
56 schemas, err := getSchemas(txn)
57 if err != nil {
58 return nil, errors.Wrapf(err, "failed to get schemas from database %q", d.databaseName)
59 }
60 var databases []*storepb.DatabaseSchemaMetadata
61 for _, schema := range schemas {
62 databases = append(databases, &storepb.DatabaseSchemaMetadata{
63 Name: schema,
64 ServiceName: "",
65 })
66 }
67
68 if err := txn.Commit(); err != nil {
69 return nil, err
70 }
71
72 return &db.InstanceMetadata{
73 Version: version,
74 Databases: databases,
75 }, nil
76}
77
78// SyncDBSchema syncs a single database schema.
79func (d *Driver) SyncDBSchema(ctx context.Context) (*storepb.DatabaseSchemaMetadata, error) {

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 3

FormatErrorWithQueryFunction · 0.92
ScanMethod · 0.80
getSchemasFunction · 0.70

Tested by

no test coverage detected