1
by brian
clean slate |
1 |
# This test uses chmod, can't be run with root permissions
|
2 |
-- source include/not_as_root.inc |
|
3 |
||
4 |
||
5 |
# Initialise
|
|
6 |
--disable_warnings |
|
7 |
drop table if exists t1; |
|
8 |
--enable_warnings |
|
9 |
||
10 |
#
|
|
11 |
# varbinary as string and number
|
|
12 |
#
|
|
13 |
||
14 |
select 0x41,0x41+0,0x41 | 0x7fffffffffffffff | 0,0xffffffffffffffff | 0 ; |
|
15 |
select 0x31+1,concat(0x31)+1,-0xf; |
|
16 |
select x'31',X'ffff'+0; |
|
17 |
||
18 |
#
|
|
19 |
# Test of hex constants in WHERE:
|
|
20 |
#
|
|
21 |
||
22 |
create table t1 (ID int(8) unsigned zerofill not null auto_increment,UNIQ bigint(21) unsigned zerofill not null,primary key (ID),unique (UNIQ) ); |
|
23 |
insert into t1 set UNIQ=0x38afba1d73e6a18a; |
|
24 |
insert into t1 set UNIQ=123; |
|
25 |
explain extended select * from t1 where UNIQ=0x38afba1d73e6a18a; |
|
26 |
drop table t1; |
|
27 |
||
28 |
#
|
|
29 |
# Test error conditions
|
|
30 |
#
|
|
31 |
--error 1064 |
|
32 |
select x'hello'; |
|
33 |
--error 1054 |
|
34 |
select 0xfg; |
|
35 |
||
36 |
#
|
|
37 |
# Test likely error conditions
|
|
38 |
#
|
|
39 |
create table t1 select 1 as x, 2 as xx; |
|
40 |
select x,xx from t1; |
|
41 |
drop table t1; |
|
42 |
||
43 |
# End of 4.1 tests
|
|
44 |
||
45 |
#
|
|
46 |
# Bug #19371 VARBINARY() have trailing zeros after upgrade from 4.1
|
|
47 |
#
|
|
48 |
||
49 |
# Test with a saved table from 4.1
|
|
50 |
copy_file std_data/bug19371.frm $MYSQLTEST_VARDIR/master-data/test/t1.frm; |
|
51 |
chmod 0777 $MYSQLTEST_VARDIR/master-data/test/t1.frm; |
|
52 |
copy_file std_data/bug19371.MYD $MYSQLTEST_VARDIR/master-data/test/t1.MYD; |
|
53 |
chmod 0777 $MYSQLTEST_VARDIR/master-data/test/t1.MYD; |
|
54 |
copy_file std_data/bug19371.MYI $MYSQLTEST_VARDIR/master-data/test/t1.MYI; |
|
55 |
chmod 0777 $MYSQLTEST_VARDIR/master-data/test/t1.MYI; |
|
56 |
||
57 |
# Everything _looks_ fine
|
|
58 |
show create table t1; |
|
59 |
||
60 |
# But the length of the varbinary columns are too long
|
|
61 |
select length(a), length(b) from t1; |
|
62 |
||
63 |
# Run CHECK TABLE, it should indicate table need a REPAIR TABLE
|
|
64 |
CHECK TABLE t1 FOR UPGRADE; |
|
65 |
||
66 |
# Run REPAIR TABLE to alter the table and repair
|
|
67 |
# the varbinary fields
|
|
68 |
REPAIR TABLE t1; |
|
69 |
||
70 |
# Now check it's back to normal
|
|
71 |
show create table t1; |
|
72 |
select length(a), length(b) from t1; |
|
73 |
insert into t1 values("ccc", "ddd"); |
|
74 |
select length(a), length(b) from t1; |
|
75 |
select hex(a), hex(b) from t1; |
|
76 |
select concat("'", a, "'"), concat("'", b, "'") from t1; |
|
77 |
||
78 |
drop table t1; |
|
79 |
||
80 |
# Check that the fix does not affect table created with current version
|
|
81 |
create table t1(a varbinary(255)); |
|
82 |
insert into t1 values("aaa "); |
|
83 |
select length(a) from t1; |
|
84 |
alter table t1 modify a varchar(255); |
|
85 |
select length(a) from t1; |
|
86 |
drop table t1; |
|
87 |
||
88 |
||
89 |
#
|
|
90 |
# Bug#28127 (Some valid identifiers names are not parsed correctly)
|
|
91 |
#
|
|
92 |
||
93 |
--disable_warnings |
|
94 |
drop table if exists table_28127_a; |
|
95 |
drop table if exists table_28127_b; |
|
96 |
--enable_warnings |
|
97 |
||
98 |
create table table_28127_a(0b02 int); |
|
99 |
show create table table_28127_a; |
|
100 |
||
101 |
create table table_28127_b(0b2 int); |
|
102 |
show create table table_28127_b; |
|
103 |
||
104 |
drop table table_28127_a; |
|
105 |
drop table table_28127_b; |
|
106 |