mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Manual merge of 5.1 into 5.1-runtime
This commit is contained in:
@ -224,7 +224,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 't4.a' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1276 Field or reference 'test.t4.a' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 select `test`.`t4`.`b` AS `b`,(select avg((`test`.`t2`.`a` + (select min(`test`.`t3`.`a`) AS `min(t3.a)` from `test`.`t3` where (`test`.`t3`.`a` >= `test`.`t4`.`a`)))) AS `avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a))` from `test`.`t2`) AS `(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)` from `test`.`t4`
|
||||
select * from t3 where exists (select * from t2 where t2.b=t3.a);
|
||||
a
|
||||
@ -313,8 +313,8 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
3 DEPENDENT UNION t5 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
|
||||
Warnings:
|
||||
Note 1276 Field or reference 't2.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1276 Field or reference 't2.a' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 select (select `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`a` = `test`.`t2`.`a`) union select `test`.`t5`.`a` AS `a` from `test`.`t5` where (`test`.`t5`.`a` = `test`.`t2`.`a`)) AS `(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a)`,`test`.`t2`.`a` AS `a` from `test`.`t2`
|
||||
select (select a from t1 where t1.a=t2.a union all select a from t5 where t5.a=t2.a), a from t2;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
@ -330,9 +330,9 @@ patient_uq clinic_uq
|
||||
explain extended select * from t6 where exists (select * from t7 where uq = clinic_uq);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t6 ALL NULL NULL NULL NULL 4 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t7 eq_ref PRIMARY PRIMARY 4 test.t6.clinic_uq 1 100.00 Using index
|
||||
2 DEPENDENT SUBQUERY t7 eq_ref PRIMARY PRIMARY 4 t6.clinic_uq 1 100.00 Using where; Using index
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'clinic_uq' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1276 Field or reference 'test.t6.clinic_uq' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1003 select `test`.`t6`.`patient_uq` AS `patient_uq`,`test`.`t6`.`clinic_uq` AS `clinic_uq` from `test`.`t6` where exists(select 1 AS `Not_used` from `test`.`t7` where (`test`.`t7`.`uq` = `test`.`t6`.`clinic_uq`))
|
||||
select * from t1 where a= (select a from t2,t4 where t2.b=t4.b);
|
||||
ERROR 23000: Column 'a' in field list is ambiguous
|
||||
@ -868,7 +868,7 @@ explain extended select (select a+1) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select (`test`.`t1`.`a` + 1) AS `(select a+1)` from `test`.`t1`
|
||||
select (select a+1) from t1;
|
||||
@ -1741,9 +1741,9 @@ Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`text` AS `text` from `tes
|
||||
explain extended select * from t1 as tt where not exists (select id from t1 where id < 8 and (id = tt.id or id is null) having id is not null);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY tt ALL NULL NULL NULL NULL 12 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t1 eq_ref PRIMARY PRIMARY 4 test.tt.id 1 100.00 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t1 eq_ref PRIMARY PRIMARY 4 tt.id 1 100.00 Using where; Using index
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'tt.id' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1276 Field or reference 'test.tt.id' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1003 select `test`.`tt`.`id` AS `id`,`test`.`tt`.`text` AS `text` from `test`.`t1` `tt` where (not(exists(select `test`.`t1`.`id` AS `id` from `test`.`t1` where ((`test`.`t1`.`id` < 8) and (`test`.`t1`.`id` = `test`.`tt`.`id`)) having (`test`.`t1`.`id` is not null))))
|
||||
insert into t1 (id, text) values (1000, 'text1000'), (1001, 'text1001');
|
||||
create table t2 (id int not null, text varchar(20) not null default '', primary key (id));
|
||||
@ -2279,7 +2279,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY up ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'up.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1276 Field or reference 'test.up.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1003 select `test`.`up`.`a` AS `a`,`test`.`up`.`b` AS `b` from `test`.`t1` `up` where exists(select 1 AS `Not_used` from `test`.`t1` where (`test`.`t1`.`a` = `test`.`up`.`a`))
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (t1_a int);
|
||||
|
@ -84,7 +84,7 @@ int main(int argc, char *argv[])
|
||||
MY_INIT(argv[0]);
|
||||
log_init();
|
||||
umask(0117);
|
||||
srand((unsigned int) time(0));
|
||||
srand((uint) time(0));
|
||||
|
||||
/* Main function. */
|
||||
|
||||
|
@ -110,25 +110,22 @@ Event_worker_thread::print_warnings(THD *thd, Event_job_data *et)
|
||||
SYNOPSIS
|
||||
post_init_event_thread()
|
||||
thd Thread
|
||||
|
||||
NOTES
|
||||
Before this is called, one should not do any DBUG_XXX() calls.
|
||||
|
||||
*/
|
||||
|
||||
bool
|
||||
post_init_event_thread(THD *thd)
|
||||
{
|
||||
my_thread_init();
|
||||
pthread_detach_this_thread();
|
||||
thd->real_id= pthread_self();
|
||||
(void) init_new_connection_handler_thread();
|
||||
if (init_thr_lock() || thd->store_globals())
|
||||
{
|
||||
thd->cleanup();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#if !defined(__WIN__) && !defined(OS2) && !defined(__NETWARE__)
|
||||
sigset_t set;
|
||||
VOID(sigemptyset(&set)); // Get mask in use
|
||||
VOID(pthread_sigmask(SIG_UNBLOCK,&set,&thd->block_signals));
|
||||
#endif
|
||||
pthread_mutex_lock(&LOCK_thread_count);
|
||||
threads.append(thd);
|
||||
thread_count++;
|
||||
@ -193,7 +190,7 @@ pre_init_event_thread(THD* thd)
|
||||
thd->options|= OPTION_AUTO_IS_NULL;
|
||||
thd->client_capabilities|= CLIENT_MULTI_RESULTS;
|
||||
pthread_mutex_lock(&LOCK_thread_count);
|
||||
thd->thread_id= thread_id++;
|
||||
thd->thread_id= thd->variables.pseudo_thread_id= thread_id++;
|
||||
pthread_mutex_unlock(&LOCK_thread_count);
|
||||
|
||||
/*
|
||||
@ -224,20 +221,20 @@ pthread_handler_t
|
||||
event_scheduler_thread(void *arg)
|
||||
{
|
||||
/* needs to be first for thread_stack */
|
||||
THD *thd= (THD *)((struct scheduler_param *) arg)->thd;
|
||||
THD *thd= (THD *) ((struct scheduler_param *) arg)->thd;
|
||||
Event_scheduler *scheduler= ((struct scheduler_param *) arg)->scheduler;
|
||||
|
||||
my_free((char*)arg, MYF(0));
|
||||
bool res;
|
||||
|
||||
thd->thread_stack= (char *)&thd; // remember where our stack is
|
||||
res= post_init_event_thread(thd);
|
||||
|
||||
DBUG_ENTER("event_scheduler_thread");
|
||||
|
||||
if (!post_init_event_thread(thd))
|
||||
my_free((char*)arg, MYF(0));
|
||||
if (!res)
|
||||
scheduler->run(thd);
|
||||
|
||||
deinit_event_thread(thd);
|
||||
|
||||
pthread_exit(0);
|
||||
DBUG_RETURN(0); // Against gcc warnings
|
||||
}
|
||||
|
||||
@ -257,17 +254,13 @@ event_scheduler_thread(void *arg)
|
||||
pthread_handler_t
|
||||
event_worker_thread(void *arg)
|
||||
{
|
||||
/* needs to be first for thread_stack */
|
||||
THD *thd;
|
||||
Event_queue_element_for_exec *event= (Event_queue_element_for_exec *)arg;
|
||||
|
||||
thd= event->thd;
|
||||
thd->thread_stack= (char *) &thd; // remember where our stack is
|
||||
|
||||
Event_worker_thread worker_thread;
|
||||
worker_thread.run(thd, (Event_queue_element_for_exec *)arg);
|
||||
|
||||
deinit_event_thread(thd);
|
||||
worker_thread.run(thd, event);
|
||||
|
||||
return 0; // Can't return anything here
|
||||
}
|
||||
@ -286,13 +279,21 @@ event_worker_thread(void *arg)
|
||||
void
|
||||
Event_worker_thread::run(THD *thd, Event_queue_element_for_exec *event)
|
||||
{
|
||||
/* needs to be first for thread_stack */
|
||||
char my_stack;
|
||||
int ret;
|
||||
Event_job_data *job_data= NULL;
|
||||
bool res;
|
||||
|
||||
thd->thread_stack= &my_stack; // remember where our stack is
|
||||
res= post_init_event_thread(thd);
|
||||
|
||||
DBUG_ENTER("Event_worker_thread::run");
|
||||
DBUG_PRINT("info", ("Baikonur, time is %d, BURAN reporting and operational."
|
||||
"THD=0x%lx", time(NULL), thd));
|
||||
|
||||
if (post_init_event_thread(thd))
|
||||
|
||||
if (res)
|
||||
goto end;
|
||||
|
||||
if (!(job_data= new Event_job_data()))
|
||||
@ -352,6 +353,8 @@ end:
|
||||
event->name.str));
|
||||
|
||||
delete event;
|
||||
deinit_event_thread(thd);
|
||||
pthread_exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
1012
sql/sql_parse.cc
1012
sql/sql_parse.cc
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user