~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
--disable_warnings
2
drop table if exists t1;
3
--enable_warnings
4
5
#
6
# If it's BLOB or BINARY or VARBINARY, then output = input.
7
#
8
select hex(weight_string(0x010203));
9
10
#
11
# "AS CHAR ( int )" causes padding on the right. The pad
12
# character is always space, that is, 0x20 or 0x0020.
13
# The padding occurs before the conversion to a weight.
14
# The value of "int" is the number of characters, not the number of bytes.
15
#
16
select hex(weight_string('aa' as char(3)));
17
18
#
19
# The minimum value of 'int' is 1.
20
#
21
--error 1064
22
select hex(weight_string('a' as char(-1)));
23
--error 1064
24
select hex(weight_string('a' as char(0)));
25
select hex(weight_string('a' as char(1)));
26
27
#
28
# If 'int' is smaller than the length of 'string',
29
# truncation will occur with no warning.
30
#
31
select hex(weight_string('ab' as char(1)));
32
33
#
34
# If "AS CHAR ( int )" is omitted, there is no padding and no truncation.
35
#
36
select hex(weight_string('ab'));
37
38
#
39
# "AS BINARY ( int )" is like CHAR(int) but causes padding of 0x00
40
# so one doesn't have to use "CAST(string AS BINARY(int))".
41
#
42
select hex(weight_string('aa' as binary(3)));
43
select hex(weight_string(cast('aa' as binary(3))));
44
45
#
46
# If and only if one specifies "LEVEL numeric-list" (not "range"),
47
# one may follow any "number" with [ASC|DESC][REVERSE]
48
#
49
--error 1064
50
select hex(weight_string('ab' level 1-1 ASC));
51
--error 1064
52
select hex(weight_string('ab' level 1-1 DESC));
53
--error 1064
54
select hex(weight_string('ab' level 1-1 REVERSE));
55
56
#
57
# If one says "DESC", then the weights come out NOTed
58
# or negated for that level. 
59
# If one says "REVERSE", then the weights come out in
60
# reverse order for that level, that is, starting with
61
# the last character and ending with the first character.
62
#
63
select hex(weight_string('ab' level 1 ASC));
64
select hex(weight_string('ab' level 1 DESC));
65
select hex(weight_string('ab' level 1 REVERSE));
66
select hex(weight_string('ab' level 1 DESC REVERSE));
67
68
#
69
# If the result length is less than or equal to the
70
# maximum possible length for the VARBINARY data type,
71
# then the result data type is VARBINARY. Otherwise
72
# the result data type is BLOB.
73
#
74
create table t1 select weight_string('test') as w;
942.3.1 by Vladimir Kolesnikov
test generalizations
75
--replace_regex /ENGINE=[a-zA-Z]+/ENGINE=DEFAULT/
1 by brian
clean slate
76
show create table t1;
77
drop table t1;
78
create table t1 select weight_string(repeat('t',66000)) as w;
942.3.1 by Vladimir Kolesnikov
test generalizations
79
--replace_regex /ENGINE=[a-zA-Z]+/ENGINE=DEFAULT/
1 by brian
clean slate
80
show create table t1;
81
drop table t1;
82
83
#
84
# If input is NULL, then output is NULL.
85
#
86
select weight_string(NULL);
87
88
#    
89
# WEIGHT_STRING and REVERSE will not be a new reserved word.
90
#
91
select 1 as weight_string, 2 as reverse;
92
93
#
94
# Check that collation derivation is copied from the argument
95
#
96
select coercibility(weight_string('test'));
97
98
#
99
# Bug#33663 Character sets: weight_string function,
100
# varchar column, wrong result
101
#
102
create table t1 (s1 varchar(5));
103
insert into t1 values ('a'),(null);
104
select hex(weight_string(s1)) from t1 order by s1;
105
drop table t1;