fulltext_order_by.test
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:5k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. --disable_warnings
  2. DROP TABLE IF EXISTS t1;
  3. --enable_warnings
  4. CREATE TABLE t1 (
  5.   a INT AUTO_INCREMENT PRIMARY KEY,
  6.   message CHAR(20),
  7.   FULLTEXT(message)
  8. ) comment = 'original testcase by sroussey@network54.com';
  9. INSERT INTO t1 (message) VALUES ("Testing"),("table"),("testbug"),
  10.         ("steve"),("is"),("cool"),("steve is cool");
  11. # basic MATCH
  12. SELECT a, FORMAT(MATCH (message) AGAINST ('steve'),6) FROM t1 WHERE MATCH (message) AGAINST ('steve');
  13. SELECT a, MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) FROM t1 WHERE MATCH (message) AGAINST ('steve');
  14. SELECT a, FORMAT(MATCH (message) AGAINST ('steve'),6) FROM t1 WHERE MATCH (message) AGAINST ('steve' IN BOOLEAN MODE);
  15. SELECT a, MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) FROM t1 WHERE MATCH (message) AGAINST ('steve' IN BOOLEAN MODE);
  16. # MATCH + ORDER BY (with ft-ranges)
  17. SELECT a, FORMAT(MATCH (message) AGAINST ('steve'),6) FROM t1 WHERE MATCH (message) AGAINST ('steve') ORDER BY a;
  18. SELECT a, MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) FROM t1 WHERE MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) ORDER BY a;
  19. # MATCH + ORDER BY (with normal ranges) + UNIQUE
  20. SELECT a, FORMAT(MATCH (message) AGAINST ('steve'),6) FROM t1 WHERE a in (2,7,4) and MATCH (message) AGAINST ('steve') ORDER BY a DESC;
  21. SELECT a, MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) FROM t1 WHERE a in (2,7,4) and MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) ORDER BY a DESC;
  22. # MATCH + ORDER BY + UNIQUE (const_table)
  23. SELECT a, FORMAT(MATCH (message) AGAINST ('steve'),6) FROM t1 WHERE a=7 and MATCH (message) AGAINST ('steve') ORDER BY 1;
  24. SELECT a, MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) FROM t1 WHERE a=7 and MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) ORDER BY 1;
  25. # ORDER BY MATCH
  26. SELECT a, FORMAT(MATCH (message) AGAINST ('steve'),6) as rel FROM t1 ORDER BY rel;
  27. SELECT a, MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) as rel FROM t1 ORDER BY rel;
  28. #
  29. # BUG#6635 - test_if_skip_sort_order() thought it can skip filesort
  30. # for fulltext searches too
  31. #
  32. alter table t1 add key m (message);
  33. explain SELECT message FROM t1 WHERE MATCH (message) AGAINST ('steve') ORDER BY message;
  34. SELECT message FROM t1 WHERE MATCH (message) AGAINST ('steve') ORDER BY message desc;
  35. drop table t1;
  36. #
  37. # reused boolean scan bug
  38. #
  39. CREATE TABLE t1 (
  40.   a INT AUTO_INCREMENT PRIMARY KEY,
  41.   message CHAR(20),
  42.   FULLTEXT(message)
  43. );
  44. INSERT INTO t1 (message) VALUES ("testbug"),("testbug foobar");
  45. SELECT a, MATCH (message) AGAINST ('t* f*' IN BOOLEAN MODE) as rel FROM t1;
  46. SELECT a, MATCH (message) AGAINST ('t* f*' IN BOOLEAN MODE) as rel FROM t1 ORDER BY rel,a;
  47. drop table t1;
  48. # BUG#11869
  49. CREATE TABLE t1 (
  50.   id int(11) NOT NULL auto_increment,
  51.   thread int(11) NOT NULL default '0',
  52.   beitrag longtext NOT NULL,
  53.   PRIMARY KEY  (id),
  54.   KEY thread (thread),
  55.   FULLTEXT KEY beitrag (beitrag)
  56. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7923 ;
  57. CREATE TABLE t2 (
  58.   id int(11) NOT NULL auto_increment,
  59.   text varchar(100) NOT NULL default '',
  60.   PRIMARY KEY  (id),
  61.   KEY text (text)
  62. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=63 ;
  63. CREATE TABLE t3 (
  64.   id int(11) NOT NULL auto_increment,
  65.   forum int(11) NOT NULL default '0',
  66.   betreff varchar(70) NOT NULL default '',
  67.   PRIMARY KEY  (id),
  68.   KEY forum (forum),
  69.   FULLTEXT KEY betreff (betreff)
  70. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=996 ;
  71. --error 1109
  72. select a.text, b.id, b.betreff
  73. from 
  74.   t2 a inner join t3 b on a.id = b.forum inner join
  75.   t1 c on b.id = c.thread
  76. where 
  77.   match(b.betreff) against ('+abc' in boolean mode)
  78. group by a.text, b.id, b.betreff
  79. union
  80. select a.text, b.id, b.betreff
  81. from 
  82.   t2 a inner join t3 b on a.id = b.forum inner join
  83.   t1 c on b.id = c.thread
  84. where 
  85.   match(c.beitrag) against ('+abc' in boolean mode)
  86. group by 
  87.   a.text, b.id, b.betreff
  88. order by 
  89.   match(b.betreff) against ('+abc' in boolean mode) desc;
  90.   
  91. --error 1109
  92. select a.text, b.id, b.betreff
  93. from 
  94.   t2 a inner join t3 b on a.id = b.forum inner join
  95.   t1 c on b.id = c.thread
  96. where 
  97.   match(b.betreff) against ('+abc' in boolean mode)
  98. union
  99. select a.text, b.id, b.betreff
  100. from 
  101.   t2 a inner join t3 b on a.id = b.forum inner join
  102.   t1 c on b.id = c.thread
  103. where 
  104.   match(c.beitrag) against ('+abc' in boolean mode)
  105. order by 
  106.   match(b.betreff) against ('+abc' in boolean mode) desc;
  107. select a.text, b.id, b.betreff
  108. from 
  109.   t2 a inner join t3 b on a.id = b.forum inner join
  110.   t1 c on b.id = c.thread
  111. where 
  112.   match(b.betreff) against ('+abc' in boolean mode)
  113. union
  114. select a.text, b.id, b.betreff
  115. from 
  116.   t2 a inner join t3 b on a.id = b.forum inner join
  117.   t1 c on b.id = c.thread
  118. where 
  119.   match(c.beitrag) against ('+abc' in boolean mode)
  120. order by 
  121.   match(betreff) against ('+abc' in boolean mode) desc;
  122. # BUG#11869 part2: used table type doesn't support FULLTEXT indexes error
  123. (select b.id, b.betreff from t3 b) union 
  124. (select b.id, b.betreff from t3 b) 
  125. order by match(betreff) against ('+abc' in boolean mode) desc;
  126. --error 1191
  127. (select b.id, b.betreff from t3 b) union 
  128. (select b.id, b.betreff from t3 b) 
  129. order by match(betreff) against ('+abc') desc;
  130. select distinct b.id, b.betreff from t3 b 
  131. order by match(betreff) against ('+abc' in boolean mode) desc;
  132. select b.id, b.betreff from t3 b group by b.id+1 
  133. order by match(betreff) against ('+abc' in boolean mode) desc;
  134. drop table t1,t2,t3;
  135. # End of 4.1 tests