Merge bk-internal:/home/bk/mysql-5.1-new-ndb
into loke.(none):/home/knielsen/devel/mysql-5.1-new-ndb-bug33061
This commit is contained in:
commit
0dd7855602
@ -38,6 +38,23 @@ a b c
|
|||||||
1 10 3
|
1 10 3
|
||||||
1 11 3
|
1 11 3
|
||||||
1 12 3
|
1 12 3
|
||||||
|
select max(b) from t1 where a = 1;
|
||||||
|
max(b)
|
||||||
|
12
|
||||||
|
select b from t1 where a = 1 order by b desc;
|
||||||
|
b
|
||||||
|
12
|
||||||
|
11
|
||||||
|
10
|
||||||
|
9
|
||||||
|
8
|
||||||
|
7
|
||||||
|
6
|
||||||
|
5
|
||||||
|
4
|
||||||
|
3
|
||||||
|
2
|
||||||
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (a INT, b CHAR(10) COLLATE latin1_bin, c INT, d INT,
|
CREATE TABLE t1 (a INT, b CHAR(10) COLLATE latin1_bin, c INT, d INT,
|
||||||
PRIMARY KEY (a,b,c) USING HASH)
|
PRIMARY KEY (a,b,c) USING HASH)
|
||||||
|
@ -46,6 +46,14 @@ a b c
|
|||||||
1 1 1
|
1 1 1
|
||||||
6 1 1
|
6 1 1
|
||||||
10 1 1
|
10 1 1
|
||||||
|
INSERT into t1 values (1, 2, 2);
|
||||||
|
select max(b) from t1 where a = 1;
|
||||||
|
max(b)
|
||||||
|
2
|
||||||
|
select b from t1 where a = 1 order by b desc;
|
||||||
|
b
|
||||||
|
2
|
||||||
|
1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
a int not null,
|
a int not null,
|
||||||
|
@ -38,6 +38,10 @@ insert into t1 values
|
|||||||
|
|
||||||
select * from t1 order by b;
|
select * from t1 order by b;
|
||||||
|
|
||||||
|
# BUG#33061: ORDER BY DESC becomes ASC in NDB partition pruning to one partition
|
||||||
|
select max(b) from t1 where a = 1;
|
||||||
|
select b from t1 where a = 1 order by b desc;
|
||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -48,6 +48,11 @@ select * from t1 where a=21 order by a;
|
|||||||
select * from t1 where a in (1,6,10,21) order by a;
|
select * from t1 where a in (1,6,10,21) order by a;
|
||||||
select * from t1 where b=1 and a in (1,6,10,21) order by a;
|
select * from t1 where b=1 and a in (1,6,10,21) order by a;
|
||||||
|
|
||||||
|
# BUG#33061: ORDER BY DESC becomes ASC in NDB partition pruning to one partition
|
||||||
|
INSERT into t1 values (1, 2, 2);
|
||||||
|
select max(b) from t1 where a = 1;
|
||||||
|
select b from t1 where a = 1 order by b desc;
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -1340,13 +1340,24 @@ NdbIndexScanOperation::readTuples(LockMode lm,
|
|||||||
if(insertATTRINFO(word) == -1)
|
if(insertATTRINFO(word) == -1)
|
||||||
res = -1;
|
res = -1;
|
||||||
}
|
}
|
||||||
if(!res && order_by){
|
if (!res)
|
||||||
m_ordered = true;
|
{
|
||||||
|
/**
|
||||||
|
* Note that it is valid to have order_desc true and order_by false.
|
||||||
|
*
|
||||||
|
* This means that there will be no merge sort among partitions, but
|
||||||
|
* each partition will still be returned in descending sort order.
|
||||||
|
*
|
||||||
|
* This is useful eg. if it is known that the scan spans only one
|
||||||
|
* partition.
|
||||||
|
*/
|
||||||
if (order_desc) {
|
if (order_desc) {
|
||||||
m_descending = true;
|
m_descending = true;
|
||||||
ScanTabReq * req = CAST_PTR(ScanTabReq, theSCAN_TABREQ->getDataPtrSend());
|
ScanTabReq * req = CAST_PTR(ScanTabReq, theSCAN_TABREQ->getDataPtrSend());
|
||||||
ScanTabReq::setDescendingFlag(req->requestInfo, true);
|
ScanTabReq::setDescendingFlag(req->requestInfo, true);
|
||||||
}
|
}
|
||||||
|
if (order_by) {
|
||||||
|
m_ordered = true;
|
||||||
Uint32 cnt = m_accessTable->getNoOfColumns() - 1;
|
Uint32 cnt = m_accessTable->getNoOfColumns() - 1;
|
||||||
m_sort_columns = cnt; // -1 for NDB$NODE
|
m_sort_columns = cnt; // -1 for NDB$NODE
|
||||||
m_current_api_receiver = m_sent_receivers_count;
|
m_current_api_receiver = m_sent_receivers_count;
|
||||||
@ -1365,6 +1376,7 @@ NdbIndexScanOperation::readTuples(LockMode lm,
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
m_this_bound_start = 0;
|
m_this_bound_start = 0;
|
||||||
m_first_bound_word = theKEYINFOptr;
|
m_first_bound_word = theKEYINFOptr;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user