mirror of
https://github.com/MariaDB/server.git
synced 2026-05-06 07:05:33 +02:00
Merge
mysql-test/r/ps_2myisam.result: Auto merged mysql-test/r/ps_3innodb.result: Auto merged mysql-test/r/ps_4heap.result: Auto merged mysql-test/r/ps_5merge.result: Auto merged mysql-test/r/ps_6bdb.result: Auto merged mysql-test/r/ps_7ndb.result: Auto merged sql/item.h: Auto merged sql/item_subselect.h: Auto merged sql/item.cc: SCCS merged
This commit is contained in:
commit
f17bba4e2d
10 changed files with 63 additions and 0 deletions
|
|
@ -421,6 +421,11 @@ prepare stmt1 from ' select a, ?, b FROM t1 outer_table where
|
|||
b=? and a = (select ? from t1 where b = ? ) ' ;
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03 ;
|
||||
|
||||
# Bug#8807
|
||||
prepare stmt1 from 'select c4 FROM t9 where
|
||||
c13 = (select MAX(b) from t1 where a = ?) and c22 = ? ' ;
|
||||
execute stmt1 using @arg01, @arg02;
|
||||
|
||||
######## correlated subquery
|
||||
# no parameter
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
|
|
|
|||
|
|
@ -768,6 +768,10 @@ prepare stmt1 from ' select a, ?, b FROM t1 outer_table where
|
|||
execute stmt1 using @arg00, @arg01, @arg02, @arg03 ;
|
||||
a ? b
|
||||
2 1 two
|
||||
prepare stmt1 from 'select c4 FROM t9 where
|
||||
c13 = (select MAX(b) from t1 where a = ?) and c22 = ? ' ;
|
||||
execute stmt1 using @arg01, @arg02;
|
||||
c4
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = outer_table.b ) order by a ';
|
||||
execute stmt1 ;
|
||||
|
|
|
|||
|
|
@ -768,6 +768,10 @@ prepare stmt1 from ' select a, ?, b FROM t1 outer_table where
|
|||
execute stmt1 using @arg00, @arg01, @arg02, @arg03 ;
|
||||
a ? b
|
||||
2 1 two
|
||||
prepare stmt1 from 'select c4 FROM t9 where
|
||||
c13 = (select MAX(b) from t1 where a = ?) and c22 = ? ' ;
|
||||
execute stmt1 using @arg01, @arg02;
|
||||
c4
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = outer_table.b ) order by a ';
|
||||
execute stmt1 ;
|
||||
|
|
|
|||
|
|
@ -769,6 +769,10 @@ prepare stmt1 from ' select a, ?, b FROM t1 outer_table where
|
|||
execute stmt1 using @arg00, @arg01, @arg02, @arg03 ;
|
||||
a ? b
|
||||
2 1 two
|
||||
prepare stmt1 from 'select c4 FROM t9 where
|
||||
c13 = (select MAX(b) from t1 where a = ?) and c22 = ? ' ;
|
||||
execute stmt1 using @arg01, @arg02;
|
||||
c4
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = outer_table.b ) order by a ';
|
||||
execute stmt1 ;
|
||||
|
|
|
|||
|
|
@ -811,6 +811,10 @@ prepare stmt1 from ' select a, ?, b FROM t1 outer_table where
|
|||
execute stmt1 using @arg00, @arg01, @arg02, @arg03 ;
|
||||
a ? b
|
||||
2 1 two
|
||||
prepare stmt1 from 'select c4 FROM t9 where
|
||||
c13 = (select MAX(b) from t1 where a = ?) and c22 = ? ' ;
|
||||
execute stmt1 using @arg01, @arg02;
|
||||
c4
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = outer_table.b ) order by a ';
|
||||
execute stmt1 ;
|
||||
|
|
@ -3820,6 +3824,10 @@ prepare stmt1 from ' select a, ?, b FROM t1 outer_table where
|
|||
execute stmt1 using @arg00, @arg01, @arg02, @arg03 ;
|
||||
a ? b
|
||||
2 1 two
|
||||
prepare stmt1 from 'select c4 FROM t9 where
|
||||
c13 = (select MAX(b) from t1 where a = ?) and c22 = ? ' ;
|
||||
execute stmt1 using @arg01, @arg02;
|
||||
c4
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = outer_table.b ) order by a ';
|
||||
execute stmt1 ;
|
||||
|
|
|
|||
|
|
@ -768,6 +768,10 @@ prepare stmt1 from ' select a, ?, b FROM t1 outer_table where
|
|||
execute stmt1 using @arg00, @arg01, @arg02, @arg03 ;
|
||||
a ? b
|
||||
2 1 two
|
||||
prepare stmt1 from 'select c4 FROM t9 where
|
||||
c13 = (select MAX(b) from t1 where a = ?) and c22 = ? ' ;
|
||||
execute stmt1 using @arg01, @arg02;
|
||||
c4
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = outer_table.b ) order by a ';
|
||||
execute stmt1 ;
|
||||
|
|
|
|||
|
|
@ -768,6 +768,10 @@ prepare stmt1 from ' select a, ?, b FROM t1 outer_table where
|
|||
execute stmt1 using @arg00, @arg01, @arg02, @arg03 ;
|
||||
a ? b
|
||||
2 1 two
|
||||
prepare stmt1 from 'select c4 FROM t9 where
|
||||
c13 = (select MAX(b) from t1 where a = ?) and c22 = ? ' ;
|
||||
execute stmt1 using @arg01, @arg02;
|
||||
c4
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = outer_table.b ) order by a ';
|
||||
execute stmt1 ;
|
||||
|
|
|
|||
28
sql/item.cc
28
sql/item.cc
|
|
@ -2094,6 +2094,34 @@ bool Item_param::convert_str_value(THD *thd)
|
|||
return rc;
|
||||
}
|
||||
|
||||
bool Item_param::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
|
||||
{
|
||||
DBUG_ASSERT(fixed == 0);
|
||||
SELECT_LEX *cursel= (SELECT_LEX *) thd->lex->current_select;
|
||||
|
||||
/*
|
||||
Parameters in a subselect should mark the subselect as not constant
|
||||
during prepare
|
||||
*/
|
||||
if (state == NO_VALUE)
|
||||
{
|
||||
/*
|
||||
SELECT_LEX_UNIT::item set only for subqueries, so test of it presence
|
||||
can be barrier to stop before derived table SELECT or very outer SELECT
|
||||
*/
|
||||
for(;
|
||||
cursel->master_unit()->item;
|
||||
cursel= cursel->outer_select())
|
||||
{
|
||||
Item_subselect *subselect_item= cursel->master_unit()->item;
|
||||
subselect_item->used_tables_cache|= OUTER_REF_TABLE_BIT;
|
||||
subselect_item->const_item_cache= 0;
|
||||
}
|
||||
}
|
||||
fixed= 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void Item_param::print(String *str)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -882,6 +882,7 @@ public:
|
|||
bool get_time(TIME *tm);
|
||||
bool get_date(TIME *tm, uint fuzzydate);
|
||||
int save_in_field(Field *field, bool no_conversions);
|
||||
bool fix_fields(THD *, struct st_table_list *, Item **);
|
||||
|
||||
void set_null();
|
||||
void set_int(longlong i, uint32 max_length_arg);
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@ public:
|
|||
friend class Item_in_optimizer;
|
||||
friend bool Item_field::fix_fields(THD *, TABLE_LIST *, Item **);
|
||||
friend bool Item_ref::fix_fields(THD *, TABLE_LIST *, Item **);
|
||||
friend bool Item_param::fix_fields(THD *, TABLE_LIST *, Item **);
|
||||
};
|
||||
|
||||
/* single value subselect */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue