mirror of
https://github.com/MariaDB/server.git
synced 2025-08-05 13:16:09 +03:00
Merge mysql.com:/home/ram/work/mysql-5.0-maint
into mysql.com:/home/ram/work/b28509/b28509.5.0
This commit is contained in:
@@ -1683,4 +1683,13 @@ execute stmt;
|
|||||||
ERROR 42S22: Unknown column 'y.value' in 'field list'
|
ERROR 42S22: Unknown column 'y.value' in 'field list'
|
||||||
deallocate prepare stmt;
|
deallocate prepare stmt;
|
||||||
drop tables t1;
|
drop tables t1;
|
||||||
|
prepare stmt from "create table t1 select ?";
|
||||||
|
set @a=1.0;
|
||||||
|
execute stmt using @a;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`?` decimal(2,1) default NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
drop table t1;
|
||||||
End of 5.0 tests.
|
End of 5.0 tests.
|
||||||
|
@@ -1791,5 +1791,13 @@ execute stmt;
|
|||||||
deallocate prepare stmt;
|
deallocate prepare stmt;
|
||||||
drop tables t1;
|
drop tables t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #28509: strange behaviour: passing a decimal value to PS
|
||||||
|
#
|
||||||
|
prepare stmt from "create table t1 select ?";
|
||||||
|
set @a=1.0;
|
||||||
|
execute stmt using @a;
|
||||||
|
show create table t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--echo End of 5.0 tests.
|
--echo End of 5.0 tests.
|
||||||
|
@@ -2507,16 +2507,14 @@ bool Item_param::set_from_user_var(THD *thd, const user_var_entry *entry)
|
|||||||
if (entry && entry->value)
|
if (entry && entry->value)
|
||||||
{
|
{
|
||||||
item_result_type= entry->type;
|
item_result_type= entry->type;
|
||||||
switch (entry->type) {
|
switch (item_result_type) {
|
||||||
case REAL_RESULT:
|
case REAL_RESULT:
|
||||||
set_double(*(double*)entry->value);
|
set_double(*(double*)entry->value);
|
||||||
item_type= Item::REAL_ITEM;
|
item_type= Item::REAL_ITEM;
|
||||||
item_result_type= REAL_RESULT;
|
|
||||||
break;
|
break;
|
||||||
case INT_RESULT:
|
case INT_RESULT:
|
||||||
set_int(*(longlong*)entry->value, MY_INT64_NUM_DECIMAL_DIGITS);
|
set_int(*(longlong*)entry->value, MY_INT64_NUM_DECIMAL_DIGITS);
|
||||||
item_type= Item::INT_ITEM;
|
item_type= Item::INT_ITEM;
|
||||||
item_result_type= INT_RESULT;
|
|
||||||
break;
|
break;
|
||||||
case STRING_RESULT:
|
case STRING_RESULT:
|
||||||
{
|
{
|
||||||
@@ -2538,7 +2536,6 @@ bool Item_param::set_from_user_var(THD *thd, const user_var_entry *entry)
|
|||||||
charset of connection, so we have to set it later.
|
charset of connection, so we have to set it later.
|
||||||
*/
|
*/
|
||||||
item_type= Item::STRING_ITEM;
|
item_type= Item::STRING_ITEM;
|
||||||
item_result_type= STRING_RESULT;
|
|
||||||
|
|
||||||
if (set_str((const char *)entry->value, entry->length))
|
if (set_str((const char *)entry->value, entry->length))
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
@@ -2552,6 +2549,7 @@ bool Item_param::set_from_user_var(THD *thd, const user_var_entry *entry)
|
|||||||
decimals= ent_value->frac;
|
decimals= ent_value->frac;
|
||||||
max_length= my_decimal_precision_to_length(ent_value->precision(),
|
max_length= my_decimal_precision_to_length(ent_value->precision(),
|
||||||
decimals, unsigned_flag);
|
decimals, unsigned_flag);
|
||||||
|
item_type= Item::DECIMAL_ITEM;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
Reference in New Issue
Block a user