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

Function doGenerate

backend/plugin/parser/mysql/restore.go:66–98  ·  view source on GitHub ↗
(ctx context.Context, rCtx base.RestoreContext, sqlForComment string, node ast.Node, backupItem *storepb.PriorBackupDetail_Item)

Source from the content-addressed store, hash-verified

64}
65
66func doGenerate(ctx context.Context, rCtx base.RestoreContext, sqlForComment string, node ast.Node, backupItem *storepb.PriorBackupDetail_Item) (string, error) {
67 _, sourceDatabase, err := common.GetInstanceDatabaseID(backupItem.SourceTable.Database)
68 if err != nil {
69 return "", errors.Wrapf(err, "failed to get source database ID for %s", backupItem.SourceTable.Database)
70 }
71 _, targetDatabase, err := common.GetInstanceDatabaseID(backupItem.TargetTable.Database)
72 if err != nil {
73 return "", errors.Wrapf(err, "failed to get target database ID for %s", backupItem.TargetTable.Database)
74 }
75 _, normalColumns, err := classifyColumns(ctx, rCtx.GetDatabaseMetadataFunc, rCtx.ListDatabaseNamesFunc, rCtx.IsCaseSensitive, rCtx.InstanceID, &TableReference{
76 Database: sourceDatabase,
77 Table: backupItem.SourceTable.Table,
78 })
79 if err != nil {
80 return "", errors.Wrapf(err, "failed to classify columns for %s.%s", backupItem.SourceTable.Database, backupItem.SourceTable.Table)
81 }
82
83 var result string
84 switch n := node.(type) {
85 case *ast.DeleteStmt:
86 result = generateDeleteRestore(sourceDatabase, backupItem.SourceTable.Table, targetDatabase, backupItem.TargetTable.Table, normalColumns)
87 case *ast.UpdateStmt:
88 r, err := generateUpdateRestore(ctx, rCtx, n, sourceDatabase, backupItem.SourceTable.Table, targetDatabase, backupItem.TargetTable.Table, normalColumns)
89 if err != nil {
90 return "", err
91 }
92 result = r
93 default:
94 return "", errors.Errorf("unexpected statement type: %T", node)
95 }
96
97 return fmt.Sprintf("/*\nOriginal SQL:\n%s\n*/\n%s", sqlForComment, result), nil
98}
99
100func generateDeleteRestore(originalDatabase, originalTable, backupDatabase, backupTable string, normalColumns []string) string {
101 quotedColumnList := quoteMySQLColumns(normalColumns)

Callers 1

GenerateRestoreSQLFunction · 0.70

Calls 5

GetInstanceDatabaseIDFunction · 0.92
ErrorfMethod · 0.80
classifyColumnsFunction · 0.70
generateDeleteRestoreFunction · 0.70
generateUpdateRestoreFunction · 0.70

Tested by

no test coverage detected