Commit 69ecbbcb authored by unknown's avatar unknown
Browse files

Merge bk-internal.mysql.com:/home/bk/mysql-4.1

into  mysql.com:/opt/local/work/mysql-4.1-root

parents eb4a309b 96dcb8c2
Loading
Loading
Loading
Loading
+74 −0
Original line number Diff line number Diff line
@@ -86,3 +86,77 @@ a rel
1	1
2	2
drop table t1;
CREATE TABLE t1 (
id int(11) NOT NULL auto_increment,
thread int(11) NOT NULL default '0',
beitrag longtext NOT NULL,
PRIMARY KEY  (id),
KEY thread (thread),
FULLTEXT KEY beitrag (beitrag)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7923 ;
CREATE TABLE t2 (
id int(11) NOT NULL auto_increment,
text varchar(100) NOT NULL default '',
PRIMARY KEY  (id),
KEY text (text)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=63 ;
CREATE TABLE t3 (
id int(11) NOT NULL auto_increment,
forum int(11) NOT NULL default '0',
betreff varchar(70) NOT NULL default '',
PRIMARY KEY  (id),
KEY forum (forum),
FULLTEXT KEY betreff (betreff)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=996 ;
select a.text, b.id, b.betreff
from 
t2 a inner join t3 b on a.id = b.forum inner join
t1 c on b.id = c.thread
where 
match(b.betreff) against ('+abc' in boolean mode)
group by a.text, b.id, b.betreff
union
select a.text, b.id, b.betreff
from 
t2 a inner join t3 b on a.id = b.forum inner join
t1 c on b.id = c.thread
where 
match(c.beitrag) against ('+abc' in boolean mode)
group by 
a.text, b.id, b.betreff
order by 
match(b.betreff) against ('+abc' in boolean mode) desc;
ERROR 42S02: Unknown table 'b' in order clause
select a.text, b.id, b.betreff
from 
t2 a inner join t3 b on a.id = b.forum inner join
t1 c on b.id = c.thread
where 
match(b.betreff) against ('+abc' in boolean mode)
union
select a.text, b.id, b.betreff
from 
t2 a inner join t3 b on a.id = b.forum inner join
t1 c on b.id = c.thread
where 
match(c.beitrag) against ('+abc' in boolean mode)
order by 
match(b.betreff) against ('+abc' in boolean mode) desc;
ERROR 42S02: Unknown table 'b' in order clause
select a.text, b.id, b.betreff
from 
t2 a inner join t3 b on a.id = b.forum inner join
t1 c on b.id = c.thread
where 
match(b.betreff) against ('+abc' in boolean mode)
union
select a.text, b.id, b.betreff
from 
t2 a inner join t3 b on a.id = b.forum inner join
t1 c on b.id = c.thread
where 
match(c.beitrag) against ('+abc' in boolean mode)
order by 
match(betreff) against ('+abc' in boolean mode) desc;
text	id	betreff
drop table t1,t2,t3;
+35 −0
Original line number Diff line number Diff line
@@ -2524,3 +2524,38 @@ select * from t3 left join t1 on t3.id = t1.uid, t2 where t2.ident in (0, t1.gid
id	name	gid	uid	ident	level
1	fs	NULL	NULL	0	READ
drop table t1,t2,t3;
CREATE TABLE t1 (
acct_id int(11) NOT NULL default '0',
profile_id smallint(6) default NULL,
UNIQUE KEY t1$acct_id (acct_id),
KEY t1$profile_id (profile_id)
);
INSERT INTO t1 VALUES (132,17),(133,18);
CREATE TABLE t2 (
profile_id smallint(6) default NULL,
queue_id int(11) default NULL,
seq int(11) default NULL,
KEY t2$queue_id (queue_id)
);
INSERT INTO t2 VALUES (17,31,4),(17,30,3),(17,36,2),(17,37,1);
CREATE TABLE t3 (
id int(11) NOT NULL default '0',
qtype int(11) default NULL,
seq int(11) default NULL,
warn_lvl int(11) default NULL,
crit_lvl int(11) default NULL,
rr1 tinyint(4) NOT NULL default '0',
rr2 int(11) default NULL,
default_queue tinyint(4) NOT NULL default '0',
KEY t3$qtype (qtype),
KEY t3$id (id)
);
INSERT INTO t3 VALUES (30,1,29,NULL,NULL,0,NULL,0),(31,1,28,NULL,NULL,0,NULL,0),
(36,1,34,NULL,NULL,0,NULL,0),(37,1,35,NULL,NULL,0,121,0);
SELECT COUNT(*) FROM t1 a STRAIGHT_JOIN t2 pq STRAIGHT_JOIN t3 q 
WHERE 
(pq.profile_id = a.profile_id) AND (a.acct_id = 132) AND 
(pq.queue_id = q.id) AND (q.rr1 <> 1);
COUNT(*)
4
drop table t1,t2,t3;
+81 −0
Original line number Diff line number Diff line
@@ -54,3 +54,84 @@ SELECT a, MATCH (message) AGAINST ('t* f*' IN BOOLEAN MODE) as rel FROM t1;
SELECT a, MATCH (message) AGAINST ('t* f*' IN BOOLEAN MODE) as rel FROM t1 ORDER BY rel,a;
drop table t1;

# BUG#11869
CREATE TABLE t1 (
  id int(11) NOT NULL auto_increment,
  thread int(11) NOT NULL default '0',
  beitrag longtext NOT NULL,
  PRIMARY KEY  (id),
  KEY thread (thread),
  FULLTEXT KEY beitrag (beitrag)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7923 ;

CREATE TABLE t2 (
  id int(11) NOT NULL auto_increment,
  text varchar(100) NOT NULL default '',
  PRIMARY KEY  (id),
  KEY text (text)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=63 ;

CREATE TABLE t3 (
  id int(11) NOT NULL auto_increment,
  forum int(11) NOT NULL default '0',
  betreff varchar(70) NOT NULL default '',
  PRIMARY KEY  (id),
  KEY forum (forum),
  FULLTEXT KEY betreff (betreff)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=996 ;

--error 1109
select a.text, b.id, b.betreff
from 
  t2 a inner join t3 b on a.id = b.forum inner join
  t1 c on b.id = c.thread
where 
  match(b.betreff) against ('+abc' in boolean mode)
group by a.text, b.id, b.betreff
union
select a.text, b.id, b.betreff
from 
  t2 a inner join t3 b on a.id = b.forum inner join
  t1 c on b.id = c.thread
where 
  match(c.beitrag) against ('+abc' in boolean mode)
group by 
  a.text, b.id, b.betreff
order by 
  match(b.betreff) against ('+abc' in boolean mode) desc;
  
--error 1109
select a.text, b.id, b.betreff
from 
  t2 a inner join t3 b on a.id = b.forum inner join
  t1 c on b.id = c.thread
where 
  match(b.betreff) against ('+abc' in boolean mode)
union
select a.text, b.id, b.betreff
from 
  t2 a inner join t3 b on a.id = b.forum inner join
  t1 c on b.id = c.thread
where 
  match(c.beitrag) against ('+abc' in boolean mode)
order by 
  match(b.betreff) against ('+abc' in boolean mode) desc;

select a.text, b.id, b.betreff
from 
  t2 a inner join t3 b on a.id = b.forum inner join
  t1 c on b.id = c.thread
where 
  match(b.betreff) against ('+abc' in boolean mode)
union
select a.text, b.id, b.betreff
from 
  t2 a inner join t3 b on a.id = b.forum inner join
  t1 c on b.id = c.thread
where 
  match(c.beitrag) against ('+abc' in boolean mode)
order by 
  match(betreff) against ('+abc' in boolean mode) desc;

drop table t1,t2,t3;
+41 −0
Original line number Diff line number Diff line
@@ -2075,3 +2075,44 @@ INSERT INTO `t3` VALUES (1,'fs');
select * from t3 left join t1 on t3.id = t1.uid, t2 where t2.ident in (0, t1.gid, t3.id, 0);

drop table t1,t2,t3;

# Test for BUG#11700
CREATE TABLE t1 (
  acct_id int(11) NOT NULL default '0',
  profile_id smallint(6) default NULL,
  UNIQUE KEY t1$acct_id (acct_id),
  KEY t1$profile_id (profile_id)
);
INSERT INTO t1 VALUES (132,17),(133,18);

CREATE TABLE t2 (
  profile_id smallint(6) default NULL,
  queue_id int(11) default NULL,
  seq int(11) default NULL,
  KEY t2$queue_id (queue_id)
);
INSERT INTO t2 VALUES (17,31,4),(17,30,3),(17,36,2),(17,37,1);

CREATE TABLE t3 (
  id int(11) NOT NULL default '0',
  qtype int(11) default NULL,
  seq int(11) default NULL,
  warn_lvl int(11) default NULL,
  crit_lvl int(11) default NULL,
  rr1 tinyint(4) NOT NULL default '0',
  rr2 int(11) default NULL,
  default_queue tinyint(4) NOT NULL default '0',
  KEY t3$qtype (qtype),
  KEY t3$id (id)
);

INSERT INTO t3 VALUES (30,1,29,NULL,NULL,0,NULL,0),(31,1,28,NULL,NULL,0,NULL,0),
  (36,1,34,NULL,NULL,0,NULL,0),(37,1,35,NULL,NULL,0,121,0);

SELECT COUNT(*) FROM t1 a STRAIGHT_JOIN t2 pq STRAIGHT_JOIN t3 q 
WHERE 
  (pq.profile_id = a.profile_id) AND (a.acct_id = 132) AND 
  (pq.queue_id = q.id) AND (q.rr1 <> 1);

drop table t1,t2,t3;
+3 −0
Original line number Diff line number Diff line
@@ -3210,6 +3210,9 @@ bool Item_func_match::fix_index()
  if (key == NO_SUCH_KEY)
    return 0;
  
  if (!table) 
    goto err;

  for (keynr=0 ; keynr < table->keys ; keynr++)
  {
    if ((table->key_info[keynr].flags & HA_FULLTEXT) &&
Loading