Skip to content

Commit

Permalink
Online DDL: ensure requested_timestamp isn't zero, before initializin…
Browse files Browse the repository at this point in the history
…g table schema (#12263)

Signed-off-by: Shlomi Noach <[email protected]>
  • Loading branch information
shlomi-noach authored Mar 27, 2023
1 parent cf41ae7 commit ca73cab
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions go/vt/vttablet/onlineddl/schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,12 @@ const (
AND cleanup_timestamp IS NULL
AND completed_timestamp IS NULL
`
sqlFixRequestedTimestamp = `UPDATE _vt.schema_migrations
SET
requested_timestamp = added_timestamp
WHERE
requested_timestamp < added_timestamp;
`
sqlSelectMigration = `SELECT
id,
migration_uuid,
Expand Down Expand Up @@ -612,6 +618,13 @@ var (
var ApplyDDL = []string{
sqlCreateSidecarDB,
sqlCreateSchemaMigrationsTable,
// Fixing a historical issue: past values of requested_timestamp could be '0000-00-00 00:00:00'.
// In turn, those cause `ERROR 1292 (22007): Incorrect datetime value` when attempting to
// make any DDL on the table.
// We trust added_timestamp to be non-zero (it defaults CURRENT_TIMESTAMP and never modified),
// and so we set requested_timestamp to that value.
// The query makes a full table scan, because neither column is indexed.
sqlFixRequestedTimestamp, // end of fix
alterSchemaMigrationsTableRetries,
alterSchemaMigrationsTableTablet,
alterSchemaMigrationsTableArtifacts,
Expand Down

0 comments on commit ca73cab

Please sign in to comment.