Commit 3879fa38 authored by unknown's avatar unknown

Merge paul@bk-internal.mysql.com:/home/bk/mysql-4.1

into ice.snake.net:/Volumes/ice2/MySQL/bk/mysql-4.1
parents 60c1f31e d94b3470
...@@ -179,3 +179,16 @@ id select_type table type possible_keys key key_len ref rows Extra ...@@ -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 2 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found
deallocate prepare stmt1; deallocate prepare stmt1;
drop tables t1,t2; 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 ; ...@@ -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; 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; deallocate prepare stmt1;
drop tables t1,t2; 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) ...@@ -759,9 +759,13 @@ bool Item_param::set_from_user_var(THD *thd, const user_var_entry *entry)
switch (entry->type) { switch (entry->type) {
case REAL_RESULT: case REAL_RESULT:
set_double(*(double*)entry->value); set_double(*(double*)entry->value);
item_type= Item::REAL_ITEM;
item_result_type= REAL_RESULT;
break; break;
case INT_RESULT: case INT_RESULT:
set_int(*(longlong*)entry->value, 21); set_int(*(longlong*)entry->value, 21);
item_type= Item::INT_ITEM;
item_result_type= INT_RESULT;
break; break;
case STRING_RESULT: case STRING_RESULT:
{ {
......
...@@ -422,7 +422,7 @@ class Item_null :public Item ...@@ -422,7 +422,7 @@ class Item_null :public Item
class Item_param :public Item class Item_param :public Item
{ {
public: public:
enum enum_item_param_state enum enum_item_param_state
{ {
NO_VALUE, NULL_VALUE, INT_VALUE, REAL_VALUE, NO_VALUE, NULL_VALUE, INT_VALUE, REAL_VALUE,
...@@ -442,8 +442,8 @@ class Item_param :public Item ...@@ -442,8 +442,8 @@ class Item_param :public Item
String str_value_ptr; String str_value_ptr;
union union
{ {
longlong integer; longlong integer;
double real; double real;
/* /*
Character sets conversion info for string values. Character sets conversion info for string values.
Character sets of client and connection defined at bind time are used Character sets of client and connection defined at bind time are used
...@@ -456,7 +456,7 @@ class Item_param :public Item ...@@ -456,7 +456,7 @@ class Item_param :public Item
/* /*
This points at character set of connection if conversion This points at character set of connection if conversion
to it is required (i. e. if placeholder typecode is not BLOB). 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()). check in convert_str_value()).
*/ */
CHARSET_INFO *final_character_set_of_str_value; CHARSET_INFO *final_character_set_of_str_value;
...@@ -477,10 +477,10 @@ class Item_param :public Item ...@@ -477,10 +477,10 @@ class Item_param :public Item
supply for this placeholder in mysql_stmt_execute. supply for this placeholder in mysql_stmt_execute.
*/ */
enum enum_field_types param_type; enum enum_field_types param_type;
/* /*
Offset of placeholder inside statement text. Used to create Offset of placeholder inside statement text. Used to create
no-placeholders version of this statement for the binary log. no-placeholders version of this statement for the binary log.
*/ */
uint pos_in_query; uint pos_in_query;
Item_param(uint pos_in_query_arg); Item_param(uint pos_in_query_arg);
...@@ -515,11 +515,11 @@ class Item_param :public Item ...@@ -515,11 +515,11 @@ class Item_param :public Item
const String *query_val_str(String *str) const; const String *query_val_str(String *str) const;
bool convert_str_value(THD *thd); bool convert_str_value(THD *thd);
Item *new_item() { return new Item_param(pos_in_query); } Item *new_item() { return new Item_param(pos_in_query); }
/* /*
If value for parameter was not set we treat it as non-const If value for parameter was not set we treat it as non-const
so noone will use parameters value in fix_fields still so noone will use parameters value in fix_fields still
parameter is constant during execution. parameter is constant during execution.
*/ */
virtual table_map used_tables() const 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