| 46 | } |
| 47 | |
| 48 | func TransformDMLToSelect(ctx context.Context, tCtx base.TransformContext, statement string, sourceDatabase string, targetDatabase string, tablePrefix string) ([]base.BackupStatement, error) { |
| 49 | var dbMetadata *model.DatabaseMetadata |
| 50 | if tCtx.GetDatabaseMetadataFunc != nil { |
| 51 | _, metadata, err := tCtx.GetDatabaseMetadataFunc(ctx, tCtx.InstanceID, sourceDatabase) |
| 52 | if err == nil { |
| 53 | dbMetadata = metadata |
| 54 | } |
| 55 | } |
| 56 | |
| 57 | statementInfoList, err := prepareTransformation(sourceDatabase, statement, dbMetadata, tCtx.IsCaseSensitive) |
| 58 | if err != nil { |
| 59 | return nil, errors.Wrap(err, "failed to prepare transformation") |
| 60 | } |
| 61 | |
| 62 | return generateSQL(ctx, tCtx, statementInfoList, targetDatabase, tablePrefix) |
| 63 | } |
| 64 | |
| 65 | func prepareTransformation(databaseName, statement string, dbMetadata *model.DatabaseMetadata, isCaseSensitive bool) ([]statementInfo, error) { |
| 66 | list, err := SplitSQL(statement) |