| 53 | } |
| 54 | |
| 55 | func TransformDMLToSelect(ctx context.Context, tCtx base.TransformContext, statement string, sourceDatabase string, targetDatabase string, tablePrefix string) ([]base.BackupStatement, error) { |
| 56 | var dbMetadata *model.DatabaseMetadata |
| 57 | if tCtx.GetDatabaseMetadataFunc != nil { |
| 58 | _, metadata, err := tCtx.GetDatabaseMetadataFunc(ctx, tCtx.InstanceID, sourceDatabase) |
| 59 | if err == nil { |
| 60 | dbMetadata = metadata |
| 61 | } |
| 62 | } |
| 63 | |
| 64 | statementInfoList, err := prepareTransformation(sourceDatabase, statement, dbMetadata) |
| 65 | if err != nil { |
| 66 | return nil, errors.Wrap(err, "failed to prepare transformation") |
| 67 | } |
| 68 | |
| 69 | return generateSQL(ctx, tCtx, statementInfoList, targetDatabase, tablePrefix) |
| 70 | } |
| 71 | |
| 72 | func prepareTransformation(databaseName, statement string, dbMetadata *model.DatabaseMetadata) ([]StatementInfo, error) { |
| 73 | list, err := SplitSQL(statement) |