~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysql-test/t/fulltext2.test

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# test of new fulltext search features
 
3
#
 
4
 
 
5
#
 
6
# two-level tree
 
7
#
 
8
 
 
9
--disable_warnings
 
10
DROP TABLE IF EXISTS t1;
 
11
--enable_warnings
 
12
 
 
13
CREATE TABLE t1 (
 
14
  i int(10) unsigned not null auto_increment primary key,
 
15
  a varchar(255) not null,
 
16
  FULLTEXT KEY (a)
 
17
) ENGINE=MyISAM;
 
18
 
 
19
# two-level entry, second-level tree with depth 2
 
20
--disable_query_log
 
21
let $1=260;
 
22
while ($1)
 
23
{
 
24
  eval insert t1 (a) values ('aaaxxx');
 
25
  dec $1;
 
26
}
 
27
 
 
28
# two-level entry, second-level tree has only one page
 
29
let $1=255;
 
30
while ($1)
 
31
{
 
32
  eval insert t1 (a) values ('aaazzz');
 
33
  dec $1;
 
34
}
 
35
 
 
36
# one-level entry (entries)
 
37
let $1=250;
 
38
while ($1)
 
39
{
 
40
  eval insert t1 (a) values ('aaayyy');
 
41
  dec $1;
 
42
}
 
43
--enable_query_log
 
44
 
 
45
# converting to two-level
 
46
repair table t1 quick;
 
47
check table t1;
 
48
optimize table t1; # BUG#5327 - mi_sort_index() of 2-level tree
 
49
check table t1;
 
50
 
 
51
select count(*) from t1 where match a against ('aaaxxx');
 
52
select count(*) from t1 where match a against ('aaayyy');
 
53
select count(*) from t1 where match a against ('aaazzz');
 
54
select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
 
55
select count(*) from t1 where match a against ('aaayyy' in boolean mode);
 
56
select count(*) from t1 where match a against ('aaazzz' in boolean mode);
 
57
select count(*) from t1 where match a against ('aaaxxx aaayyy aaazzz');
 
58
select count(*) from t1 where match a against ('aaaxxx aaayyy aaazzz' in boolean mode);
 
59
 
 
60
select count(*) from t1 where match a against ('aaax*' in boolean mode);
 
61
select count(*) from t1 where match a against ('aaay*' in boolean mode);
 
62
select count(*) from t1 where match a against ('aaa*' in boolean mode);
 
63
 
 
64
# mi_write:
 
65
 
 
66
insert t1 (a) values ('aaaxxx'),('aaayyy');
 
67
# call to enlarge_root() below
 
68
insert t1 (a) values ('aaazzz'),('aaazzz'),('aaazzz'),('aaazzz'),('aaazzz');
 
69
select count(*) from t1 where match a against ('aaaxxx');
 
70
select count(*) from t1 where match a against ('aaayyy');
 
71
select count(*) from t1 where match a against ('aaazzz');
 
72
 
 
73
# mi_delete
 
74
insert t1 (a) values ('aaaxxx 000000');
 
75
select count(*) from t1 where match a against ('000000');
 
76
delete from t1 where match a against ('000000');
 
77
select count(*) from t1 where match a against ('000000');
 
78
select count(*) from t1 where match a against ('aaaxxx');
 
79
delete from t1 where match a against ('aaazzz');
 
80
select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
 
81
select count(*) from t1 where match a against ('aaayyy' in boolean mode);
 
82
select count(*) from t1 where match a against ('aaazzz' in boolean mode);
 
83
# double-check without index
 
84
select count(*) from t1 where a = 'aaaxxx';
 
85
select count(*) from t1 where a = 'aaayyy';
 
86
select count(*) from t1 where a = 'aaazzz';
 
87
 
 
88
# update
 
89
insert t1 (a) values ('aaaxxx 000000');
 
90
select count(*) from t1 where match a against ('000000');
 
91
update t1 set a='aaazzz' where match a against ('000000');
 
92
select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
 
93
select count(*) from t1 where match a against ('aaazzz' in boolean mode);
 
94
update t1 set a='aaazzz' where a = 'aaaxxx';
 
95
update t1 set a='aaaxxx' where a = 'aaayyy';
 
96
select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
 
97
select count(*) from t1 where match a against ('aaayyy' in boolean mode);
 
98
select count(*) from t1 where match a against ('aaazzz' in boolean mode);
 
99
 
 
100
drop table t1;
 
101
 
 
102
CREATE TABLE t1 (
 
103
  i int(10) unsigned not null auto_increment primary key,
 
104
  a varchar(255) not null,
 
105
  FULLTEXT KEY (a)
 
106
) ENGINE=MyISAM;
 
107
 
 
108
#
 
109
# now same as about but w/o repair table
 
110
# 2-level tree created by mi_write
 
111
#
 
112
 
 
113
# two-level entry, second-level tree with depth 2
 
114
--disable_query_log
 
115
let $1=260;
 
116
while ($1)
 
