mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
0ee28e1a4d
Fixed that UPDATE statement crashes multi-byte charset fulltext index. myisam/ft_update.c: Fixed that UPDATE statement crashes multi-byte charset fulltext index. While updating, always rewrite multi-byte charset fulltext index. mysql-test/r/fulltext2.result: Added a testcase for BUG#16489. mysql-test/t/fulltext2.test: Added a testcase for BUG#16489.
243 lines
7.3 KiB
Text
243 lines
7.3 KiB
Text
DROP TABLE IF EXISTS t1;
|
||
CREATE TABLE t1 (
|
||
i int(10) unsigned not null auto_increment primary key,
|
||
a varchar(255) not null,
|
||
FULLTEXT KEY (a)
|
||
) ENGINE=MyISAM;
|
||
repair table t1 quick;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 repair status OK
|
||
check table t1;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 check status OK
|
||
optimize table t1;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 optimize status OK
|
||
check table t1;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 check status OK
|
||
select count(*) from t1 where match a against ('aaaxxx');
|
||
count(*)
|
||
260
|
||
select count(*) from t1 where match a against ('aaayyy');
|
||
count(*)
|
||
250
|
||
select count(*) from t1 where match a against ('aaazzz');
|
||
count(*)
|
||
255
|
||
select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
|
||
count(*)
|
||
260
|
||
select count(*) from t1 where match a against ('aaayyy' in boolean mode);
|
||
count(*)
|
||
250
|
||
select count(*) from t1 where match a against ('aaazzz' in boolean mode);
|
||
count(*)
|
||
255
|
||
select count(*) from t1 where match a against ('aaaxxx aaayyy aaazzz');
|
||
count(*)
|
||
765
|
||
select count(*) from t1 where match a against ('aaaxxx aaayyy aaazzz' in boolean mode);
|
||
count(*)
|
||
765
|
||
select count(*) from t1 where match a against ('aaax*' in boolean mode);
|
||
count(*)
|
||
260
|
||
select count(*) from t1 where match a against ('aaay*' in boolean mode);
|
||
count(*)
|
||
250
|
||
select count(*) from t1 where match a against ('aaa*' in boolean mode);
|
||
count(*)
|
||
765
|
||
insert t1 (a) values ('aaaxxx'),('aaayyy');
|
||
insert t1 (a) values ('aaazzz'),('aaazzz'),('aaazzz'),('aaazzz'),('aaazzz');
|
||
select count(*) from t1 where match a against ('aaaxxx');
|
||
count(*)
|
||
261
|
||
select count(*) from t1 where match a against ('aaayyy');
|
||
count(*)
|
||
251
|
||
select count(*) from t1 where match a against ('aaazzz');
|
||
count(*)
|
||
260
|
||
insert t1 (a) values ('aaaxxx 000000');
|
||
select count(*) from t1 where match a against ('000000');
|
||
count(*)
|
||
1
|
||
delete from t1 where match a against ('000000');
|
||
select count(*) from t1 where match a against ('000000');
|
||
count(*)
|
||
0
|
||
select count(*) from t1 where match a against ('aaaxxx');
|
||
count(*)
|
||
261
|
||
delete from t1 where match a against ('aaazzz');
|
||
select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
|
||
count(*)
|
||
261
|
||
select count(*) from t1 where match a against ('aaayyy' in boolean mode);
|
||
count(*)
|
||
251
|
||
select count(*) from t1 where match a against ('aaazzz' in boolean mode);
|
||
count(*)
|
||
0
|
||
select count(*) from t1 where a = 'aaaxxx';
|
||
count(*)
|
||
261
|
||
select count(*) from t1 where a = 'aaayyy';
|
||
count(*)
|
||
251
|
||
select count(*) from t1 where a = 'aaazzz';
|
||
count(*)
|
||
0
|
||
insert t1 (a) values ('aaaxxx 000000');
|
||
select count(*) from t1 where match a against ('000000');
|
||
count(*)
|
||
1
|
||
update t1 set a='aaazzz' where match a against ('000000');
|
||
select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
|
||
count(*)
|
||
261
|
||
select count(*) from t1 where match a against ('aaazzz' in boolean mode);
|
||
count(*)
|
||
1
|
||
update t1 set a='aaazzz' where a = 'aaaxxx';
|
||
update t1 set a='aaaxxx' where a = 'aaayyy';
|
||
select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
|
||
count(*)
|
||
251
|
||
select count(*) from t1 where match a against ('aaayyy' in boolean mode);
|
||
count(*)
|
||
0
|
||
select count(*) from t1 where match a against ('aaazzz' in boolean mode);
|
||
count(*)
|
||
262
|
||
drop table t1;
|
||
CREATE TABLE t1 (
|
||
i int(10) unsigned not null auto_increment primary key,
|
||
a varchar(255) not null,
|
||
FULLTEXT KEY (a)
|
||
) ENGINE=MyISAM;
|
||
select count(*) from t1 where match a against ('aaaxxx');
|
||
count(*)
|
||
260
|
||
select count(*) from t1 where match a against ('aaayyy');
|
||
count(*)
|
||
250
|
||
select count(*) from t1 where match a against ('aaazzz');
|
||
count(*)
|
||
255
|
||
select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
|
||
count(*)
|
||
260
|
||
select count(*) from t1 where match a against ('aaayyy' in boolean mode);
|
||
count(*)
|
||
250
|
||
select count(*) from t1 where match a against ('aaazzz' in boolean mode);
|
||
count(*)
|
||
255
|
||
select count(*) from t1 where match a against ('aaaxxx aaayyy aaazzz');
|
||
count(*)
|
||
765
|
||
select count(*) from t1 where match a against ('aaaxxx aaayyy aaazzz' in boolean mode);
|
||
count(*)
|
||
765
|
||
select count(*) from t1 where match a against ('aaax*' in boolean mode);
|
||
count(*)
|
||
260
|
||
select count(*) from t1 where match a against ('aaay*' in boolean mode);
|
||
count(*)
|
||
250
|
||
select count(*) from t1 where match a against ('aaa*' in boolean mode);
|
||
count(*)
|
||
765
|
||
insert t1 (a) values ('aaaxxx'),('aaayyy');
|
||
insert t1 (a) values ('aaazzz'),('aaazzz'),('aaazzz'),('aaazzz'),('aaazzz');
|
||
select count(*) from t1 where match a against ('aaaxxx');
|
||
count(*)
|
||
261
|
||
select count(*) from t1 where match a against ('aaayyy');
|
||
count(*)
|
||
251
|
||
select count(*) from t1 where match a against ('aaazzz');
|
||
count(*)
|
||
260
|
||
insert t1 (a) values ('aaaxxx 000000');
|
||
select count(*) from t1 where match a against ('000000');
|
||
count(*)
|
||
1
|
||
delete from t1 where match a against ('000000');
|
||
select count(*) from t1 where match a against ('000000');
|
||
count(*)
|
||
0
|
||
select count(*) from t1 where match a against ('aaaxxx');
|
||
count(*)
|
||
261
|
||
delete from t1 where match a against ('aaazzz');
|
||
select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
|
||
count(*)
|
||
261
|
||
select count(*) from t1 where match a against ('aaayyy' in boolean mode);
|
||
count(*)
|
||
251
|
||
select count(*) from t1 where match a against ('aaazzz' in boolean mode);
|
||
count(*)
|
||
0
|
||
select count(*) from t1 where a = 'aaaxxx';
|
||
count(*)
|
||
261
|
||
select count(*) from t1 where a = 'aaayyy';
|
||
count(*)
|
||
251
|
||
select count(*) from t1 where a = 'aaazzz';
|
||
count(*)
|
||
0
|
||
insert t1 (a) values ('aaaxxx 000000');
|
||
select count(*) from t1 where match a against ('000000');
|
||
count(*)
|
||
1
|
||
update t1 set a='aaazzz' where match a against ('000000');
|
||
select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
|
||
count(*)
|
||
261
|
||
select count(*) from t1 where match a against ('aaazzz' in boolean mode);
|
||
count(*)
|
||
1
|
||
update t1 set a='aaazzz' where a = 'aaaxxx';
|
||
update t1 set a='aaaxxx' where a = 'aaayyy';
|
||
select count(*) from t1 where match a against ('aaaxxx' in boolean mode);
|
||
count(*)
|
||
251
|
||
select count(*) from t1 where match a against ('aaayyy' in boolean mode);
|
||
count(*)
|
||
0
|
||
select count(*) from t1 where match a against ('aaazzz' in boolean mode);
|
||
count(*)
|
||
262
|
||
drop table t1;
|
||
set names utf8;
|
||
create table t1(a text,fulltext(a)) collate=utf8_swedish_ci;
|
||
insert into t1 values('test test '),('test'),('test'),('test'),
|
||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test'),
|
||
('test'),('test'),('test'),('test'),('test'),('test'),('test'),('test');
|
||
delete from t1 limit 1;
|
||
truncate table t1;
|
||
insert into t1 values('ab c d');
|
||
update t1 set a='ab c d';
|
||
select * from t1 where match a against('ab c' in boolean mode);
|
||
a
|
||
drop table t1;
|
||
set names latin1;
|