Consolidate fetching of MySQL server info #1229
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR consolidates the many queries and functions that fetch MySQL server runtime configuration into a single struct and function:
mysql.ServerInfoandmysql.GetServerInfo(...) (*ServerInfo, error)respectively. This reduces the server-info-related MySQL queries from6->2Now server information for both the applier and inspector are stored in the migration context as single structs
Notes:
@@global.portand@@global.extra_portareNULLagosql.NullInt64was used when cleaning upbase.ValidateConnection(...)Portfrommysql.InstanceKeyto becomeint64as there is nogosql.NullIntbase.ValidateConnection(...)on the applier'sthis.singletonDBdatabase handle as it is the same host as the already-validatedthis.dbhandleApplier initiated on %+v, version %+vlog-lines now include the@@global.version_comment(in brackets) for more infobase.ValidateConnection(...)now that it takes inserverInfo *mysql.ServerInfovs a harder-to-testdb *sql.DBmigrationContext.RequiresBinlogFormatChange(...)to inspector because it's never called outside of inspector.validateAndReadTimeZone()func from applierscript/cibuildreturns with no formatting errors, build errors or unit test errors.