2006-12-22 00:38:34 +01:00
|
|
|
# This test uses chmod, can't be run with root permissions
|
|
|
|
-- source include/not_as_root.inc
|
|
|
|
|
|
|
|
|
2003-01-06 00:48:59 +01:00
|
|
|
# Initialise
|
|
|
|
--disable_warnings
|
|
|
|
drop table if exists t1;
|
|
|
|
--enable_warnings
|
|
|
|
|
2000-12-28 02:56:38 +01:00
|
|
|
#
|
|
|
|
# varbinary as string and number
|
|
|
|
#
|
|
|
|
|
|
|
|
select 0x41,0x41+0,0x41 | 0x7fffffffffffffff | 0,0xffffffffffffffff | 0 ;
|
|
|
|
select 0x31+1,concat(0x31)+1,-0xf;
|
2001-07-04 08:39:58 +02:00
|
|
|
select x'31',X'ffff'+0;
|
2000-12-28 02:56:38 +01:00
|
|
|
|
|
|
|
#
|
|
|
|
# Test of hex constants in WHERE:
|
|
|
|
#
|
|
|
|
|
|
|
|
create table t1 (ID int(8) unsigned zerofill not null auto_increment,UNIQ bigint(21) unsigned zerofill not null,primary key (ID),unique (UNIQ) );
|
|
|
|
insert into t1 set UNIQ=0x38afba1d73e6a18a;
|
|
|
|
insert into t1 set UNIQ=123;
|
2003-10-30 11:57:26 +01:00
|
|
|
explain extended select * from t1 where UNIQ=0x38afba1d73e6a18a;
|
2000-12-28 02:56:38 +01:00
|
|
|
drop table t1;
|
2001-07-04 08:39:58 +02:00
|
|
|
|
|
|
|
#
|
|
|
|
# Test error conditions
|
|
|
|
#
|
|
|
|
--error 1064
|
|
|
|
select x'hello';
|
2001-07-10 14:53:08 +02:00
|
|
|
--error 1054
|
2001-07-04 08:39:58 +02:00
|
|
|
select 0xfg;
|
|
|
|
|
|
|
|
#
|
|
|
|
# Test likely error conditions
|
|
|
|
#
|
|
|
|
create table t1 select 1 as x, 2 as xx;
|
|
|
|
select x,xx from t1;
|
|
|
|
drop table t1;
|
2005-07-28 02:22:47 +02:00
|
|
|
|
|
|
|
# End of 4.1 tests
|
2006-11-09 12:00:27 +01:00
|
|
|
|
|
|
|
#
|
|
|
|
# Bug #19371 VARBINARY() have trailing zeros after upgrade from 4.1
|
|
|
|
#
|
|
|
|
|
|
|
|
# Test with a saved table from 4.1
|
|
|
|
copy_file std_data/bug19371.frm $MYSQLTEST_VARDIR/master-data/test/t1.frm;
|
2006-11-29 23:03:45 +01:00
|
|
|
chmod 0777 $MYSQLTEST_VARDIR/master-data/test/t1.frm;
|
2006-11-09 12:00:27 +01:00
|
|
|
copy_file std_data/bug19371.MYD $MYSQLTEST_VARDIR/master-data/test/t1.MYD;
|
2006-11-29 23:03:45 +01:00
|
|
|
chmod 0777 $MYSQLTEST_VARDIR/master-data/test/t1.MYD;
|
2006-11-09 12:00:27 +01:00
|
|
|
copy_file std_data/bug19371.MYI $MYSQLTEST_VARDIR/master-data/test/t1.MYI;
|
2006-11-29 23:03:45 +01:00
|
|
|
chmod 0777 $MYSQLTEST_VARDIR/master-data/test/t1.MYI;
|
2006-11-09 12:00:27 +01:00
|
|
|
|
|
|
|
# Everything _looks_ fine
|
|
|
|
show create table t1;
|
|
|
|
|
|
|
|
# But the length of the varbinary columns are too long
|
|
|
|
select length(a), length(b) from t1;
|
|
|
|
|
|
|
|
# Run CHECK TABLE, it should indicate table need a REPAIR TABLE
|
|
|
|
CHECK TABLE t1 FOR UPGRADE;
|
|
|
|
|
|
|
|
# Run REPAIR TABLE to alter the table and repair
|
|
|
|
# the varbinary fields
|
|
|
|
REPAIR TABLE t1;
|
|
|
|
|
|
|
|
# Now check it's back to normal
|
|
|
|
show create table t1;
|
|
|
|
select length(a), length(b) from t1;
|
|
|
|
insert into t1 values("ccc", "ddd");
|
|
|
|
select length(a), length(b) from t1;
|
|
|
|
select hex(a), hex(b) from t1;
|
|
|
|
select concat("'", a, "'"), concat("'", b, "'") from t1;
|
|
|
|
|
|
|
|
drop table t1;
|
|
|
|
|
|
|
|
# Check that the fix does not affect table created with current version
|
|
|
|
create table t1(a varbinary(255));
|
|
|
|
insert into t1 values("aaa ");
|
|
|
|
select length(a) from t1;
|
|
|
|
alter table t1 modify a varchar(255);
|
|
|
|
select length(a) from t1;
|
|
|
|
|