[TD-4947]<fix> handle mixed group by with top/bottom corrupt
This commit is contained in:
parent
d0a59870bb
commit
64f01133db
|
@ -5278,21 +5278,23 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isTopBottomQuery(pQueryInfo)) {
|
if (isTopBottomQuery(pQueryInfo)) {
|
||||||
/* order of top/bottom query in interval is not valid */
|
|
||||||
SExprInfo* pExpr = tscExprGet(pQueryInfo, 0);
|
|
||||||
assert(pExpr->base.functionId == TSDB_FUNC_TS);
|
|
||||||
|
|
||||||
pExpr = tscExprGet(pQueryInfo, 1);
|
|
||||||
//if (pExpr->base.colInfo.colIndex != index.columnIndex && index.columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX) {
|
|
||||||
// return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
|
|
||||||
//}
|
|
||||||
|
|
||||||
bool validOrder = false;
|
bool validOrder = false;
|
||||||
SArray *columnInfo = pQueryInfo->groupbyExpr.columnInfo;
|
SArray *columnInfo = pQueryInfo->groupbyExpr.columnInfo;
|
||||||
if (columnInfo != NULL && taosArrayGetSize(columnInfo) > 0) {
|
if (columnInfo != NULL && taosArrayGetSize(columnInfo) > 0) {
|
||||||
SColIndex* pColIndex = taosArrayGet(columnInfo, 0);
|
SColIndex* pColIndex = taosArrayGet(columnInfo, 0);
|
||||||
validOrder = (pColIndex->colIndex == index.columnIndex);
|
validOrder = (pColIndex->colIndex == index.columnIndex);
|
||||||
|
} else {
|
||||||
|
/* order of top/bottom query in interval is not valid */
|
||||||
|
SExprInfo* pExpr = tscExprGet(pQueryInfo, 0);
|
||||||
|
assert(pExpr->base.functionId == TSDB_FUNC_TS);
|
||||||
|
|
||||||
|
pExpr = tscExprGet(pQueryInfo, 1);
|
||||||
|
if (pExpr->base.colInfo.colIndex != index.columnIndex && index.columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX) {
|
||||||
|
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
|
||||||
|
}
|
||||||
|
validOrder = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!validOrder) {
|
if (!validOrder) {
|
||||||
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
|
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue