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

merge

parents 00dc9a0e 74b01ca3
......@@ -179,3 +179,16 @@ id select_type table type possible_keys key key_len ref rows Extra
2 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found
deallocate prepare stmt1;
drop tables t1,t2;
set @arg00=1;
prepare stmt1 from ' create table t1 (m int) as select 1 as m ' ;
execute stmt1 ;
select m from t1;
m
1
drop table t1;
prepare stmt1 from ' create table t1 (m int) as select ? as m ' ;
execute stmt1 using @arg00;
select m from t1;
m
1
drop table t1;
......@@ -166,3 +166,16 @@ execute stmt1 ;
explain SELECT (SELECT SUM(c1 + c12 + 0.0) FROM t2 where (t1.c2 - 0e-3) = t2.c2 GROUP BY t1.c15 LIMIT 1) as scalar_s, exists (select 1.0e+0 from t2 where t2.c3 * 9.0000000000 = t1.c4) as exists_s, c5 * 4 in (select c6 + 0.3e+1 from t2) as in_s, (c7 - 4, c8 - 4) in (select c9 + 4.0, c10 + 40e-1 from t2) as in_row_s FROM t1, (select c25 x, c32 y from t2) tt WHERE x * 1 = c25;
deallocate prepare stmt1;
drop tables t1,t2;
#
# parameters from variables (for field creation)
#
set @arg00=1;
prepare stmt1 from ' create table t1 (m int) as select 1 as m ' ;
execute stmt1 ;
select m from t1;
drop table t1;
prepare stmt1 from ' create table t1 (m int) as select ? as m ' ;
execute stmt1 using @arg00;
select m from t1;
drop table t1;
......@@ -759,9 +759,13 @@ bool Item_param::set_from_user_var(THD *thd, const user_var_entry *entry)
switch (entry->type) {
case REAL_RESULT:
set_double(*(double*)entry->value);
item_type= Item::REAL_ITEM;
item_result_type= REAL_RESULT;
break;
case INT_RESULT:
set_int(*(longlong*)entry->value, 21);
item_type= Item::INT_ITEM;
item_result_type= INT_RESULT;
break;
case STRING_RESULT:
{
......
......@@ -422,7 +422,7 @@ class Item_null :public Item
class Item_param :public Item
{
public:
public:
enum enum_item_param_state
{
NO_VALUE, NULL_VALUE, INT_VALUE, REAL_VALUE,
......@@ -442,8 +442,8 @@ class Item_param :public Item
String str_value_ptr;
union
{
longlong integer;
double real;
longlong integer;
double real;
/*
Character sets conversion info for string values.
Character sets of client and connection defined at bind time are used
......@@ -456,7 +456,7 @@ class Item_param :public Item
/*
This points at character set of connection if conversion
to it is required (i. e. if placeholder typecode is not BLOB).
Otherwise it's equal to character_set_client (to simplify
Otherwise it's equal to character_set_client (to simplify
check in convert_str_value()).
*/
CHARSET_INFO *final_character_set_of_str_value;
......@@ -477,10 +477,10 @@ class Item_param :public Item
supply for this placeholder in mysql_stmt_execute.
*/
enum enum_field_types param_type;
/*
/*
Offset of placeholder inside statement text. Used to create
no-placeholders version of this statement for the binary log.
*/
*/
uint pos_in_query;
Item_param(uint pos_in_query_arg);
......@@ -515,11 +515,11 @@ class Item_param :public Item
const String *query_val_str(String *str) const;
bool convert_str_value(THD *thd);
Item *new_item() { return new Item_param(pos_in_query); }
/*
If value for parameter was not set we treat it as non-const
so noone will use parameters value in fix_fields still
/*
If value for parameter was not set we treat it as non-const
so noone will use parameters value in fix_fields still
parameter is constant during execution.
*/
virtual table_map used_tables() const
......
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