mirror of
https://github.com/MariaDB/server.git
synced 2025-05-29 21:42:28 +03:00
Merge mysql.com:/home/psergey/mysql-4.1-build-tree
into mysql.com:/home/psergey/mysql-4.1-merge-from-build sql/item_func.cc: Auto merged
This commit is contained in:
commit
96dcb8c20d
@ -86,3 +86,77 @@ a rel
|
|||||||
1 1
|
1 1
|
||||||
2 2
|
2 2
|
||||||
drop table t1;
|
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;
|
||||||
|
@ -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
|
id name gid uid ident level
|
||||||
1 fs NULL NULL 0 READ
|
1 fs NULL NULL 0 READ
|
||||||
drop table t1,t2,t3;
|
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;
|
||||||
|
@ -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;
|
SELECT a, MATCH (message) AGAINST ('t* f*' IN BOOLEAN MODE) as rel FROM t1 ORDER BY rel,a;
|
||||||
drop table t1;
|
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;
|
||||||
|
|
||||||
|
@ -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);
|
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;
|
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;
|
||||||
|
|
||||||
|
@ -3209,6 +3209,9 @@ bool Item_func_match::fix_index()
|
|||||||
|
|
||||||
if (key == NO_SUCH_KEY)
|
if (key == NO_SUCH_KEY)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (!table)
|
||||||
|
goto err;
|
||||||
|
|
||||||
for (keynr=0 ; keynr < table->keys ; keynr++)
|
for (keynr=0 ; keynr < table->keys ; keynr++)
|
||||||
{
|
{
|
||||||
|
@ -3539,11 +3539,17 @@ static void add_not_null_conds(JOIN *join)
|
|||||||
DBUG_ASSERT(item->type() == Item::FIELD_ITEM);
|
DBUG_ASSERT(item->type() == Item::FIELD_ITEM);
|
||||||
Item_field *not_null_item= (Item_field*)item;
|
Item_field *not_null_item= (Item_field*)item;
|
||||||
JOIN_TAB *referred_tab= not_null_item->field->table->reginfo.join_tab;
|
JOIN_TAB *referred_tab= not_null_item->field->table->reginfo.join_tab;
|
||||||
Item_func_isnotnull *notnull;
|
Item *notnull;
|
||||||
if (!(notnull= new Item_func_isnotnull(not_null_item)))
|
if (!(notnull= new Item_func_isnotnull(not_null_item)))
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
|
/*
|
||||||
notnull->quick_fix_field();
|
We need to do full fix_fields() call here in order to have correct
|
||||||
|
notnull->const_item(). This is needed e.g. by test_quick_select
|
||||||
|
when it is called from make_join_select after this function is
|
||||||
|
called.
|
||||||
|
*/
|
||||||
|
if (notnull->fix_fields(join->thd, join->tables_list, ¬null))
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
DBUG_EXECUTE("where",print_where(notnull,
|
DBUG_EXECUTE("where",print_where(notnull,
|
||||||
referred_tab->table->table_name););
|
referred_tab->table->table_name););
|
||||||
add_cond_and_fix(&referred_tab->select_cond, notnull);
|
add_cond_and_fix(&referred_tab->select_cond, notnull);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user