Documentation ¶
Overview ¶
Package MySQL handles schema and data migrations from MySQL.
Index ¶
- Variables
- func ConvertData(conv *internal.Conv, tableId string, colIds []string, srcSchema schema.Table, ...) (string, []string, []interface{}, error)
- func NodeType(n ast.StmtNode) string
- func ProcessDataRow(conv *internal.Conv, tableId string, colIds []string, srcSchema schema.Table, ...)
- type DbDumpImpl
- type InfoSchemaImpl
- func (isi InfoSchemaImpl) GetColumns(conv *internal.Conv, table common.SchemaAndName, ...) (map[string]schema.Column, []string, error)
- func (isi InfoSchemaImpl) GetConstraints(conv *internal.Conv, table common.SchemaAndName) ([]string, map[string][]string, error)
- func (isi InfoSchemaImpl) GetForeignKeys(conv *internal.Conv, table common.SchemaAndName) (foreignKeys []schema.ForeignKey, err error)
- func (isi InfoSchemaImpl) GetIndexes(conv *internal.Conv, table common.SchemaAndName, ...) ([]schema.Index, error)
- func (isi InfoSchemaImpl) GetRowCount(table common.SchemaAndName) (int64, error)
- func (isi InfoSchemaImpl) GetRowsFromTable(conv *internal.Conv, tableId string) (interface{}, error)
- func (isi InfoSchemaImpl) GetTableName(dbName string, tableName string) string
- func (isi InfoSchemaImpl) GetTables() ([]common.SchemaAndName, error)
- func (isi InfoSchemaImpl) GetToDdl() common.ToDdl
- func (isi InfoSchemaImpl) ProcessData(conv *internal.Conv, tableId string, srcSchema schema.Table, ...) error
- func (isi InfoSchemaImpl) StartChangeDataCapture(ctx context.Context, conv *internal.Conv) (map[string]interface{}, error)
- func (isi InfoSchemaImpl) StartStreamingMigration(ctx context.Context, client *sp.Client, conv *internal.Conv, ...) (internal.DataflowOutput, error)
- type ToDdlImpl
Constants ¶
This section is empty.
Variables ¶
var MysqlSpatialDataTypes = []string{"geometrycollection", "multipoint", "multilinestring", "multipolygon", "point", "linestring", "polygon", "geometry"}
MysqlSpatialDataTypes is an array of all MySQL spatial data types.
Functions ¶
func ConvertData ¶
func ConvertData(conv *internal.Conv, tableId string, colIds []string, srcSchema schema.Table, spSchema ddl.CreateTable, vals []string, additionalAttributes internal.AdditionalDataAttributes) (string, []string, []interface{}, error)
ConvertData maps the source DB data in vals into Spanner data, based on the Spanner and source DB schemas. Note that since entries in vals may be empty, we also return the list of columns (empty cols are dropped).
func ProcessDataRow ¶
func ProcessDataRow(conv *internal.Conv, tableId string, colIds []string, srcSchema schema.Table, spSchema ddl.CreateTable, vals []string, additionalAttributes internal.AdditionalDataAttributes)
ProcessDataRow converts a row of data and writes it out to Spanner. srcTable and srcCols are the source table and columns respectively, and vals contains string data to be converted to appropriate types to send to Spanner. ProcessDataRow is only called in DataMode.
Types ¶
type DbDumpImpl ¶
type DbDumpImpl struct{}
DbDumpImpl MySQL specific implementation for DdlDumpImpl.
func (DbDumpImpl) GetToDdl ¶
func (ddi DbDumpImpl) GetToDdl() common.ToDdl
GetToDdl function below implement the common.DbDump interface.
func (DbDumpImpl) ProcessDump ¶
ProcessDump processes the mysql dump.
type InfoSchemaImpl ¶
type InfoSchemaImpl struct { DbName string Db *sql.DB SourceProfile profiles.SourceProfile TargetProfile profiles.TargetProfile }
InfoSchemaImpl is MySQL specific implementation for InfoSchema.
func (InfoSchemaImpl) GetColumns ¶
func (isi InfoSchemaImpl) GetColumns(conv *internal.Conv, table common.SchemaAndName, constraints map[string][]string, primaryKeys []string) (map[string]schema.Column, []string, error)
GetColumns returns a list of Column objects and names// ProcessColumns
func (InfoSchemaImpl) GetConstraints ¶
func (isi InfoSchemaImpl) GetConstraints(conv *internal.Conv, table common.SchemaAndName) ([]string, map[string][]string, error)
GetConstraints returns a list of primary keys and by-column map of other constraints. Note: we need to preserve ordinal order of columns in primary key constraints. Note that foreign key constraints are handled in getForeignKeys.
func (InfoSchemaImpl) GetForeignKeys ¶
func (isi InfoSchemaImpl) GetForeignKeys(conv *internal.Conv, table common.SchemaAndName) (foreignKeys []schema.ForeignKey, err error)
GetForeignKeys return list all the foreign keys constraints. MySQL supports cross-database foreign key constraints. We ignore them because the Spanner migration tool works database at a time (a specific run of the Spanner migration tool focuses on a specific database) and so we can't handle them effectively.
func (InfoSchemaImpl) GetIndexes ¶
func (isi InfoSchemaImpl) GetIndexes(conv *internal.Conv, table common.SchemaAndName, colNameIdMap map[string]string) ([]schema.Index, error)
GetIndexes return a list of all indexes for the specified table.
func (InfoSchemaImpl) GetRowCount ¶
func (isi InfoSchemaImpl) GetRowCount(table common.SchemaAndName) (int64, error)
GetRowCount with number of rows in each table.
func (InfoSchemaImpl) GetRowsFromTable ¶
func (isi InfoSchemaImpl) GetRowsFromTable(conv *internal.Conv, tableId string) (interface{}, error)
GetRowsFromTable returns a sql Rows object for a table.
func (InfoSchemaImpl) GetTableName ¶
func (isi InfoSchemaImpl) GetTableName(dbName string, tableName string) string
GetTableName returns table name.
func (InfoSchemaImpl) GetTables ¶
func (isi InfoSchemaImpl) GetTables() ([]common.SchemaAndName, error)
GetTables return list of tables in the selected database. Note that sql.DB already effectively has the dbName embedded within it (dbName is part of the DSN passed to sql.Open), but unfortunately there is no way to extract it from sql.DB.
func (InfoSchemaImpl) GetToDdl ¶
func (isi InfoSchemaImpl) GetToDdl() common.ToDdl
GetToDdl implement the common.InfoSchema interface.
func (InfoSchemaImpl) ProcessData ¶
func (isi InfoSchemaImpl) ProcessData(conv *internal.Conv, tableId string, srcSchema schema.Table, commonColIds []string, spSchema ddl.CreateTable, additionalAttributes internal.AdditionalDataAttributes) error
ProcessData performs data conversion for source database.
func (InfoSchemaImpl) StartChangeDataCapture ¶
func (isi InfoSchemaImpl) StartChangeDataCapture(ctx context.Context, conv *internal.Conv) (map[string]interface{}, error)
StartChangeDataCapture is used for automatic triggering of Datastream job when performing a streaming migration.
func (InfoSchemaImpl) StartStreamingMigration ¶
func (isi InfoSchemaImpl) StartStreamingMigration(ctx context.Context, client *sp.Client, conv *internal.Conv, streamingInfo map[string]interface{}) (internal.DataflowOutput, error)
StartStreamingMigration is used for automatic triggering of Dataflow job when performing a streaming migration.
type ToDdlImpl ¶
type ToDdlImpl struct { }
ToDdlImpl MySQL specific implementation for ToDdl.
func (ToDdlImpl) ToSpannerType ¶
func (tdi ToDdlImpl) ToSpannerType(conv *internal.Conv, spType string, srcType schema.Type) (ddl.Type, []internal.SchemaIssue)
ToSpannerType maps a scalar source schema type (defined by id and mods) into a Spanner type. This is the core source-to-Spanner type mapping. toSpannerType returns the Spanner type and a list of type conversion issues encountered. Functions below implement the common.ToDdl interface