From 25b5474cfa8927730ef464d20866e76b9fa427e7 Mon Sep 17 00:00:00 2001 From: Paulo Bittencourt Date: Wed, 14 Sep 2016 10:59:52 -0400 Subject: [PATCH] Add test case for renaming a column and only applying inserts This catches a bug in `sql.BuildDMLInsertQuery` where we we are fetching the insert values using the renamed column's name, and end up fetching the value of the wrong column. The test in `localtests/rename` did not catch this because binlog update events were "correcting" the error, as they follow a different code path that does not contain the bug. --- localtests/rename-inserts-only/create.sql | 22 ++++++++++++++++++++++ localtests/rename-inserts-only/extra_args | 1 + 2 files changed, 23 insertions(+) create mode 100644 localtests/rename-inserts-only/create.sql create mode 100644 localtests/rename-inserts-only/extra_args diff --git a/localtests/rename-inserts-only/create.sql b/localtests/rename-inserts-only/create.sql new file mode 100644 index 0000000..be847ee --- /dev/null +++ b/localtests/rename-inserts-only/create.sql @@ -0,0 +1,22 @@ +drop table if exists gh_ost_test; +create table gh_ost_test ( + id int auto_increment, + c1 int not null, + c2 int not null, + primary key (id) +) auto_increment=1; + +drop event if exists gh_ost_test; +delimiter ;; +create event gh_ost_test + on schedule every 1 second + starts current_timestamp + ends current_timestamp + interval 60 second + on completion not preserve + enable + do +begin + insert into gh_ost_test values (null, 11, 23); + insert into gh_ost_test values (null, 13, 23); + insert into gh_ost_test values (null, rand(), rand()); +end ;; diff --git a/localtests/rename-inserts-only/extra_args b/localtests/rename-inserts-only/extra_args new file mode 100644 index 0000000..d36d5ee --- /dev/null +++ b/localtests/rename-inserts-only/extra_args @@ -0,0 +1 @@ +--alter="change column c2 c3 int not null" --approve-renamed-columns