Browse Source
Bug#20095 Changing length of VARCHAR field with UTF8 collation does not truncate values
Bug#20095 Changing length of VARCHAR field with UTF8 collation does not truncate values
Problem: single byte do_varstring1() function was called, which didn't check limit on "number of character", and checked only "number of bytes". Fix: adding a multi-byte aware function do_varstring1_mb(), to limit on "number of characters" mysql-test/r/ctype_utf8.result: Adding test case mysql-test/t/ctype_utf8.test: Adding test case sql/field_conv.cc: Adding missing function to copy VARCHAR strings having one length byte.pull/374/head
5 changed files with 181 additions and 2 deletions
-
35mysql-test/r/bdb_notembedded.result
-
43mysql-test/r/ctype_utf8.result
-
38mysql-test/t/bdb_notembedded.test
-
35mysql-test/t/ctype_utf8.test
-
32sql/field_conv.cc
@ -0,0 +1,35 @@ |
|||
set autocommit=1; |
|||
reset master; |
|||
create table bug16206 (a int); |
|||
insert into bug16206 values(1); |
|||
start transaction; |
|||
insert into bug16206 values(2); |
|||
commit; |
|||
show binlog events; |
|||
Log_name Pos Event_type Server_id End_log_pos Info |
|||
f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4 |
|||
f n Query 1 n use `test`; create table bug16206 (a int) |
|||
f n Query 1 n use `test`; insert into bug16206 values(1) |
|||
f n Query 1 n use `test`; insert into bug16206 values(2) |
|||
drop table bug16206; |
|||
reset master; |
|||
create table bug16206 (a int) engine= bdb; |
|||
insert into bug16206 values(0); |
|||
insert into bug16206 values(1); |
|||
start transaction; |
|||
insert into bug16206 values(2); |
|||
commit; |
|||
insert into bug16206 values(3); |
|||
show binlog events; |
|||
Log_name Pos Event_type Server_id End_log_pos Info |
|||
f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4 |
|||
f n Query 1 n use `test`; create table bug16206 (a int) engine= bdb |
|||
f n Query 1 n use `test`; insert into bug16206 values(0) |
|||
f n Query 1 n use `test`; insert into bug16206 values(1) |
|||
f n Query 1 n use `test`; BEGIN |
|||
f n Query 1 n use `test`; insert into bug16206 values(2) |
|||
f n Query 1 n use `test`; COMMIT |
|||
f n Query 1 n use `test`; insert into bug16206 values(3) |
|||
drop table bug16206; |
|||
set autocommit=0; |
|||
End of 5.0 tests |
|||
@ -0,0 +1,38 @@ |
|||
-- source include/not_embedded.inc |
|||
-- source include/have_bdb.inc |
|||
|
|||
# |
|||
# Bug #16206: Superfluous COMMIT event in binlog when updating BDB in autocommit mode |
|||
# |
|||
set autocommit=1; |
|||
|
|||
let $VERSION=`select version()`; |
|||
|
|||
reset master; |
|||
create table bug16206 (a int); |
|||
insert into bug16206 values(1); |
|||
start transaction; |
|||
insert into bug16206 values(2); |
|||
commit; |
|||
--replace_result $VERSION VERSION |
|||
--replace_column 1 f 2 n 5 n |
|||
show binlog events; |
|||
drop table bug16206; |
|||
|
|||
reset master; |
|||
create table bug16206 (a int) engine= bdb; |
|||
insert into bug16206 values(0); |
|||
insert into bug16206 values(1); |
|||
start transaction; |
|||
insert into bug16206 values(2); |
|||
commit; |
|||
insert into bug16206 values(3); |
|||
--replace_result $VERSION VERSION |
|||
--replace_column 1 f 2 n 5 n |
|||
show binlog events; |
|||
drop table bug16206; |
|||
|
|||
set autocommit=0; |
|||
|
|||
|
|||
--echo End of 5.0 tests |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue