mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Fix for BUG#11700: in add_not_null_conds(), call full fix_fields() for the created NOT NULL.
This is needed because in some cases range optimization is performed twice and added NOT NULL item must have correct const_table_map() value. mysql-test/r/select.result: Testcase for BUG#11700 mysql-test/t/select.test: Testcase for BUG#11700
This commit is contained in:
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user