mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
Merge marko@bk-internal.mysql.com:/home/bk/mysql-5.0
into hundin.mysql.fi:/home/marko/mysql-5.0
This commit is contained in:
commit
40cca47c85
4 changed files with 43 additions and 2 deletions
|
@ -2423,3 +2423,26 @@ SELECT * FROM t1 WHERE city LIKE '%london%' AND city='London';
|
|||
city
|
||||
London
|
||||
DROP TABLE t1;
|
||||
create table t1 (a int(11) unsigned, b int(11) unsigned);
|
||||
insert into t1 values (1,0), (1,1), (1,2);
|
||||
select a-b from t1 order by 1;
|
||||
a-b
|
||||
0
|
||||
1
|
||||
18446744073709551615
|
||||
select a-b , (a-b < 0) from t1 order by 1;
|
||||
a-b (a-b < 0)
|
||||
0 0
|
||||
1 0
|
||||
18446744073709551615 0
|
||||
select a-b as d, (a-b >= 0), b from t1 group by b having d >= 0;
|
||||
d (a-b >= 0) b
|
||||
1 1 0
|
||||
0 1 1
|
||||
18446744073709551615 1 2
|
||||
select cast((a - b) as unsigned) from t1 order by 1;
|
||||
cast((a - b) as unsigned)
|
||||
0
|
||||
1
|
||||
18446744073709551615
|
||||
drop table t1;
|
||||
|
|
|
@ -2004,3 +2004,14 @@ SELECT * FROM t1 WHERE city LIKE '%london%' AND city='London';
|
|||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#7425 inconsistent sort order on unsigned columns result of substraction
|
||||
#
|
||||
|
||||
create table t1 (a int(11) unsigned, b int(11) unsigned);
|
||||
insert into t1 values (1,0), (1,1), (1,2);
|
||||
select a-b from t1 order by 1;
|
||||
select a-b , (a-b < 0) from t1 order by 1;
|
||||
select a-b as d, (a-b >= 0), b from t1 group by b having d >= 0;
|
||||
select cast((a - b) as unsigned) from t1 order by 1;
|
||||
drop table t1;
|
||||
|
|
|
@ -694,12 +694,18 @@ static void make_sortkey(register SORTPARAM *param,
|
|||
to[3]= (uchar) (value >> 32);
|
||||
to[2]= (uchar) (value >> 40);
|
||||
to[1]= (uchar) (value >> 48);
|
||||
to[0]= (uchar) (value >> 56) ^ 128; // Fix sign
|
||||
if (item->unsigned_flag) /* Fix sign */
|
||||
to[0]= (uchar) (value >> 56);
|
||||
else
|
||||
to[0]= (uchar) (value >> 56) ^ 128; /* Reverse signbit */
|
||||
#else
|
||||
to[3]= (uchar) value;
|
||||
to[2]= (uchar) (value >> 8);
|
||||
to[1]= (uchar) (value >> 16);
|
||||
to[0]= (uchar) (value >> 24) ^ 128; // Fix sign
|
||||
if (item->unsigned_flag) /* Fix sign */
|
||||
to[0]= (uchar) (value >> 24);
|
||||
else
|
||||
to[0]= (uchar) (value >> 24) ^ 128; /* Reverse signbit */
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -3717,6 +3717,7 @@ void Item_ref::set_properties()
|
|||
split_sum_func() doesn't try to change the reference.
|
||||
*/
|
||||
with_sum_func= (*ref)->with_sum_func;
|
||||
unsigned_flag= (*ref)->unsigned_flag;
|
||||
if ((*ref)->type() == FIELD_ITEM)
|
||||
alias_name_used= ((Item_ident *) (*ref))->alias_name_used;
|
||||
else
|
||||
|
|
Loading…
Reference in a new issue