Fix bug #7422 "order by" doesn't work
Field with wrong buffer was used to make sort key, which results in producing same sort key for all records. sql/filesort.cc: Fix bug#7422 "order by" doesn't work mysql-test/t/view.test: Test case for bug#7422 "order by" doesn't work mysql-test/r/view.result: Test case for bug#7422 "order by" doesn't work
This commit is contained in:
parent
aece56e30a
commit
c4257ae3ce
@ -1726,3 +1726,17 @@ sum(a)
|
|||||||
drop procedure p1;
|
drop procedure p1;
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1(a char(2) primary key, b char(2));
|
||||||
|
CREATE TABLE t2(a char(2), b char(2), index i(a));
|
||||||
|
INSERT INTO t1 VALUES ('a','1'), ('b','2');
|
||||||
|
INSERT INTO t2 VALUES ('a','5'), ('a','6'), ('b','5'), ('b','6');
|
||||||
|
CREATE VIEW v1 AS
|
||||||
|
SELECT t1.b as c, t2.b as d FROM t1,t2 WHERE t1.a=t2.a;
|
||||||
|
SELECT d, c FROM v1 ORDER BY d;
|
||||||
|
d c
|
||||||
|
5 1
|
||||||
|
5 2
|
||||||
|
6 1
|
||||||
|
6 2
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
@ -1569,3 +1569,15 @@ drop procedure p1;
|
|||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#7422 "order by" doesn't work
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(a char(2) primary key, b char(2));
|
||||||
|
CREATE TABLE t2(a char(2), b char(2), index i(a));
|
||||||
|
INSERT INTO t1 VALUES ('a','1'), ('b','2');
|
||||||
|
INSERT INTO t2 VALUES ('a','5'), ('a','6'), ('b','5'), ('b','6');
|
||||||
|
CREATE VIEW v1 AS
|
||||||
|
SELECT t1.b as c, t2.b as d FROM t1,t2 WHERE t1.a=t2.a;
|
||||||
|
SELECT d, c FROM v1 ORDER BY d;
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
@ -631,7 +631,7 @@ static void make_sortkey(register SORTPARAM *param,
|
|||||||
*to++=1;
|
*to++=1;
|
||||||
/* All item->str() to use some extra byte for end null.. */
|
/* All item->str() to use some extra byte for end null.. */
|
||||||
String tmp((char*) to,sort_field->length+4,cs);
|
String tmp((char*) to,sort_field->length+4,cs);
|
||||||
String *res=item->val_str(&tmp);
|
String *res= item->str_result(&tmp);
|
||||||
if (!res)
|
if (!res)
|
||||||
{
|
{
|
||||||
if (maybe_null)
|
if (maybe_null)
|
||||||
@ -673,8 +673,8 @@ static void make_sortkey(register SORTPARAM *param,
|
|||||||
}
|
}
|
||||||
case INT_RESULT:
|
case INT_RESULT:
|
||||||
{
|
{
|
||||||
longlong value=item->val_int();
|
longlong value= item->val_int_result();
|
||||||
if (maybe_null)
|
if (maybe_null)
|
||||||
{
|
{
|
||||||
*to++=1; /* purecov: inspected */
|
*to++=1; /* purecov: inspected */
|
||||||
if (item->null_value)
|
if (item->null_value)
|
||||||
@ -715,7 +715,7 @@ static void make_sortkey(register SORTPARAM *param,
|
|||||||
}
|
}
|
||||||
case DECIMAL_RESULT:
|
case DECIMAL_RESULT:
|
||||||
{
|
{
|
||||||
my_decimal dec_buf, *dec_val= item->val_decimal(&dec_buf);
|
my_decimal dec_buf, *dec_val= item->val_decimal_result(&dec_buf);
|
||||||
if (maybe_null)
|
if (maybe_null)
|
||||||
{
|
{
|
||||||
if (item->null_value)
|
if (item->null_value)
|
||||||
@ -733,7 +733,7 @@ static void make_sortkey(register SORTPARAM *param,
|
|||||||
}
|
}
|
||||||
case REAL_RESULT:
|
case REAL_RESULT:
|
||||||
{
|
{
|
||||||
double value= item->val_real();
|
double value= item->val_result();
|
||||||
if (maybe_null)
|
if (maybe_null)
|
||||||
{
|
{
|
||||||
if (item->null_value)
|
if (item->null_value)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user