From 671fc71067fe8d50730eae0580ee42e2481bc877 Mon Sep 17 00:00:00 2001 From: Paulo Bittencourt Date: Tue, 13 Sep 2016 13:58:52 -0400 Subject: [PATCH] Add test case for altering a column's charset This catches a bug in `sql.BuildDMLInsertQuery` where we are using the target column's Charset to drive the value conversion. In the case where we are altering the charset, the Charset used for conversion will be different than the original column's charset, resulting in an erroneous conversion. --- localtests/alter-charset/create.sql | 23 +++++++++++++++++++++++ localtests/alter-charset/extra_args | 1 + 2 files changed, 24 insertions(+) create mode 100644 localtests/alter-charset/create.sql create mode 100644 localtests/alter-charset/extra_args diff --git a/localtests/alter-charset/create.sql b/localtests/alter-charset/create.sql new file mode 100644 index 0000000..e2861d1 --- /dev/null +++ b/localtests/alter-charset/create.sql @@ -0,0 +1,23 @@ +drop table if exists gh_ost_test; +create table gh_ost_test ( + id int auto_increment, + t varchar(128) charset latin1 collate latin1_swedish_ci, + tutf8 varchar(128) charset utf8, + tutf8mb4 varchar(128) charset utf8mb4, + 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, md5(rand()), md5(rand()), md5(rand())); + insert into gh_ost_test values (null, 'átesting', 'átesting', 'átesting'); + insert into gh_ost_test values (null, 'testátest', 'testátest', '🍻😀'); +end ;; diff --git a/localtests/alter-charset/extra_args b/localtests/alter-charset/extra_args new file mode 100644 index 0000000..29e526e --- /dev/null +++ b/localtests/alter-charset/extra_args @@ -0,0 +1 @@ +--alter='MODIFY `t` varchar(128) CHARACTER SET utf8mb4 NOT NULL'