Commit 681252c8 authored by ramil@mysql.com's avatar ramil@mysql.com

Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-5.0

into  mysql.com:/usr/home/ram/work/5.0.b12956
parents 3d223afb 516fd425
...@@ -337,7 +337,7 @@ set @precision=10000000000; ...@@ -337,7 +337,7 @@ set @precision=10000000000;
select rand(), select rand(),
cast(rand(10)*@precision as unsigned integer) from t1; cast(rand(10)*@precision as unsigned integer) from t1;
rand() cast(rand(10)*@precision as unsigned integer) rand() cast(rand(10)*@precision as unsigned integer)
- 6570515219 - 6570515220
- 1282061302 - 1282061302
- 6698761160 - 6698761160
- 9647622201 - 9647622201
...@@ -348,23 +348,23 @@ prepare stmt from ...@@ -348,23 +348,23 @@ prepare stmt from
set @var=1; set @var=1;
execute stmt using @var; execute stmt using @var;
rand() cast(rand(10)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer) rand() cast(rand(10)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer)
- 6570515219 - - 6570515220 -
- 1282061302 - - 1282061302 -
- 6698761160 - - 6698761160 -
- 9647622201 - - 9647622201 -
set @var=2; set @var=2;
execute stmt using @var; execute stmt using @var;
rand() cast(rand(10)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer) rand() cast(rand(10)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer)
- 6570515219 6555866465 - 6570515220 6555866465
- 1282061302 1223466192 - 1282061302 1223466193
- 6698761160 6449731873 - 6698761160 6449731874
- 9647622201 8578261098 - 9647622201 8578261098
set @var=3; set @var=3;
execute stmt using @var; execute stmt using @var;
rand() cast(rand(10)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer) rand() cast(rand(10)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer)
- 6570515219 9057697559 - 6570515220 9057697560
- 1282061302 3730790581 - 1282061302 3730790581
- 6698761160 1480860534 - 6698761160 1480860535
- 9647622201 6211931236 - 9647622201 6211931236
drop table t1; drop table t1;
deallocate prepare stmt; deallocate prepare stmt;
......
...@@ -17,7 +17,7 @@ while ($1) ...@@ -17,7 +17,7 @@ while ($1)
SET @rnd= RAND(); SET @rnd= RAND();
SET @id = CAST(@rnd * @rnd_max AS UNSIGNED); SET @id = CAST(@rnd * @rnd_max AS UNSIGNED);
SET @id_rev= @rnd_max - @id; SET @id_rev= @rnd_max - @id;
SET @grp= CAST(128.0 * @rnd AS UNSIGNED); SET @grp= CAST(127.0 * @rnd AS UNSIGNED);
INSERT INTO t1 (id, grp, id_rev) VALUES (@id, @grp, @id_rev); INSERT INTO t1 (id, grp, id_rev) VALUES (@id, @grp, @id_rev);
dec $1; dec $1;
} }
......
...@@ -3953,7 +3953,7 @@ longlong Field_float::val_int(void) ...@@ -3953,7 +3953,7 @@ longlong Field_float::val_int(void)
else else
#endif #endif
memcpy_fixed((byte*) &j,ptr,sizeof(j)); memcpy_fixed((byte*) &j,ptr,sizeof(j));
return ((longlong) j); return (longlong) rint(j);
} }
...@@ -4241,7 +4241,7 @@ longlong Field_double::val_int(void) ...@@ -4241,7 +4241,7 @@ longlong Field_double::val_int(void)
else else
#endif #endif
doubleget(j,ptr); doubleget(j,ptr);
return ((longlong) j); return (longlong) rint(j);
} }
......
...@@ -2459,7 +2459,7 @@ longlong Item_param::val_int() ...@@ -2459,7 +2459,7 @@ longlong Item_param::val_int()
{ {
switch (state) { switch (state) {
case REAL_VALUE: case REAL_VALUE:
return (longlong) (value.real + (value.real > 0 ? 0.5 : -0.5)); return (longlong) rint(value.real);
case INT_VALUE: case INT_VALUE:
return value.integer; return value.integer;
case DECIMAL_VALUE: case DECIMAL_VALUE:
...@@ -5441,7 +5441,7 @@ void Item_cache_real::store(Item *item) ...@@ -5441,7 +5441,7 @@ void Item_cache_real::store(Item *item)
longlong Item_cache_real::val_int() longlong Item_cache_real::val_int()
{ {
DBUG_ASSERT(fixed == 1); DBUG_ASSERT(fixed == 1);
return (longlong) (value+(value > 0 ? 0.5 : -0.5)); return (longlong) rint(value);
} }
......
...@@ -159,7 +159,7 @@ struct Hybrid_type_traits ...@@ -159,7 +159,7 @@ struct Hybrid_type_traits
{ val->real/= ulonglong2double(u); } { val->real/= ulonglong2double(u); }
virtual longlong val_int(Hybrid_type *val, bool unsigned_flag) const virtual longlong val_int(Hybrid_type *val, bool unsigned_flag) const
{ return (longlong) val->real; } { return (longlong) rint(val->real); }
virtual double val_real(Hybrid_type *val) const { return val->real; } virtual double val_real(Hybrid_type *val) const { return val->real; }
virtual my_decimal *val_decimal(Hybrid_type *val, my_decimal *buf) const; virtual my_decimal *val_decimal(Hybrid_type *val, my_decimal *buf) const;
virtual String *val_str(Hybrid_type *val, String *buf, uint8 decimals) const; virtual String *val_str(Hybrid_type *val, String *buf, uint8 decimals) const;
...@@ -1354,7 +1354,7 @@ class Item_float :public Item_num ...@@ -1354,7 +1354,7 @@ class Item_float :public Item_num
{ {
return LONGLONG_MAX; return LONGLONG_MAX;
} }
return (longlong) (value+(value > 0 ? 0.5 : -0.5)); return (longlong) rint(value);
} }
String *val_str(String*); String *val_str(String*);
my_decimal *val_decimal(my_decimal *); my_decimal *val_decimal(my_decimal *);
......
...@@ -735,7 +735,7 @@ longlong Item_func_numhybrid::val_int() ...@@ -735,7 +735,7 @@ longlong Item_func_numhybrid::val_int()
case INT_RESULT: case INT_RESULT:
return int_op(); return int_op();
case REAL_RESULT: case REAL_RESULT:
return (longlong)real_op(); return (longlong) rint(real_op());
case STRING_RESULT: case STRING_RESULT:
{ {
int err_not_used; int err_not_used;
......
...@@ -199,7 +199,7 @@ class Item_real_func :public Item_func ...@@ -199,7 +199,7 @@ class Item_real_func :public Item_func
String *val_str(String*str); String *val_str(String*str);
my_decimal *val_decimal(my_decimal *decimal_value); my_decimal *val_decimal(my_decimal *decimal_value);
longlong val_int() longlong val_int()
{ DBUG_ASSERT(fixed == 1); return (longlong) val_real(); } { DBUG_ASSERT(fixed == 1); return (longlong) rint(val_real()); }
enum Item_result result_type () const { return REAL_RESULT; } enum Item_result result_type () const { return REAL_RESULT; }
void fix_length_and_dec() void fix_length_and_dec()
{ decimals= NOT_FIXED_DEC; max_length= float_length(decimals); } { decimals= NOT_FIXED_DEC; max_length= float_length(decimals); }
...@@ -943,7 +943,7 @@ class Item_func_udf_float :public Item_udf_func ...@@ -943,7 +943,7 @@ class Item_func_udf_float :public Item_udf_func
longlong val_int() longlong val_int()
{ {
DBUG_ASSERT(fixed == 1); DBUG_ASSERT(fixed == 1);
return (longlong) Item_func_udf_float::val_real(); return (longlong) rint(Item_func_udf_float::val_real());
} }
my_decimal *val_decimal(my_decimal *dec_buf) my_decimal *val_decimal(my_decimal *dec_buf)
{ {
......
...@@ -452,7 +452,7 @@ longlong Item_sum_sum::val_int() ...@@ -452,7 +452,7 @@ longlong Item_sum_sum::val_int()
&result); &result);
return result; return result;
} }
return (longlong) val_real(); return (longlong) rint(val_real());
} }
...@@ -1285,7 +1285,7 @@ longlong Item_sum_hybrid::val_int() ...@@ -1285,7 +1285,7 @@ longlong Item_sum_hybrid::val_int()
return sum_int; return sum_int;
} }
default: default:
return (longlong) Item_sum_hybrid::val_real(); return (longlong) rint(Item_sum_hybrid::val_real());
} }
} }
...@@ -2001,7 +2001,7 @@ double Item_avg_field::val_real() ...@@ -2001,7 +2001,7 @@ double Item_avg_field::val_real()
longlong Item_avg_field::val_int() longlong Item_avg_field::val_int()
{ {
return (longlong) val_real(); return (longlong) rint(val_real());
} }
......
...@@ -126,7 +126,7 @@ class Item_sum_num :public Item_sum ...@@ -126,7 +126,7 @@ class Item_sum_num :public Item_sum
longlong val_int() longlong val_int()
{ {
DBUG_ASSERT(fixed == 1); DBUG_ASSERT(fixed == 1);
return (longlong) val_real(); /* Real as default */ return (longlong) rint(val_real()); /* Real as default */
} }
String *val_str(String*str); String *val_str(String*str);
my_decimal *val_decimal(my_decimal *); my_decimal *val_decimal(my_decimal *);
...@@ -392,7 +392,7 @@ class Item_sum_avg :public Item_sum_sum ...@@ -392,7 +392,7 @@ class Item_sum_avg :public Item_sum_sum
bool add(); bool add();
double val_real(); double val_real();
// In SPs we might force the "wrong" type with select into a declare variable // In SPs we might force the "wrong" type with select into a declare variable
longlong val_int() { return (longlong)val_real(); } longlong val_int() { return (longlong) rint(val_real()); }
my_decimal *val_decimal(my_decimal *); my_decimal *val_decimal(my_decimal *);
String *val_str(String *str); String *val_str(String *str);
void reset_field(); void reset_field();
...@@ -421,7 +421,7 @@ class Item_variance_field :public Item_result_field ...@@ -421,7 +421,7 @@ class Item_variance_field :public Item_result_field
enum Type type() const {return FIELD_VARIANCE_ITEM; } enum Type type() const {return FIELD_VARIANCE_ITEM; }
double val_real(); double val_real();
longlong val_int() longlong val_int()
{ /* can't be fix_fields()ed */ return (longlong) val_real(); } { /* can't be fix_fields()ed */ return (longlong) rint(val_real()); }
String *val_str(String*); String *val_str(String*);
my_decimal *val_decimal(my_decimal *); my_decimal *val_decimal(my_decimal *);
bool is_null() { (void) val_int(); return null_value; } bool is_null() { (void) val_int(); return null_value; }
...@@ -699,7 +699,7 @@ class Item_sum_udf_float :public Item_udf_sum ...@@ -699,7 +699,7 @@ class Item_sum_udf_float :public Item_udf_sum
longlong val_int() longlong val_int()
{ {
DBUG_ASSERT(fixed == 1); DBUG_ASSERT(fixed == 1);
return (longlong) Item_sum_udf_float::val_real(); return (longlong) rint(Item_sum_udf_float::val_real());
} }
double val_real(); double val_real();
String *val_str(String*str); String *val_str(String*str);
......
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