117
{
 
118
  eval insert t1 (a) values ('aaaxxx');
 
119
  dec $1;
 
120
}
 
121
let $1=255;
 
122
while ($1)
 
123
{
 
124
  eval insert t1 (a) values ('aaazzz');
 
125
  dec $1;
 
126
}
 
127
let $1=250;
 
128
while ($1)
 
129
{
 
130
  eval insert t1 (a) values ('aaayyy');
 
131
  dec $1;
 
132
}
 
133
--enable_query_log
 
134
 
 
135
select count(*) from t1 where match a against ('aaaxxx');
 
136
select count(*) from t1 where match a against ('aaayyy');
 
137
select count(*) from t1 where match a against ('aaazzz');
 
138
select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
 
139
select count(*) from t1 where match a against ('aaayyy' in boolean mode);
 
140
select count(*) from t1 where match a against ('aaazzz' in boolean mode);
 
141
select count(*) from t1 where match a against ('aaaxxx aaayyy aaazzz');
 
142
select count(*) from t1 where match a against ('aaaxxx aaayyy aaazzz' in boolean mode);
 
143
 
 
144
select count(*) from t1 where match a against ('aaax*' in boolean mode);
 
145
select count(*) from t1 where match a against ('aaay*' in boolean mode);
 
146
select count(*) from t1 where match a against ('aaa*' in boolean mode);
 
147
 
 
148
# mi_write:
 
149
 
 
150
insert t1 (a) values ('aaaxxx'),('aaayyy');
 
151
insert t1 (a) values ('aaazzz'),('aaazzz'),('aaazzz'),('aaazzz'),('aaazzz');
 
152
select count(*) from t1 where match a against ('aaaxxx');
 
153
select count(*) from t1 where match a against ('aaayyy');
 
154
select count(*) from t1 where match a against ('aaazzz');
 
155
 
 
156
# mi_delete
 
157
insert t1 (a) values ('aaaxxx 000000');
 
158
select count(*) from t1 where match a against ('000000');
 
159
delete from t1 where match a against ('000000');
 
160
select count(*) from t1 where match a against ('000000');
 
161
select count(*) from t1 where match a against ('aaaxxx');
 
162
delete from t1 where match a against ('aaazzz');
 
163
select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
 
164
select count(*) from t1 where match a against ('aaayyy' in boolean mode);
 
165
select count(*) from t1 where match a against ('aaazzz' in boolean mode);
 
166
# double-check without index
 
167
select count(*) from t1 where a = 'aaaxxx';
 
168
select count(*) from t1 where a = 'aaayyy';
 
169
select count(*) from t1 where a = 'aaazzz';
 
170
 
 
171
# update
 
172
insert t1 (a) values ('aaaxxx 000000');
 
173
select count(*) from t1 where match a against ('000000');
 
174
update t1 set a='aaazzz' where match a against ('000000');
 
175
select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
 
176
select count(*) from t1 where match a against ('aaazzz' in boolean mode);
 
177
update t1 set a='aaazzz' where a = 'aaaxxx';
 
178
update t1 set a='aaaxxx' where a = 'aaayyy';
 
179
select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
 
180
select count(*) from t1 where match a against ('aaayyy' in boolean mode);
 
181
select count(*) from t1 where match a against ('aaazzz' in boolean mode);
 
182
drop table t1;
 
183
 
 
184
#
 
185
# BUG#11336
 
186
#
 
187
# for uca collation isalnum and strnncollsp don't agree on whether
 
188
# 0xC2A0 is a space (strnncollsp is right, isalnum is wrong).
 
189
#
 
190
# they still don't, the bug was fixed by avoiding strnncollsp
 
191
#
 
192
 
 
193
set names utf8;
 
194
create table t1(a text,fulltext(a)) collate=utf8_swedish_ci;
 
195
insert into t1 values('test test '),('test'),('test'),('test'),
 
196
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
 
197
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
 
198
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
 
199
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
 
200
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
 
201
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
 
202
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
 
203
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
 
204
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
 
205
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
 
206
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
 
207
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
 
208
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
 
209
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
 
210
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test');
 
211
delete from t1 limit 1;
 
212
 
 
213
#
 
214
# BUG#16489: utf8 + fulltext leads to corrupt index file.
 
215
#
 
216
truncate table t1;
 
217
insert into t1 values('ab c d');
 
218
update t1 set a='ab c d';
 
219
select * from t1 where match a against('ab c' in boolean mode);
 
220
drop table t1;
 
221
set names latin1;
 
222
 
 
223
# End of 4.1 tests
 
224
 
 
225
#
 
226
# BUG#19580 - FULLTEXT search produces wrong results on UTF-8 columns
 
227
#
 
228
SET NAMES utf8;
 
229
CREATE TABLE t1(a VARCHAR(255), FULLTEXT(a)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
230
INSERT INTO t1 VALUES('„MySQL“');
 
231
SELECT a FROM t1 WHERE MATCH a AGAINST('“MySQL„' IN BOOLEAN MODE);
 
232
DROP TABLE t1;
 
233
SET NAMES latin1;