From ca73cabc446fcd04620735be7a5a14fe7d608e07 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Mon, 27 Mar 2023 14:50:06 +0300 Subject: [PATCH] Online DDL: ensure requested_timestamp isn't zero, before initializing table schema (#12263) Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vttablet/onlineddl/schema.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/go/vt/vttablet/onlineddl/schema.go b/go/vt/vttablet/onlineddl/schema.go index 3022b3736bc..cbae743ac7f 100644 --- a/go/vt/vttablet/onlineddl/schema.go +++ b/go/vt/vttablet/onlineddl/schema.go @@ -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, @@ -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,