Commit c0190125 authored by bell@sanja.is.com.ua's avatar bell@sanja.is.com.ua

Merge sanja.is.com.ua:/home/bell/mysql/mysql-4.1

into sanja.is.com.ua:/home/bell/mysql/work-subselect-4.1
parents e263d118 0f6a9fe5
select (select 2); select (select 2);
(select 2) (select 2)
2 2
drop table if exists t1,t2,t3,t4; drop table if exists t1,t2,t3,t4,attend,clinic;
create table t1 (a int); create table t1 (a int);
create table t2 (a int, b int); create table t2 (a int, b int);
create table t3 (a int); create table t3 (a int);
...@@ -82,4 +82,13 @@ select b,max(a) as ma from t4 group by b having b >= (select max(t2.a) ...@@ -82,4 +82,13 @@ select b,max(a) as ma from t4 group by b having b >= (select max(t2.a)
from t2 where t2.b=t4.b); from t2 where t2.b=t4.b);
b ma b ma
7 12 7 12
drop table t1,t2,t3,t4; create table attend (patient_uq int, clinic_uq int, index i1 (clinic_uq));
create table clinic( uq int primary key, name char(25));
insert into clinic values(1,"Oblastnaia bolnitsa"),(2,"Bolnitsa Krasnogo Kresta");
insert into attend values (1,1),(1,2),(2,2),(1,3);
select * from attend where exists (select * from clinic where uq = clinic_uq);
patient_uq clinic_uq
1 1
1 2
2 2
drop table t1,t2,t3,t4,attend,clinic;
select (select 2); select (select 2);
drop table if exists t1,t2,t3,t4; drop table if exists t1,t2,t3,t4,attend,clinic;
create table t1 (a int); create table t1 (a int);
create table t2 (a int, b int); create table t2 (a int, b int);
create table t3 (a int); create table t3 (a int);
...@@ -33,4 +33,11 @@ select b,max(a) as ma from t4 group by b having b < (select max(t2.a) ...@@ -33,4 +33,11 @@ select b,max(a) as ma from t4 group by b having b < (select max(t2.a)
from t2 where t2.b=t4.b); from t2 where t2.b=t4.b);
select b,max(a) as ma from t4 group by b having b >= (select max(t2.a) select b,max(a) as ma from t4 group by b having b >= (select max(t2.a)
from t2 where t2.b=t4.b); from t2 where t2.b=t4.b);
drop table t1,t2,t3,t4;
create table attend (patient_uq int, clinic_uq int, index i1 (clinic_uq));
create table clinic( uq int primary key, name char(25));
insert into clinic values(1,"Oblastnaia bolnitsa"),(2,"Bolnitsa Krasnogo Kresta");
insert into attend values (1,1),(1,2),(2,2),(1,3);
select * from attend where exists (select * from clinic where uq = clinic_uq);
drop table t1,t2,t3,t4,attend,clinic;
...@@ -51,6 +51,12 @@ Item_subselect::Item_subselect(THD *thd, st_select_lex *select_lex, ...@@ -51,6 +51,12 @@ Item_subselect::Item_subselect(THD *thd, st_select_lex *select_lex,
if (unit->select_limit_cnt == HA_POS_ERROR) if (unit->select_limit_cnt == HA_POS_ERROR)
select_lex->options&= ~OPTION_FOUND_ROWS; select_lex->options&= ~OPTION_FOUND_ROWS;
join= new JOIN(thd, select_lex->item_list, select_lex->options, result); join= new JOIN(thd, select_lex->item_list, select_lex->options, result);
if (!join || !result)
{
//out of memory
thd->fatal_error= 1;
my_printf_error(ER_OUT_OF_RESOURCES, ER(ER_OUT_OF_RESOURCES), MYF(0));
}
this->select_lex= select_lex; this->select_lex= select_lex;
assign_null(); assign_null();
/* /*
...@@ -172,7 +178,7 @@ String *Item_singleval_subselect::val_str (String *str) ...@@ -172,7 +178,7 @@ String *Item_singleval_subselect::val_str (String *str)
Item_exists_subselect::Item_exists_subselect(THD *thd, Item_exists_subselect::Item_exists_subselect(THD *thd,
st_select_lex *select_lex): st_select_lex *select_lex):
Item_subselect(thd, select_lex, new select_singleval_subselect(this)) Item_subselect(thd, select_lex, new select_exists_subselect(this))
{ {
max_columns= UINT_MAX; max_columns= UINT_MAX;
null_value= 0; //can't be NULL null_value= 0; //can't be NULL
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment