SyncInstance syncs the instance.
(ctx context.Context)
| 36 | |
| 37 | // SyncInstance syncs the instance. |
| 38 | func (d *Driver) SyncInstance(ctx context.Context) (*db.InstanceMetadata, error) { |
| 39 | version, _, err := d.getVersion(ctx) |
| 40 | if err != nil { |
| 41 | return nil, err |
| 42 | } |
| 43 | |
| 44 | var lowerCaseTableNames int32 |
| 45 | lowerCaseTableNamesText, err := d.getServerVariable(ctx, "lower_case_table_names") |
| 46 | if err != nil { |
| 47 | slog.Debug("failed to get lower_case_table_names variable", log.BBError(err)) |
| 48 | } else { |
| 49 | v, err := strconv.ParseInt(lowerCaseTableNamesText, 10, 32) |
| 50 | if err != nil { |
| 51 | slog.Debug("failed to parse lower_case_table_names variable", log.BBError(err)) |
| 52 | } else { |
| 53 | lowerCaseTableNames = int32(v) |
| 54 | } |
| 55 | } |
| 56 | |
| 57 | // Query db info |
| 58 | where := fmt.Sprintf("LOWER(SCHEMA_NAME) NOT IN (%s)", d.systemDatabaseExclusion()) |
| 59 | query := ` |
| 60 | SELECT |
| 61 | SCHEMA_NAME, |
| 62 | DEFAULT_CHARACTER_SET_NAME, |
| 63 | DEFAULT_COLLATION_NAME |
| 64 | FROM information_schema.SCHEMATA |
| 65 | WHERE ` + where |
| 66 | rows, err := d.db.QueryContext(ctx, query) |
| 67 | if err != nil { |
| 68 | return nil, util.FormatErrorWithQuery(err, query) |
| 69 | } |
| 70 | defer rows.Close() |
| 71 | |
| 72 | var databases []*storepb.DatabaseSchemaMetadata |
| 73 | for rows.Next() { |
| 74 | database := &storepb.DatabaseSchemaMetadata{} |
| 75 | if err := rows.Scan( |
| 76 | &database.Name, |
| 77 | &database.CharacterSet, |
| 78 | &database.Collation, |
| 79 | ); err != nil { |
| 80 | return nil, err |
| 81 | } |
| 82 | if d.dbType == storepb.Engine_DORIS || d.dbType == storepb.Engine_STARROCKS { |
| 83 | database.CharacterSet = "" |
| 84 | database.Collation = "" |
| 85 | } |
| 86 | databases = append(databases, database) |
| 87 | } |
| 88 | if err := rows.Err(); err != nil { |
| 89 | return nil, err |
| 90 | } |
| 91 | |
| 92 | return &db.InstanceMetadata{ |
| 93 | Version: version, |
| 94 | Databases: databases, |
| 95 | Metadata: &storepb.Instance{ |
nothing calls this directly
no test coverage detected