mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge mysql.com:/usr_rh9/home/elkin.rh9/4.1
into mysql.com:/usr_rh9/home/elkin.rh9/MySQL/Merge/5.0-bug19136 sql/item_func.cc: Auto merged sql/sql_select.cc: Auto merged mysql-test/r/rpl_user_variables.result: manual merge use local mysql-test/t/rpl_user_variables.test: manual merge use version 5.0's "show binlog events from 98"
This commit is contained in:
@ -1 +1,56 @@
|
|||||||
drop table if exists t1;
|
drop table if exists t1,t2;
|
||||||
|
create table t1 (
|
||||||
|
c_id int(11) not null default '0',
|
||||||
|
org_id int(11) default null,
|
||||||
|
unique key contacts$c_id (c_id),
|
||||||
|
key contacts$org_id (org_id)
|
||||||
|
) engine=innodb;
|
||||||
|
insert into t1 values
|
||||||
|
(2,null),(120,null),(141,null),(218,7), (128,1),
|
||||||
|
(151,2),(234,2),(236,2),(243,2),(255,2),(259,2),(232,3),(235,3),(238,3),
|
||||||
|
(246,3),(253,3),(269,3),(285,3),(291,3),(293,3),(131,4),(230,4),(231,4);
|
||||||
|
create table t2 (
|
||||||
|
slai_id int(11) not null default '0',
|
||||||
|
owner_tbl int(11) default null,
|
||||||
|
owner_id int(11) default null,
|
||||||
|
sla_id int(11) default null,
|
||||||
|
inc_web int(11) default null,
|
||||||
|
inc_email int(11) default null,
|
||||||
|
inc_chat int(11) default null,
|
||||||
|
inc_csr int(11) default null,
|
||||||
|
inc_total int(11) default null,
|
||||||
|
time_billed int(11) default null,
|
||||||
|
activedate timestamp null default null,
|
||||||
|
expiredate timestamp null default null,
|
||||||
|
state int(11) default null,
|
||||||
|
sla_set int(11) default null,
|
||||||
|
unique key t2$slai_id (slai_id),
|
||||||
|
key t2$owner_id (owner_id),
|
||||||
|
key t2$sla_id (sla_id)
|
||||||
|
) engine=innodb;
|
||||||
|
insert into t2(slai_id, owner_tbl, owner_id, sla_id) values
|
||||||
|
(1,3,1,1), (3,3,10,2), (4,3,3,6), (5,3,2,5), (6,3,8,3), (7,3,9,7),
|
||||||
|
(8,3,6,8), (9,3,4,9), (10,3,5,10), (11,3,11,11), (12,3,7,12);
|
||||||
|
flush tables;
|
||||||
|
select si.slai_id
|
||||||
|
from t1 c join t2 si on
|
||||||
|
((si.owner_tbl = 3 and si.owner_id = c.org_id) or
|
||||||
|
( si.owner_tbl = 2 and si.owner_id = c.c_id))
|
||||||
|
where
|
||||||
|
c.c_id = 218 and expiredate is null;
|
||||||
|
slai_id
|
||||||
|
12
|
||||||
|
select * from t1 where org_id is null;
|
||||||
|
c_id org_id
|
||||||
|
2 NULL
|
||||||
|
120 NULL
|
||||||
|
141 NULL
|
||||||
|
select si.slai_id
|
||||||
|
from t1 c join t2 si on
|
||||||
|
((si.owner_tbl = 3 and si.owner_id = c.org_id) or
|
||||||
|
( si.owner_tbl = 2 and si.owner_id = c.c_id))
|
||||||
|
where
|
||||||
|
c.c_id = 218 and expiredate is null;
|
||||||
|
slai_id
|
||||||
|
12
|
||||||
|
drop table t1, t2;
|
||||||
|
@ -1,5 +1,59 @@
|
|||||||
-- source include/have_innodb.inc
|
-- source include/have_innodb.inc
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
drop table if exists t1;
|
drop table if exists t1,t2;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
|
# BUG#16798: Uninitialized row buffer reads in ref-or-null optimizer
|
||||||
|
# (repeatable only w/innodb).
|
||||||
|
create table t1 (
|
||||||
|
c_id int(11) not null default '0',
|
||||||
|
org_id int(11) default null,
|
||||||
|
unique key contacts$c_id (c_id),
|
||||||
|
key contacts$org_id (org_id)
|
||||||
|
) engine=innodb;
|
||||||
|
insert into t1 values
|
||||||
|
(2,null),(120,null),(141,null),(218,7), (128,1),
|
||||||
|
(151,2),(234,2),(236,2),(243,2),(255,2),(259,2),(232,3),(235,3),(238,3),
|
||||||
|
(246,3),(253,3),(269,3),(285,3),(291,3),(293,3),(131,4),(230,4),(231,4);
|
||||||
|
|
||||||
|
create table t2 (
|
||||||
|
slai_id int(11) not null default '0',
|
||||||
|
owner_tbl int(11) default null,
|
||||||
|
owner_id int(11) default null,
|
||||||
|
sla_id int(11) default null,
|
||||||
|
inc_web int(11) default null,
|
||||||
|
inc_email int(11) default null,
|
||||||
|
inc_chat int(11) default null,
|
||||||
|
inc_csr int(11) default null,
|
||||||
|
inc_total int(11) default null,
|
||||||
|
time_billed int(11) default null,
|
||||||
|
activedate timestamp null default null,
|
||||||
|
expiredate timestamp null default null,
|
||||||
|
state int(11) default null,
|
||||||
|
sla_set int(11) default null,
|
||||||
|
unique key t2$slai_id (slai_id),
|
||||||
|
key t2$owner_id (owner_id),
|
||||||
|
key t2$sla_id (sla_id)
|
||||||
|
) engine=innodb;
|
||||||
|
insert into t2(slai_id, owner_tbl, owner_id, sla_id) values
|
||||||
|
(1,3,1,1), (3,3,10,2), (4,3,3,6), (5,3,2,5), (6,3,8,3), (7,3,9,7),
|
||||||
|
(8,3,6,8), (9,3,4,9), (10,3,5,10), (11,3,11,11), (12,3,7,12);
|
||||||
|
|
||||||
|
flush tables;
|
||||||
|
select si.slai_id
|
||||||
|
from t1 c join t2 si on
|
||||||
|
((si.owner_tbl = 3 and si.owner_id = c.org_id) or
|
||||||
|
( si.owner_tbl = 2 and si.owner_id = c.c_id))
|
||||||
|
where
|
||||||
|
c.c_id = 218 and expiredate is null;
|
||||||
|
|
||||||
|
select * from t1 where org_id is null;
|
||||||
|
select si.slai_id
|
||||||
|
from t1 c join t2 si on
|
||||||
|
((si.owner_tbl = 3 and si.owner_id = c.org_id) or
|
||||||
|
( si.owner_tbl = 2 and si.owner_id = c.c_id))
|
||||||
|
where
|
||||||
|
c.c_id = 218 and expiredate is null;
|
||||||
|
|
||||||
|
drop table t1, t2;
|
||||||
|
@ -48,9 +48,15 @@ sync_with_master;
|
|||||||
select * from t1;
|
select * from t1;
|
||||||
--replace_column 2 # 5 #
|
--replace_column 2 # 5 #
|
||||||
show binlog events from 98;
|
show binlog events from 98;
|
||||||
|
#
|
||||||
|
# BUG19136: Crashing log-bin and uninitialized user variables in a derived table
|
||||||
|
# just to check nothing bad happens anymore
|
||||||
|
#
|
||||||
connection master;
|
connection master;
|
||||||
|
insert into t1 select * FROM (select @var1 union select @var2) AS t2;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
save_master_pos;
|
save_master_pos;
|
||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
sync_with_master;
|
sync_with_master;
|
||||||
stop slave;
|
stop slave;
|
||||||
|
@ -3946,14 +3946,24 @@ int get_var_with_binlog(THD *thd, enum_sql_command sql_command,
|
|||||||
sql_set_variables(), we could instead manually call check() and update();
|
sql_set_variables(), we could instead manually call check() and update();
|
||||||
this would save memory and time; but calling sql_set_variables() makes
|
this would save memory and time; but calling sql_set_variables() makes
|
||||||
one unique place to maintain (sql_set_variables()).
|
one unique place to maintain (sql_set_variables()).
|
||||||
|
|
||||||
|
Manipulation with lex is necessary since free_underlaid_joins
|
||||||
|
is going to release memory belonging to the main query.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
List<set_var_base> tmp_var_list;
|
List<set_var_base> tmp_var_list;
|
||||||
|
LEX *sav_lex= thd->lex, lex_tmp;
|
||||||
|
thd->lex= &lex_tmp;
|
||||||
|
lex_start(thd, NULL, 0);
|
||||||
tmp_var_list.push_back(new set_var_user(new Item_func_set_user_var(name,
|
tmp_var_list.push_back(new set_var_user(new Item_func_set_user_var(name,
|
||||||
new Item_null())));
|
new Item_null())));
|
||||||
/* Create the variable */
|
/* Create the variable */
|
||||||
if (sql_set_variables(thd, &tmp_var_list))
|
if (sql_set_variables(thd, &tmp_var_list))
|
||||||
|
{
|
||||||
|
thd->lex= sav_lex;
|
||||||
goto err;
|
goto err;
|
||||||
|
}
|
||||||
|
thd->lex= sav_lex;
|
||||||
if (!(var_entry= get_variable(&thd->user_vars, name, 0)))
|
if (!(var_entry= get_variable(&thd->user_vars, name, 0)))
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
@ -2407,7 +2407,8 @@ merge_key_fields(KEY_FIELD *start,KEY_FIELD *new_fields,KEY_FIELD *end,
|
|||||||
new_fields->null_rejecting);
|
new_fields->null_rejecting);
|
||||||
}
|
}
|
||||||
else if (old->eq_func && new_fields->eq_func &&
|
else if (old->eq_func && new_fields->eq_func &&
|
||||||
(old->val->is_null() || new_fields->val->is_null()))
|
((!old->val->used_tables() && old->val->is_null()) ||
|
||||||
|
new_fields->val->is_null()))
|
||||||
{
|
{
|
||||||
/* field = expression OR field IS NULL */
|
/* field = expression OR field IS NULL */
|
||||||
old->level= and_level;
|
old->level= and_level;
|
||||||
|
Reference in New Issue
Block a user