# check 0x00 padding create table t1 (s1 binary(3)); insert into t1 values (0x61), (0x6120), (0x612020); select hex(s1) from t1; drop table t1; # check that 0x00 is not stripped in val_str create table t1 (s1 binary(2), s2 varbinary(2)); insert into t1 values (0x4100,0x4100); select length(concat('*',s1,'*',s2,'*')) from t1; delete from t1; insert into t1 values (0x4120,0x4120); select length(concat('*',s1,'*',s2,'*')) from t1; drop table t1; # check that trailing 0x00 and 0x20 do matter on comparison create table t1 (s1 varbinary(20), s2 varbinary(20)); show create table t1; insert into t1 values (0x41,0x4100),(0x41,0x4120),(0x4100,0x4120); select hex(s1), hex(s2) from t1; select count(*) from t1 where s1 < s2; drop table t1; # check that trailing 0x00 do matter on filesort create table t1 (s1 varbinary(2), s2 varchar(1)); insert into t1 values (0x41,'a'), (0x4100,'b'), (0x41,'c'), (0x4100,'d'); select hex(s1),s2 from t1 order by s1,s2; drop table t1; # check that 0x01 is padded to 0x0100 and thus we get a duplicate value create table t1 (s1 binary(2) primary key); insert into t1 values (0x01); insert into t1 values (0x0120); --error ER_DUP_ENTRY insert into t1 values (0x0100); select hex(s1) from t1 order by s1; # check index search select hex(s1) from t1 where s1=0x01; select hex(s1) from t1 where s1=0x0120; select hex(s1) from t1 where s1=0x0100; select count(distinct s1) from t1; alter table t1 drop primary key; # check non-indexed search select hex(s1) from t1 where s1=0x01; select hex(s1) from t1 where s1=0x0120; select hex(s1) from t1 where s1=0x0100; select count(distinct s1) from t1; drop table t1; # check that 0x01 is not padded, and all three values are unique create table t1 (s1 varbinary(2) primary key); insert into t1 values (0x01); insert into t1 values (0x0120); insert into t1 values (0x0100); select hex(s1) from t1 order by s1; # check index search select hex(s1) from t1 where s1=0x01; select hex(s1) from t1 where s1=0x0120; select hex(s1) from t1 where s1=0x0100; select count(distinct s1) from t1; alter table t1 drop primary key; # check non-indexed search select hex(s1) from t1 where s1=0x01; select hex(s1) from t1 where s1=0x0120; select hex(s1) from t1 where s1=0x0100; select count(distinct s1) from t1; drop table t1; # check that cast appends trailing zeros select hex(cast(0x10 as binary(2))); # # Bug #14299: BINARY space truncation should cause warning or error # create table t1 (b binary(2), vb varbinary(2)); insert into t1 values(0x4120, 0x4120); insert ignore into t1 values(0x412020, 0x412020); drop table t1; create table t1 (c char(2), vc varchar(2)); insert into t1 values(0x4120, 0x4120); insert into t1 values(0x412020, 0x412020); drop table t1; set @old_sql_mode= @@sql_mode, sql_mode= 'traditional'; create table t1 (b binary(2), vb varbinary(2)); insert into t1 values(0x4120, 0x4120); --error ER_DATA_TOO_LONG insert into t1 values(0x412020, NULL); --error ER_DATA_TOO_LONG insert into t1 values(NULL, 0x412020); drop table t1; set @@sql_mode= @old_sql_mode; # # Bug#14171: Wrong default value for a BINARY field # create table t1(f1 int, f2 binary(2) not null, f3 char(2) not null); insert ignore into t1 set f1=1; select hex(f2), hex(f3) from t1; drop table t1; --echo End of 5.0 tests --echo # --echo # Start of 10.0 tests --echo # --echo # --echo # MDEV-8472 BINARY, VARBINARY and BLOB return different warnings on CAST to DECIMAL --echo # SET NAMES utf8; CREATE TABLE t1 (a BINARY(30)); INSERT INTO t1 VALUES ('1äÖüß@µ*$'); SELECT CAST(a AS DECIMAL) FROM t1; DROP TABLE t1; CREATE TABLE t1 (a VARBINARY(30)); INSERT INTO t1 VALUES ('1äÖüß@µ*$'); SELECT CAST(a AS DECIMAL) FROM t1; DROP TABLE t1; CREATE TABLE t1 (a BLOB); INSERT INTO t1 VALUES ('1äÖüß@µ*$'); SELECT CAST(a AS DECIMAL) FROM t1; DROP TABLE t1; --echo # --echo # End of 10.0 tests --echo # --echo # --echo # Start of 10.5 tests --echo # --echo # --echo # MDEV-20818 ER_CRASHED_ON_USAGE or Assertion `length <= column->length' failed in write_block_record on temporary table --echo # CREATE TABLE t1 (a VARCHAR(39)); --enable_metadata SELECT CAST(a AS BINARY(0)), CAST(a AS BINARY(1)), CAST(a AS BINARY(16)), CAST(a AS BINARY(255)), CAST(a AS BINARY(256)), CAST(a AS BINARY(512)), CAST(a AS BINARY(513)), CAST(a AS BINARY(65532)), CAST(a AS BINARY(65533)), CAST(a AS BINARY(65534)), CAST(a AS BINARY(65535)), CAST(a AS BINARY(65536)), CAST(a AS BINARY(16777215)), CAST(a AS BINARY(16777216)) FROM t1; --disable_metadata DROP TABLE t1;