fix: select * from (select * from t order by ts desc) order by ts
This commit is contained in:
parent
874725d17a
commit
71d59281ff
|
@ -1079,11 +1079,23 @@ static bool sortPriKeyOptMayBeOptimized(SLogicNode* pNode) {
|
||||||
if (!sortPriKeyOptIsPriKeyOrderBy(pSort->pSortKeys) || 1 != LIST_LENGTH(pSort->node.pChildren)) {
|
if (!sortPriKeyOptIsPriKeyOrderBy(pSort->pSortKeys) || 1 != LIST_LENGTH(pSort->node.pChildren)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
SNode* pChild;
|
||||||
|
FOREACH(pChild, pSort->node.pChildren) {
|
||||||
|
SLogicNode* pSortDescendent = optFindPossibleNode((SLogicNode*)pChild, sortPriKeyOptMayBeOptimized);
|
||||||
|
if (pSortDescendent != NULL) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t sortPriKeyOptGetSequencingNodesImpl(SLogicNode* pNode, bool groupSort, bool* pNotOptimize,
|
static int32_t sortPriKeyOptGetSequencingNodesImpl(SLogicNode* pNode, bool groupSort, bool* pNotOptimize,
|
||||||
SNodeList** pSequencingNodes) {
|
SNodeList** pSequencingNodes) {
|
||||||
|
if (NULL != pNode->pLimit || NULL != pNode->pSlimit) {
|
||||||
|
*pNotOptimize = false;
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
switch (nodeType(pNode)) {
|
switch (nodeType(pNode)) {
|
||||||
case QUERY_NODE_LOGIC_PLAN_SCAN: {
|
case QUERY_NODE_LOGIC_PLAN_SCAN: {
|
||||||
SScanLogicNode* pScan = (SScanLogicNode*)pNode;
|
SScanLogicNode* pScan = (SScanLogicNode*)pNode;
|
||||||
|
|
|
@ -875,6 +875,7 @@
|
||||||
,,y,script,./test.sh -f tsim/query/udf_with_const.sim
|
,,y,script,./test.sh -f tsim/query/udf_with_const.sim
|
||||||
,,y,script,./test.sh -f tsim/query/join_interval.sim
|
,,y,script,./test.sh -f tsim/query/join_interval.sim
|
||||||
,,y,script,./test.sh -f tsim/query/unionall_as_table.sim
|
,,y,script,./test.sh -f tsim/query/unionall_as_table.sim
|
||||||
|
,,y,script,./test.sh -f tsim/query/multi_order_by.sim
|
||||||
,,y,script,./test.sh -f tsim/query/sys_tbname.sim
|
,,y,script,./test.sh -f tsim/query/sys_tbname.sim
|
||||||
,,y,script,./test.sh -f tsim/query/groupby.sim
|
,,y,script,./test.sh -f tsim/query/groupby.sim
|
||||||
,,y,script,./test.sh -f tsim/query/event.sim
|
,,y,script,./test.sh -f tsim/query/event.sim
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
system sh/stop_dnodes.sh
|
||||||
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
sql connect
|
||||||
|
|
||||||
|
sql create database test;
|
||||||
|
sql use test;
|
||||||
|
|
||||||
|
sql create table t(ts timestamp, f int);
|
||||||
|
sql insert into t values(now,0)(now+1s, 1)(now+2s, 2)(now+3s,3)(now+4s,4)(now+5s,5)(now+6s,6)(now+7s,7)(now+8s,8)(now+9s,9)
|
||||||
|
sql select * from (select * from t order by ts desc limit 3 offset 2) order by ts;
|
||||||
|
print $data01 $data11 $data21
|
||||||
|
if $data01 != 5 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
if $data11 != 6 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
if $data21 != 7 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
sql select * from (select * from t order by ts limit 3 offset 2) order by ts desc;
|
||||||
|
print $data01 $data11 $data21
|
||||||
|
if $data01 != 4 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
if $data11 != 3 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
if $data21 != 2 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
sql select * from (select * from t order by ts desc limit 3 offset 2) order by ts desc;
|
||||||
|
print $data01 $data11 $data21
|
||||||
|
if $data01 != 7 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
if $data11 != 6 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
if $data21 != 5 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
sql select * from (select * from t order by ts limit 3 offset 2) order by ts;
|
||||||
|
print $data01 $data11 $data21
|
||||||
|
if $data01 != 2 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
if $data11 != 3 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
if $data21 != 4 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
|
||||||
|
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
Loading…
Reference in New Issue